From 0613f7f73629fd91c562e21353314f981eb232e3 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 25 Oct 2023 17:41:40 +0200 Subject: [PATCH 01/18] fix(histoire): fix URL to Framapiaf avatars Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/src/components/Account/ActorCard.story.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/components/Account/ActorCard.story.vue b/js/src/components/Account/ActorCard.story.vue index 462de9758..ee5f2e830 100644 --- a/js/src/components/Account/ActorCard.story.vue +++ b/js/src/components/Account/ActorCard.story.vue @@ -25,7 +25,7 @@ import { IActor } from "@/types/actor"; import { ActorType } from "@/types/enums"; const avatarUrl = ref<string>( - "https://framapiaf.s3.framasoft.org/framapiaf/accounts/avatars/000/000/399/original/aa56a445efb72803.jpg" + "https://stockage.framapiaf.org/framapiaf/accounts/avatars/000/000/399/original/52b08a3e80b43d40.jpg" ); const stateLocal = reactive<IActor>({ From b5672cee7ef536da1286510b318ec7b73da7e46d Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Tue, 17 Oct 2023 16:41:31 +0200 Subject: [PATCH 02/18] WIP Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/package.json | 6 +- js/src/App.vue | 11 +- js/src/apollo/utils.ts | 5 + .../components/Account/ActorAutoComplete.vue | 77 + js/src/components/Account/ActorCard.vue | 4 + .../components/Account/ActorInline.story.vue | 2 +- js/src/components/Account/ActorInline.vue | 8 +- .../Account/PopoverActorCard.story.vue | 2 +- .../Conversations/ConversationListItem.vue | 160 ++ .../Conversations/EventConversations.vue | 69 + .../Conversations/NewConversation.vue | 137 ++ .../Discussion/DiscussionComment.vue | 94 +- js/src/components/Editor/Mention.ts | 27 +- .../Event/FullAddressAutoComplete.vue | 75 +- js/src/components/Group/GroupCard.story.vue | 4 +- js/src/components/Local/CloseEvents.vue | 4 +- js/src/components/NavBar.vue | 86 +- .../Participation/NewPrivateMessage.vue | 109 + js/src/components/Report/ReportModal.vue | 4 +- js/src/components/TextEditor.vue | 8 +- js/src/composition/apollo/members.ts | 46 + js/src/composition/apollo/tags.ts | 22 +- js/src/graphql/comment.ts | 1 + js/src/graphql/conversations.ts | 166 ++ js/src/graphql/event.ts | 46 + js/src/graphql/report.ts | 6 + js/src/graphql/search.ts | 28 + js/src/graphql/user.ts | 18 + js/src/i18n/en_US.json | 17 +- js/src/i18n/fr_FR.json | 209 +- js/src/router/conversation.ts | 33 + js/src/router/index.ts | 2 + js/src/router/name.ts | 2 + js/src/types/actor/person.model.ts | 4 + js/src/types/comment.model.ts | 2 + js/src/types/conversation.ts | 17 + js/src/types/current-user.model.ts | 2 + js/src/types/event.model.ts | 4 + js/src/utils/auth.ts | 20 +- js/src/utils/identity.ts | 35 +- js/src/views/Admin/InstanceView.vue | 2 +- .../Conversations/ConversationListView.vue | 94 + .../views/Conversations/ConversationView.vue | 527 +++++ js/src/views/Event/ParticipantsView.vue | 4 + js/src/views/Group/GroupView.vue | 38 +- js/src/views/Moderation/ReportView.vue | 101 +- js/src/views/Settings/NotificationsView.vue | 14 +- js/src/views/User/LoginView.vue | 2 + js/src/views/User/ProviderValidation.vue | 25 +- js/src/vue-apollo.ts | 29 +- js/yarn.lock | 1881 +++++++++-------- lib/federation/activity_pub/actions/create.ex | 37 +- lib/federation/activity_pub/audience.ex | 5 + lib/federation/activity_pub/fetcher.ex | 2 +- lib/federation/activity_pub/transmogrifier.ex | 32 +- .../activity_pub/types/conversation.ex | 207 ++ lib/federation/activity_pub/utils.ex | 6 +- .../activity_stream/converter/comment.ex | 41 +- .../activity_stream/converter/conversation.ex | 68 + lib/federation/web_finger/web_finger.ex | 5 +- lib/graphql/api/comments.ex | 19 +- lib/graphql/api/events.ex | 8 +- lib/graphql/api/search.ex | 6 +- lib/graphql/authorization.ex | 2 + lib/graphql/resolvers/conversation.ex | 269 +++ lib/graphql/resolvers/participant.ex | 57 + lib/graphql/schema.ex | 4 + lib/graphql/schema/actors/person.ex | 32 +- lib/graphql/schema/conversation.ex | 132 ++ lib/graphql/schema/discussions/comment.ex | 2 + lib/graphql/schema/event.ex | 14 +- lib/graphql/schema/events/participant.ex | 29 + lib/graphql/schema/user.ex | 15 +- lib/mobilizon/activities/activities.ex | 18 +- lib/mobilizon/actors/actor.ex | 6 + lib/mobilizon/conversations/conversation.ex | 57 + .../conversations/conversation_participant.ex | 40 + .../conversations/conversation_view.ex | 22 + lib/mobilizon/conversations/conversations.ex | 344 +++ lib/mobilizon/discussions/comment.ex | 12 +- lib/mobilizon/discussions/discussions.ex | 28 +- lib/mobilizon/events/event.ex | 2 + lib/mobilizon/events/events.ex | 15 + lib/mobilizon/mentions/mention.ex | 4 +- lib/mobilizon/reports/reports.ex | 9 +- lib/service/activity/conversation.ex | 90 + lib/service/activity/renderer/conversation.ex | 73 + lib/service/activity/renderer/renderer.ex | 26 +- lib/service/notifier/email.ex | 6 + lib/service/notifier/filter.ex | 4 + lib/service/notifier/push.ex | 1 + .../workers/legacy_notifier_builder.ex | 18 +- lib/web/auth/context.ex | 2 +- lib/web/cache/activity_pub.ex | 20 +- lib/web/cache/cache.ex | 5 + lib/web/channels/graphql_socket.ex | 17 +- lib/web/controllers/page_controller.ex | 6 + lib/web/router.ex | 2 + .../_conversation_activity_item.html.heex | 20 + .../_conversation_activity_item.text.eex | 11 + .../email/email_direct_activity.html.heex | 4 + .../email/email_direct_activity.text.eex | 2 +- ...20230920071502_add_actor_conversations.exs | 37 + .../transmogrifier/create_test.exs | 107 + test/graphql/resolvers/conversation_test.exs | 78 + test/mobilizon/conversations_test.exs | 86 + test/service/activity/conversation_test.exs | 70 + test/support/factory.ex | 16 + 108 files changed, 5221 insertions(+), 1318 deletions(-) create mode 100644 js/src/components/Account/ActorAutoComplete.vue create mode 100644 js/src/components/Conversations/ConversationListItem.vue create mode 100644 js/src/components/Conversations/EventConversations.vue create mode 100644 js/src/components/Conversations/NewConversation.vue create mode 100644 js/src/components/Participation/NewPrivateMessage.vue create mode 100644 js/src/composition/apollo/members.ts create mode 100644 js/src/graphql/conversations.ts create mode 100644 js/src/router/conversation.ts create mode 100644 js/src/types/conversation.ts create mode 100644 js/src/views/Conversations/ConversationListView.vue create mode 100644 js/src/views/Conversations/ConversationView.vue create mode 100644 lib/federation/activity_pub/types/conversation.ex create mode 100644 lib/federation/activity_stream/converter/conversation.ex create mode 100644 lib/graphql/resolvers/conversation.ex create mode 100644 lib/graphql/schema/conversation.ex create mode 100644 lib/mobilizon/conversations/conversation.ex create mode 100644 lib/mobilizon/conversations/conversation_participant.ex create mode 100644 lib/mobilizon/conversations/conversation_view.ex create mode 100644 lib/mobilizon/conversations/conversations.ex create mode 100644 lib/service/activity/conversation.ex create mode 100644 lib/service/activity/renderer/conversation.ex create mode 100644 lib/web/templates/email/activity/_conversation_activity_item.html.heex create mode 100644 lib/web/templates/email/activity/_conversation_activity_item.text.eex create mode 100644 priv/repo/migrations/20230920071502_add_actor_conversations.exs create mode 100644 test/federation/activity_pub/transmogrifier/create_test.exs create mode 100644 test/graphql/resolvers/conversation_test.exs create mode 100644 test/mobilizon/conversations_test.exs create mode 100644 test/service/activity/conversation_test.exs diff --git a/js/package.json b/js/package.json index 662bcfa0d..b9d10a365 100644 --- a/js/package.json +++ b/js/package.json @@ -27,7 +27,7 @@ "@absinthe/socket": "^0.2.1", "@absinthe/socket-apollo-link": "^0.2.1", "@apollo/client": "^3.3.16", - "@oruga-ui/oruga-next": "^0.6.0", + "@oruga-ui/oruga-next": "^0.7.0", "@sentry/tracing": "^7.1", "@sentry/vue": "^7.1", "@tiptap/core": "^2.0.0-beta.41", @@ -114,7 +114,7 @@ "@vitest/coverage-v8": "^0.34.1", "@vitest/ui": "^0.34.1", "@vue/eslint-config-prettier": "^8.0.0", - "@vue/eslint-config-typescript": "^11.0.0", + "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^2.0.2", "eslint": "^8.21.0", "eslint-config-prettier": "^9.0.0", @@ -131,7 +131,7 @@ "prettier-eslint": "^15.0.1", "rollup-plugin-visualizer": "^5.7.1", "sass": "^1.34.1", - "typescript": "~5.1.3", + "typescript": "~5.2.2", "vite": "^4.0.4", "vite-plugin-pwa": "^0.16.4", "vitest": "^0.34.1", diff --git a/js/src/App.vue b/js/src/App.vue index 6f9ca4315..846962227 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -138,6 +138,7 @@ interval.value = window.setInterval(async () => { }, 60000) as unknown as number; onBeforeMount(async () => { + console.debug("Before mount App"); if (initializeCurrentUser()) { try { await initializeCurrentActor(); @@ -150,6 +151,8 @@ onBeforeMount(async () => { userAlreadyActivated: "true", }, }); + } else { + throw err; } } } @@ -202,20 +205,24 @@ onUnmounted(() => { const { mutate: updateCurrentUser } = useMutation(UPDATE_CURRENT_USER_CLIENT); const initializeCurrentUser = () => { + console.debug("Initializing current user"); const userId = localStorage.getItem(AUTH_USER_ID); const userEmail = localStorage.getItem(AUTH_USER_EMAIL); const accessToken = localStorage.getItem(AUTH_ACCESS_TOKEN); const role = localStorage.getItem(AUTH_USER_ROLE); if (userId && userEmail && accessToken && role) { - updateCurrentUser({ + const userData = { id: userId, email: userEmail, isLoggedIn: true, role, - }); + }; + updateCurrentUser(userData); + console.debug("Initialized current user", userData); return true; } + console.debug("Failed to initialize current user"); return false; }; diff --git a/js/src/apollo/utils.ts b/js/src/apollo/utils.ts index 0ac78d0ee..3d025527b 100644 --- a/js/src/apollo/utils.ts +++ b/js/src/apollo/utils.ts @@ -45,6 +45,11 @@ export const typePolicies: TypePolicies = { comments: paginatedLimitPagination<IComment>(), }, }, + Conversation: { + fields: { + comments: paginatedLimitPagination<IComment>(), + }, + }, Group: { fields: { organizedEvents: paginatedLimitPagination([ diff --git a/js/src/components/Account/ActorAutoComplete.vue b/js/src/components/Account/ActorAutoComplete.vue new file mode 100644 index 000000000..b95c37055 --- /dev/null +++ b/js/src/components/Account/ActorAutoComplete.vue @@ -0,0 +1,77 @@ +<template> + <o-inputitems + :modelValue="modelValue" + @update:modelValue="(val: IActor[]) => $emit('update:modelValue', val)" + :data="availableActors" + :allow-autocomplete="true" + :allow-new="false" + :open-on-focus="false" + field="displayName" + placeholder="Add a recipient" + @typing="getActors" + > + <template #default="props"> + <ActorInline :actor="props.option" /> + </template> + </o-inputitems> +</template> + +<script setup lang="ts"> +import { SEARCH_PERSON_AND_GROUPS } from "@/graphql/search"; +import { IActor, IGroup, IPerson, displayName } from "@/types/actor"; +import { Paginate } from "@/types/paginate"; +import { useLazyQuery } from "@vue/apollo-composable"; +import { ref } from "vue"; +import ActorInline from "./ActorInline.vue"; + +defineProps<{ + modelValue: IActor[]; +}>(); + +defineEmits<{ + "update:modelValue": [value: IActor[]]; +}>(); + +const { + load: loadSearchPersonsAndGroupsQuery, + refetch: refetchSearchPersonsAndGroupsQuery, +} = useLazyQuery< + { searchPersons: Paginate<IPerson>; searchGroups: Paginate<IGroup> }, + { searchText: string } +>(SEARCH_PERSON_AND_GROUPS); + +const availableActors = ref<IActor[]>([]); + +const getActors = async (text: string) => { + availableActors.value = await fetchActors(text); +}; + +const fetchActors = async (text: string): Promise<IActor[]> => { + if (text === "") return []; + try { + const res = + (await loadSearchPersonsAndGroupsQuery(SEARCH_PERSON_AND_GROUPS, { + searchText: text, + })) || + ( + await refetchSearchPersonsAndGroupsQuery({ + searchText: text, + }) + )?.data; + if (!res) return []; + return [ + ...res.searchPersons.elements.map((person) => ({ + ...person, + displayName: displayName(person), + })), + ...res.searchGroups.elements.map((group) => ({ + ...group, + displayName: displayName(group), + })), + ]; + } catch (e) { + console.error(e); + return []; + } +}; +</script> diff --git a/js/src/components/Account/ActorCard.vue b/js/src/components/Account/ActorCard.vue index 7d93e6fab..c4d49710d 100644 --- a/js/src/components/Account/ActorCard.vue +++ b/js/src/components/Account/ActorCard.vue @@ -39,6 +39,9 @@ v-html="actor.summary" /> </div> + <div class="flex pr-2"> + <Email /> + </div> </div> <!-- <div class="p-4 bg-white rounded-lg shadow-md sm:p-8 flex items-center space-x-4" @@ -81,6 +84,7 @@ <script lang="ts" setup> import { displayName, IActor, usernameWithDomain } from "../../types/actor"; import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; +import Email from "vue-material-design-icons/Email.vue"; withDefaults( defineProps<{ diff --git a/js/src/components/Account/ActorInline.story.vue b/js/src/components/Account/ActorInline.story.vue index 40195eb80..7ab2923f8 100644 --- a/js/src/components/Account/ActorInline.story.vue +++ b/js/src/components/Account/ActorInline.story.vue @@ -25,7 +25,7 @@ import { IActor } from "@/types/actor"; import { ActorType } from "@/types/enums"; const avatarUrl = ref<string>( - "https://framapiaf.s3.framasoft.org/framapiaf/accounts/avatars/000/000/399/original/aa56a445efb72803.jpg" + "https://stockage.framapiaf.org/framapiaf/accounts/avatars/000/000/399/original/52b08a3e80b43d40.jpg" ); const stateLocal = reactive<IActor>({ diff --git a/js/src/components/Account/ActorInline.vue b/js/src/components/Account/ActorInline.vue index 3c64c024d..b99a7d381 100644 --- a/js/src/components/Account/ActorInline.vue +++ b/js/src/components/Account/ActorInline.vue @@ -1,8 +1,8 @@ <template> <div - class="inline-flex items-start bg-white dark:bg-violet-1 dark:text-white p-2 rounded-md" + class="inline-flex items-start gap-2 bg-white dark:bg-violet-1 dark:text-white p-2 rounded-md" > - <div class="flex-none mr-2"> + <div class="flex-none"> <figure v-if="actor.avatar"> <img class="rounded-xl" @@ -24,11 +24,15 @@ @{{ usernameWithDomain(actor) }} </p> </div> + <div class="flex pr-2 self-center"> + <Email /> + </div> </div> </template> <script lang="ts" setup> import { displayName, IActor, usernameWithDomain } from "../../types/actor"; import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; +import Email from "vue-material-design-icons/Email.vue"; defineProps<{ actor: IActor; diff --git a/js/src/components/Account/PopoverActorCard.story.vue b/js/src/components/Account/PopoverActorCard.story.vue index 4f06faf1c..25a5950eb 100644 --- a/js/src/components/Account/PopoverActorCard.story.vue +++ b/js/src/components/Account/PopoverActorCard.story.vue @@ -49,7 +49,7 @@ const group = { domain: "mobilizon.fr", avatar: { ...baseActorAvatar, - url: "https://framapiaf.s3.framasoft.org/framapiaf/accounts/avatars/000/000/399/original/aa56a445efb72803.jpg", + url: "https://stockage.framapiaf.org/framapiaf/accounts/avatars/000/000/399/original/52b08a3e80b43d40.jpg", }, }; diff --git a/js/src/components/Conversations/ConversationListItem.vue b/js/src/components/Conversations/ConversationListItem.vue new file mode 100644 index 000000000..cdc4a8110 --- /dev/null +++ b/js/src/components/Conversations/ConversationListItem.vue @@ -0,0 +1,160 @@ +<template> + <router-link + class="flex gap-2 w-full items-center px-2 py-4 border-b-stone-200 border-b bg-white dark:bg-transparent" + dir="auto" + :to="{ + name: RouteName.CONVERSATION, + params: { id: conversation.conversationParticipantId }, + }" + > + <div class="relative"> + <figure + class="w-12 h-12" + v-if=" + conversation.lastComment?.actor && + conversation.lastComment.actor.avatar + " + > + <img + class="rounded-full" + :src="conversation.lastComment.actor.avatar.url" + alt="" + width="48" + height="48" + /> + </figure> + <account-circle :size="48" v-else /> + <div class="flex absolute -bottom-2 left-6"> + <template + v-for="extraParticipant in nonLastCommenterParticipants.slice(0, 2)" + :key="extraParticipant.id" + > + <figure class="w-6 h-6 -mr-3"> + <img + v-if="extraParticipant && extraParticipant.avatar" + class="rounded-full h-6" + :src="extraParticipant.avatar.url" + alt="" + width="24" + height="24" + /> + <account-circle :size="24" v-else /> + </figure> + </template> + </div> + </div> + <div class="overflow-hidden flex-1"> + <div class="flex items-center justify-between"> + <i18n-t + keypath="With {participants}" + tag="p" + class="truncate flex-1" + v-if="formattedListOfParticipants" + > + <template #participants> + <span v-html="formattedListOfParticipants" /> + </template> + </i18n-t> + <p v-else>{{ t("With unknown participants") }}</p> + <div class="inline-flex items-center px-1.5"> + <span + v-if="conversation.unread" + class="bg-primary rounded-full inline-block h-2.5 w-2.5 mx-2" + > + </span> + <time + class="whitespace-nowrap" + :datetime="actualDate.toString()" + :title="formatDateTimeString(actualDate)" + > + {{ distanceToNow }}</time + > + </div> + </div> + <div + class="line-clamp-2 my-1" + dir="auto" + v-if="!conversation.lastComment?.deletedAt" + > + {{ htmlTextEllipsis }} + </div> + <div v-else class=""> + {{ t("[This comment has been deleted]") }} + </div> + </div> + </router-link> +</template> +<script lang="ts" setup> +import { formatDistanceToNowStrict } from "date-fns"; +import { IConversation } from "../../types/conversation"; +import RouteName from "../../router/name"; +import { computed, inject } from "vue"; +import { formatDateTimeString } from "../../filters/datetime"; +import type { Locale } from "date-fns"; +import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; +import { useI18n } from "vue-i18n"; +import { formatList } from "@/utils/i18n"; +import { displayName } from "@/types/actor"; +import { useCurrentActorClient } from "@/composition/apollo/actor"; + +const props = defineProps<{ + conversation: IConversation; +}>(); + +const conversation = computed(() => props.conversation); + +const dateFnsLocale = inject<Locale>("dateFnsLocale"); +const { t } = useI18n({ useScope: "global" }); + +const distanceToNow = computed(() => { + return ( + formatDistanceToNowStrict(new Date(actualDate.value), { + locale: dateFnsLocale, + }) ?? t("Right now") + ); +}); + +const htmlTextEllipsis = computed((): string => { + const element = document.createElement("div"); + if (conversation.value.lastComment && conversation.value.lastComment.text) { + element.innerHTML = conversation.value.lastComment.text + .replace(/<br\s*\/?>/gi, " ") + .replace(/<p>/gi, " "); + } + return element.innerText; +}); + +const actualDate = computed((): string => { + if ( + conversation.value.updatedAt === conversation.value.insertedAt && + conversation.value.lastComment?.publishedAt + ) { + return conversation.value.lastComment.publishedAt; + } + return conversation.value.updatedAt; +}); + +const formattedListOfParticipants = computed(() => { + return formatList( + otherParticipants.value.map( + (participant) => `<b>${displayName(participant)}</b>` + ) + ); +}); + +const { currentActor } = useCurrentActorClient(); + +const otherParticipants = computed( + () => + conversation.value?.participants.filter( + (participant) => participant.id !== currentActor.value?.id + ) ?? [] +); + +const nonLastCommenterParticipants = computed(() => + otherParticipants.value.filter( + (participant) => + participant.id !== conversation.value.lastComment?.actor?.id + ) +); +</script> diff --git a/js/src/components/Conversations/EventConversations.vue b/js/src/components/Conversations/EventConversations.vue new file mode 100644 index 000000000..77139b99e --- /dev/null +++ b/js/src/components/Conversations/EventConversations.vue @@ -0,0 +1,69 @@ +<template> + <div class="container mx-auto section"> + <breadcrumbs-nav :links="[]" /> + <section> + <h1>{{ t("Conversations") }}</h1> + <!-- <o-button + tag="router-link" + :to="{ + name: RouteName.CREATE_CONVERSATION, + params: { uuid: event.uuid }, + }" + >{{ t("New private message") }}</o-button + > --> + <div v-if="conversations.elements.length > 0"> + <conversation-list-item + :conversation="conversation" + v-for="conversation in conversations.elements" + :key="conversation.id" + /> + <o-pagination + v-show="conversations.total > CONVERSATIONS_PER_PAGE" + class="conversation-pagination" + :total="conversations.total" + v-model:current="page" + :per-page="CONVERSATIONS_PER_PAGE" + :aria-next-label="t('Next page')" + :aria-previous-label="t('Previous page')" + :aria-page-label="t('Page')" + :aria-current-label="t('Current page')" + > + </o-pagination> + </div> + <empty-content v-else icon="chat"> + {{ t("There's no conversations yet") }} + </empty-content> + </section> + </div> +</template> +<script lang="ts" setup> +import ConversationListItem from "../../components/Conversations/ConversationListItem.vue"; +// import RouteName from "../../router/name"; +import EmptyContent from "../../components/Utils/EmptyContent.vue"; +import { useI18n } from "vue-i18n"; +import { useRouteQuery, integerTransformer } from "vue-use-route-query"; +import { computed } from "vue"; +import { IEvent } from "../../types/event.model"; +import { EVENT_CONVERSATIONS } from "../../graphql/event"; +import { useQuery } from "@vue/apollo-composable"; + +const page = useRouteQuery("page", 1, integerTransformer); +const CONVERSATIONS_PER_PAGE = 10; + +const props = defineProps<{ event: IEvent }>(); +const event = computed(() => props.event); + +const { t } = useI18n({ useScope: "global" }); + +const { result: conversationsResult } = useQuery<{ + event: Pick<IEvent, "conversations">; +}>(EVENT_CONVERSATIONS, () => ({ + uuid: event.value.uuid, + page: page.value, +})); + +const conversations = computed( + () => + conversationsResult.value?.event.conversations || { elements: [], total: 0 } +); +</script> diff --git a/js/src/components/Conversations/NewConversation.vue b/js/src/components/Conversations/NewConversation.vue new file mode 100644 index 000000000..4895dea28 --- /dev/null +++ b/js/src/components/Conversations/NewConversation.vue @@ -0,0 +1,137 @@ +<template> + <form @submit="sendForm" class="flex flex-col"> + <ActorAutoComplete v-model="actorMentions" /> + <Editor + v-model="text" + mode="basic" + :aria-label="t('Message body')" + v-if="currentActor" + :currentActor="currentActor" + :placeholder="t('Write a new message')" + /> + <footer class="flex gap-2 py-3 mx-2 justify-end"> + <o-button :disabled="!canSend" nativeType="submit">{{ + t("Send") + }}</o-button> + </footer> + </form> +</template> + +<script lang="ts" setup> +import { IActor, IPerson, usernameWithDomain } from "@/types/actor"; +import { computed, defineAsyncComponent, provide, ref } from "vue"; +import { useI18n } from "vue-i18n"; +import ActorAutoComplete from "../../components/Account/ActorAutoComplete.vue"; +import { + DefaultApolloClient, + provideApolloClient, + useMutation, +} from "@vue/apollo-composable"; +import { apolloClient } from "@/vue-apollo"; +import { PROFILE_CONVERSATIONS } from "@/graphql/event"; +import { POST_PRIVATE_MESSAGE_MUTATION } from "@/graphql/conversations"; +import { IConversation } from "@/types/conversation"; +import { useCurrentActorClient } from "@/composition/apollo/actor"; +import { useRouter } from "vue-router"; +import RouteName from "@/router/name"; + +const props = withDefaults( + defineProps<{ + mentions?: IActor[]; + }>(), + { mentions: () => [] } +); + +provide(DefaultApolloClient, apolloClient); + +const router = useRouter(); + +const emit = defineEmits(["close"]); + +const actorMentions = ref(props.mentions); + +const textMentions = computed(() => + (props.mentions ?? []).map((actor) => usernameWithDomain(actor)).join(" ") +); + +const { t } = useI18n({ useScope: "global" }); + +const text = ref(textMentions.value); + +const Editor = defineAsyncComponent( + () => import("../../components/TextEditor.vue") +); + +const { currentActor } = provideApolloClient(apolloClient)(() => { + return useCurrentActorClient(); +}); + +const canSend = computed(() => { + return actorMentions.value.length > 0 || /@.+/.test(text.value); +}); + +const { mutate: postPrivateMessageMutate } = provideApolloClient(apolloClient)( + () => + useMutation< + { + postPrivateMessage: IConversation; + }, + { + text: string; + actorId: string; + language?: string; + mentions?: string[]; + attributedToId?: string; + } + >(POST_PRIVATE_MESSAGE_MUTATION, { + update(cache, result) { + if (!result.data?.postPrivateMessage) return; + const cachedData = cache.readQuery<{ + loggedPerson: Pick<IPerson, "conversations" | "id">; + }>({ + query: PROFILE_CONVERSATIONS, + variables: { + page: 1, + }, + }); + if (!cachedData) return; + cache.writeQuery({ + query: PROFILE_CONVERSATIONS, + variables: { + page: 1, + }, + data: { + loggedPerson: { + ...cachedData?.loggedPerson, + conversations: { + ...cachedData.loggedPerson.conversations, + total: (cachedData.loggedPerson.conversations?.total ?? 0) + 1, + elements: [ + ...(cachedData.loggedPerson.conversations?.elements ?? []), + result.data.postPrivateMessage, + ], + }, + }, + }, + }); + }, + }) +); + +const sendForm = async (e: Event) => { + e.preventDefault(); + console.debug("Sending new private message"); + if (!currentActor.value?.id) return; + const result = await postPrivateMessageMutate({ + actorId: currentActor.value.id, + text: text.value, + mentions: actorMentions.value.map((actor) => usernameWithDomain(actor)), + }); + if (!result?.data?.postPrivateMessage.conversationParticipantId) return; + router.push({ + name: RouteName.CONVERSATION, + params: { id: result?.data?.postPrivateMessage.conversationParticipantId }, + }); + emit("close"); +}; +</script> diff --git a/js/src/components/Discussion/DiscussionComment.vue b/js/src/components/Discussion/DiscussionComment.vue index 5339615ba..a7d75bae8 100644 --- a/js/src/components/Discussion/DiscussionComment.vue +++ b/js/src/components/Discussion/DiscussionComment.vue @@ -1,5 +1,7 @@ <template> - <article class="flex gap-2 bg-white dark:bg-transparent"> + <article + class="flex gap-2 bg-white dark:bg-transparent border rounded-md p-2 mt-2" + > <div class=""> <figure class="" v-if="comment.actor && comment.actor.avatar"> <img @@ -29,12 +31,12 @@ v-if=" comment.actor && !comment.deletedAt && - comment.actor.id === currentActor?.id + (comment.actor.id === currentActor.id || canReport) " > <o-dropdown aria-role="list" position="bottom-left"> <template #trigger> - <o-icon role="button" icon="dots-horizontal" /> + <DotsHorizontal class="cursor-pointer" /> </template> <o-dropdown-item @@ -53,10 +55,14 @@ <o-icon icon="delete"></o-icon> {{ t("Delete") }} </o-dropdown-item> - <!-- <o-dropdown-item aria-role="listitem" @click="isReportModalActive = true"> + <o-dropdown-item + v-if="canReport" + aria-role="listitem" + @click="isReportModalActive = true" + > <o-icon icon="flag" /> {{ t("Report") }} - </o-dropdown-item> --> + </o-dropdown-item> </o-dropdown> </span> <div class="self-center"> @@ -124,6 +130,20 @@ </form> </div> </article> + <o-modal + v-model:active="isReportModalActive" + has-modal-card + ref="reportModal" + :close-button-aria-label="t('Close')" + :autoFocus="false" + :trapFocus="false" + > + <ReportModal + :on-confirm="reportComment" + :title="t('Report this comment')" + :outside-domain="comment.actor?.domain" + /> + </o-modal> </template> <script lang="ts" setup> import { formatDistanceToNow } from "date-fns"; @@ -132,17 +152,26 @@ import { IPerson, usernameWithDomain } from "../../types/actor"; import { computed, defineAsyncComponent, inject, ref } from "vue"; import { formatDateTimeString } from "@/filters/datetime"; import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; +import DotsHorizontal from "vue-material-design-icons/DotsHorizontal.vue"; import type { Locale } from "date-fns"; import { useI18n } from "vue-i18n"; +import { useCreateReport } from "@/composition/apollo/report"; +import { Snackbar } from "@/plugins/snackbar"; +import { useProgrammatic } from "@oruga-ui/oruga-next"; +import ReportModal from "@/components/Report/ReportModal.vue"; const Editor = defineAsyncComponent( () => import("@/components/TextEditor.vue") ); -const props = defineProps<{ - modelValue: IComment; - currentActor: IPerson; -}>(); +const props = withDefaults( + defineProps<{ + modelValue: IComment; + currentActor: IPerson; + canReport: boolean; + }>(), + { canReport: false } +); const emit = defineEmits(["update:modelValue", "deleteComment"]); @@ -156,7 +185,7 @@ const updatedComment = ref(""); const dateFnsLocale = inject<Locale>("dateFnsLocale"); -// isReportModalActive: boolean = false; +const isReportModalActive = ref(false); const toggleEditMode = (): void => { updatedComment.value = comment.value.text; @@ -170,6 +199,51 @@ const updateComment = (): void => { }); toggleEditMode(); }; + +const { + mutate: createReportMutation, + onError: onCreateReportError, + onDone: oneCreateReportDone, +} = useCreateReport(); + +const reportComment = async ( + content: string, + forward: boolean +): Promise<void> => { + if (!props.modelValue.actor) return; + createReportMutation({ + reportedId: props.modelValue.actor?.id ?? "", + commentsIds: [props.modelValue.id ?? ""], + content, + forward, + }); +}; + +const snackbar = inject<Snackbar>("snackbar"); +const { oruga } = useProgrammatic(); + +onCreateReportError((e) => { + isReportModalActive.value = false; + if (e.message) { + snackbar?.open({ + message: e.message, + variant: "danger", + position: "bottom", + }); + } +}); + +oneCreateReportDone(() => { + isReportModalActive.value = false; + oruga.notification.open({ + message: t("Comment from {'@'}{username} reported", { + username: props.modelValue.actor?.preferredUsername, + }), + variant: "success", + position: "bottom-right", + duration: 5000, + }); +}); </script> <style lang="scss" scoped> @use "@/styles/_mixins" as *; diff --git a/js/src/components/Editor/Mention.ts b/js/src/components/Editor/Mention.ts index 82c134d4b..778777938 100644 --- a/js/src/components/Editor/Mention.ts +++ b/js/src/components/Editor/Mention.ts @@ -2,28 +2,29 @@ import { SEARCH_PERSONS } from "@/graphql/search"; import { VueRenderer } from "@tiptap/vue-3"; import tippy from "tippy.js"; import MentionList from "./MentionList.vue"; -import { apolloClient, waitApolloQuery } from "@/vue-apollo"; +import { apolloClient } from "@/vue-apollo"; import { IPerson } from "@/types/actor"; import pDebounce from "p-debounce"; import { MentionOptions } from "@tiptap/extension-mention"; import { Editor } from "@tiptap/core"; -import { provideApolloClient, useQuery } from "@vue/apollo-composable"; +import { provideApolloClient, useLazyQuery } from "@vue/apollo-composable"; import { Paginate } from "@/types/paginate"; const fetchItems = async (query: string): Promise<IPerson[]> => { try { if (query === "") return []; - const res = await waitApolloQuery( - provideApolloClient(apolloClient)(() => { - return useQuery< - { searchPersons: Paginate<IPerson> }, - { searchText: string } - >(SEARCH_PERSONS, () => ({ - searchText: query, - })); - }) - ); - return res.data.searchPersons.elements; + const res = await provideApolloClient(apolloClient)(async () => { + const { load: loadSearchPersonsQuery } = useLazyQuery< + { searchPersons: Paginate<IPerson> }, + { searchText: string } + >(SEARCH_PERSONS); + + return await loadSearchPersonsQuery(SEARCH_PERSONS, { + searchText: query, + }); + }); + if (!res) return []; + return res.searchPersons.elements; } catch (e) { console.error(e); return []; diff --git a/js/src/components/Event/FullAddressAutoComplete.vue b/js/src/components/Event/FullAddressAutoComplete.vue index 1184cd51e..bfa911951 100644 --- a/js/src/components/Event/FullAddressAutoComplete.vue +++ b/js/src/components/Event/FullAddressAutoComplete.vue @@ -318,18 +318,10 @@ const debounceDelay = computed(() => geocodingAutocomplete.value === true ? 200 : 2000 ); -const { onResult: onAddressSearchResult, load: searchAddress } = useLazyQuery<{ +const { load: searchAddress } = useLazyQuery<{ searchAddress: IAddress[]; }>(ADDRESS); -onAddressSearchResult((result) => { - if (result.loading) return; - const { data } = result; - console.debug("onAddressSearchResult", data.searchAddress); - addressData.value = data.searchAddress; - isFetching.value = false; -}); - const asyncData = async (query: string): Promise<void> => { console.debug("Finding addresses"); if (!query.length) { @@ -345,11 +337,21 @@ const asyncData = async (query: string): Promise<void> => { isFetching.value = true; - searchAddress(undefined, { - query, - locale: locale, - type: props.resultType, - }); + try { + const result = await searchAddress(undefined, { + query, + locale: locale, + type: props.resultType, + }); + + if (!result) return; + console.debug("onAddressSearchResult", result.searchAddress); + addressData.value = result.searchAddress; + isFetching.value = false; + } catch (e) { + console.error(e); + return; + } }; const selectedAddressText = computed(() => { @@ -393,24 +395,9 @@ const locateMe = async (): Promise<void> => { gettingLocation.value = false; }; -const { onResult: onReverseGeocodeResult, load: loadReverseGeocode } = - useReverseGeocode(); +const { load: loadReverseGeocode } = useReverseGeocode(); -onReverseGeocodeResult((result) => { - if (result.loading !== false) return; - const { data } = result; - addressData.value = data.reverseGeocode; - - if (addressData.value.length > 0) { - const foundAddress = addressData.value[0]; - Object.assign(selected, foundAddress); - console.debug("reverse geocode succeded, setting new address"); - queryTextWithDefault.value = addressFullName(foundAddress); - emit("update:modelValue", selected); - } -}); - -const reverseGeoCode = (e: LatLng, zoom: number) => { +const reverseGeoCode = async (e: LatLng, zoom: number) => { console.debug("reverse geocode"); // If the details is opened, just update coords, don't reverse geocode @@ -423,12 +410,26 @@ const reverseGeoCode = (e: LatLng, zoom: number) => { // If the position has been updated through autocomplete selection, no need to geocode it! if (!e || checkCurrentPosition(e)) return; - loadReverseGeocode(undefined, { - latitude: e.lat, - longitude: e.lng, - zoom, - locale: locale as unknown as string, - }); + try { + const result = await loadReverseGeocode(undefined, { + latitude: e.lat, + longitude: e.lng, + zoom, + locale: locale as unknown as string, + }); + if (!result) return; + addressData.value = result.reverseGeocode; + + if (addressData.value.length > 0) { + const foundAddress = addressData.value[0]; + Object.assign(selected, foundAddress); + console.debug("reverse geocode succeded, setting new address"); + queryTextWithDefault.value = addressFullName(foundAddress); + emit("update:modelValue", selected); + } + } catch (err) { + console.error("Failed to load reverse geocode", err); + } }; // eslint-disable-next-line no-undef diff --git a/js/src/components/Group/GroupCard.story.vue b/js/src/components/Group/GroupCard.story.vue index 9539e818c..56772549b 100644 --- a/js/src/components/Group/GroupCard.story.vue +++ b/js/src/components/Group/GroupCard.story.vue @@ -40,10 +40,10 @@ const basicGroup: IGroup = { const groupWithMedia: IGroup = { ...basicGroup, banner: { - url: "https://mobilizon.fr/media/7b340fe641e7ad711ebb6f8821b5ce824992db08701e37ebb901c175436aaafc.jpg?name=framasoft%27s%20banner.jpg", + url: "https://mobilizon.fr/media/a8227a16cc80b3d20ff5ee549a29c1b20a0ca1547f8861129aae9f00c3c69d12.jpg?name=framasoft%27s%20banner.jpg", }, avatar: { - url: "https://mobilizon.fr/media/ff5b2d425fb73e17fcbb56a1a032359ee0b21453c11af59e103e783817a32fdf.png?name=framasoft%27s%20avatar.png", + url: "https://mobilizon.fr/media/890f5396ef80081a6b1b18a5db969746cf8bb340e8a4e657d665e41f6646c539.jpg?name=framasoft%27s%20avatar.jpg", }, }; diff --git a/js/src/components/Local/CloseEvents.vue b/js/src/components/Local/CloseEvents.vue index 9c6747e66..2f79a9075 100644 --- a/js/src/components/Local/CloseEvents.vue +++ b/js/src/components/Local/CloseEvents.vue @@ -122,8 +122,8 @@ const events = computed( () => eventsResult.value?.searchEvents ?? { elements: [], total: 0 } ); -onMounted(() => { - load(); +onMounted(async () => { + await load(); }); const loading = computed(() => props.doingGeoloc || loadingEvents.value); diff --git a/js/src/components/NavBar.vue b/js/src/components/NavBar.vue index bd0bff4cf..bfca88d7f 100644 --- a/js/src/components/NavBar.vue +++ b/js/src/components/NavBar.vue @@ -13,7 +13,24 @@ > <MobilizonLogo class="w-40" /> </router-link> - <div class="flex items-center md:order-2 ml-auto" v-if="currentActor?.id"> + <div + class="flex items-center md:order-2 ml-auto gap-2" + v-if="currentActor?.id" + > + <router-link + :to="{ name: RouteName.CONVERSATION_LIST }" + class="flex sm:mr-3 text-sm md:mr-0 relative" + id="conversations-menu-button" + aria-expanded="false" + > + <span class="sr-only">{{ t("Open conversations") }}</span> + <Inbox :size="32" /> + <span + v-show="unreadConversationsCount > 0" + class="absolute bottom-0.5 -left-2 bg-primary rounded-full inline-block h-3 w-3 mx-2" + > + </span> + </router-link> <o-dropdown position="bottom-left"> <template #trigger> <button @@ -202,22 +219,28 @@ import MobilizonLogo from "@/components/MobilizonLogo.vue"; import { ICurrentUserRole } from "@/types/enums"; import { logout } from "../utils/auth"; -import { displayName } from "../types/actor"; +import { IPerson, displayName } from "../types/actor"; import RouteName from "../router/name"; -import { computed, ref, watch } from "vue"; +import { computed, onMounted, ref, watch } from "vue"; import { useRoute, useRouter } from "vue-router"; import { useI18n } from "vue-i18n"; import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; +import Inbox from "vue-material-design-icons/Inbox.vue"; import { useCurrentUserClient } from "@/composition/apollo/user"; import { useCurrentActorClient, useCurrentUserIdentities, } from "@/composition/apollo/actor"; -import { useMutation } from "@vue/apollo-composable"; +import { useLazyQuery, useMutation } from "@vue/apollo-composable"; import { UPDATE_DEFAULT_ACTOR } from "@/graphql/actor"; import { changeIdentity } from "@/utils/identity"; import { useRegistrationConfig } from "@/composition/apollo/config"; import { useProgrammatic } from "@oruga-ui/oruga-next"; +import { + UNREAD_ACTOR_CONVERSATIONS, + UNREAD_ACTOR_CONVERSATIONS_SUBSCRIPTION, +} from "@/graphql/user"; +import { ICurrentUser } from "@/types/current-user.model"; const { currentUser } = useCurrentUserClient(); const { currentActor } = useCurrentActorClient(); @@ -239,6 +262,61 @@ const canRegister = computed(() => { const { t } = useI18n({ useScope: "global" }); +const unreadConversationsCount = computed( + () => + unreadActorConversationsResult.value?.loggedUser.defaultActor + ?.unreadConversationsCount ?? 0 +); + +const { + result: unreadActorConversationsResult, + load: loadUnreadConversations, + subscribeToMore, +} = useLazyQuery<{ + loggedUser: Pick<ICurrentUser, "id" | "defaultActor">; +}>(UNREAD_ACTOR_CONVERSATIONS); + +watch(currentActor, async (currentActorValue, previousActorValue) => { + if ( + currentActorValue?.id && + currentActorValue.preferredUsername !== + previousActorValue?.preferredUsername + ) { + await loadUnreadConversations(); + + subscribeToMore< + { personId: string }, + { personUnreadConversationsCount: number } + >({ + document: UNREAD_ACTOR_CONVERSATIONS_SUBSCRIPTION, + variables: { + personId: currentActor.value?.id as string, + }, + updateQuery: (previousResult, { subscriptionData }) => { + console.debug( + "Updating actor unread conversations count query after subscribe to more update", + subscriptionData?.data?.personUnreadConversationsCount + ); + return { + ...previousResult, + loggedUser: { + id: previousResult.loggedUser.id, + defaultActor: { + ...previousResult.loggedUser.defaultActor, + unreadConversationsCount: + subscriptionData?.data?.personUnreadConversationsCount ?? + previousResult.loggedUser.defaultActor + ?.unreadConversationsCount, + } as IPerson, // no idea why, + }, + }; + }, + }); + } +}); + +onMounted(() => {}); + watch(identities, () => { // If we don't have any identities, the user has validated their account, // is logging for the first time but didn't create an identity somehow diff --git a/js/src/components/Participation/NewPrivateMessage.vue b/js/src/components/Participation/NewPrivateMessage.vue new file mode 100644 index 000000000..9bfb7e001 --- /dev/null +++ b/js/src/components/Participation/NewPrivateMessage.vue @@ -0,0 +1,109 @@ +<template> + <form @submit="sendForm"> + <Editor + v-model="text" + mode="basic" + :aria-label="t('Message body')" + v-if="currentActor" + :currentActor="currentActor" + :placeholder="t('Write a new message')" + /> + <o-button class="mt-3" nativeType="submit">{{ t("Send") }}</o-button> + </form> +</template> + +<script lang="ts" setup> +import { useCurrentActorClient } from "@/composition/apollo/actor"; +import { SEND_EVENT_PRIVATE_MESSAGE_MUTATION } from "@/graphql/conversations"; +import { EVENT_CONVERSATIONS } from "@/graphql/event"; +import { IConversation } from "@/types/conversation"; +import { ParticipantRole } from "@/types/enums"; +import { IEvent } from "@/types/event.model"; +import { useMutation } from "@vue/apollo-composable"; +import { computed, defineAsyncComponent, ref } from "vue"; +import { useI18n } from "vue-i18n"; + +const { t } = useI18n({ useScope: "global" }); + +const props = defineProps<{ + event: IEvent; +}>(); + +const event = computed(() => props.event); + +const text = ref(""); +const { + mutate: eventPrivateMessageMutate, + onDone: onEventPrivateMessageMutated, +} = useMutation< + { + sendEventPrivateMessage: IConversation; + }, + { + text: string; + actorId: string; + eventId: string; + roles?: string; + inReplyToActorId?: ParticipantRole[]; + language?: string; + } +>(SEND_EVENT_PRIVATE_MESSAGE_MUTATION, { + update(cache, result) { + if (!result.data?.sendEventPrivateMessage) return; + const cachedData = cache.readQuery<{ + event: Pick<IEvent, "conversations" | "id" | "uuid">; + }>({ + query: EVENT_CONVERSATIONS, + variables: { + uuid: event.value.uuid, + page: 1, + }, + }); + if (!cachedData) return; + cache.writeQuery({ + query: EVENT_CONVERSATIONS, + variables: { + uuid: event.value.uuid, + page: 1, + }, + data: { + event: { + ...cachedData?.event, + conversations: { + ...cachedData.event.conversations, + total: cachedData.event.conversations.total + 1, + elements: [ + ...cachedData.event.conversations.elements, + result.data.sendEventPrivateMessage, + ], + }, + }, + }, + }); + }, +}); + +const { currentActor } = useCurrentActorClient(); + +const sendForm = (e: Event) => { + e.preventDefault(); + console.debug("Sending new private message"); + if (!currentActor.value?.id || !event.value.id) return; + eventPrivateMessageMutate({ + text: text.value, + actorId: + event.value?.attributedTo?.id ?? + event.value.organizerActor?.id ?? + currentActor.value?.id, + eventId: event.value.id, + }); +}; + +onEventPrivateMessageMutated(() => { + text.value = ""; +}); + +const Editor = defineAsyncComponent( + () => import("../../components/TextEditor.vue") +); +</script> diff --git a/js/src/components/Report/ReportModal.vue b/js/src/components/Report/ReportModal.vue index 9726e067c..e3738a630 100644 --- a/js/src/components/Report/ReportModal.vue +++ b/js/src/components/Report/ReportModal.vue @@ -5,7 +5,9 @@ </header> <section> - <div class="flex gap-1 flex-row mb-3"> + <div + class="flex gap-1 flex-row mb-3 bg-mbz-yellow p-3 rounded items-center" + > <o-icon icon="alert" variant="warning" diff --git a/js/src/components/TextEditor.vue b/js/src/components/TextEditor.vue index 7ccd5b6f3..c254caf19 100644 --- a/js/src/components/TextEditor.vue +++ b/js/src/components/TextEditor.vue @@ -273,7 +273,7 @@ import Placeholder from "@tiptap/extension-placeholder"; const props = withDefaults( defineProps<{ modelValue: string; - mode?: string; + mode?: "description" | "comment" | "basic"; maxSize?: number; ariaLabel?: string; currentActor: IPerson; @@ -305,12 +305,6 @@ const isBasicMode = computed((): boolean => { return props.mode === "basic"; }); -// const insertMention = (obj: { range: any; attrs: any }) => { -// console.debug("initialize Mention"); -// }; - -// const observer = ref<MutationObserver | null>(null); - const transformPastedHTML = (html: string): string => { // When using comment mode, limit to acceptable tags if (isCommentMode.value) { diff --git a/js/src/composition/apollo/members.ts b/js/src/composition/apollo/members.ts new file mode 100644 index 000000000..97d3d55dd --- /dev/null +++ b/js/src/composition/apollo/members.ts @@ -0,0 +1,46 @@ +import { GROUP_MEMBERS } from "@/graphql/member"; +import { IGroup } from "@/types/actor"; +import { MemberRole } from "@/types/enums"; +import { useQuery } from "@vue/apollo-composable"; +import { computed } from "vue"; +import type { Ref } from "vue"; + +type useGroupMembersOptions = { + membersPage?: number; + membersLimit?: number; + roles?: MemberRole[]; + enabled?: Ref<boolean>; + name?: string; +}; + +export function useGroupMembers( + groupName: Ref<string>, + options: useGroupMembersOptions = {} +) { + console.debug("useGroupMembers", options); + const { result, error, loading, onResult, onError, refetch, fetchMore } = + useQuery< + { + group: IGroup; + }, + { + name: string; + membersPage?: number; + membersLimit?: number; + } + >( + GROUP_MEMBERS, + () => ({ + groupName: groupName.value, + page: options.membersPage, + limit: options.membersLimit, + name: options.name, + }), + () => ({ + enabled: !!groupName.value && options.enabled?.value, + fetchPolicy: "cache-and-network", + }) + ); + const members = computed(() => result.value?.group?.members); + return { members, error, loading, onResult, onError, refetch, fetchMore }; +} diff --git a/js/src/composition/apollo/tags.ts b/js/src/composition/apollo/tags.ts index 492f03726..2eaa9341d 100644 --- a/js/src/composition/apollo/tags.ts +++ b/js/src/composition/apollo/tags.ts @@ -1,18 +1,22 @@ import { FILTER_TAGS } from "@/graphql/tags"; import { ITag } from "@/types/tag.model"; -import { apolloClient, waitApolloQuery } from "@/vue-apollo"; -import { provideApolloClient, useQuery } from "@vue/apollo-composable"; +import { apolloClient } from "@/vue-apollo"; +import { provideApolloClient, useLazyQuery } from "@vue/apollo-composable"; export async function fetchTags(text: string): Promise<ITag[]> { try { - const res = await waitApolloQuery( - provideApolloClient(apolloClient)(() => - useQuery<{ tags: ITag[] }, { filter: string }>(FILTER_TAGS, { - filter: text, - }) - ) + const { load: loadFetchTagsQuery } = useLazyQuery< + { tags: ITag[] }, + { filter: string } + >(FILTER_TAGS); + + const res = await provideApolloClient(apolloClient)(() => + loadFetchTagsQuery(FILTER_TAGS, { + filter: text, + }) ); - return res.data.tags; + if (!res) return []; + return res.tags; } catch (e) { console.error(e); return []; diff --git a/js/src/graphql/comment.ts b/js/src/graphql/comment.ts index 8fa835b1d..6455cb1bc 100644 --- a/js/src/graphql/comment.ts +++ b/js/src/graphql/comment.ts @@ -17,6 +17,7 @@ export const COMMENT_FIELDS_FRAGMENT = gql` insertedAt updatedAt deletedAt + publishedAt isAnnouncement language } diff --git a/js/src/graphql/conversations.ts b/js/src/graphql/conversations.ts new file mode 100644 index 000000000..92069d81d --- /dev/null +++ b/js/src/graphql/conversations.ts @@ -0,0 +1,166 @@ +import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; +import { COMMENT_FIELDS_FRAGMENT } from "./comment"; + +export const CONVERSATION_QUERY_FRAGMENT = gql` + fragment ConversationQuery on Conversation { + id + conversationParticipantId + actor { + ...ActorFragment + } + lastComment { + ...CommentFields + } + participants { + ...ActorFragment + } + event { + id + uuid + title + picture { + id + url + name + metadata { + width + height + blurhash + } + } + } + unread + insertedAt + updatedAt + } + ${ACTOR_FRAGMENT} + ${COMMENT_FIELDS_FRAGMENT} +`; + +export const CONVERSATIONS_QUERY_FRAGMENT = gql` + fragment ConversationsQuery on PaginatedConversationList { + total + elements { + ...ConversationQuery + } + } + ${CONVERSATION_QUERY_FRAGMENT} +`; + +export const SEND_EVENT_PRIVATE_MESSAGE_MUTATION = gql` + mutation SendEventPrivateMessageMutation( + $text: String! + $actorId: ID! + $eventId: ID! + $roles: [ParticipantRoleEnum] + $attributedToId: ID + $language: String + ) { + sendEventPrivateMessage( + text: $text + actorId: $actorId + eventId: $eventId + roles: $roles + attributedToId: $attributedToId + language: $language + ) { + ...ConversationQuery + } + } + ${CONVERSATION_QUERY_FRAGMENT} +`; + +export const GET_CONVERSATION = gql` + query GetConversation($id: ID!, $page: Int, $limit: Int) { + conversation(id: $id) { + ...ConversationQuery + comments(page: $page, limit: $limit) @connection(key: "comments") { + total + elements { + id + text + actor { + ...ActorFragment + } + insertedAt + updatedAt + deletedAt + publishedAt + } + } + } + } + ${CONVERSATION_QUERY_FRAGMENT} +`; + +export const POST_PRIVATE_MESSAGE_MUTATION = gql` + mutation PostPrivateMessageMutation( + $text: String! + $actorId: ID! + $language: String + $mentions: [String] + ) { + postPrivateMessage( + text: $text + actorId: $actorId + language: $language + mentions: $mentions + ) { + ...ConversationQuery + } + } + ${CONVERSATION_QUERY_FRAGMENT} +`; + +export const REPLY_TO_PRIVATE_MESSAGE_MUTATION = gql` + mutation ReplyToPrivateMessageMutation( + $text: String! + $actorId: ID! + $attributedToId: ID + $language: String + $conversationId: ID! + $mentions: [String] + ) { + postPrivateMessage( + text: $text + actorId: $actorId + attributedToId: $attributedToId + language: $language + conversationId: $conversationId + mentions: $mentions + ) { + ...ConversationQuery + } + } + ${CONVERSATION_QUERY_FRAGMENT} +`; + +export const CONVERSATION_COMMENT_CHANGED = gql` + subscription ConversationCommentChanged($id: ID!) { + conversationCommentChanged(id: $id) { + id + lastComment { + id + text + updatedAt + insertedAt + deletedAt + publishedAt + actor { + ...ActorFragment + } + } + } + } + ${ACTOR_FRAGMENT} +`; + +export const MARK_CONVERSATION_AS_READ = gql` + mutation MarkConversationAsRead($id: ID!, $read: Boolean!) { + updateConversation(conversationId: $id, read: $read) { + ...ConversationQuery + } + } + ${CONVERSATION_QUERY_FRAGMENT} +`; diff --git a/js/src/graphql/event.ts b/js/src/graphql/event.ts index 21f6a482c..ee2f7ed9d 100644 --- a/js/src/graphql/event.ts +++ b/js/src/graphql/event.ts @@ -7,6 +7,7 @@ import { PARTICIPANT_QUERY_FRAGMENT, } from "./participant"; import { TAG_FRAGMENT } from "./tags"; +import { CONVERSATIONS_QUERY_FRAGMENT } from "./conversations"; const FULL_EVENT_FRAGMENT = gql` fragment FullEvent on Event { @@ -375,9 +376,16 @@ export const PARTICIPANTS = gql` rejected participant } + organizerActor { + ...ActorFragment + } + attributedTo { + ...ActorFragment + } } } ${PARTICIPANTS_QUERY_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const EVENT_PERSON_PARTICIPATION = gql` @@ -494,3 +502,41 @@ export const EXPORT_EVENT_PARTICIPATIONS = gql` } } `; + +export const EVENT_CONVERSATIONS = gql` + query EventConversations($uuid: UUID!, $page: Int, $limit: Int) { + event(uuid: $uuid) { + id + uuid + title + conversations(page: $page, limit: $limit) { + ...ConversationsQuery + } + } + } + ${CONVERSATIONS_QUERY_FRAGMENT} +`; + +export const USER_CONVERSATIONS = gql` + query UserConversations($page: Int, $limit: Int) { + loggedUser { + id + conversations(page: $page, limit: $limit) { + ...ConversationsQuery + } + } + } + ${CONVERSATIONS_QUERY_FRAGMENT} +`; + +export const PROFILE_CONVERSATIONS = gql` + query ProfileConversations($page: Int, $limit: Int) { + loggedPerson { + id + conversations(page: $page, limit: $limit) { + ...ConversationsQuery + } + } + } + ${CONVERSATIONS_QUERY_FRAGMENT} +`; diff --git a/js/src/graphql/report.ts b/js/src/graphql/report.ts index 9185c7f79..4ed93fe4c 100644 --- a/js/src/graphql/report.ts +++ b/js/src/graphql/report.ts @@ -85,6 +85,12 @@ const REPORT_FRAGMENT = gql` uuid title } + conversation { + id + participants { + id + } + } } notes { id diff --git a/js/src/graphql/search.ts b/js/src/graphql/search.ts index b9b90e8af..1782d9c7a 100644 --- a/js/src/graphql/search.ts +++ b/js/src/graphql/search.ts @@ -247,6 +247,34 @@ export const SEARCH_PERSONS = gql` ${ACTOR_FRAGMENT} `; +export const SEARCH_PERSON_AND_GROUPS = gql` + query SearchPersonsAndGroups($searchText: String!, $page: Int, $limit: Int) { + searchPersons(term: $searchText, page: $page, limit: $limit) { + total + elements { + ...ActorFragment + } + } + searchGroups(term: $searchText, page: $page, limit: $limit) { + total + elements { + ...ActorFragment + banner { + id + url + } + membersCount + followersCount + physicalAddress { + ...AdressFragment + } + } + } + } + ${ADDRESS_FRAGMENT} + ${ACTOR_FRAGMENT} +`; + export const INTERACT = gql` query Interact($uri: String!) { interact(uri: $uri) { diff --git a/js/src/graphql/user.ts b/js/src/graphql/user.ts index 33ef1bffa..1ea561c13 100644 --- a/js/src/graphql/user.ts +++ b/js/src/graphql/user.ts @@ -312,3 +312,21 @@ export const FEED_TOKENS_LOGGED_USER = gql` } } `; + +export const UNREAD_ACTOR_CONVERSATIONS = gql` + query LoggedUserUnreadConversations { + loggedUser { + id + defaultActor { + id + unreadConversationsCount + } + } + } +`; + +export const UNREAD_ACTOR_CONVERSATIONS_SUBSCRIPTION = gql` + subscription OnUreadActorConversationsChanged($personId: ID!) { + personUnreadConversationsCount(personId: $personId) + } +`; diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index 312160de2..b9d5ae6f8 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1610,5 +1610,20 @@ "External registration": "External registration", "I want to manage the registration with an external provider": "I want to manage the registration with an external provider", "External provider URL": "External provider URL", - "Members will also access private sections like discussions, resources and restricted posts.": "Members will also access private sections like discussions, resources and restricted posts." + "Members will also access private sections like discussions, resources and restricted posts.": "Members will also access private sections like discussions, resources and restricted posts.", + "With unknown participants": "With unknown participants", + "With {participants}": "With {participants}", + "Conversations": "Conversations", + "New private message": "New private message", + "There's no conversations yet": "There's no conversations yet", + "Open conversations": "Open conversations", + "List of conversations": "List of conversations", + "Conversation with {participants}": "Conversation with {participants}", + "Delete this conversation": "Delete this conversation", + "Are you sure you want to delete this entire conversation?": "Are you sure you want to delete this entire conversation?", + "This is a announcement from the organizers of event {event}. You can't reply to it, but you can send a private message to event organizers.": "This is a announcement from the organizers of event {event}. You can't reply to it, but you can send a private message to event organizers.", + "You have access to this conversation as a member of the {group} group": "You have access to this conversation as a member of the {group} group", + "Comment from an event announcement": "Comment from an event announcement", + "Comment from a private conversation": "Comment from a private conversation", + "I've been mentionned in a conversation": "I've been mentionned in a conversation" } \ No newline at end of file diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index fb16e932d..897d13370 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -31,7 +31,7 @@ "A post has been updated": "Un billet a été mis à jour", "A practical tool": "Un outil pratique", "A resource has been created or updated": "Une resource a été créée ou mise à jour", - "A short tagline for your instance homepage. Defaults to \"Gather ⋅ Organize ⋅ Mobilize\"": "Un court slogan pour la page d'accueil de votre instance. La valeur par défaut est « Rassembler ⋅ Organiser ⋅ Mobiliser »", + "A short tagline for your instance homepage. Defaults to \"Gather · Organize · Mobilize\"": "Un court slogan pour la page d'accueil de votre instance. La valeur par défaut est « Rassembler · Organiser · Mobiliser »", "A twitter account handle to follow for event updates": "Un compte sur Twitter à suivre pour les mises à jour de l'événement", "A user-friendly, emancipatory and ethical tool for gathering, organising, and mobilising.": "Un outil convivial, émancipateur et éthique pour se rassembler, s'organiser et se mobiliser.", "A validation email was sent to {email}": "Un email de validation a été envoyé à {email}", @@ -103,7 +103,7 @@ "An URL to an external ticketing platform": "Une URL vers une plateforme de billetterie externe", "An anonymous profile joined the event {event}.": "Un profil anonyme a rejoint l'événement {event}.", "An error has occured while refreshing the page.": "Une erreur est survenue lors du rafraîchissement de la page.", - "An error has occured. Sorry about that. You may try to reload the page.": "Une erreur est survenue. Nous en sommes désolé⋅es. Vous pouvez essayer de rafraîchir la page.", + "An error has occured. Sorry about that. You may try to reload the page.": "Une erreur est survenue. Nous en sommes désolé·es. Vous pouvez essayer de rafraîchir la page.", "An ethical alternative": "Une alternative éthique", "An event I'm going to has been updated": "Un événement auquel je participe a été mis à jour", "An event I'm going to has posted an announcement": "Un événement auquel je participe a posté une annonce", @@ -118,7 +118,7 @@ "And {number} comments": "Et {number} commentaires", "Announcements": "Annonces", "Announcements and mentions notifications are always sent straight away.": "Les notifications d'annonces et de mentions sont toujours envoyées directement.", - "Anonymous participant": "Participant⋅e anonyme", + "Anonymous participant": "Participant·e anonyme", "Anonymous participants will be asked to confirm their participation through e-mail.": "Les participants anonymes devront confirmer leur participation par email.", "Anonymous participations": "Participations anonymes", "Any category": "N'importe quelle catégorie", @@ -126,7 +126,7 @@ "Any distance": "N'importe quelle distance", "Any type": "N'importe quel type", "Anyone can join freely": "N'importe qui peut rejoindre", - "Anyone can request being a member, but an administrator needs to approve the membership.": "N'importe qui peut demander à être membre, mais un⋅e administrateur⋅ice devra approuver leur adhésion.", + "Anyone can request being a member, but an administrator needs to approve the membership.": "N'importe qui peut demander à être membre, mais un·e administrateur·ice devra approuver leur adhésion.", "Anyone wanting to be a member from your group will be able to from your group page.": "N'importe qui voulant devenir membre pourra le faire depuis votre page de groupe.", "Application": "Application", "Application authorized": "Application autorisée", @@ -135,26 +135,26 @@ "Apply filters": "Appliquer les filtres", "Approve member": "Approuver le ou la membre", "Apps": "Applications", - "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Êtes-vous vraiment certain⋅e de vouloir supprimer votre compte ? Vous allez tout perdre. Identités, paramètres, événements créés, messages et participations disparaîtront pour toujours.", + "Are you really sure you want to delete your whole account? You'll lose everything. Identities, settings, events created, messages and participations will be gone forever.": "Êtes-vous vraiment certain·e de vouloir supprimer votre compte ? Vous allez tout perdre. Identités, paramètres, événements créés, messages et participations disparaîtront pour toujours.", "Are you sure you want to <b>completely delete</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Êtes-vous certain·e de vouloir <b>complètement supprimer</b> ce groupe ? Tous les membres - y compris ceux·elles sur d'autres instances - seront notifié·e·s et supprimé·e·s du groupe, et <b>toutes les données associées au groupe (événements, billets, discussions, todos…) seront irrémédiablement détruites</b>.", - "Are you sure you want to <b>delete</b> this comment? <b>This action cannot be undone</b>.": "Êtes-vous certain⋅e de vouloir <b>supprimer</b> ce commentaire ? <b>Cette action ne peut pas être annulée.</b>", - "Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Êtes-vous certain⋅e de vouloir <b>supprimer</b> ce commentaire ? Cette action ne peut pas être annulée.", - "Are you sure you want to <b>delete</b> this event? <b>This action cannot be undone</b>. You may want to engage the discussion with the event creator and ask them to edit their event instead.": "Êtes-vous certain⋅e de vouloir <b>supprimer</b> cet événement ? Cette action n'est pas réversible. Vous voulez peut-être engager la discussion avec le créateur de l'événement et lui demander de modifier son événement à la place.", - "Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Êtes-vous certain⋅e de vouloir <b>supprimer</b> cet événement ? Cette action n'est pas réversible. Vous voulez peut-être engager la discussion avec le créateur de l'événement ou bien modifier son événement à la place.", + "Are you sure you want to <b>delete</b> this comment? <b>This action cannot be undone</b>.": "Êtes-vous certain·e de vouloir <b>supprimer</b> ce commentaire ? <b>Cette action ne peut pas être annulée.</b>", + "Are you sure you want to <b>delete</b> this comment? This action cannot be undone.": "Êtes-vous certain·e de vouloir <b>supprimer</b> ce commentaire ? Cette action ne peut pas être annulée.", + "Are you sure you want to <b>delete</b> this event? <b>This action cannot be undone</b>. You may want to engage the discussion with the event creator and ask them to edit their event instead.": "Êtes-vous certain·e de vouloir <b>supprimer</b> cet événement ? Cette action n'est pas réversible. Vous voulez peut-être engager la discussion avec le créateur de l'événement et lui demander de modifier son événement à la place.", + "Are you sure you want to <b>delete</b> this event? This action cannot be undone. You may want to engage the discussion with the event creator or edit its event instead.": "Êtes-vous certain·e de vouloir <b>supprimer</b> cet événement ? Cette action n'est pas réversible. Vous voulez peut-être engager la discussion avec le créateur de l'événement ou bien modifier son événement à la place.", "Are you sure you want to <b>suspend</b> this group? All members - including remote ones - will be notified and removed from the group, and <b>all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed</b>.": "Êtes-vous certain·e de vouloir <b>suspendre</b> ce groupe ? Tous les membres - y compris ceux·elles sur d'autres instances - seront notifié·e·s et supprimé·e·s du groupe, et <b>toutes les données associées au groupe (événements, billets, discussions, todos…) seront irrémédiablement détruites</b>.", "Are you sure you want to <b>suspend</b> this group? As this group originates from instance {instance}, this will only remove local members and delete the local data, as well as rejecting all the future data.": "Êtes-vous certain·e de vouloir <b>suspendre</b> ce groupe ? Comme ce groupe provient de l'instance {instance}, cela supprimera seulement les membres locaux et supprimera les données locales, et rejettera également toutes les données futures.", - "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Êtes-vous certain⋅e de vouloir annuler la création de l'événement ? Vous allez perdre toutes vos modifications.", - "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Êtes-vous certain⋅e de vouloir annuler la modification de l'événement ? Vous allez perdre toutes vos modifications.", - "Are you sure you want to cancel your participation at event \"{title}\"?": "Êtes-vous certain⋅e de vouloir annuler votre participation à l'événement « {title} » ?", - "Are you sure you want to delete this entire discussion?": "Êtes-vous certain⋅e de vouloir supprimer l'entièreté de cette discussion ?", - "Are you sure you want to delete this event? This action cannot be reverted.": "Êtes-vous certain⋅e de vouloir supprimer cet événement ? Cette action ne peut être annulée.", + "Are you sure you want to cancel the event creation? You'll lose all modifications.": "Êtes-vous certain·e de vouloir annuler la création de l'événement ? Vous allez perdre toutes vos modifications.", + "Are you sure you want to cancel the event edition? You'll lose all modifications.": "Êtes-vous certain·e de vouloir annuler la modification de l'événement ? Vous allez perdre toutes vos modifications.", + "Are you sure you want to cancel your participation at event \"{title}\"?": "Êtes-vous certain·e de vouloir annuler votre participation à l'événement « {title} » ?", + "Are you sure you want to delete this entire discussion?": "Êtes-vous certain·e de vouloir supprimer l'entièreté de cette discussion ?", + "Are you sure you want to delete this event? This action cannot be reverted.": "Êtes-vous certain·e de vouloir supprimer cet événement ? Cette action ne peut être annulée.", "Are you sure you want to delete this post? This action cannot be reverted.": "Voulez-vous vraiment supprimer ce billet ? Cette action ne peut pas être annulée.", - "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "Êtes-vous sûr⋅e de vouloir quitter le groupe {groupName} ? Vous perdrez accès au contenu privé de ce groupe. Cette action ne peut pas être annulée.", + "Are you sure you want to leave the group {groupName}? You'll loose access to this group's private content. This action cannot be undone.": "Êtes-vous sûr·e de vouloir quitter le groupe {groupName} ? Vous perdrez accès au contenu privé de ce groupe. Cette action ne peut pas être annulée.", "As the event organizer has chosen to manually validate participation requests, your participation will be really confirmed only once you receive an email stating it's being accepted.": "L'organisateur de l'événement ayant choisi de valider manuellement les demandes de participation, votre participation ne sera réellement confirmée que lorsque vous recevrez un courriel indiquant qu'elle est acceptée.", - "Ask your instance admin to {enable_feature}.": "Demandez à l'administrateur⋅ice de votre instance d'{enable_feature}.", + "Ask your instance admin to {enable_feature}.": "Demandez à l'administrateur·ice de votre instance d'{enable_feature}.", "Assigned to": "Assigné à", "Atom feed for events and posts": "Flux Atom pour les événements et les billets", - "Attending": "Participant⋅e", + "Attending": "Participant·e", "Authorize": "Autoriser", "Authorize application": "Autoriser l'application", "Authorized on {authorization_date}": "Autorisée le {authorization_date}", @@ -165,7 +165,7 @@ "Back to previous page": "Retour à la page précédente", "Back to profile list": "Retour à la liste des profiles", "Back to top": "Retour en haut", - "Back to user list": "Retour à la liste des utilisateur⋅ices", + "Back to user list": "Retour à la liste des utilisateur·ices", "Banner": "Bannière", "Become part of the community and start organizing events": "Faites partie de la communauté et commencez à organiser des événements", "Before you can login, you need to click on the link inside it to validate your account.": "Avant que vous puissiez vous enregistrer, vous devez cliquer sur le lien à l'intérieur pour valider votre compte.", @@ -207,7 +207,7 @@ "Change role": "Changer le role", "Change the filters.": "Changez les filtres.", "Change timezone": "Changer de fuseau horaire", - "Change user email": "Modifier l'email de l'utilisateur⋅ice", + "Change user email": "Modifier l'email de l'utilisateur·ice", "Change user role": "Changer le role de l'utilisateur", "Check your device to continue. You may now close this window.": "Vérifiez votre appareil pour continuer. Vous pouvez maintenant fermer cette fenêtre.", "Check your inbox (and your junk mail folder).": "Vérifiez votre boîte de réception (et votre dossier des indésirables).", @@ -223,7 +223,7 @@ "Click for more information": "Cliquez pour plus d'informations", "Click to upload": "Cliquez pour téléverser", "Close": "Fermer", - "Close comments for all (except for admins)": "Fermer les commentaires à tout le monde (excepté les administrateur⋅rice·s)", + "Close comments for all (except for admins)": "Fermer les commentaires à tout le monde (excepté les administrateur·rice·s)", "Close map": "Fermer la carte", "Closed": "Fermé", "Comment body": "Corps du commentaire", @@ -238,7 +238,7 @@ "Confirm my participation": "Confirmer ma participation", "Confirm my particpation": "Confirmer ma participation", "Confirm participation": "Confirmer la participation", - "Confirm user": "Confirmer l'utilisateur⋅ice", + "Confirm user": "Confirmer l'utilisateur·ice", "Confirmed": "Confirmé·e", "Confirmed at": "Confirmé·e à", "Confirmed: Will happen": "Confirmé : aura lieu", @@ -343,7 +343,7 @@ "Distance": "Distance", "Do not receive any mail": "Ne pas recevoir d'e-mail", "Do you really want to suspend the account « {emailAccount} » ?": "Voulez-vous vraiment suspendre le compte « {emailAccount} » ?", - "Do you really want to suspend this account? All of the user's profiles will be deleted.": "Voulez-vous vraiment suspendre ce compte ? Tous les profils de cet⋅te utilisateur⋅ice seront supprimés.", + "Do you really want to suspend this account? All of the user's profiles will be deleted.": "Voulez-vous vraiment suspendre ce compte ? Tous les profils de cet·te utilisateur·ice seront supprimés.", "Do you really want to suspend this profile? All of the profiles content will be deleted.": "Voulez-vous vraiment suspendre ce profil ? Tout le contenu du profil sera supprimé.", "Do you wish to {create_event} or {explore_events}?": "Voulez-vous {create_event} ou {explore_events} ?", "Do you wish to {create_group} or {explore_groups}?": "Voulez-vous {create_group} ou {explore_groups} ?", @@ -356,7 +356,7 @@ "Edit": "Modifier", "Edit post": "Éditer le billet", "Edit profile {profile}": "Éditer le profil {profile}", - "Edit user email": "Éditer l'email de l'utilisateur⋅ice", + "Edit user email": "Éditer l'email de l'utilisateur·ice", "Edited {ago}": "Édité il y a {ago}", "Edited {relative_time} ago": "Édité il y a {relative_time}", "Eg: Stockholm, Dance, Chess…": "Par exemple : Lyon, Danse, Bridge…", @@ -444,15 +444,15 @@ "Follow a new instance": "Suivre une nouvelle instance", "Follow instance": "Suivre l'instance", "Follow request pending approval": "Demande de suivi en attente d'approbation", - "Follow requests will be approved by a group moderator": "Les demandes de suivi seront approuvées par un⋅e modérateur⋅ice du groupe", + "Follow requests will be approved by a group moderator": "Les demandes de suivi seront approuvées par un·e modérateur·ice du groupe", "Follow status": "Statut du suivi", "Followed": "Suivies", "Followed, pending response": "Suivie, en attente de la réponse", - "Follower": "Abonné⋅es", - "Followers": "Abonné⋅es", - "Followers will receive new public events and posts.": "Les abonnée⋅s recevront les nouveaux événements et billets publics.", + "Follower": "Abonné·es", + "Followers": "Abonné·es", + "Followers will receive new public events and posts.": "Les abonnée·s recevront les nouveaux événements et billets publics.", "Following": "Suivantes", - "Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "Suivre le groupe vous permettra d'être informé⋅e des {group_upcoming_public_events}, alors que rejoindre le groupe signfie que vous {access_to_group_private_content_as_well}, y compris les discussion de groupe, les resources du groupe et les billets réservés au groupe.", + "Following the group will allow you to be informed of the {group_upcoming_public_events}, whereas joining the group means you will {access_to_group_private_content_as_well}, including group discussions, group resources and members-only posts.": "Suivre le groupe vous permettra d'être informé·e des {group_upcoming_public_events}, alors que rejoindre le groupe signfie que vous {access_to_group_private_content_as_well}, y compris les discussion de groupe, les resources du groupe et les billets réservés au groupe.", "Followings": "Abonnements", "Follows us": "Nous suit", "Follows us, pending approval": "Nous suit, en attente de validation", @@ -467,13 +467,13 @@ "From the {startDate} to the {endDate}": "Du {startDate} au {endDate}", "From yourself": "De vous", "Fully accessible with a wheelchair": "Entièrement accessible avec un fauteuil roulant", - "Gather ⋅ Organize ⋅ Mobilize": "Rassembler ⋅ Organiser ⋅ Mobiliser", + "Gather · Organize · Mobilize": "Rassembler · Organiser · Mobiliser", "General": "Général", "General information": "Informations générales", "General settings": "Paramètres généraux", "Geolocate me": "Me géolocaliser", "Geolocation was not determined in time.": "La localisation n'a pas été déterminée à temps.", - "Get informed of the upcoming public events": "Soyez informé⋅e des événements publics à venir", + "Get informed of the upcoming public events": "Soyez informé·e des événements publics à venir", "Getting location": "Récupération de la position", "Getting there": "S'y rendre", "Glossary": "Glossaire", @@ -482,7 +482,7 @@ "Go!": "Go !", "Google Meet": "Google Meet", "Group": "Groupe", - "Group Followers": "Abonné⋅es au groupe", + "Group Followers": "Abonné·es au groupe", "Group Members": "Membres du groupe", "Group URL": "URL du groupe", "Group activity": "Activité des groupes", @@ -520,8 +520,8 @@ "I participate": "Je participe", "I want to allow people to participate without an account.": "Je veux permettre aux gens de participer sans avoir un compte.", "I want to approve every participation request": "Je veux approuver chaque demande de participation", - "I've been mentionned in a comment under an event": "J'ai été mentionné⋅e dans un commentaire sous un événement", - "I've been mentionned in a group discussion": "J'ai été mentionné⋅e dans une discussion d'un groupe", + "I've been mentionned in a comment under an event": "J'ai été mentionné·e dans un commentaire sous un événement", + "I've been mentionned in a group discussion": "J'ai été mentionné·e dans une discussion d'un groupe", "I've clicked on X, then on Y": "J'ai cliqué sur X, puis sur Y", "ICS feed for events": "Flux ICS pour les événements", "ICS/WebCal Feed": "Flux ICS/WebCal", @@ -535,7 +535,7 @@ "If this identity is the only administrator of some groups, you need to delete them before being able to delete this identity.": "Si cette identité est la seule administratrice de certains groupes, vous devez les supprimer avant de pouvoir supprimer cette identité.", "If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:": "Si l'on vous demande votre identité fédérée, elle est composée de votre nom d'utilisateur·ice et de votre instance. Par exemple, l'identité fédérée de votre premier profil est :", "If you have opted for manual validation of participants, Mobilizon will send you an email to inform you of new participations to be processed. You can choose the frequency of these notifications below.": "Si vous avez opté pour la validation manuelle des participantes, Mobilizon vous enverra un email pour vous informer des nouvelles participations à traiter. Vous pouvez choisir la fréquence de ces notifications ci-dessous.", - "If you want, you may send a message to the event organizer here.": "Si vous le désirez, vous pouvez laisser un message pour l'organisateur⋅ice de l'événement ci-dessous.", + "If you want, you may send a message to the event organizer here.": "Si vous le désirez, vous pouvez laisser un message pour l'organisateur·ice de l'événement ci-dessous.", "Ignore": "Ignorer", "Illustration picture for “{category}” by {author} on {source} ({license})": "Image d'illustration pour “{category}” par {author} sur {source} ({license})", "In person": "En personne", @@ -640,7 +640,7 @@ "Member": "Membre", "Members": "Membres", "Members-only post": "Billet reservé aux membres", - "Membership requests will be approved by a group moderator": "Les demandes d'adhésion seront approuvées par un⋅e modérateur⋅ice du groupe", + "Membership requests will be approved by a group moderator": "Les demandes d'adhésion seront approuvées par un·e modérateur·ice du groupe", "Memberships": "Adhésions", "Mentions": "Mentions", "Message": "Message", @@ -704,7 +704,7 @@ "No event found at this address": "Aucun événement trouvé à cette addresse", "No events found": "Aucun événement trouvé", "No events found for {search}": "Aucun événement trouvé pour {search}", - "No follower matches the filters": "Aucun⋅e abonné⋅e ne correspond aux filtres", + "No follower matches the filters": "Aucun·e abonné·e ne correspond aux filtres", "No group found": "Aucun groupe trouvé", "No group matches the filters": "Aucun groupe ne correspond aux filtres", "No group member found": "Aucun membre du groupe trouvé", @@ -719,7 +719,7 @@ "No instances match this filter. Try resetting filter fields?": "Aucune instance ne correspond à ce filtre. Essayer de remettre à zéro les champs des filtres ?", "No languages found": "Aucune langue trouvée", "No member matches the filters": "Aucun·e membre ne correspond aux filtres", - "No members found": "Aucun⋅e membre trouvé⋅e", + "No members found": "Aucun·e membre trouvé·e", "No memberships found": "Aucune adhésion trouvée", "No message": "Pas de message", "No moderation logs yet": "Pas encore de journaux de modération", @@ -729,8 +729,8 @@ "No organized events found": "Aucun événement organisé trouvé", "No organized events listed": "Aucun événement organisé listé", "No participant matches the filters": "Aucun·e participant·e ne correspond aux filtres", - "No participant to approve|Approve participant|Approve {number} participants": "Aucun⋅e participant⋅e à valider|Valider le ou la participant⋅e|Valider {number} participant⋅es", - "No participant to reject|Reject participant|Reject {number} participants": "Aucun⋅e participant⋅e à refuser|Refuser le ou la participant⋅e|Refuser {number} participant⋅es", + "No participant to approve|Approve participant|Approve {number} participants": "Aucun·e participant·e à valider|Valider le ou la participant·e|Valider {number} participant·es", + "No participant to reject|Reject participant|Reject {number} participants": "Aucun·e participant·e à refuser|Refuser le ou la participant·e|Refuser {number} participant·es", "No participations listed": "Aucune participation listée", "No posts found": "Aucun billet trouvé", "No posts yet": "Pas encore de billets", @@ -745,8 +745,8 @@ "No results found": "Aucun résultat trouvé", "No results found for {search}": "Aucun résultat trouvé pour {search}", "No rules defined yet.": "Pas de règles définies pour le moment.", - "No user matches the filter": "Aucun⋅e utilisateur⋅ice ne correspond au filtre", - "No user matches the filters": "Aucun⋅e utilisateur⋅ice ne correspond aux filtres", + "No user matches the filter": "Aucun·e utilisateur·ice ne correspond au filtre", + "No user matches the filters": "Aucun·e utilisateur·ice ne correspond aux filtres", "None": "Aucun", "Not accessible with a wheelchair": "Non accessible avec un fauteuil roulant", "Not approved": "Non approuvé·e·s", @@ -757,7 +757,7 @@ "Notification settings": "Paramètres des notifications", "Notifications": "Notifications", "Notifications for manually approved participations to an event": "Notifications pour l'approbation manuelle des participations à un événement", - "Notify participants": "Notifier les participant⋅es", + "Notify participants": "Notifier les participant·es", "Notify the user of the change": "Notifier l'utilisateur du changement", "Now, create your first profile:": "Maintenant, créez votre premier profil :", "Number of members": "Nombre de membres", @@ -780,13 +780,13 @@ "Only accessible through link (private)": "Uniquement accessible par lien (privé)", "Only accessible to members of the group": "Accessible uniquement aux membres du groupe", "Only alphanumeric lowercased characters and underscores are supported.": "Seuls les caractères alphanumériques minuscules et les tirets bas sont acceptés.", - "Only group members can access discussions": "Seul⋅es les membres du groupes peuvent accéder aux discussions", - "Only group moderators can create, edit and delete events.": "Seule⋅s les modérateur⋅ices de groupe peuvent créer, éditer et supprimer des événements.", + "Only group members can access discussions": "Seul·es les membres du groupes peuvent accéder aux discussions", + "Only group moderators can create, edit and delete events.": "Seule·s les modérateur·ices de groupe peuvent créer, éditer et supprimer des événements.", "Only group moderators can create, edit and delete posts.": "Seul·e·s les modérateur·rice·s du groupe peuvent créer, éditer et supprimer des billets.", - "Only registered users may fetch remote events from their URL.": "Seul⋅es les utilisateur⋅ices enregistré⋅es peuvent récupérer des événements depuis leur URL.", + "Only registered users may fetch remote events from their URL.": "Seul·es les utilisateur·ices enregistré·es peuvent récupérer des événements depuis leur URL.", "Open": "Ouvert", "Open a topic on our forum": "Ouvrir un sujet sur notre forum", - "Open an issue on our bug tracker (advanced users)": "Ouvrir un ticket sur notre système de suivi des bugs (utilisateur⋅ices avancé⋅es)", + "Open an issue on our bug tracker (advanced users)": "Ouvrir un ticket sur notre système de suivi des bugs (utilisateur·ices avancé·es)", "Open main menu": "Ouvrir le menu principal", "Open user menu": "Ouvrir le menu utilisateur", "Opened reports": "Signalements ouverts", @@ -796,24 +796,24 @@ "Organized by": "Organisé par", "Organized by {name}": "Organisé par {name}", "Organized events": "Événements organisés", - "Organizer": "Organisateur⋅ice", + "Organizer": "Organisateur·ice", "Organizer notifications": "Notifications pour organisateur·rice", - "Organizers": "Organisateur⋅ices", + "Organizers": "Organisateur·ices", "Other": "Autre", "Other actions": "Autres actions", "Other notification options:": "Autres options de notification :", "Other software may also support this.": "D'autres logiciels peuvent également supporter cette fonctionnalité.", - "Other users with the same IP address": "Autres utilisateur⋅ices avec la même adresse IP", - "Other users with the same email domain": "Autres utilisateur⋅ices avec le même domaine de courriel", - "Otherwise this identity will just be removed from the group administrators.": "Sinon cette identité sera juste supprimée des administrateur⋅rice·s du groupe.", + "Other users with the same IP address": "Autres utilisateur·ices avec la même adresse IP", + "Other users with the same email domain": "Autres utilisateur·ices avec le même domaine de courriel", + "Otherwise this identity will just be removed from the group administrators.": "Sinon cette identité sera juste supprimée des administrateur·rice·s du groupe.", "Owncast": "Owncast", "Page": "Page", "Page limited to my group (asks for auth)": "Accès limité à mon groupe (demande authentification)", "Page not found": "Page non trouvée", "Parent folder": "Dossier parent", "Partially accessible with a wheelchair": "Partiellement accessible avec un fauteuil roulant", - "Participant": "Participant⋅e", - "Participants": "Participant⋅e⋅s", + "Participant": "Participant·e", + "Participants": "Participant·e·s", "Participants to {eventTitle}": "Participant·es à {eventTitle}", "Participate": "Participer", "Participate using your email address": "Participer en utilisant votre adresse email", @@ -839,7 +839,7 @@ "Pick an instance": "Choisir une instance", "Please add as many details as possible to help identify the problem.": "Merci d'ajouter un maximum de détails afin d'aider à identifier le problème.", "Please check your spam folder if you didn't receive the email.": "Merci de vérifier votre dossier des indésirables si vous n'avez pas reçu l'email.", - "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Veuillez contacter l'administrateur⋅rice de cette instance Mobilizon si vous pensez qu’il s’agit d’une erreur.", + "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Veuillez contacter l'administrateur·rice de cette instance Mobilizon si vous pensez qu’il s’agit d’une erreur.", "Please do not use it in any real way.": "Merci de ne pas en faire une utilisation réelle.", "Please enter your password to confirm this action.": "Merci d'entrer votre mot de passe pour confirmer cette action.", "Please make sure the address is correct and that the page hasn't been moved.": "Assurez‐vous que l’adresse est correcte et que la page n’a pas été déplacée.", @@ -1055,7 +1055,7 @@ "The URL where the event live can be watched again after it has ended": "L'URL où le direct de l'événement peut être visionné à nouveau une fois terminé", "The Zoom video teleconference URL": "L'URL de visio-conférence Zoom", "The account's email address was changed. Check your emails to verify it.": "L'adresse email du compte a été modifiée. Vérifiez vos emails pour confirmer le changement.", - "The actual number of participants may differ, as this event is hosted on another instance.": "Le nombre réel de participant⋅e⋅s peut être différent, car cet événement provient d'une autre instance.", + "The actual number of participants may differ, as this event is hosted on another instance.": "Le nombre réel de participant·e·s peut être différent, car cet événement provient d'une autre instance.", "The calc will be created on {service}": "Le calc sera créé sur {service}", "The content came from another server. Transfer an anonymous copy of the report?": "Le contenu provient d'une autre instance. Transférer une copie anonyme du signalement ?", "The device code is incorrect or no longer valid.": "Le code de l'appareil est incorrect ou n'est plus valide.", @@ -1069,9 +1069,9 @@ "The event is fully online": "L'événement est entièrement en ligne", "The event live video contains subtitles": "Le direct vidéo de l'événement contient des sous-titres", "The event live video does not contain subtitles": "Le direct vidéo de l'événement ne contient pas de sous-titres", - "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "L'organisateur⋅ice de l'événement a choisi de valider manuellement les demandes de participation. Voulez-vous ajouter un petit message pour expliquer pourquoi vous souhaitez participer à cet événement ?", - "The event organizer didn't add any description.": "L'organisateur⋅ice de l'événement n'a pas ajouté de description.", - "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "L'organisateur⋅ice de l'événement valide les participations manuellement. Comme vous avez choisi de participer sans compte, merci d'expliquer pourquoi vous voulez participer à cet événement.", + "The event organiser has chosen to validate manually participations. Do you want to add a little note to explain why you want to participate to this event?": "L'organisateur·ice de l'événement a choisi de valider manuellement les demandes de participation. Voulez-vous ajouter un petit message pour expliquer pourquoi vous souhaitez participer à cet événement ?", + "The event organizer didn't add any description.": "L'organisateur·ice de l'événement n'a pas ajouté de description.", + "The event organizer manually approves participations. Since you've chosen to participate without an account, please explain why you want to participate to this event.": "L'organisateur·ice de l'événement valide les participations manuellement. Comme vous avez choisi de participer sans compte, merci d'expliquer pourquoi vous voulez participer à cet événement.", "The event title will be ellipsed.": "Le titre de l'événement sera ellipsé.", "The event will show as attributed to this group.": "L'événement sera affiché comme étant attribué à ce groupe.", "The event will show as attributed to this profile.": "L'événement sera affiché comme attribué à ce profil.", @@ -1082,7 +1082,7 @@ "The events you created are not shown here.": "Les événements que vous avez créé ne s'affichent pas ici.", "The following user's profiles will be deleted, with all their data:": "Les profils suivants de l'utilisateur·ice seront supprimés, avec toutes leurs données :", "The geolocation prompt was denied.": "La demande de localisation a été refusée.", - "The group can now be joined by anyone, but new members need to be approved by an administrator.": "Le groupe peut maintenant être rejoint par n'importe qui, mais les nouvelles et nouveaux membres doivent être approuvées par un⋅e modérateur⋅ice.", + "The group can now be joined by anyone, but new members need to be approved by an administrator.": "Le groupe peut maintenant être rejoint par n'importe qui, mais les nouvelles et nouveaux membres doivent être approuvées par un·e modérateur·ice.", "The group can now be joined by anyone.": "Le groupe peut maintenant être rejoint par n'importe qui.", "The group can now only be joined with an invite.": "Le groupe peut maintenant être rejoint uniquement sur invitation.", "The group will be publicly listed in search results and may be suggested in the explore section. Only public informations will be shown on it's page.": "Le groupe sera listé publiquement dans les résultats de recherche et pourra être suggéré sur la page « Explorer ». Seules les informations publiques seront affichées sur sa page.", @@ -1104,15 +1104,15 @@ "The post {post} was updated by {profile}.": "Le billet {post} a été mis à jour par {profile}.", "The provided application was not found.": "L'application fournie n'a pas été trouvée.", "The report contents (eventual comments and event) and the reported profile details will be transmitted to Akismet.": "Les contenus du signalement (les éventuels commentaires et événement) et les détails du profil signalé seront transmis à Akismet.", - "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Le signalement sera envoyé aux modérateur⋅ices de votre instance. Vous pouvez expliquer pourquoi vous signalez ce contenu ci-dessous.", + "The report will be sent to the moderators of your instance. You can explain why you report this content below.": "Le signalement sera envoyé aux modérateur·ices de votre instance. Vous pouvez expliquer pourquoi vous signalez ce contenu ci-dessous.", "The selected picture is too heavy. You need to select a file smaller than {size}.": "L'image sélectionnée est trop lourde. Vous devez sélectionner un fichier de moins de {size}.", - "The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Les détails techniques de l'erreur peuvent aider les développeur⋅ices à résoudre le problème plus facilement. Merci de les inclure dans vos retours.", - "The user has been disabled": "L'utilisateur⋅ice a été désactivé", + "The technical details of the error can help developers solve the problem more easily. Please add them to your feedback.": "Les détails techniques de l'erreur peuvent aider les développeur·ices à résoudre le problème plus facilement. Merci de les inclure dans vos retours.", + "The user has been disabled": "L'utilisateur·ice a été désactivé", "The videoconference will be created on {service}": "La visio-conférence sera créée sur {service}", "The {default_privacy_policy} will be used. They will be translated in the user's language.": "La {default_privacy_policy} sera utilisée. Elle sera traduite dans la langue de l'utilisateur·rice.", - "The {default_terms} will be used. They will be translated in the user's language.": "Les {default_terms} seront utilisées. Elles seront traduites dans la langue de l'utilisateur⋅rice.", + "The {default_terms} will be used. They will be translated in the user's language.": "Les {default_terms} seront utilisées. Elles seront traduites dans la langue de l'utilisateur·rice.", "Theme": "Thème", - "There are {participants} participants.": "Il n'y a qu'un⋅e participant⋅e. | Il y a {participants} participant⋅es.", + "There are {participants} participants.": "Il n'y a qu'un·e participant·e. | Il y a {participants} participant·es.", "There is no activity yet. Start doing some things to see activity appear here.": "Il n'y a pas encore d'activité. Commencez par effectuer des actions pour voir des éléments s'afficher ici.", "There will be no way to recover your data.": "Il n'y aura aucun moyen de récupérer vos données.", "There will be no way to restore the profile's data!": "Il n'y aura aucun moyen de restorer les données du profil !", @@ -1120,9 +1120,9 @@ "There's no discussions yet": "Il n'y a pas encore de discussions", "These apps can access your account through the API. If you see here apps that you don't recognize, that don't work as expected or that you don't use anymore, you can revoke their access.": "Ces applications peuvent accéder à votre compte via l'API. Si vous voyez ici des applications que vous ne reconnaissez pas, qui ne fonctionnent pas comme prévu ou que vous n'utilisez plus, vous pouvez révoquer leur accès.", "These events may interest you": "Ces événements peuvent vous intéresser", - "These feeds contain event data for the events for which any of your profiles is a participant or creator. You should keep these private. You can find feeds for specific profiles on each profile edition page.": "Ces flux contiennent des informations sur les événements pour lesquels n'importe lequel de vos profils est un⋅e participant⋅e ou un⋅e créateur⋅ice. Vous devriez les garder privés. Vous pouvez trouver des flux spécifiques à chaque profil sur la page d'édition des profils.", - "These feeds contain event data for the events for which this specific profile is a participant or creator. You should keep these private. You can find feeds for all of your profiles into your notification settings.": "Ces flux contiennent des informations sur les événements pour lesquels ce profil spécifique est un⋅e participant⋅e ou un⋅e créateur⋅ice. Vous devriez les garder privés. Vous pouvez trouver des flux pour l'ensemble de vos profils dans vos paramètres de notification.", - "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Cette instance Mobilizon et l'organisateur⋅ice de l'événement autorise les participations anonymes, mais requiert une validation à travers une confirmation par email.", + "These feeds contain event data for the events for which any of your profiles is a participant or creator. You should keep these private. You can find feeds for specific profiles on each profile edition page.": "Ces flux contiennent des informations sur les événements pour lesquels n'importe lequel de vos profils est un·e participant·e ou un·e créateur·ice. Vous devriez les garder privés. Vous pouvez trouver des flux spécifiques à chaque profil sur la page d'édition des profils.", + "These feeds contain event data for the events for which this specific profile is a participant or creator. You should keep these private. You can find feeds for all of your profiles into your notification settings.": "Ces flux contiennent des informations sur les événements pour lesquels ce profil spécifique est un·e participant·e ou un·e créateur·ice. Vous devriez les garder privés. Vous pouvez trouver des flux pour l'ensemble de vos profils dans vos paramètres de notification.", + "This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.": "Cette instance Mobilizon et l'organisateur·ice de l'événement autorise les participations anonymes, mais requiert une validation à travers une confirmation par email.", "This URL doesn't seem to be valid": "Cette URL ne semble pas être valide", "This URL is not supported": "Cette URL n'est pas supportée", "This application asks for the following permissions:": "Cette application demande les autorisations suivantes :", @@ -1191,14 +1191,14 @@ "This is like your federated username (<code>{username}</code>) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "C'est comme votre adresse fédérée (<code>{username}</code>) pour les groupes. Cela permettra au groupe d'être trouvable sur la fédération, et est garanti d'être unique.", "This is like your federated username ({username}) for groups. It will allow the group to be found on the federation, and is guaranteed to be unique.": "C'est comme votre adresse fédérée ({username}) pour les groupes. Cela permettra au groupe d'être trouvable sur la fédération, et est garanti d'être unique.", "This month": "Ce mois-ci", - "This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "Ce billet est accessible uniquement aux membres. Vous y avez accès à des fins de modération car vous êtes modérateur⋅ice de l'instance.", + "This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator.": "Ce billet est accessible uniquement aux membres. Vous y avez accès à des fins de modération car vous êtes modérateur·ice de l'instance.", "This post is accessible only through it's link. Be careful where you post this link.": "Ce billet est accessible uniquement à travers son lien. Faites attention où vous le diffusez.", "This profile is from another instance, the informations shown here may be incomplete.": "Ce profil provient d'une autre instance, les informations montrées ici peuvent être incomplètes.", "This profile is located on this instance, so you need to {access_the_corresponding_account} to suspend it.": "Ce profil se situe sur cette instance, vous devez donc {access_the_corresponding_account} afin de le suspendre.", "This profile was not found": "Ce profil n'a pas été trouvé", "This setting will be used to display the website and send you emails in the correct language.": "Ce paramètre sera utilisé pour l'affichage du site et pour vous envoyer des courriels dans la bonne langue.", - "This user doesn't have any profiles": "Cet utilisateur⋅ice n'a aucun profil", - "This user was not found": "Cet utilisateur⋅ice n'a pas été trouvé⋅e", + "This user doesn't have any profiles": "Cet utilisateur·ice n'a aucun profil", + "This user was not found": "Cet utilisateur·ice n'a pas été trouvé·e", "This website isn't moderated and the data that you enter will be automatically destroyed every day at 00:01 (Paris timezone).": "Ce site n’est pas modéré et les données que vous y rentrerez seront automatiquement détruites tous les jours à 00:01 (heure de Paris).", "This week": "Cette semaine", "This weekend": "Ce week-end", @@ -1243,12 +1243,12 @@ "Underline": "Souligné", "Undo": "Annuler", "Unfollow": "Ne plus suivre", - "Unfortunately, your participation request was rejected by the organizers.": "Malheureusement, votre demande de participation a été refusée par les organisateur⋅ices.", + "Unfortunately, your participation request was rejected by the organizers.": "Malheureusement, votre demande de participation a été refusée par les organisateur·ices.", "Unknown": "Inconnu", "Unknown actor": "Acteur inconnu", "Unknown error.": "Erreur inconnue.", "Unknown value for the openness setting.": "Valeur inconnue pour le paramètre d'ouverture.", - "Unlogged participation": "Participation non connecté⋅e", + "Unlogged participation": "Participation non connecté·e", "Unsaved changes": "Modifications non enregistrées", "Unsubscribe to browser push notifications": "Se désinscrire des notifications push du navigateur", "Unsuspend": "Annuler la suspension", @@ -1275,10 +1275,10 @@ "Uploaded media total size": "Taille totale des médias téléversés", "Use my location": "Utiliser ma position", "User": "Utilisateur·rice", - "User settings": "Paramètres utilisateur⋅ices", + "User settings": "Paramètres utilisateur·ices", "User suspended and report resolved": "Utilisateur suspendu et signalement résolu", "Username": "Identifiant", - "Users": "Utilisateur⋅rice⋅s", + "Users": "Utilisateur·rice·s", "Validating account": "Validation du compte", "Validating email": "Validation de l'email", "Video Conference": "Visio-conférence", @@ -1377,7 +1377,7 @@ "You deleted the post {post}.": "Vous avez supprimé le billet {post}.", "You deleted the resource {resource}.": "Vous avez supprimé la ressource {resource}.", "You demoted the member {member} to an unknown role.": "Vous avez rétrogradé le membre {member} à un role inconnu.", - "You demoted {member} to moderator.": "Vous avez rétrogradé {member} en tant que modérateur⋅ice.", + "You demoted {member} to moderator.": "Vous avez rétrogradé {member} en tant que modérateur·ice.", "You demoted {member} to simple member.": "Vous avez rétrogradé {member} en tant que simple membre.", "You didn't create or join any event yet.": "Vous n'avez pas encore créé ou rejoint d'événement.", "You don't follow any instances yet.": "Vous ne suivez aucune instance pour le moment.", @@ -1386,7 +1386,7 @@ "You have attended {count} events in the past.": "Vous n'avez participé à aucun événement par le passé.|Vous avez participé à un événement par le passé.|Vous avez participé à {count} événements par le passé.", "You have been invited by {invitedBy} to the following group:": "Vous avez été invité par {invitedBy} à rejoindre le groupe suivant :", "You have been logged-out": "Vous avez été déconnecté·e", - "You have been removed from this group's members.": "Vous avez été exclu⋅e des membres de ce groupe.", + "You have been removed from this group's members.": "Vous avez été exclu·e des membres de ce groupe.", "You have cancelled your participation": "Vous avez annulé votre participation", "You have one event in {days} days.": "Vous n'avez pas d'événements dans {days} jours | Vous avez un événement dans {days} jours. | Vous avez {count} événements dans {days} jours", "You have one event today.": "Vous n'avez pas d'événement aujourd'hui | Vous avez un événement aujourd'hui. | Vous avez {count} événements aujourd'hui", @@ -1398,7 +1398,7 @@ "You may clear all participation information for this device with the buttons below.": "Vous pouvez effacer toutes les informations de participation pour cet appareil avec les boutons ci-dessous.", "You may now close this page or {return_to_the_homepage}.": "Vous pouvez maintenant fermer cette page ou {return_to_the_homepage}.", "You may now close this window, or {return_to_event}.": "Vous pouvez maintenant fermer cette fenêtre, ou bien {return_to_event}.", - "You may show some members as contacts.": "Vous pouvez afficher certain⋅es membres en tant que contacts.", + "You may show some members as contacts.": "Vous pouvez afficher certain·es membres en tant que contacts.", "You moved the folder {resource} into {new_path}.": "Vous avez déplacé le dossier {resource} dans {new_path}.", "You moved the folder {resource} to the root folder.": "Vous avez déplacé le dossier {resource} dans le dossier racine.", "You moved the resource {resource} into {new_path}.": "Vous avez déplacé la ressource {resource} dans {new_path}.", @@ -1407,8 +1407,8 @@ "You need to provide the following code to your application. It will only be valid for a few minutes.": "Vous devez fournir le code suivant à votre application. Il sera seulement valide pendant quelques minutes.", "You posted a comment on the event {event}.": "Vous avez posté un commentaire sur l'événement {event}.", "You promoted the member {member} to an unknown role.": "Vous avez promu le ou la membre {member} à un role inconnu.", - "You promoted {member} to administrator.": "Vous avez promu {member} en tant qu'adminstrateur⋅ice.", - "You promoted {member} to moderator.": "Vous avez promu {member} en tant que modérateur⋅ice.", + "You promoted {member} to administrator.": "Vous avez promu {member} en tant qu'adminstrateur·ice.", + "You promoted {member} to moderator.": "Vous avez promu {member} en tant que modérateur·ice.", "You rejected {member}'s membership request.": "Vous avez rejeté la demande d'adhésion de {member}.", "You renamed the discussion from {old_discussion} to {discussion}.": "Vous avez renommé la discussion {old_discussion} en {discussion}.", "You renamed the folder from {old_resource_title} to {resource}.": "Vous avez renommé le dossier {old_resource_title} en {resource}.", @@ -1420,14 +1420,14 @@ "You updated the group {group}.": "Vous avez mis à jour le groupe {group}.", "You updated the member {member}.": "Vous avez mis à jour le ou la membre {member}.", "You updated the post {post}.": "Vous avez mis à jour le billet {post}.", - "You were demoted to an unknown role by {profile}.": "Vous avez été rétrogradé⋅e à un role inconnu par {profile}.", - "You were demoted to moderator by {profile}.": "Vous avez été rétrogradé⋅e modérateur⋅ice par {profile}.", - "You were demoted to simple member by {profile}.": "Vous avez été rétrogradé⋅e simple membre par {profile}.", - "You were promoted to administrator by {profile}.": "Vous avez été promu⋅e administrateur⋅ice par {profile}.", - "You were promoted to an unknown role by {profile}.": "Vous avez été promu⋅e à un role inconnu par {profile}.", - "You were promoted to moderator by {profile}.": "Vous avez été promu⋅e modérateur⋅ice par {profile}.", + "You were demoted to an unknown role by {profile}.": "Vous avez été rétrogradé·e à un role inconnu par {profile}.", + "You were demoted to moderator by {profile}.": "Vous avez été rétrogradé·e modérateur·ice par {profile}.", + "You were demoted to simple member by {profile}.": "Vous avez été rétrogradé·e simple membre par {profile}.", + "You were promoted to administrator by {profile}.": "Vous avez été promu·e administrateur·ice par {profile}.", + "You were promoted to an unknown role by {profile}.": "Vous avez été promu·e à un role inconnu par {profile}.", + "You were promoted to moderator by {profile}.": "Vous avez été promu·e modérateur·ice par {profile}.", "You will be able to add an avatar and set other options in your account settings.": "Vous pourrez ajouter un avatar et définir d'autres options dans les paramètres de votre compte.", - "You will be redirected to the original instance": "Vous allez être redirigé⋅e vers l'instance d'origine", + "You will be redirected to the original instance": "Vous allez être redirigé·e vers l'instance d'origine", "You will find here all the events you have created or of which you are a participant, as well as events organized by groups you follow or are a member of.": "Vous trouverez ici tous les événements que vous avez créé ou dont vous êtes un·e participant·e, ainsi que les événements organisés par les groupes que vous suivez ou dont vous êtes membre.", "You will receive notifications about this group's public activity depending on %{notification_settings}.": "Vous recevrez des notifications à propos de l'activité publique de ce groupe en fonction de %{notification_settings}.", "You wish to participate to the following event": "Vous souhaitez participer à l'événement suivant", @@ -1472,7 +1472,7 @@ "Zoom": "Zoom", "Zoom in": "Zoomer", "Zoom out": "Dézoomer", - "[This comment has been deleted by it's author]": "[Ce commentaire a été supprimé par son auteur⋅rice]", + "[This comment has been deleted by it's author]": "[Ce commentaire a été supprimé par son auteur·rice]", "[This comment has been deleted]": "[Ce commentaire a été supprimé]", "[deleted]": "[supprimé]", "a non-existent report": "un signalement non-existant", @@ -1517,9 +1517,9 @@ "{available}/{capacity} available places": "Pas de places restantes|{available}/{capacity} places restantes|{available}/{capacity} places restantes", "{count} events": "{count} événements", "{count} km": "{count} km", - "{count} members": "Aucun membre|Un⋅e membre|{count} membres", - "{count} members or followers": "Aucun⋅e membre ou abonné⋅e|Un⋅e membre ou abonné⋅e|{count} membres ou abonné⋅es", - "{count} participants": "Aucun⋅e participant⋅e | Un⋅e participant⋅e | {count} participant⋅e⋅s", + "{count} members": "Aucun membre|Un·e membre|{count} membres", + "{count} members or followers": "Aucun·e membre ou abonné·e|Un·e membre ou abonné·e|{count} membres ou abonné·es", + "{count} participants": "Aucun·e participant·e | Un·e participant·e | {count} participant·e·s", "{count} requests waiting": "Une demande en attente|{count} demandes en attente", "{eventsCount} events found": "Aucun événement trouvé|Un événement trouvé|{eventsCount} événements trouvés", "{folder} - Resources": "{folder} - Ressources", @@ -1536,7 +1536,7 @@ "{member} joined the group.": "{member} a rejoint le groupe.", "{member} rejected the invitation to join the group.": "{member} a refusé l'invitation à se joindre au groupe.", "{member} requested to join the group.": "{member} a demandé à rejoindre le groupe.", - "{member} was invited by {profile}.": "{member} a été invité⋅e par {profile}.", + "{member} was invited by {profile}.": "{member} a été invité·e par {profile}.", "{moderator} added a note on {report}": "{moderator} a ajouté une note sur {report}", "{moderator} closed {report}": "{moderator} a fermé {report}", "{moderator} deleted an event named \"{title}\"": "{moderator} a supprimé un événement nommé \"{title}\"", @@ -1554,7 +1554,7 @@ "{numberOfCategories} selected": "{numberOfCategories} sélectionnées", "{numberOfLanguages} selected": "{numberOfLanguages} sélectionnées", "{number} kilometers": "{number} kilomètres", - "{number} members": "Aucun⋅e membre|Un⋅e membre|{number} membres", + "{number} members": "Aucun·e membre|Un·e membre|{number} membres", "{number} memberships": "{number} adhésions", "{number} organized events": "Aucun événement organisé|Un événement organisé|{number} événements organisés", "{number} participations": "Aucune participation|Une participation|{number} participations", @@ -1574,7 +1574,7 @@ "{profile} deleted the folder {resource}.": "{profile} a supprimé le dossier {resource}.", "{profile} deleted the resource {resource}.": "{profile} a supprimé la ressource {resource}.", "{profile} demoted {member} to an unknown role.": "{profile} a rétrogradé {member} à un role inconnu.", - "{profile} demoted {member} to moderator.": "{profile} a rétrogradé {member} en tant que modérateur⋅ice.", + "{profile} demoted {member} to moderator.": "{profile} a rétrogradé {member} en tant que modérateur·ice.", "{profile} demoted {member} to simple member.": "{profile} a rétrogradé {member} en tant que simple membre.", "{profile} excluded member {member}.": "{profile} a exclu le ou la membre {member}.", "{profile} joined the the event {event}.": "{profile} a rejoint l'événement {event}.", @@ -1583,9 +1583,9 @@ "{profile} moved the resource {resource} into {new_path}.": "{profile} a déplacé la ressource {resource} dans {new_path}.", "{profile} moved the resource {resource} to the root folder.": "{profile} a déplacé la ressource {resource} dans le dossier racine.", "{profile} posted a comment on the event {event}.": "{profile} a posté un commentaire sur l'événement {event}.", - "{profile} promoted {member} to administrator.": "{profile} a promu {member} en tant qu'administrateur⋅ice.", + "{profile} promoted {member} to administrator.": "{profile} a promu {member} en tant qu'administrateur·ice.", "{profile} promoted {member} to an unknown role.": "{profile} a promu {member} à un role inconnu.", - "{profile} promoted {member} to moderator.": "{profile} a promu {member} en tant que modérateur⋅ice.", + "{profile} promoted {member} to moderator.": "{profile} a promu {member} en tant que modérateur·ice.", "{profile} quit the group.": "{profile} a quitté le groupe.", "{profile} rejected {member}'s membership request.": "{profile} a rejeté la demande d'adhésion de {member}.", "{profile} renamed the discussion from {old_discussion} to {discussion}.": "{profile} a renommé la discussion {old_discussion} en {discussion}.", @@ -1601,10 +1601,25 @@ "{username} was invited to {group}": "{username} a été invité à {group}", "{user}'s follow request was accepted": "La demande de suivi de {user} a été acceptée", "{user}'s follow request was rejected": "La demande de suivi de {user} a été rejetée", - "© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap", + "© The OpenStreetMap Contributors": "© Les Contributeur·ices OpenStreetMap", "Go to booking": "Aller à la réservation", "External registration": "Inscription externe", "I want to manage the registration with an external provider": "Je souhaite gérer l'enregistrement auprès d'un fournisseur externe", "External provider URL": "URL du fournisseur externe", - "Members will also access private sections like discussions, resources and restricted posts.": "Les membres auront également accès aux section privées comme les discussions, les ressources et les billets restreints." + "Members will also access private sections like discussions, resources and restricted posts.": "Les membres auront également accès aux section privées comme les discussions, les ressources et les billets restreints.", + "With unknown participants": "Avec des participant·es inconnu·es", + "With {participants}": "Avec {participants}", + "Conversations": "Conversations", + "New private message": "Nouveau message privé", + "There's no conversations yet": "Il n'y a pas encore de conversations", + "Open conversations": "Ouvrir les conversations", + "List of conversations": "Liste des conversations", + "Conversation with {participants}": "Conversation avec {participants}", + "Delete this conversation": "Supprimer cette conversation", + "Are you sure you want to delete this entire conversation?": "Êtes-vous sûr·e de vouloir supprimer l'entièreté de cette conversation ?", + "This is a announcement from the organizers of event {event}. You can't reply to it, but you can send a private message to event organizers.": "Ceci est une annonce des organisateur·ices de cet événement {event}. Vous ne pouvez pas y répondre, mais vous pouvez envoyer un nouveau message aux organisateur·ices de l'événement.", + "You have access to this conversation as a member of the {group} group": "Vous avez accès à cette conversation en tant que membre du groupe {group}", + "Comment from an event announcement": "Commentaire d'une annonce d'événement", + "Comment from a private conversation": "Commentaire d'une conversation privée", + "I've been mentionned in a conversation": "J'ai été mentionnée dans une conversation" } diff --git a/js/src/router/conversation.ts b/js/src/router/conversation.ts new file mode 100644 index 000000000..f5b3dfc85 --- /dev/null +++ b/js/src/router/conversation.ts @@ -0,0 +1,33 @@ +import { RouteRecordRaw } from "vue-router"; +import { i18n } from "@/utils/i18n"; + +const t = i18n.global.t; + +export enum ConversationRouteName { + CONVERSATION_LIST = "DISCUSSION_LIST", + CONVERSATION = "CONVERSATION", +} + +export const conversationRoutes: RouteRecordRaw[] = [ + { + path: "/conversations", + name: ConversationRouteName.CONVERSATION_LIST, + component: (): Promise<any> => + import("@/views/Conversations/ConversationListView.vue"), + props: true, + meta: { + requiredAuth: true, + announcer: { + message: (): string => t("List of conversations") as string, + }, + }, + }, + { + path: "/conversations/:id/:comment_id?", + name: ConversationRouteName.CONVERSATION, + component: (): Promise<any> => + import("@/views/Conversations/ConversationView.vue"), + props: true, + meta: { requiredAuth: true, announcer: { skip: true } }, + }, +]; diff --git a/js/src/router/index.ts b/js/src/router/index.ts index bb10b78de..5d036f479 100644 --- a/js/src/router/index.ts +++ b/js/src/router/index.ts @@ -8,6 +8,7 @@ import { authGuardIfNeeded } from "./guards/auth-guard"; import { settingsRoutes } from "./settings"; import { groupsRoutes } from "./groups"; import { discussionRoutes } from "./discussion"; +import { conversationRoutes } from "./conversation"; import { userRoutes } from "./user"; import RouteName from "./name"; import { AVAILABLE_LANGUAGES, i18n } from "@/utils/i18n"; @@ -36,6 +37,7 @@ export const routes = [ ...actorRoutes, ...groupsRoutes, ...discussionRoutes, + ...conversationRoutes, ...errorRoutes, { path: "/search", diff --git a/js/src/router/name.ts b/js/src/router/name.ts index 5c3de3422..c124b895d 100644 --- a/js/src/router/name.ts +++ b/js/src/router/name.ts @@ -4,6 +4,7 @@ import { ErrorRouteName } from "./error"; import { SettingsRouteName } from "./settings"; import { GroupsRouteName } from "./groups"; import { DiscussionRouteName } from "./discussion"; +import { ConversationRouteName } from "./conversation"; import { UserRouteName } from "./user"; enum GlobalRouteName { @@ -31,5 +32,6 @@ export default { ...SettingsRouteName, ...GroupsRouteName, ...DiscussionRouteName, + ...ConversationRouteName, ...ErrorRouteName, }; diff --git a/js/src/types/actor/person.model.ts b/js/src/types/actor/person.model.ts index c0a0ee215..f8c333820 100644 --- a/js/src/types/actor/person.model.ts +++ b/js/src/types/actor/person.model.ts @@ -7,6 +7,7 @@ import type { IParticipant } from "../participant.model"; import type { IMember } from "./member.model"; import type { IFeedToken } from "../feedtoken.model"; import { IFollower } from "./follower.model"; +import { IConversation } from "../conversation"; export interface IPerson extends IActor { feedTokens: IFeedToken[]; @@ -16,6 +17,8 @@ export interface IPerson extends IActor { follows?: Paginate<IFollower>; user?: ICurrentUser; organizedEvents?: Paginate<IEvent>; + conversations?: Paginate<IConversation>; + unreadConversationsCount?: number; } export class Person extends Actor implements IPerson { @@ -28,6 +31,7 @@ export class Person extends Actor implements IPerson { memberships!: Paginate<IMember>; organizedEvents!: Paginate<IEvent>; + conversations!: Paginate<IConversation>; user!: ICurrentUser; diff --git a/js/src/types/comment.model.ts b/js/src/types/comment.model.ts index 80cc3366d..e345e1a22 100644 --- a/js/src/types/comment.model.ts +++ b/js/src/types/comment.model.ts @@ -1,6 +1,7 @@ import { IPerson, Person } from "@/types/actor"; import type { IEvent } from "@/types/event.model"; import { EventModel } from "@/types/event.model"; +import { IConversation } from "./conversation"; export interface IComment { id?: string; @@ -20,6 +21,7 @@ export interface IComment { publishedAt?: string; isAnnouncement: boolean; language?: string; + conversation?: IConversation; } export class CommentModel implements IComment { diff --git a/js/src/types/conversation.ts b/js/src/types/conversation.ts new file mode 100644 index 000000000..dbe4fb9fb --- /dev/null +++ b/js/src/types/conversation.ts @@ -0,0 +1,17 @@ +import type { IActor } from "@/types/actor"; +import type { IComment } from "@/types/comment.model"; +import type { Paginate } from "@/types/paginate"; +import { IEvent } from "./event.model"; + +export interface IConversation { + conversationParticipantId?: string; + id?: string; + actor?: IActor; + lastComment?: IComment; + comments: Paginate<IComment>; + participants: IActor[]; + updatedAt: string; + insertedAt: string; + unread: boolean; + event?: IEvent; +} diff --git a/js/src/types/current-user.model.ts b/js/src/types/current-user.model.ts index cfc7c5135..eda5e6eec 100644 --- a/js/src/types/current-user.model.ts +++ b/js/src/types/current-user.model.ts @@ -8,6 +8,7 @@ import { PictureInformation } from "./picture"; import { IMember } from "./actor/member.model"; import { IFeedToken } from "./feedtoken.model"; import { IApplicationToken } from "./application.model"; +import { IConversation } from "./conversation"; export interface ICurrentUser { id: string; @@ -69,4 +70,5 @@ export interface IUser extends ICurrentUser { memberships: Paginate<IMember>; feedTokens: IFeedToken[]; authAuthorizedApplications: IApplicationToken[]; + conversations: Paginate<IConversation>; } diff --git a/js/src/types/event.model.ts b/js/src/types/event.model.ts index f9b520a85..77b545e4f 100644 --- a/js/src/types/event.model.ts +++ b/js/src/types/event.model.ts @@ -11,6 +11,7 @@ import { EventOptions } from "./event-options.model"; import type { IEventOptions } from "./event-options.model"; import { EventJoinOptions, EventStatus, EventVisibility } from "./enums"; import { IEventMetadata, IEventMetadataDescription } from "./event-metadata"; +import { IConversation } from "./conversation"; export interface IEventCardOptions { hideDate?: boolean; @@ -85,6 +86,7 @@ export interface IEvent { relatedEvents: IEvent[]; comments: IComment[]; + conversations: Paginate<IConversation>; onlineAddress?: string; phoneAddress?: string; @@ -161,6 +163,8 @@ export class EventModel implements IEvent { comments: IComment[] = []; + conversations!: Paginate<IConversation>; + attributedTo?: IGroup = new Group(); organizerActor?: IActor = new Actor(); diff --git a/js/src/utils/auth.ts b/js/src/utils/auth.ts index e4c43dfa7..f81ef7527 100644 --- a/js/src/utils/auth.ts +++ b/js/src/utils/auth.ts @@ -49,17 +49,17 @@ export function deleteUserData(): void { }); } -export async function logout(performServerLogout = true): Promise<void> { - const { mutate: logoutMutation } = provideApolloClient(apolloClient)(() => - useMutation(LOGOUT) - ); - const { mutate: cleanUserClient } = provideApolloClient(apolloClient)(() => - useMutation(UPDATE_CURRENT_USER_CLIENT) - ); - const { mutate: cleanActorClient } = provideApolloClient(apolloClient)(() => - useMutation(UPDATE_CURRENT_ACTOR_CLIENT) - ); +const { mutate: logoutMutation } = provideApolloClient(apolloClient)(() => + useMutation(LOGOUT) +); +const { mutate: cleanUserClient } = provideApolloClient(apolloClient)(() => + useMutation(UPDATE_CURRENT_USER_CLIENT) +); +const { mutate: cleanActorClient } = provideApolloClient(apolloClient)(() => + useMutation(UPDATE_CURRENT_ACTOR_CLIENT) +); +export async function logout(performServerLogout = true): Promise<void> { if (performServerLogout) { logoutMutation({ refreshToken: localStorage.getItem(AUTH_REFRESH_TOKEN), diff --git a/js/src/utils/identity.ts b/js/src/utils/identity.ts index 09e25875e..6e595f5e4 100644 --- a/js/src/utils/identity.ts +++ b/js/src/utils/identity.ts @@ -16,21 +16,31 @@ function saveActorData(obj: IPerson): void { localStorage.setItem(AUTH_USER_ACTOR_ID, `${obj.id}`); } +const { + mutate: updateCurrentActorClient, + onDone: onUpdateCurrentActorClientDone, +} = provideApolloClient(apolloClient)(() => + useMutation(UPDATE_CURRENT_ACTOR_CLIENT) +); + export async function changeIdentity(identity: IPerson): Promise<void> { if (!identity.id) return; - const { mutate: updateCurrentActorClient } = provideApolloClient( - apolloClient - )(() => useMutation(UPDATE_CURRENT_ACTOR_CLIENT)); + console.debug("Changing identity", identity); updateCurrentActorClient(identity); if (identity.id) { + console.debug("Saving actor data"); saveActorData(identity); } + + onUpdateCurrentActorClientDone(() => { + console.debug("Updating current actor client"); + }); } -const { onResult: setIdentities, load: loadIdentities } = provideApolloClient( - apolloClient -)(() => useLazyQuery<{ loggedUser: Pick<ICurrentUser, "actors"> }>(IDENTITIES)); +const { load: loadIdentities } = provideApolloClient(apolloClient)(() => + useLazyQuery<{ loggedUser: Pick<ICurrentUser, "actors"> }>(IDENTITIES) +); /** * We fetch from localStorage the latest actor ID used, @@ -39,11 +49,14 @@ const { onResult: setIdentities, load: loadIdentities } = provideApolloClient( */ export async function initializeCurrentActor(): Promise<void> { const actorId = localStorage.getItem(AUTH_USER_ACTOR_ID); + console.debug("Initializing current actor", actorId); - loadIdentities(); + try { + const result = await loadIdentities(); + if (!result) return; - setIdentities(async ({ data }) => { - const identities = computed(() => data?.loggedUser?.actors); + console.debug("got identities", result); + const identities = computed(() => result.loggedUser?.actors); console.debug( "initializing current actor based on identities", identities.value @@ -61,5 +74,7 @@ export async function initializeCurrentActor(): Promise<void> { if (activeIdentity) { await changeIdentity(activeIdentity); } - }); + } catch (e) { + console.error("Failed to initialize current Actor", e); + } } diff --git a/js/src/views/Admin/InstanceView.vue b/js/src/views/Admin/InstanceView.vue index aea9eea37..e10d17bed 100644 --- a/js/src/views/Admin/InstanceView.vue +++ b/js/src/views/Admin/InstanceView.vue @@ -169,7 +169,7 @@ const { mutate: acceptInstance, onError: onAcceptInstanceError } = useMutation( () => ({ update(cache: ApolloCache<any>) { cache.writeFragment({ - id: cache.identify(instance as unknown as Reference), + id: cache.identify(instance.value as unknown as Reference), fragment: gql` fragment InstanceFollowerStatus on Instance { followerStatus diff --git a/js/src/views/Conversations/ConversationListView.vue b/js/src/views/Conversations/ConversationListView.vue new file mode 100644 index 000000000..14c702dad --- /dev/null +++ b/js/src/views/Conversations/ConversationListView.vue @@ -0,0 +1,94 @@ +<template> + <div class="container mx-auto" v-if="conversations"> + <breadcrumbs-nav + :links="[ + { + name: RouteName.CONVERSATION_LIST, + text: t('Conversations'), + }, + ]" + /> + <o-notification v-if="error" variant="danger"> + {{ error }} + </o-notification> + <section> + <h1>{{ t("Conversations") }}</h1> + <o-button @click="openNewMessageModal">{{ + t("New private message") + }}</o-button> + <div v-if="conversations.elements.length > 0" class="my-2"> + <conversation-list-item + :conversation="conversation" + v-for="conversation in conversations.elements" + :key="conversation.id" + /> + <o-pagination + v-show="conversations.total > CONVERSATIONS_PER_PAGE" + class="conversation-pagination" + :total="conversations.total" + v-model:current="page" + :per-page="CONVERSATIONS_PER_PAGE" + :aria-next-label="t('Next page')" + :aria-previous-label="t('Previous page')" + :aria-page-label="t('Page')" + :aria-current-label="t('Current page')" + > + </o-pagination> + </div> + <empty-content v-else icon="chat"> + {{ t("There's no conversations yet") }} + </empty-content> + </section> + </div> +</template> +<script lang="ts" setup> +import RouteName from "../../router/name"; +import { useQuery } from "@vue/apollo-composable"; +import { computed, defineAsyncComponent, ref } from "vue"; +import { useI18n } from "vue-i18n"; +import { integerTransformer, useRouteQuery } from "vue-use-route-query"; +import { PROFILE_CONVERSATIONS } from "@/graphql/event"; +import ConversationListItem from "../../components/Conversations/ConversationListItem.vue"; +import EmptyContent from "../../components/Utils/EmptyContent.vue"; +import { useHead } from "@vueuse/head"; +import { IPerson } from "@/types/actor"; +import { useProgrammatic } from "@oruga-ui/oruga-next"; + +const page = useRouteQuery("page", 1, integerTransformer); +const CONVERSATIONS_PER_PAGE = 10; + +const { t } = useI18n({ useScope: "global" }); + +useHead({ + title: computed(() => t("List of conversations")), +}); + +const error = ref(false); + +const { result: conversationsResult } = useQuery<{ + loggedPerson: Pick<IPerson, "conversations">; +}>(PROFILE_CONVERSATIONS, () => ({ + page: page.value, +})); + +const conversations = computed( + () => + conversationsResult.value?.loggedPerson.conversations || { + elements: [], + total: 0, + } +); + +const { oruga } = useProgrammatic(); + +const NewConversation = defineAsyncComponent( + () => import("@/components/Conversations/NewConversation.vue") +); + +const openNewMessageModal = () => { + oruga.modal.open({ + component: NewConversation, + trapFocus: true, + }); +}; +</script> diff --git a/js/src/views/Conversations/ConversationView.vue b/js/src/views/Conversations/ConversationView.vue new file mode 100644 index 000000000..d568f0b82 --- /dev/null +++ b/js/src/views/Conversations/ConversationView.vue @@ -0,0 +1,527 @@ +<template> + <div class="container mx-auto" v-if="conversation"> + <breadcrumbs-nav + :links="[ + { + name: RouteName.CONVERSATION_LIST, + text: t('Conversations'), + }, + { + name: RouteName.CONVERSATION, + params: { id: conversation.id }, + text: title, + }, + ]" + /> + <div + v-if="conversation.event" + class="bg-mbz-yellow p-6 mb-6 rounded flex gap-2 items-center" + > + <Calendar :size="36" /> + <i18n-t + tag="p" + keypath="This is a announcement from the organizers of event {event}" + > + <template #event> + <b> + <router-link + :to="{ + name: RouteName.EVENT, + params: { uuid: conversation.event.uuid }, + }" + >{{ conversation.event.title }}</router-link + > + </b> + </template> + </i18n-t> + </div> + <div + v-if="currentActor && currentActor.id !== conversation.actor?.id" + class="bg-mbz-info p-6 rounded flex gap-2 items-center my-3" + > + <i18n-t + keypath="You have access to this conversation as a member of the {group} group" + tag="p" + > + <template #group> + <router-link + :to="{ + name: RouteName.GROUP, + params: { + preferredUsername: usernameWithDomain(conversation.actor), + }, + }" + ><b>{{ displayName(conversation.actor) }}</b></router-link + > + </template> + </i18n-t> + </div> + <o-notification v-if="error" variant="danger"> + {{ error }} + </o-notification> + <section v-if="currentActor"> + <discussion-comment + v-for="comment in conversation.comments.elements" + :key="comment.id" + :model-value="comment" + :current-actor="currentActor" + :can-report="true" + @update:modelValue=" + (comment: IComment) => + updateComment({ + commentId: comment.id as string, + text: comment.text, + }) + " + @delete-comment=" + (comment: IComment) => + deleteComment({ + commentId: comment.id as string, + }) + " + /> + <o-button + v-if=" + conversation.comments.elements.length < conversation.comments.total + " + @click="loadMoreComments" + >{{ t("Fetch more") }}</o-button + > + <form @submit.prevent="reply" v-if="!error && !conversation.event"> + <o-field :label="t('Text')"> + <Editor + v-model="newComment" + :aria-label="t('Message body')" + v-if="currentActor" + :currentActor="currentActor" + :placeholder="t('Write a new message')" + /> + </o-field> + <o-button + class="my-2" + native-type="submit" + :disabled="['<p></p>', ''].includes(newComment)" + variant="primary" + >{{ t("Reply") }}</o-button + > + </form> + <div + v-else-if="conversation.event" + class="bg-mbz-yellow p-6 rounded flex gap-2 items-center mt-6" + > + <Calendar :size="36" /> + <i18n-t + tag="p" + keypath="This is a announcement from the organizers of event {event}. You can't reply to it, but you can send a private message to event organizers." + > + <template #event> + <b> + <router-link + :to="{ + name: RouteName.EVENT, + params: { uuid: conversation.event.uuid }, + }" + >{{ conversation.event.title }}</router-link + > + </b> + </template> + </i18n-t> + </div> + </section> + </div> +</template> +<script lang="ts" setup> +import { + CONVERSATION_COMMENT_CHANGED, + GET_CONVERSATION, + MARK_CONVERSATION_AS_READ, + REPLY_TO_PRIVATE_MESSAGE_MUTATION, +} from "../../graphql/conversations"; +import DiscussionComment from "../../components/Discussion/DiscussionComment.vue"; +import { DELETE_COMMENT, UPDATE_COMMENT } from "../../graphql/comment"; +import RouteName from "../../router/name"; +import { IComment } from "../../types/comment.model"; +import { + ApolloCache, + FetchResult, + InMemoryCache, + gql, +} from "@apollo/client/core"; +import { useMutation, useQuery } from "@vue/apollo-composable"; +import { + defineAsyncComponent, + ref, + computed, + onMounted, + onUnmounted, +} from "vue"; +import { useHead } from "@vueuse/head"; +import { useRouter } from "vue-router"; +import { useCurrentActorClient } from "../../composition/apollo/actor"; +import { AbsintheGraphQLError } from "../../types/errors.model"; +import { useI18n } from "vue-i18n"; +import { IConversation } from "@/types/conversation"; +import { usernameWithDomain, displayName } from "@/types/actor"; +import { formatList } from "@/utils/i18n"; +import throttle from "lodash/throttle"; +import Calendar from "vue-material-design-icons/Calendar.vue"; +import { ActorType } from "@/types/enums"; + +const props = defineProps<{ id: string }>(); + +const conversationId = computed(() => props.id); + +const page = ref(1); +const COMMENTS_PER_PAGE = 10; + +const { currentActor } = useCurrentActorClient(); + +const { + result: conversationResult, + onResult: onConversationResult, + onError: onConversationError, + subscribeToMore, + fetchMore, +} = useQuery<{ conversation: IConversation }>( + GET_CONVERSATION, + () => ({ + id: conversationId.value, + page: page.value, + limit: COMMENTS_PER_PAGE, + }), + () => ({ + enabled: conversationId.value !== undefined, + }) +); + +subscribeToMore({ + document: CONVERSATION_COMMENT_CHANGED, + variables: { + id: conversationId.value, + }, + updateQuery( + previousResult: any, + { subscriptionData }: { subscriptionData: any } + ) { + const previousConversation = previousResult.conversation; + const lastComment = + subscriptionData.data.conversationCommentChanged.lastComment; + hasMoreComments.value = !previousConversation.comments.elements.some( + (comment: IComment) => comment.id === lastComment.id + ); + if (hasMoreComments.value) { + return { + conversation: { + ...previousConversation, + lastComment: lastComment, + comments: { + elements: [ + ...previousConversation.comments.elements.filter( + ({ id }: { id: string }) => id !== lastComment.id + ), + lastComment, + ], + total: previousConversation.comments.total + 1, + }, + }, + }; + } + + return previousConversation; + }, +}); + +const conversation = computed(() => conversationResult.value?.conversation); +const otherParticipants = computed( + () => + conversation.value?.participants.filter( + (participant) => participant.id !== currentActor.value?.id + ) ?? [] +); + +const Editor = defineAsyncComponent( + () => import("../../components/TextEditor.vue") +); + +const { t } = useI18n({ useScope: "global" }); + +const title = computed(() => + t("Conversation with {participants}", { + participants: formatList( + otherParticipants.value.map((participant) => displayName(participant)) + ), + }) +); + +useHead({ + title: title.value, +}); + +const newComment = ref(""); +// const newTitle = ref(""); +// const editTitleMode = ref(false); +const hasMoreComments = ref(true); +const error = ref<string | null>(null); + +const { mutate: replyToConversationMutation } = useMutation< + { + postPrivateMessage: IConversation; + }, + { + text: string; + actorId: string; + language?: string; + conversationId: string; + mentions?: string[]; + attributedToId?: string; + } +>(REPLY_TO_PRIVATE_MESSAGE_MUTATION, () => ({ + update: (store: ApolloCache<InMemoryCache>, { data }) => { + console.debug("update after reply to", [conversationId.value, page.value]); + const conversationData = store.readQuery<{ + conversation: IConversation; + }>({ + query: GET_CONVERSATION, + variables: { + id: conversationId.value, + }, + }); + console.debug("update after reply to", conversationData); + if (!conversationData) return; + const { conversation: conversationCached } = conversationData; + + console.debug("got cache", conversationCached); + + store.writeQuery({ + query: GET_CONVERSATION, + variables: { + id: conversationId.value, + }, + data: { + conversation: { + ...conversationCached, + lastComment: data?.postPrivateMessage.lastComment, + comments: { + elements: [ + ...conversationCached.comments.elements, + data?.postPrivateMessage.lastComment, + ], + total: conversationCached.comments.total + 1, + }, + }, + }, + }); + }, +})); + +const reply = () => { + if ( + newComment.value === "" || + !conversation.value?.id || + !currentActor.value?.id + ) + return; + + replyToConversationMutation({ + conversationId: conversation.value?.id, + text: newComment.value, + actorId: currentActor.value?.id, + mentions: otherParticipants.value.map((participant) => + usernameWithDomain(participant) + ), + attributedToId: + conversation.value?.actor?.type === ActorType.GROUP + ? conversation.value?.actor.id + : undefined, + }); + + newComment.value = ""; +}; + +const { mutate: updateComment } = useMutation< + { updateComment: IComment }, + { commentId: string; text: string } +>(UPDATE_COMMENT, () => ({ + update: ( + store: ApolloCache<{ deleteComment: IComment }>, + { data }: FetchResult + ) => { + if (!data || !data.deleteComment) return; + const discussionData = store.readQuery<{ + conversation: IConversation; + }>({ + query: GET_CONVERSATION, + variables: { + id: conversationId.value, + page: page.value, + }, + }); + if (!discussionData) return; + const { conversation: discussionCached } = discussionData; + const index = discussionCached.comments.elements.findIndex( + ({ id }) => id === data.deleteComment.id + ); + if (index > -1) { + discussionCached.comments.elements.splice(index, 1); + discussionCached.comments.total -= 1; + } + store.writeQuery({ + query: GET_CONVERSATION, + variables: { id: conversationId.value, page: page.value }, + data: { conversation: discussionCached }, + }); + }, +})); + +const { mutate: deleteComment } = useMutation< + { deleteComment: { id: string } }, + { commentId: string } +>(DELETE_COMMENT, () => ({ + update: (store: ApolloCache<{ deleteComment: IComment }>, { data }) => { + const id = data?.deleteComment?.id; + if (!id) return; + store.writeFragment({ + id: `Comment:${id}`, + fragment: gql` + fragment CommentDeleted on Comment { + deletedAt + actor { + id + } + text + } + `, + data: { + deletedAt: new Date(), + text: "", + actor: null, + }, + }); + }, +})); + +const loadMoreComments = async (): Promise<void> => { + if (!hasMoreComments.value) return; + console.debug("Loading more comments"); + page.value++; + try { + await fetchMore({ + // New variables + variables: () => ({ + id: conversationId.value, + page: page.value, + limit: COMMENTS_PER_PAGE, + }), + }); + hasMoreComments.value = !conversation.value?.comments.elements + .map(({ id }) => id) + .includes(conversation.value?.lastComment?.id); + } catch (e) { + console.error(e); + } +}; + +// const dialog = inject<Dialog>("dialog"); + +// const openDeleteDiscussionConfirmation = (): void => { +// dialog?.confirm({ +// variant: "danger", +// title: t("Delete this conversation"), +// message: t("Are you sure you want to delete this entire conversation?"), +// confirmText: t("Delete conversation"), +// cancelText: t("Cancel"), +// onConfirm: () => +// deleteConversation({ +// discussionId: conversation.value?.id, +// }), +// }); +// }; + +const router = useRouter(); + +// const { mutate: deleteConversation, onDone: deleteConversationDone } = +// useMutation(DELETE_DISCUSSION); + +// deleteConversationDone(() => { +// if (conversation.value?.actor) { +// router.push({ +// name: RouteName.DISCUSSION_LIST, +// params: { +// preferredUsername: usernameWithDomain(conversation.value.actor), +// }, +// }); +// } +// }); + +onConversationError((discussionError) => + handleErrors(discussionError.graphQLErrors as AbsintheGraphQLError[]) +); + +onConversationResult(({ data }) => { + if ( + page.value === 1 && + data?.conversation?.comments?.total && + data?.conversation?.comments?.total < COMMENTS_PER_PAGE + ) { + markConversationAsRead(); + } +}); + +const handleErrors = async (errors: AbsintheGraphQLError[]): Promise<void> => { + if (errors[0].code === "not_found") { + await router.push({ name: RouteName.PAGE_NOT_FOUND }); + } + if (errors[0].code === "unauthorized") { + error.value = errors[0].message; + } +}; + +onMounted(() => { + window.addEventListener("scroll", handleScroll); +}); + +onUnmounted(() => { + window.removeEventListener("scroll", handleScroll); +}); + +const { mutate: markConversationAsRead } = useMutation< + { + updateConversation: IConversation; + }, + { + id: string; + read: boolean; + } +>(MARK_CONVERSATION_AS_READ, { + variables: { + id: conversationId.value, + read: true, + }, +}); + +const loadMoreCommentsThrottled = throttle(async () => { + console.log("Throttled"); + await loadMoreComments(); + if (!hasMoreComments.value && conversation.value?.unread) { + console.debug("marking as read"); + markConversationAsRead(); + } +}, 1000); + +const handleScroll = (): void => { + const scrollTop = + (document.documentElement && document.documentElement.scrollTop) || + document.body.scrollTop; + const scrollHeight = + (document.documentElement && document.documentElement.scrollHeight) || + document.body.scrollHeight; + const clientHeight = + document.documentElement.clientHeight || window.innerHeight; + const scrolledToBottom = + Math.ceil(scrollTop + clientHeight + 800) >= scrollHeight; + if (scrolledToBottom) { + console.debug("Scrolled to bottom"); + loadMoreCommentsThrottled(); + } +}; +</script> diff --git a/js/src/views/Event/ParticipantsView.vue b/js/src/views/Event/ParticipantsView.vue index f89562787..50447c2cb 100644 --- a/js/src/views/Event/ParticipantsView.vue +++ b/js/src/views/Event/ParticipantsView.vue @@ -250,6 +250,8 @@ </div> </template> </o-table> + <EventConversations :event="event" class="my-6" /> + <NewPrivateMessage :event="event" /> </section> </template> @@ -283,6 +285,8 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue"; import { Notifier } from "@/plugins/notifier"; import Tag from "@/components/TagElement.vue"; import { useHead } from "@vueuse/head"; +import EventConversations from "../../components/Conversations/EventConversations.vue"; +import NewPrivateMessage from "../../components/Participation/NewPrivateMessage.vue"; const PARTICIPANTS_PER_PAGE = 10; const MESSAGE_ELLIPSIS_LENGTH = 130; diff --git a/js/src/views/Group/GroupView.vue b/js/src/views/Group/GroupView.vue index cf092bb67..e9532c49f 100644 --- a/js/src/views/Group/GroupView.vue +++ b/js/src/views/Group/GroupView.vue @@ -44,9 +44,9 @@ <div class="flex flex-wrap justify-center flex-col md:flex-row"> <div class="flex flex-col items-center flex-1 m-0" - v-if="isCurrentActorAGroupMember && !previewPublic" + v-if="isCurrentActorAGroupMember && !previewPublic && members" > - <div class="flex gap-1"> + <div class="flex"> <figure :title=" t(`{'@'}{username} ({role})`, { @@ -54,11 +54,12 @@ role: member.role, }) " - v-for="member in members" + v-for="member in members.elements" :key="member.actor.id" + class="-mr-3" > <img - class="rounded-full" + class="rounded-full h-8" :src="member.actor.avatar.url" v-if="member.actor.avatar" alt="" @@ -698,6 +699,7 @@ import Events from "@/components/Group/Sections/EventsSection.vue"; import { Dialog } from "@/plugins/dialog"; import { Notifier } from "@/plugins/notifier"; import { useGroupResourcesList } from "@/composition/apollo/resources"; +import { useGroupMembers } from "@/composition/apollo/members"; const props = defineProps<{ preferredUsername: string; @@ -1050,18 +1052,18 @@ const isCurrentActorOnADifferentDomainThanGroup = computed((): boolean => { return group.value?.domain !== null; }); -const members = computed((): IMember[] => { - return ( - (group.value?.members?.elements ?? []).filter( - (member: IMember) => - ![ - MemberRole.INVITED, - MemberRole.REJECTED, - MemberRole.NOT_APPROVED, - ].includes(member.role) - ) ?? [] - ); -}); +// const members = computed((): IMember[] => { +// return ( +// (group.value?.members?.elements ?? []).filter( +// (member: IMember) => +// ![ +// MemberRole.INVITED, +// MemberRole.REJECTED, +// MemberRole.NOT_APPROVED, +// ].includes(member.role) +// ) ?? [] +// ); +// }); const physicalAddress = computed((): Address | null => { if (!group.value?.physicalAddress) return null; @@ -1179,6 +1181,10 @@ const hasCurrentActorThisRole = (givenRole: string | string[]): boolean => { ); }; +const { members } = useGroupMembers(preferredUsername, { + enabled: computed(() => isCurrentActorAGroupMember.value), +}); + watch(isCurrentActorAGroupMember, () => { refetchGroup(); }); diff --git a/js/src/views/Moderation/ReportView.vue b/js/src/views/Moderation/ReportView.vue index 40177b3b9..242fe3e78 100644 --- a/js/src/views/Moderation/ReportView.vue +++ b/js/src/views/Moderation/ReportView.vue @@ -257,25 +257,65 @@ <h2 class="mb-1">{{ t("Reported content") }}</h2> <ul v-for="comment in report.comments" :key="comment.id"> <li> - <i18n-t keypath="Comment under event {eventTitle}" tag="p"> - <template #eventTitle> - <router-link - :to="{ - name: RouteName.EVENT, - params: { uuid: comment.event?.uuid }, - }" - > - <b>{{ comment.event?.title }}</b> - </router-link> - </template> - </i18n-t> - <EventComment - :root-comment="true" - :comment="comment" - :event="comment.event as IEvent" - :current-actor="currentActor as IPerson" - :readOnly="true" - /> + <template v-if="comment.conversation && comment.event"> + <i18n-t keypath="Comment from an event announcement" tag="p"> + <template #eventTitle> + <router-link + :to="{ + name: RouteName.EVENT, + params: { uuid: comment.event?.uuid }, + }" + > + <b>{{ comment.event?.title }}</b> + </router-link> + </template> + </i18n-t> + <DiscussionComment + :modelValue="comment" + :current-actor="currentActor as IPerson" + :readOnly="true" + /> + </template> + <template v-else-if="comment.conversation"> + <i18n-t keypath="Comment from a private conversation" tag="p"> + <template #eventTitle> + <router-link + :to="{ + name: RouteName.EVENT, + params: { uuid: comment.event?.uuid }, + }" + > + <b>{{ comment.event?.title }}</b> + </router-link> + </template> + </i18n-t> + <DiscussionComment + :modelValue="comment" + :current-actor="currentActor as IPerson" + :readOnly="true" + /> + </template> + <template v-else> + <i18n-t keypath="Comment under event {eventTitle}" tag="p"> + <template #eventTitle> + <router-link + :to="{ + name: RouteName.EVENT, + params: { uuid: comment.event?.uuid }, + }" + > + <b>{{ comment.event?.title }}</b> + </router-link> + </template> + </i18n-t> + <EventComment + :root-comment="true" + :comment="comment" + :event="comment.event as IEvent" + :current-actor="currentActor as IPerson" + :readOnly="true" + /> + </template> <o-button v-if="!comment.deletedAt" variant="danger" @@ -389,10 +429,10 @@ import { useFeatures } from "@/composition/apollo/config"; import { IEvent } from "@/types/event.model"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; import EventComment from "@/components/Comment/EventComment.vue"; +import DiscussionComment from "@/components/Discussion/DiscussionComment.vue"; import { SUSPEND_PROFILE } from "@/graphql/actor"; import { GET_USER, SUSPEND_USER } from "@/graphql/user"; import { IUser } from "@/types/current-user.model"; -import { waitApolloQuery } from "@/vue-apollo"; const router = useRouter(); @@ -721,7 +761,10 @@ const { mutate: doSuspendUser, onDone: onSuspendUserDone } = useMutation< { userId: string } >(SUSPEND_USER); -const userLazyQuery = useLazyQuery<{ user: IUser }, { id: string }>(GET_USER); +const { load: loadUserLazyQuery } = useLazyQuery< + { user: IUser }, + { id: string } +>(GET_USER); const suspendProfile = async (actorId: string): Promise<void> => { dialog?.confirm({ @@ -761,15 +804,13 @@ const cachedReportedUser = ref<IUser | undefined>(); const suspendUser = async (user: IUser): Promise<void> => { try { if (!cachedReportedUser.value) { - userLazyQuery.load(GET_USER, { id: user.id }); - - const userLazyQueryResult = await waitApolloQuery< - { user: IUser }, - { id: string } - >(userLazyQuery); - console.debug("data", userLazyQueryResult); - - cachedReportedUser.value = userLazyQueryResult.data.user; + try { + const result = await loadUserLazyQuery(GET_USER, { id: user.id }); + if (!result) return; + cachedReportedUser.value = result.user; + } catch (e) { + return; + } } dialog?.confirm({ diff --git a/js/src/views/Settings/NotificationsView.vue b/js/src/views/Settings/NotificationsView.vue index 3e684b6f0..e87fab2b9 100644 --- a/js/src/views/Settings/NotificationsView.vue +++ b/js/src/views/Settings/NotificationsView.vue @@ -73,7 +73,7 @@ <tr v-for="subType in notificationType.subtypes" :key="subType.id"> <td v-for="(method, key) in notificationMethods" :key="key"> <o-checkbox - :modelValue="notificationValues[subType.id][key].enabled" + :modelValue="notificationValues?.[subType.id]?.[key]?.enabled" @update:modelValue=" (e: boolean) => updateNotificationValue({ @@ -82,7 +82,7 @@ enabled: e, }) " - :disabled="notificationValues[subType.id][key].disabled" + :disabled="notificationValues?.[subType.id]?.[key]?.disabled" /> </td> <td> @@ -104,7 +104,7 @@ > <o-select v-model="groupNotifications" - @input="updateSetting({ groupNotifications })" + @update:modelValue="updateSetting({ groupNotifications })" id="groupNotifications" > <option @@ -450,6 +450,10 @@ const defaultNotificationValues = { email: { enabled: true, disabled: false }, push: { enabled: true, disabled: false }, }, + conversation_mention: { + email: { enabled: true, disabled: false }, + push: { enabled: true, disabled: false }, + }, discussion_mention: { email: { enabled: true, disabled: false }, push: { enabled: false, disabled: false }, @@ -464,6 +468,10 @@ const notificationTypes: NotificationType[] = [ { label: t("Mentions") as string, subtypes: [ + { + id: "conversation_mention", + label: t("I've been mentionned in a conversation") as string, + }, { id: "event_comment_mention", label: t("I've been mentionned in a comment under an event") as string, diff --git a/js/src/views/User/LoginView.vue b/js/src/views/User/LoginView.vue index c5645cc5b..2f0a68e02 100644 --- a/js/src/views/User/LoginView.vue +++ b/js/src/views/User/LoginView.vue @@ -249,6 +249,8 @@ onCurrentUserMutationDone(async () => { userAlreadyActivated: "true", }, }); + } else { + throw err; } } }); diff --git a/js/src/views/User/ProviderValidation.vue b/js/src/views/User/ProviderValidation.vue index a954ae906..63675bb59 100644 --- a/js/src/views/User/ProviderValidation.vue +++ b/js/src/views/User/ProviderValidation.vue @@ -37,22 +37,23 @@ const { { id: string; email: string; isLoggedIn: boolean; role: ICurrentUserRole } >(UPDATE_CURRENT_USER_CLIENT); -const { onResult: onLoggedUserResult, load: loadUser } = useLazyQuery<{ +const { load: loadUser } = useLazyQuery<{ loggedUser: IUser; }>(LOGGED_USER); onUpdateCurrentUserClientDone(async () => { - loadUser(); -}); - -onLoggedUserResult(async (result) => { - if (result.loading) return; - const loggedUser = result.data.loggedUser; - if (loggedUser.defaultActor) { - await changeIdentity(loggedUser.defaultActor); - await router.push({ name: RouteName.HOME }); - } else { - // No need to push to REGISTER_PROFILE, the navbar will do it for us + try { + const result = await loadUser(); + if (!result) return; + const loggedUser = result.loggedUser; + if (loggedUser.defaultActor) { + await changeIdentity(loggedUser.defaultActor); + await router.push({ name: RouteName.HOME }); + } else { + // No need to push to REGISTER_PROFILE, the navbar will do it for us + } + } catch (e) { + console.error(e); } }); diff --git a/js/src/vue-apollo.ts b/js/src/vue-apollo.ts index d805fb678..91bba922b 100644 --- a/js/src/vue-apollo.ts +++ b/js/src/vue-apollo.ts @@ -1,13 +1,7 @@ -import { - ApolloClient, - ApolloQueryResult, - NormalizedCacheObject, - OperationVariables, -} from "@apollo/client/core"; +import { ApolloClient, NormalizedCacheObject } from "@apollo/client/core"; import buildCurrentUserResolver from "@/apollo/user"; import { cache } from "./apollo/memory"; import { fullLink } from "./apollo/link"; -import { UseQueryReturn } from "@vue/apollo-composable"; export const apolloClient = new ApolloClient<NormalizedCacheObject>({ cache, @@ -15,24 +9,3 @@ export const apolloClient = new ApolloClient<NormalizedCacheObject>({ connectToDevTools: true, resolvers: buildCurrentUserResolver(cache), }); - -export function waitApolloQuery< - TResult = any, - TVariables extends OperationVariables = OperationVariables, ->({ - onResult, - onError, -}: UseQueryReturn<TResult, TVariables>): Promise<ApolloQueryResult<TResult>> { - return new Promise((res, rej) => { - const { off: offResult } = onResult((result) => { - if (result.loading === false) { - offResult(); - res(result); - } - }); - const { off: offError } = onError((error) => { - offError(); - rej(error); - }); - }); -} diff --git a/js/yarn.lock b/js/yarn.lock index d21b0705f..e17752607 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -60,9 +60,9 @@ leven "^3.1.0" "@apollo/client@^3.0.0", "@apollo/client@^3.3.16": - version "3.8.2" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.2.tgz#42833d7ae5f1bb4909dd435c2971010d1923733e" - integrity sha512-SSxRTHlHdlR65mvV5j5e3JkYs9z/eFQfJPgSfqTeKa3jgHKofBaMb+UWxJPInqV5MqBFAkPFt8fYEBZwM7oGZA== + version "3.8.5" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.5.tgz#becd2101d6049afd03dd796693fb5804346df42f" + integrity sha512-/ueWC3f1pFeH+tWbM1phz6pzUGGijyml6oQ+LKUcQzpXF6tVFPrb6oUIUQCbZpr6Xmv/dtNiFDohc39ra7Solg== dependencies: "@graphql-typed-document-node/core" "^3.1.1" "@wry/context" "^0.7.3" @@ -78,7 +78,7 @@ tslib "^2.3.0" zen-observable-ts "^1.2.5" -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5": +"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.13": version "7.22.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== @@ -86,38 +86,38 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" + integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== "@babel/core@^7.11.1": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.11.tgz#8033acaa2aa24c3f814edaaa057f3ce0ba559c24" - integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.11" - "@babel/parser" "^7.22.11" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" - "@babel/types" "^7.22.11" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" - integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== dependencies: - "@babel/types" "^7.22.10" + "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -130,32 +130,32 @@ "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz#573e735937e99ea75ea30788b57eb52fab7468c9" - integrity sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: - "@babel/types" "^7.22.10" + "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" - integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q== +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" browserslist "^4.21.9" lru-cache "^5.1.1" semver "^6.3.1" "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz#4078686740459eeb4af3494a273ac09148dfb213" - integrity sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" @@ -163,9 +163,9 @@ semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" - integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" regexpu-core "^5.3.1" @@ -182,18 +182,18 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" @@ -202,30 +202,30 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" - integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" - integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.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.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" @@ -240,21 +240,21 @@ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== "@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" - integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.9" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-simple-access@^7.22.5": @@ -283,63 +283,63 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helper-wrap-function@^7.22.9": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614" - integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ== +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.10" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" -"@babel/helpers@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.11.tgz#b02f5d5f2d7abc21ab59eeed80de410ba70b056a" - integrity sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg== +"@babel/helpers@^7.23.0": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" - "@babel/types" "^7.22.11" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" "@babel/highlight@^7.22.13": - version "7.22.13" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16" - integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.20.15", "@babel/parser@^7.21.3", "@babel/parser@^7.22.11", "@babel/parser@^7.22.5": - version "7.22.14" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.14.tgz#c7de58e8de106e88efca42ce17f0033209dfd245" - integrity sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ== +"@babel/parser@^7.20.15", "@babel/parser@^7.21.3", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" - integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" - integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -480,10 +480,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz#dbe3b1ff5a52e2e5edc4b19a60d325a675ed2649" - integrity sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw== +"@babel/plugin-transform-async-generator-functions@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" + integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== dependencies: "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" @@ -506,10 +506,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa" - integrity sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg== +"@babel/plugin-transform-block-scoping@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -530,18 +530,18 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" - integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" @@ -553,10 +553,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2" - integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw== +"@babel/plugin-transform-destructuring@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -599,10 +599,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-for-of@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" - integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -646,31 +646,31 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-modules-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz#d7991d3abad199c03b68ee66a64f216c47ffdfae" - integrity sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g== +"@babel/plugin-transform-modules-commonjs@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: - "@babel/helper-module-transforms" "^7.22.9" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" "@babel/plugin-transform-modules-systemjs@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz#3386be5875d316493b517207e8f1931d93154bb1" - integrity sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.9" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" @@ -711,16 +711,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz#dbbb06ce783cd994a8f430d8cefa553e9b42ca62" - integrity sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw== +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.10" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" @@ -738,19 +738,19 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.12", "@babel/plugin-transform-optional-chaining@^7.22.5": - version "7.22.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz#d7ebf6a88cd2f4d307b0e000ab630acd8124b333" - integrity sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw== +"@babel/plugin-transform-optional-chaining@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" - integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== +"@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -862,16 +862,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.11.0": - version "7.22.14" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.14.tgz#1cbb468d899f64fa71c53446f13b7ff8c0005cc1" - integrity sha512-daodMIoVo+ol/g+//c/AH+szBkFj4STQUikvBijRGL72Ph+w+AMTSh55DUETe8KJlPlDT1k/mp7NBfOuiWmoig== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" + integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.10" + "@babel/compat-data" "^7.22.20" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" @@ -892,39 +892,39 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.11" + "@babel/plugin-transform-async-generator-functions" "^7.22.15" "@babel/plugin-transform-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.10" + "@babel/plugin-transform-block-scoping" "^7.22.15" "@babel/plugin-transform-class-properties" "^7.22.5" "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.6" + "@babel/plugin-transform-classes" "^7.22.15" "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.10" + "@babel/plugin-transform-destructuring" "^7.22.15" "@babel/plugin-transform-dotall-regex" "^7.22.5" "@babel/plugin-transform-duplicate-keys" "^7.22.5" "@babel/plugin-transform-dynamic-import" "^7.22.11" "@babel/plugin-transform-exponentiation-operator" "^7.22.5" "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-for-of" "^7.22.15" "@babel/plugin-transform-function-name" "^7.22.5" "@babel/plugin-transform-json-strings" "^7.22.11" "@babel/plugin-transform-literals" "^7.22.5" "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" "@babel/plugin-transform-member-expression-literals" "^7.22.5" "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.11" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" "@babel/plugin-transform-modules-systemjs" "^7.22.11" "@babel/plugin-transform-modules-umd" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.22.5" "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" "@babel/plugin-transform-object-super" "^7.22.5" "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.22.12" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-private-methods" "^7.22.5" "@babel/plugin-transform-private-property-in-object" "^7.22.11" "@babel/plugin-transform-property-literals" "^7.22.5" @@ -940,7 +940,7 @@ "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.11" + "@babel/types" "^7.22.19" babel-plugin-polyfill-corejs2 "^0.4.5" babel-plugin-polyfill-corejs3 "^0.8.3" babel-plugin-polyfill-regenerator "^0.5.2" @@ -969,44 +969,44 @@ regenerator-runtime "^0.12.0" "@babel/runtime@^7.11.2", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4" - integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA== + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== +"@babel/template@^7.22.15", "@babel/template@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" -"@babel/traverse@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.11.tgz#71ebb3af7a05ff97280b83f05f8865ac94b2027c" - integrity sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ== +"@babel/traverse@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== dependencies: - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.11" - "@babel/types" "^7.22.11" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.22.10", "@babel/types@^7.22.11", "@babel/types@^7.22.5", "@babel/types@^7.4.4": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.11.tgz#0e65a6a1d4d9cbaa892b2213f6159485fe632ea2" - integrity sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg== +"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1015,14 +1015,14 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@codemirror/commands@^6.2.4": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.2.5.tgz#e889f93f9cc85b32f6b2844d85d08688f695a6b8" - integrity sha512-dSi7ow2P2YgPBZflR9AJoaTHvqmeGIgkhignYMd5zK5y6DANTvxKxp6eMEpIDUJkRAaOY/TFZ4jP1ADIO/GLVA== + version "6.3.0" + resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.3.0.tgz#cb7ad6ddc1e8af3a3c352135bd0348e6950b4e9d" + integrity sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q== dependencies: "@codemirror/language" "^6.0.0" "@codemirror/state" "^6.2.0" "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" + "@lezer/common" "^1.1.0" "@codemirror/lang-json@^6.0.1": version "6.0.1" @@ -1033,21 +1033,21 @@ "@lezer/json" "^1.0.0" "@codemirror/language@^6.0.0", "@codemirror/language@^6.8.0": - version "6.9.0" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.9.0.tgz#c471ce1fdb9b1577f312bb68ef54fb4b76f7a420" - integrity sha512-nFu311/0ne/qGuGCL3oKuktBgzVOaxCHZPZv1tLSZkNjPYxxvkjSbzno3MlErG2tgw1Yw1yF8BxMCegeMXqpiw== + version "6.9.1" + resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.9.1.tgz#97e2c3e44cf4ff152add865ed7ecec73868446a4" + integrity sha512-lWRP3Y9IUdOms6DXuBpoWwjkR7yRmnS0hKYCbSfPz9v6Em1A1UCRujAkDiCrdYfs1Z0Eu4dGtwovNPStIfkgNA== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.0.0" + "@lezer/common" "^1.1.0" "@lezer/highlight" "^1.0.0" "@lezer/lr" "^1.0.0" style-mod "^4.0.0" "@codemirror/lint@^6.4.0": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.4.1.tgz#e4626ff8890c745209c6c24840843ff7933bc64f" - integrity sha512-2Hx945qKX7FBan5/gUdTM8fsMYrNG9clIgEcPXestbLVFAUyQYFAuju/5BMNf/PwgpVaX5pvRm4+ovjbp9D9gQ== + version "6.4.2" + resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.4.2.tgz#c13be5320bde9707efdc94e8bcd3c698abae0b92" + integrity sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" @@ -1069,9 +1069,9 @@ "@lezer/highlight" "^1.0.0" "@codemirror/view@^6.0.0", "@codemirror/view@^6.16.0": - version "6.17.1" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.17.1.tgz#2fab256eea6d5ef1d29f0885c18adbdcb462c2e2" - integrity sha512-I5KVxsLbm1f56n9SUajLW0/AzMXYEZVvkiYahMw/yGl5gUjT2WquuKO39xUtiT4z/hNhGD7YuAEVPI8u0mncaQ== + version "6.21.3" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.21.3.tgz#cf8e3ee6f08e06a6912f18bc90548b4b74badb7a" + integrity sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A== dependencies: "@codemirror/state" "^6.1.4" style-mod "^4.1.0" @@ -1194,10 +1194,10 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005" - integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg== +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== "@eslint/eslintrc@^2.1.2": version "2.1.2" @@ -1214,17 +1214,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.48.0": - version "8.48.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" - integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== "@floating-ui/core@^1.1.0": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.4.1.tgz#0d633f4b76052668afb932492ac452f7ebe97f17" - integrity sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" + integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== dependencies: - "@floating-ui/utils" "^0.1.1" + "@floating-ui/utils" "^0.1.3" "@floating-ui/dom@~1.1.1": version "1.1.1" @@ -1233,10 +1233,10 @@ dependencies: "@floating-ui/core" "^1.1.0" -"@floating-ui/utils@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83" - integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== +"@floating-ui/utils@^0.1.3": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" + integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== "@graphql-typed-document-node/core@^3.1.1": version "3.2.0" @@ -1300,7 +1300,7 @@ resolved "https://registry.yarnpkg.com/@histoire/vendors/-/vendors-0.17.0.tgz#12eff1055eacee80fea05bdb0eadb6d30a6541f8" integrity sha512-HI2hkai3p5+gAoWZAGWoAdDLlu0ujfYtGhykGChTQyKAroocizRG21l/2w71cN1K+oigbAccqtxP8BkpqX74cQ== -"@humanwhocodes/config-array@^0.11.10": +"@humanwhocodes/config-array@^0.11.11": version "0.11.11" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== @@ -1319,43 +1319,26 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@intlify/core-base@9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.2.2.tgz#5353369b05cc9fe35cab95fe20afeb8a4481f939" - integrity sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA== +"@intlify/core-base@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.5.0.tgz#cbb17a27029ccfd0a83a837931baee08b887af60" + integrity sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w== dependencies: - "@intlify/devtools-if" "9.2.2" - "@intlify/message-compiler" "9.2.2" - "@intlify/shared" "9.2.2" - "@intlify/vue-devtools" "9.2.2" + "@intlify/message-compiler" "9.5.0" + "@intlify/shared" "9.5.0" -"@intlify/devtools-if@9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz#b13d9ac4b4e2fe6d2e7daa556517a8061fe8bd39" - integrity sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg== +"@intlify/message-compiler@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.5.0.tgz#1b4916bf11ca7024f9c15be0d6b4de7be5317808" + integrity sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g== dependencies: - "@intlify/shared" "9.2.2" + "@intlify/shared" "9.5.0" + source-map-js "^1.0.2" -"@intlify/message-compiler@9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz#e42ab6939b8ae5b3d21faf6a44045667a18bba1c" - integrity sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA== - dependencies: - "@intlify/shared" "9.2.2" - source-map "0.6.1" - -"@intlify/shared@9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.2.2.tgz#5011be9ca2b4ab86f8660739286e2707f9abb4a5" - integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q== - -"@intlify/vue-devtools@9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz#b95701556daf7ebb3a2d45aa3ae9e6415aed8317" - integrity sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg== - dependencies: - "@intlify/core-base" "9.2.2" - "@intlify/shared" "9.2.2" +"@intlify/shared@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.5.0.tgz#185d9ab9f6b4bb4f4d133cfdd51432e9b94c2c44" + integrity sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA== "@istanbuljs/schema@^0.1.2": version "0.1.3" @@ -1438,10 +1421,10 @@ core-js "2.6.0" graphql "14.0.2" -"@lezer/common@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.4.tgz#42b371138af846c1fe8ff5facd4360a670e30b4c" - integrity sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg== +"@lezer/common@^1.0.0", "@lezer/common@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.1.0.tgz#2e5bfe01d7a2ada6056d93c677bba4f1495e098a" + integrity sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw== "@lezer/highlight@^1.0.0": version "1.1.6" @@ -1459,9 +1442,9 @@ "@lezer/lr" "^1.0.0" "@lezer/lr@^1.0.0": - version "1.3.10" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.10.tgz#22833d2876ee61e302027620ee3ecf2c271e7a0f" - integrity sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q== + version "1.3.13" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.13.tgz#578e06c6c52e4dc38421368904585afa3eb82ec8" + integrity sha512-RLAbau/4uSzKgIKj96mI5WUtG1qtiR0Frn0Ei9zhPj8YOkHM+1Bb8SgdVvmR/aWJCFIzjo2KFnDiRZ75Xf5NdQ== dependencies: "@lezer/common" "^1.0.0" @@ -1491,10 +1474,10 @@ resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== -"@oruga-ui/oruga-next@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@oruga-ui/oruga-next/-/oruga-next-0.6.0.tgz#096f4bef223bdf79e2223965894542a13352a9df" - integrity sha512-M1Y5PgCWBUDmQGH74cgzrp3vKaRFdHVtGNr0DwejeJGScB7Q6jodW4xgCz6K4hajLgHW6zxz/3ukpC4ZczlfaQ== +"@oruga-ui/oruga-next@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@oruga-ui/oruga-next/-/oruga-next-0.7.0.tgz#3d454cf648182d25a99a21c7101506f8f585d13a" + integrity sha512-T2KnNhGzgqv/Xzu4Efx3wnYahANcP6Z7Yc8DHOFIOLrM+ZDdTS9OjL3gofBVDrDBRg1DQv6EvsSsNkwMR88LpA== "@pkgr/utils@^2.3.1": version "2.4.2" @@ -1509,19 +1492,16 @@ tslib "^2.6.0" "@playwright/test@^1.25.1": - version "1.37.1" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.37.1.tgz#e7f44ae0faf1be52d6360c6bbf689fd0057d9b6f" - integrity sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg== + version "1.38.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.38.1.tgz#8ef4263e355cd1d8ad7905d471d268e8acb82ed6" + integrity sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ== dependencies: - "@types/node" "*" - playwright-core "1.37.1" - optionalDependencies: - fsevents "2.3.2" + playwright "1.38.1" "@polka/url@^1.0.0-next.20": - version "1.0.0-next.21" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" - integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + version "1.0.0-next.23" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" + integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== "@popperjs/core@^2.9.0": version "2.11.8" @@ -1597,79 +1577,79 @@ picomatch "^2.2.2" "@rushstack/eslint-patch@^1.1.4": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz#16ab6c727d8c2020a5b6e4a176a243ecd88d8d69" - integrity sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw== + version "1.5.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== -"@sentry-internal/tracing@7.66.0": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.66.0.tgz#45ea607917d55a5bcaa3229341387ff6ed9b3a2b" - integrity sha512-3vCgC2hC3T45pn53yTDVcRpHoJTBxelDPPZVsipAbZnoOVPkj7n6dNfDhj3I3kwWCBPahPkXmE+R4xViR8VqJg== +"@sentry-internal/tracing@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.73.0.tgz#4838f31e41d23a6041ef4520519b80f788bf1cac" + integrity sha512-ig3WL/Nqp8nRQ52P205NaypGKNfIl/G+cIqge9xPW6zfRb5kJdM1YParw9GSJ1SPjEZBkBORGAML0on5H2FILw== dependencies: - "@sentry/core" "7.66.0" - "@sentry/types" "7.66.0" - "@sentry/utils" "7.66.0" + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/browser@7.66.0": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.66.0.tgz#9aa3078f8914d2f8acb4ad9fc7b2011c80e357f5" - integrity sha512-rW037rf8jkhyykG38+HUdwkRCKHJEMM5NkCqPIO5zuuxfLKukKdI2rbvgJ93s3/9UfsTuDFcKFL1u43mCn6sDw== +"@sentry/browser@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.73.0.tgz#a8eaeb50cf16ca32f0039a81719c503d7045495f" + integrity sha512-e301hUixcJ5+HNKCJwajFF5smF4opXEFSclyWsJuFNufv5J/1C1SDhbwG2JjBt5zzdSoKWJKT1ewR6vpICyoDw== dependencies: - "@sentry-internal/tracing" "7.66.0" - "@sentry/core" "7.66.0" - "@sentry/replay" "7.66.0" - "@sentry/types" "7.66.0" - "@sentry/utils" "7.66.0" + "@sentry-internal/tracing" "7.73.0" + "@sentry/core" "7.73.0" + "@sentry/replay" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/core@7.66.0": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.66.0.tgz#8968f2a9e641d33e3750a8e24d1d39953680c4f2" - integrity sha512-WMAEPN86NeCJ1IT48Lqiz4MS5gdDjBwP4M63XP4msZn9aujSf2Qb6My5uT87AJr9zBtgk8MyJsuHr35F0P3q1w== +"@sentry/core@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.73.0.tgz#1caeeec44f42c4d58c06cc05dec39e5497b65aa3" + integrity sha512-9FEz4Gq848LOgVN2OxJGYuQqxv7cIVw69VlAzWHEm3njt8mjvlTq+7UiFsGRo84+59V2FQuHxzA7vVjl90WfSg== dependencies: - "@sentry/types" "7.66.0" - "@sentry/utils" "7.66.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/replay@7.66.0": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.66.0.tgz#5469144192824e7688c475ed29586a8cce6606f6" - integrity sha512-5Y2SlVTOFTo3uIycv0mRneBakQtLgWkOnsJaC5LB0Ip0TqVKiMCbQ578vvXp+yvRj4LcS1gNd98xTTNojBoQNg== +"@sentry/replay@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.73.0.tgz#4e6c522bac5c12f596ef76afe15ecb3807407669" + integrity sha512-a8IC9SowBisLYD2IdLkXzx7gN4iVwHDJhQvLp2B8ARs1PyPjJ7gCxSMHeGrYp94V0gOXtorNYkrxvuX8ayPROA== dependencies: - "@sentry/core" "7.66.0" - "@sentry/types" "7.66.0" - "@sentry/utils" "7.66.0" + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" "@sentry/tracing@^7.1": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.66.0.tgz#32e0e4c049abcbdbba793afdfe177f3d112242cf" - integrity sha512-9bnz2EcOwjeMZAuYJnrwcRrImu9c10p7A0iDB8b2HLcp7gpuCkJbJyGoC1xeKD7reVD0BPq3VIbeHSwCcQufoQ== + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.73.0.tgz#0998aab726a7af18744fd694c6d199f5d1dd1a3d" + integrity sha512-LOQR6Hkc8ZoflCXWtMlxTbCBEwv0MSOr3vesnRsmlFG8TW1YUIneU+wKnVxToWAZ8fq+6ubclnuIUKHfqTk/Tg== dependencies: - "@sentry-internal/tracing" "7.66.0" + "@sentry-internal/tracing" "7.73.0" -"@sentry/types@7.66.0": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.66.0.tgz#4ec290cc6a3dd2024a61a0bffb468cedb409f7fb" - integrity sha512-uUMSoSiar6JhuD8p7ON/Ddp4JYvrVd2RpwXJRPH1A4H4Bd4DVt1mKJy1OLG6HdeQv39XyhB1lPZckKJg4tATPw== +"@sentry/types@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.73.0.tgz#6d811bbe413d319df0a592a672d6d72a94a8e716" + integrity sha512-/v8++bly8jW7r4cP2wswYiiVpn7eLLcqwnfPUMeCQze4zj3F3nTRIKc9BGHzU0V+fhHa3RwRC2ksqTGq1oJMDg== -"@sentry/utils@7.66.0": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.66.0.tgz#2e37c96610f26bc79ac064fca4222ea91fece68d" - integrity sha512-9GYUVgXjK66uXXcLXVMXVzlptqMtq1eJENCuDeezQiEFrNA71KkLDg00wESp+LL+bl3wpVTBApArpbF6UEG5hQ== +"@sentry/utils@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.73.0.tgz#530cf023f7c395aa7708cd3824e5a45948449c10" + integrity sha512-h3ZK/qpf4k76FhJV9uiSbvMz3V/0Ovy94C+5/9UgPMVCJXFmVsdw8n/dwANJ7LupVPfYP23xFGgebDMFlK1/2w== dependencies: - "@sentry/types" "7.66.0" + "@sentry/types" "7.73.0" tslib "^2.4.1 || ^1.9.3" "@sentry/vue@^7.1": - version "7.66.0" - resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.66.0.tgz#1d1cbe73c3119f1137054c8ad8e0b5c594dc5841" - integrity sha512-yuqS8w8pILm8r686ldAnWTlxCtyAomZdEemUIbnkYvvBbURnpYwVakJPyhFOwpuLgBAJ0FALyPV0ULDd5OAzrQ== + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.73.0.tgz#c518362a1fb2b930f4320d8fbf00e0fa17b02a06" + integrity sha512-BTZVvY4PTLqqIbLbwBr0fbMQsUalV+BSm1JbCx2cy4IX/Rcf5YQUdkv1CvUMvI4yZKYTINMamyT/8XCCPljl6A== dependencies: - "@sentry/browser" "7.66.0" - "@sentry/core" "7.66.0" - "@sentry/types" "7.66.0" - "@sentry/utils" "7.66.0" + "@sentry/browser" "7.73.0" + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" tslib "^2.4.1 || ^1.9.3" "@sinclair/typebox@^0.27.8": @@ -1695,9 +1675,9 @@ mini-svg-data-uri "^1.2.3" "@tailwindcss/typography@^0.5.4": - version "0.5.9" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.9.tgz#027e4b0674929daaf7c921c900beee80dbad93e8" - integrity sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg== + version "0.5.10" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.10.tgz#2abde4c6d5c797ab49cf47610830a301de4c1e0a" + integrity sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw== dependencies: lodash.castarray "^4.4.0" lodash.isplainobject "^4.0.6" @@ -1705,125 +1685,125 @@ postcss-selector-parser "6.0.10" "@tiptap/core@^2.0.0-beta.41": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.7.tgz#9823a3712d176849cfd281dd8229ad0719c9eb9e" - integrity sha512-1pqTwlTnwTKQSNQmmTWhs2lwdvd+hFFNFZnrRAfvZhQZA6qPmPmKMNTcYmK38Tn4axKth6mhBamzTJgMZFI7ng== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.11.tgz#06bbd189c6b2dffe58b1c80f848737d76fb012bd" + integrity sha512-1W2DdjpPwfphHgQ3Qm4s5wzCnEjiXm1TeZ+6/zBl89yKURXgv8Mw1JGdj/NcImQjtDcsNn97MscACK3GKbEJBA== "@tiptap/extension-blockquote@^2.0.0-beta.25": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.7.tgz#fe25ec1dedd1f7e3eb1a851a6ac8738ca4691a17" - integrity sha512-oAsUU1c0DDZKHwK7/uCtYpnTUQt0o3w+SsJSv4S2vlSHidiFl9gCQGozUQ/Alzc7GO1Y95rOscL28DJXgXESQg== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.11.tgz#f91729fb7f328384243c37516fab55ab2efa01a4" + integrity sha512-IEVe3goA0rgp1G8Wm733BSRJiy71Vh2fmTCyZKWmc2A6GREVSy1X3fCvAo6pMENRObhjIoaBQUCE3p4iJYOxqg== "@tiptap/extension-bold@^2.0.0-beta.24": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.7.tgz#c5d89284235d75c2e65745b50a5c0681be1cbab6" - integrity sha512-GZV2D91WENkWd1W29vM4kyGWObcxOKQrY8MuCvTdxni1kobEc/LPZzQ1XiQmiNTvXTMcBz5ckLpezdjASV1dNg== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.11.tgz#a890d278ba932d91081dc91b75d2b3579a276f5c" + integrity sha512-vhdkBtvd029ufOYt2ug49Gz+RLKSczO/CCqKYBqBmpIpsifyK7M6jkgamvAQg3c/vYk0LNcKiL2dp0Jp7L+5Gw== -"@tiptap/extension-bubble-menu@^2.0.0-beta.9", "@tiptap/extension-bubble-menu@^2.1.7": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.7.tgz#62616c9ee456c8413ad6c120757978266052a1a0" - integrity sha512-VcwwUgiG17TEDZda1JBbyKCHLIBTu8B2OAzYrnd4ZqeRs5KTVAB279o/TVjsLVgEfC+c7IWwhhaPPMoXn/lJ3g== +"@tiptap/extension-bubble-menu@^2.0.0-beta.9", "@tiptap/extension-bubble-menu@^2.1.11": + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.11.tgz#3cc3d8be3108932f15c36e9b00948219cc92ab0f" + integrity sha512-WFJJpZvl9DP94Y5RQZB/THDxvDbrTo8tuhjT7yWlhseJ6zyhWmRXdutt39wfSZNFxitv/As+s7cO9aYLML/TVg== dependencies: tippy.js "^6.3.7" "@tiptap/extension-bullet-list@^2.0.0-beta.23": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.7.tgz#3a7356824a931122314a6bd73b5f9d8a8a313791" - integrity sha512-BReix1wkGNH12DSWGnWPKNu4do92Avh98aLkRS1o1V1Y49/+YGMYtfBXB9obq40o0WqKvk4MoM+rhKbfEc44Gg== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.11.tgz#bb72bbd8b7aaeb8c03ba9575886f7c1faec8e4e5" + integrity sha512-SOOVH2aSmdMtjWL7TTLbN72xbAFz2G5jifT4UCXb7Qx6LsyhNCyDCu0ukOW8rSosGoSdmBXxAsD9sBJ1jEOmZw== "@tiptap/extension-document@^2.0.0-beta.15": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.7.tgz#5e1d56e899fdca8ebfad1b7cb358d5ace664b851" - integrity sha512-tZyoPPmvzti7PEnyulXomEtINd/Oi2S84uOt6gw7DTCnDq5bF5sn1IfN8Icqp9t4jDwyLXy2TL0Zg/sR0a2Ibg== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.11.tgz#76782660420900acb6301a5ba69c27054139b622" + integrity sha512-L/iLuqxvJep33ycCFNrnUhdR0VtcZyeNnqB+ZvVHzEwLoRud+LBy44lpEdBrAFsvRm3DG14m/FGYL+TfaD0vxA== "@tiptap/extension-dropcursor@^2.0.0-beta.25": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.7.tgz#a3f79b7453579f36f326852b16e421601e881a28" - integrity sha512-hNk2BuLnNSXlGOQphlzdpFKCKo7uHUFjWuBfzF1S9FMAQgcN7eTia+cCClmXABYfVLW4fT14PC1KiuGjxi9MuA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.11.tgz#1a23efec39c3e59c1b7eeb970ed2facdbe1f920d" + integrity sha512-MiJepRpHlu93aInOMW8NeRCvm9VE5rL0MA9TONY/IspJFGFIqonc/01J6t33JQa3Xh/x3xAfis4nKa/UazeVJw== -"@tiptap/extension-floating-menu@^2.1.7": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.7.tgz#fe2def740b3136d38101634ae60d2fec5468c57e" - integrity sha512-K0bO7JKHAvgLM5MkhNgoYcD6SB0Z2tNIFhZHs5SCTuhg7dwduMSM3pC6QBrJGUk99DGsKuMPYQn3c2oG7MLbyQ== +"@tiptap/extension-floating-menu@^2.1.11": + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.11.tgz#3013924727ad95a1cd484e4bc426912b63e1a444" + integrity sha512-ExeoOQ6nT0CY0eWx6WjbG+osurXLXa7XrqIdhCAcTmzBAlGiKt8khX9qaZ+QF+BRK1r1lja2KX+5/fpLK7Dt1g== dependencies: tippy.js "^6.3.7" "@tiptap/extension-gapcursor@^2.0.0-beta.33": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.7.tgz#5c0303ba37b4c066f3a3c5835fd0b298f0d3e919" - integrity sha512-7eoInzzk1sssoD3RMkwFC86U15Ja4ANve+8wIC+xhN4R3Oe3PY3lFbp1GQxCmaJj8b3rtjNKIQZ2zO0PH58afA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.11.tgz#77bcd8d886405c10ddbc251186d88be752db2ec4" + integrity sha512-P/xjyhSOVyop5XXbNtRPgrooQrSlpYblwR67ClI9FAC7uQliuOwi5VcndmEItjWWSe85kJa2IHjOS7mLYvJe8A== "@tiptap/extension-heading@^2.0.0-beta.23": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.7.tgz#26d16227eab95b1f381e977f7aa1685f493c6fb5" - integrity sha512-jMeTqtq3kbMFtMvUb3SeIt4FFM3W+b6TAw5H4Qd6z3gYsAU3GahRK67MtbJfPmznUkZfimrqW9VCaBezScfrsQ== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.11.tgz#fa9802e006a47a8d3afd652e67cde4e68afeb1d0" + integrity sha512-QBtl0S1aDFB+F1wvTrS5iGdNUEeXp+WuTddj+L2f5EP4KqG2x7sj7e7ENMy20g/l8tbKwzd3AZZydvClH4Ybbw== "@tiptap/extension-history@^2.0.0-beta.21": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.7.tgz#baa566875ef1278c5dd8821970362d85348b266c" - integrity sha512-8SIEKSImrIkqJThym1bPD13sC4/76UrG+piQ30xKQU4B7zUFCbutvrwYuQHSRvaEt8BPdTv2LWIK+wBkIgbWVA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.11.tgz#80a6a8887c8a5a4b73f06285a273928d4c51d7b5" + integrity sha512-88dovV2O9icmBn0IvaArFFeS6X5ts6BxZPu5VbGML8KBL8iAu+Og7RXEPdOy5e13K0K4V21fDpO3n7KdvNOAYQ== "@tiptap/extension-image@^2.0.0-beta.6": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.1.7.tgz#597129fb072f6b0014c980892c367a283077f564" - integrity sha512-aWa/NPMc1U9Z6xuV0gk1O1nk4H7BAwQMwqXWdvUQCJhmW5+LJPdEiKvt3P6j+ClIN7sdyokZCgr6eGr817qTLA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.1.11.tgz#96990fbea4e5fee1e23cb03849144645ca328fac" + integrity sha512-dFFRvzl9F4fEcG95nyka72TeV127C1UVaMm816GHoFlVEFGV4yJ8NKgzT3UEDgFcs6OPwPlt8tuHuDeYm7EVOQ== "@tiptap/extension-italic@^2.0.0-beta.24": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.7.tgz#d077683597d4282ae272c48b313d768d71985b67" - integrity sha512-7e37f+OFqisdY19nWIthbSNHMJy4+4dec06rUICPrkiuFaADj5HjUQr0dyWpL/LkZh92Wf/rWgp4V/lEwon3jA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.11.tgz#31b5d096e7bd15e855644a0066eb750140b1a57a" + integrity sha512-QmDsHtnBBit/1KtQpBPxjSPjDC1mVKtoNTgsEwMWK6YAkCKOKPj7oPEqqjaNZIRMKPPzE5XCsfBoS3jtVmo+6A== "@tiptap/extension-link@^2.0.0-beta.8": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.7.tgz#2705c212d105ccf411d505e334ece4a723971ee4" - integrity sha512-NDfoMCkThng1B530pMg5y69+eWoghZXK2uCntrJH7Rs8jNeGMyt9wGIOd7N8ZYz0oJ2ZYKzZjS0RANdBDS17DA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.11.tgz#88cb79513b5fdf1dea3dbe38af95009692734c1d" + integrity sha512-Dn8hq4ld8br53fE4/QUZ7/y6ejY/kqAxeNhtud+OZKRs6VRn/CQd0H6A26opL+mKAK0kzrs0rh7rJPpHvahx/Q== dependencies: linkifyjs "^4.1.0" "@tiptap/extension-list-item@^2.0.0-beta.19": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.7.tgz#dc24045e445d0f91baec9b113f711dc90c6682ac" - integrity sha512-hd/E4qQopBXWa6kdFY19qFVgqj4fzdPgAnzdXJ2XW7bC6O2CusmHphRRZ5FBsuspYTN/6/fv0i0jK9rSGlsEyA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.11.tgz#466e4d1dcad153b4e52678b08d2bf073339c2dc9" + integrity sha512-YhwHaPGhffsFsg/zjCu1G24//j/BTRDRZbZXmMwp77m1yEqPULcWyoWrI+gUzetQxJRD/ruAucqjLtoLLfICmQ== "@tiptap/extension-mention@^2.0.0-beta.42": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.1.7.tgz#09fa03af6f502a9c0343c2d39e2557b74c5ffcfd" - integrity sha512-GPVw8AiGwCozkY2TKLk/eMpo7IYfVuXnFB82yPlG3RQTGREpvf6L5Vv28HdXcgk7KMTo2IcEdH32EJDqjPYlEg== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.1.11.tgz#cad9ee38335cc7c737371957b659254c0eb8e4ee" + integrity sha512-QMHmAkhiDQEgAdUHdKRfVna0AINcbSbQCrpgwKLIHGWcpbi1zJbAPpm+xngbl0I9ZNxaMzbP4utTAzeQ92pJkw== "@tiptap/extension-ordered-list@^2.0.0-beta.24": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.7.tgz#72d9ddc432ecf0fd19c8acd3c6b44f5358d8e0d0" - integrity sha512-3XIXqbZmYkNzF+8PQ2jcCOCj0lpC3y9HGM/+joPIunhiUiktrIgpbUDv2E1Gq5lJHYqthIeujniI2dB85tkwJQ== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.11.tgz#19c993090bc2aca6d8fed8b9c8759dd4816f06db" + integrity sha512-/tghfEJ5U7WFbF8xyOqRJks8KxP/lRjnroMXMglaushSMx8PYPo1dZDB/dJZw7ksy47MAaKJfKlx3gyN2CPXBQ== "@tiptap/extension-paragraph@^2.0.0-beta.22": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.7.tgz#76408706f0037a510a384b86780bd50c6e8ffeea" - integrity sha512-cLqX27hNrXrwZCKrIW8OC3rW2+MT8hhS37+cdqOxZo5hUqQ9EF/puwS0w8uUZ7B3awX9Jm1QZDMjjERLkcmobw== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.11.tgz#6d0eb3d7509e1d467526f2658a147db52dd225d6" + integrity sha512-gXMgJ2CU3X4yh1wKnb8RdbDmhITB76pH6DX0uWprmEgvzNMN3Qw+h5uBD9lgxg1WVghbCmkG9mY9J4PPbPTLxw== "@tiptap/extension-placeholder@^2.0.0-beta.199": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.1.7.tgz#8477cf5116c89f0f75e8e2e3b8528e146a7f0f24" - integrity sha512-IiBoItYYNS7hb/zmPitw3w6Cylmp9qX+zW+QKe3lDkCNPeKxyQr86AnVLcQYOuXg62cLV9dp+4azZzHoz9SOcg== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.1.11.tgz#ba115f714dd48d5bbc65df277b74f357ff3b100e" + integrity sha512-laHYRFxJWj6m72Yf1v6Q5nF2nvwWpQlKUj6Yu/yluOOoVE92HpLqCAvA8RamqLtPiw5VxR3v3oCY0WNeQRvyIg== "@tiptap/extension-strike@^2.0.0-beta.26": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.7.tgz#b7b7f49254f1de22416b1415ca88a2a20edd0627" - integrity sha512-ONLXYnuZGM2EoGcxkyvJSDMBeAp7K6l83UXkK9TSj+VpEEDdeV7m8mJs8/vACJjJxD5HMN61+EPgU7VTEukQCA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.11.tgz#738df0eebb6ab997783e01434397156601017bcb" + integrity sha512-UnjeSVgu3bDuyjjUdWsUErRCoQKAHCzH/pAiqTEPEEdFYgZFQPBpcJICRVdlYjRmI2ZKh6d0TMUS55m7ckmwmQ== "@tiptap/extension-text@^2.0.0-beta.15": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.7.tgz#071053ab0a8804a3bce36d1488a603b7446dff4e" - integrity sha512-3xaMMMNydLgoS+o+yOvaZF04ui9spJwJZl8VyYgcJKVGGLGRlWHrireXN5/OqXG2jLb/jWqXVx5idppQjX+PMA== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.11.tgz#f67ac1a782a8ee1d30885680e52bba3ef19322f9" + integrity sha512-Iey0EXYv9079+lbHMvZtLc6XcYfKrq++msEXuFFNHxvL0i/XzndhGf+qlDhLROLgEtDiiTqzOBBwFCGlFjbDow== "@tiptap/extension-underline@^2.0.0-beta.7": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.1.7.tgz#ab815645770f7d2013ac69327975837b4937c8df" - integrity sha512-mL95afyEJvg+C2yrTVn7QltfyE9ja1+94+OUkRBbB8PN3N6HvfSL4K/QSqecOLQ38bSQm/6ZGPkBLDkDGhGPdw== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.1.11.tgz#05cd5e9ca768d3544031d6879b372fdcdbd8974a" + integrity sha512-2C/jDNRV3WHfM5kgx6xB/1ooBciQ9j02gJVJkTHeLpz6zUWkxrRgU/u+FvZxGVBVskasJsQnsYMG9pAqwd9R8A== "@tiptap/pm@^2.0.0-beta.220": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.7.tgz#91e1b87d4ddbddca3cfe46e3c052b0072e4e1d97" - integrity sha512-RBVb/k9OjmClwdVl7fpekFgUsLAm1U+5I4w1qA2tj7L/hSPOuPzaEHwCqDYe0b2PR5dd8h0nylS9qXuXVlfwfQ== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.11.tgz#023c854d447a6509d52da0be890539037582cf39" + integrity sha512-vBIAic+H8fjHfT8r2qJkAOxdx1Iiss9+qMyujAoIdPkiyjEc4+sXcM0qSYgIr6KL5icITyuK8J7x/V62VfB7Uw== dependencies: prosemirror-changeset "^2.2.0" prosemirror-collab "^1.3.0" @@ -1845,17 +1825,17 @@ prosemirror-view "^1.28.2" "@tiptap/suggestion@^2.0.0-beta.195": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.1.7.tgz#ac88deef2ade8d836ca9084c276cc9d64c6e604a" - integrity sha512-FKlXFMWf9rCnNJQsUfeX6WpS2VUs2O98ENkyhfV8ehCB7X5+57mkkxJxl/88SMbjZL+FbWPBKLaiOvsXfIUoww== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.1.11.tgz#3b814c317565b6adbc9dffa9312d7fd1e4e0ebed" + integrity sha512-AVMB4x1X3eU7QCO1A8URQK0W7ps5dsVzveIP7+c//Z/GYe8lFSGIUnEbLJdr6bwgPkRL56m7c9+oZqVST5wfjQ== "@tiptap/vue-3@^2.0.0-beta.96": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.1.7.tgz#9614045dab75fe6ca7a1ae33a98df6bc09f4fa6d" - integrity sha512-JJRXWKLJ8mopb0uZV4JXyOW6vKQnarYoCj0hsy9ZT2LhSuLlPXY0D40NAbFVMMbQssewUtgPUFgVZ/TusMEysQ== + version "2.1.11" + resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.1.11.tgz#f1ba991a6db840541ae582d2e2fe510be9ae3962" + integrity sha512-PA0ep7W4cXh1jSXpXgR/eKjTbBxP8b0rIKmwLHOLVLaXz2fGFYt+HwKmtZSnYMTcf+CscXmbhmajBJZQJVJQwQ== dependencies: - "@tiptap/extension-bubble-menu" "^2.1.7" - "@tiptap/extension-floating-menu" "^2.1.7" + "@tiptap/extension-bubble-menu" "^2.1.11" + "@tiptap/extension-floating-menu" "^2.1.11" "@tootallnate/once@2": version "2.0.0" @@ -1870,22 +1850,22 @@ "@types/chai" "*" "@types/chai@*", "@types/chai@^4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b" - integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== + version "4.3.6" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.6.tgz#7b489e8baf393d5dd1266fb203ddd4ea941259e6" + integrity sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw== "@types/eslint@^8.4.2": - version "8.44.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.2.tgz#0d21c505f98a89b8dd4d37fa162b09da6089199a" - integrity sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg== + version "8.44.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.3.tgz#96614fae4875ea6328f56de38666f582d911d962" + integrity sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" + integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== "@types/estree@0.0.39": version "0.0.39" @@ -1893,9 +1873,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/flexsearch@^0.7.3": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@types/flexsearch/-/flexsearch-0.7.3.tgz#ee79b1618035c82284278e05652e91116765b634" - integrity sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg== + version "0.7.4" + resolved "https://registry.yarnpkg.com/@types/flexsearch/-/flexsearch-0.7.4.tgz#6e72bf21a8cc838d6d3449ddadc2745bcee3e239" + integrity sha512-R5ZZmhxOBquntySny8dWYLDGdPJlX9K6p6vcj1w5NWGQ33X4V8MEtdQXK5KFFR1j6o0RhbPMdLSVg5XULVn3oA== "@types/fs-extra@^9.0.13": version "9.0.13" @@ -1905,24 +1885,24 @@ "@types/node" "*" "@types/geojson@*": - version "7946.0.10" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249" - integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA== + version "7946.0.11" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.11.tgz#012c17cb2256ad8de78560da851ab914a7b9b40e" + integrity sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg== "@types/hammerjs@^2.0.41": - version "2.0.41" - resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa" - integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA== + version "2.0.42" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.42.tgz#d7a53edbc51b2c13a9a759c45d7b5e61243d7dba" + integrity sha512-Xxk14BrwHnGi0xlURPRb+Y0UNn2w3cTkeFm7pKMsYOaNgH/kabbJLhcBoNIodwsbTz7Z8KcWjtDvlGH0nc0U9w== "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== -"@types/json-schema@*", "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== +"@types/json-schema@*", "@types/json-schema@^7.0.12": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" @@ -1944,9 +1924,9 @@ "@types/leaflet" "*" "@types/leaflet@*", "@types/leaflet@^1.5.2": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.4.tgz#fd8898018765cc30db1103ab3453a9a2a85570cb" - integrity sha512-kfwgQf4eOxoe/tD9CaKQrBKHbc7VpyfJOG5sxsQtkH+ML9xYa8hUC3UMa0wU1pKfciJtO0pU9g9XbWhPo7iBCA== + version "1.9.6" + resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.6.tgz#d58ecdbe9f1f383cb0a7133a020cd05bfe00a762" + integrity sha512-HakGTK5LBBWegNWsAmTlG55zN1zszYec7aG47/z6SzT90bW2vqjmbqk3YKAbrtveO+G7fSTKTYqVbIwAFnTrbg== dependencies: "@types/geojson" "*" @@ -1956,9 +1936,9 @@ integrity sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g== "@types/lodash@^4.14.141": - version "4.14.197" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.197.tgz#e95c5ddcc814ec3e84c891910a01e0c8a378c54b" - integrity sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g== + version "4.14.199" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== "@types/markdown-it@^12.2.3": version "12.2.3" @@ -1969,19 +1949,19 @@ "@types/mdurl" "*" "@types/mdurl@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" - integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.3.tgz#d0aefccdd1a96f4bec76047d6b314601f0b0f3de" + integrity sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA== "@types/ngeohash@^0.6.2": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.4.tgz#a1ba2c25c4d1ef71f067de247a61490019ea0757" - integrity sha512-rr20mmx41OkWx4q5du2dv2sESR/6xH2tzScUQXwO8SiaQWa6PYTuan1nqBtA76FR9qkVfZY7nwQwZNC9StX/Ww== + version "0.6.5" + resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.5.tgz#2acc86800f0c94e3be467291c53cef20cffb4448" + integrity sha512-MBQKbbrz6OB819PUGYbEjYmdymJKvzEDYU8zAjZ45JI4f6H0nYcSwTFBWHkX9h1Vk43KPl7gIa4sGZ/D5eQRlg== "@types/node@*": - version "20.5.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.9.tgz#a70ec9d8fa0180a314c3ede0e20ea56ff71aed9a" - integrity sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ== + version "20.8.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.3.tgz#c4ae2bb1cfab2999ed441a95c122bbbe1567a66d" + integrity sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw== "@types/object.omit@^3.0.0": version "3.0.1" @@ -1994,9 +1974,9 @@ integrity sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg== "@types/phoenix@^1.5.2": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.1.tgz#9551cd77a8f4c70c5d81db899f2af762066aabde" - integrity sha512-g2/8Ogi2zfiS25jdGT5iDSo5yjruhhXaOuOJCkOxMW28w16VxFvjtAXjBNRo7WlRS4+UXAMj3mK46UwieNM/5g== + version "1.6.2" + resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.2.tgz#9a3838b6f45c895b0d7d9072025abb7525933a86" + integrity sha512-I3mm7x5XIi+5NsIY3nfreY+H4PmQdyBwJ84SiUSOxSg1axwEPNmkKWYVm56y+emDpPPUL3cPzrLcgRWSd9gI7g== "@types/prettier@^2.6.0": version "2.7.3" @@ -2011,16 +1991,16 @@ "@types/node" "*" "@types/sanitize-html@^2.5.0": - version "2.9.0" - resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.9.0.tgz#5b609f7592de22ef80a0930c39670329753dca1b" - integrity sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg== + version "2.9.1" + resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.9.1.tgz#6e4b232916cfb3ec0c4733c9899c99e1697ef953" + integrity sha512-XSLD0a9P8c+rKUM09KIi5Nd8mOHLHNgXb1G04rpXWa/GqQVpM+knrS9KR9ptj1CeC3gXWGZn75ApH3H6qNbhYA== dependencies: htmlparser2 "^8.0.0" -"@types/semver@^7.3.12": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367" - integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg== +"@types/semver@^7.5.0": + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== "@types/throttle-debounce@^2.1.0": version "2.1.0" @@ -2028,32 +2008,33 @@ integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== "@types/trusted-types@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.4.tgz#2b38784cd16957d3782e8e2b31c03bc1d13b4d65" + integrity sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ== -"@types/web-bluetooth@^0.0.17": - version "0.0.17" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40" - integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA== +"@types/web-bluetooth@^0.0.18": + version "0.0.18" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz#74bd1c8fd3a2058cb6fc76b188fcded50a83d866" + integrity sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw== -"@typescript-eslint/eslint-plugin@^5.59.1": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== +"@typescript-eslint/eslint-plugin@^6.7.0": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz#057338df21b6062c2f2fc5999fbea8af9973ac6d" + integrity sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA== dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.7.4" + "@typescript-eslint/type-utils" "6.7.4" + "@typescript-eslint/utils" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" debug "^4.3.4" graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^5.10.0", "@typescript-eslint/parser@^5.59.1": +"@typescript-eslint/parser@^5.10.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -2063,6 +2044,17 @@ "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" +"@typescript-eslint/parser@^6.7.0": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.4.tgz#23d1dd4fe5d295c7fa2ab651f5406cd9ad0bd435" + integrity sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA== + dependencies: + "@typescript-eslint/scope-manager" "6.7.4" + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/typescript-estree" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" + debug "^4.3.4" + "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" @@ -2071,21 +2063,34 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== +"@typescript-eslint/scope-manager@6.7.4": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz#a484a17aa219e96044db40813429eb7214d7b386" + integrity sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A== dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" + +"@typescript-eslint/type-utils@6.7.4": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.4.tgz#847cd3b59baf948984499be3e0a12ff07373e321" + integrity sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ== + dependencies: + "@typescript-eslint/typescript-estree" "6.7.4" + "@typescript-eslint/utils" "6.7.4" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== +"@typescript-eslint/types@6.7.4": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.4.tgz#5d358484d2be986980c039de68e9f1eb62ea7897" + integrity sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -2099,19 +2104,31 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== +"@typescript-eslint/typescript-estree@6.7.4": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz#f2baece09f7bb1df9296e32638b2e1130014ef1a" + integrity sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/visitor-keys" "6.7.4" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.7.4": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.4.tgz#2236f72b10e38277ee05ef06142522e1de470ff2" + integrity sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.4" + "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/typescript-estree" "6.7.4" + semver "^7.5.4" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -2121,56 +2138,72 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@unhead/dom@1.5.0", "@unhead/dom@^1.3.1": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.5.0.tgz#381f7d33af61bce6cbedd89d0bb804c3bbcf4205" - integrity sha512-zJG35T4jz4i+r5t0+tiFgwY4+F+WLqrdZ2PMRaMXn5noSDMm1q+1X3EhTEgCKq20g+ktXUxv5nhQuDblO6L2pg== +"@typescript-eslint/visitor-keys@6.7.4": + version "6.7.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz#80dfecf820fc67574012375859085f91a4dff043" + integrity sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA== dependencies: - "@unhead/schema" "1.5.0" - "@unhead/shared" "1.5.0" + "@typescript-eslint/types" "6.7.4" + eslint-visitor-keys "^3.4.1" -"@unhead/schema@1.5.0", "@unhead/schema@^1.3.1": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.5.0.tgz#5d978f4438bbd3fe19bf5e2befcf34a86bbbf488" - integrity sha512-oalJHsxpcWGXUML62CwpFJaSrbKKbjU3c1eizu7d9/RJS42KKT1LVBXbKrtbR0kNyj4Fbf+MD/DwqZm4cUBcuA== +"@unhead/dom@1.7.4", "@unhead/dom@^1.3.1": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.7.4.tgz#d6d5899245a0b4e16b01d08553bcde570f8eb00a" + integrity sha512-xanQMtGmgikqTvDtuyJy6GXgqvUXOdrdnIyqAabpeS8goD8udxo0stzjtbT8ERbMQibzPGSGcN+Ux+MKoWzrjQ== + dependencies: + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" + +"@unhead/schema@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.7.4.tgz#c70526f481828c5a4217501a544cfc48a85c1e55" + integrity sha512-wUL4CK0NSEm3KH4kYsiqVYQw5xBk1hpBi5tiNj0BTZgpQVrRufICdK5EHA9Fh7OIAR6tOTWwTvsf5+nK0BgQDA== dependencies: hookable "^5.5.3" - zhead "^2.0.10" + zhead "^2.1.1" -"@unhead/shared@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.5.0.tgz#1485a1d36e57ce9b1de09c0acc333ef07d403dae" - integrity sha512-34qeSrkKz/KfkD/VR2oWpeOydH5M+8NqNBGwdM9vO/SNeBs+ZCEEO57ASJTSRjjve/rzcBhK6nQG6tOCJtAV1g== +"@unhead/schema@^1.3.1": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.7.5.tgz#2fd22803a74962fc4bf82b986705eac2971ebc8c" + integrity sha512-qmXRX8HoRS6OlIJGM1HMsP67+QFNKD7segptggHR7vrV+MaumVoIrzL1Tq5TPkk9hxeP38o1wnX+KCZiDKifXg== dependencies: - "@unhead/schema" "1.5.0" + hookable "^5.5.3" + zhead "^2.1.2" + +"@unhead/shared@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.7.4.tgz#4ebab1809e96e633b18727c40cc042bf3ab6adcc" + integrity sha512-YUNA2UxAuDPnDps41BQ8aEIY5hdyvruSB1Vs3AALhRo07MxMivSq5DjNKfYr/JvRN6593RtfI1NHnP9x5M57xA== + dependencies: + "@unhead/schema" "1.7.4" "@unhead/ssr@^1.3.1": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@unhead/ssr/-/ssr-1.5.0.tgz#2783183374c0147bc66c77e6dadee8d27d9d447a" - integrity sha512-lCGUuT5ZDCciyJo4CtM9ZKIB7i2y+FbC+NDi/yUGWnhrwXzKWGBxjktjspWfrwRIX2U1SIFaJk5xoYTMwguUXg== + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/ssr/-/ssr-1.7.4.tgz#c0fde1eb6e5cb0a8d2571ac4205d10efdb4e8e79" + integrity sha512-2QqaHdC48XJGP9Pd0F2fblPv9/6G4IU04iZ5qLRAs6MFFmFEzrdvoooFlcwdcoH/WDGRnpYBmo+Us2nzQz1MMQ== dependencies: - "@unhead/schema" "1.5.0" - "@unhead/shared" "1.5.0" + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" "@unhead/vue@^1.3.1": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-1.5.0.tgz#1f24b2e8c6a9223d6956f5babdcfb4f41dd193f8" - integrity sha512-Xz8asfMiD6BAezQXR8XN7JdVdTqcX4T9iv0TL1zSk6SIpdiARLiQKU8inQRxOAxfxksW1+p3BU6siB2CVOcbwQ== + version "1.7.4" + resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-1.7.4.tgz#2869e7d8114de9f460d1c4e2ce4db82196eda909" + integrity sha512-ZfgzOhg1Bxo9xwp3upawqerw4134hc9Lhz6t005ixcBwPX+39Wpgc9dC3lf+owFQEVuWkf8F+eAwK2sghVBK4A== dependencies: - "@unhead/schema" "1.5.0" - "@unhead/shared" "1.5.0" + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" hookable "^5.5.3" - unhead "1.5.0" + unhead "1.7.4" "@vitejs/plugin-vue@^4.0.0": - version "4.3.4" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz#a289dff38e01949fe7be581d5542cabaeb961dec" - integrity sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw== + version "4.4.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz#8ae96573236cdb12de6850a6d929b5537ec85390" + integrity sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg== "@vitest/coverage-v8@^0.34.1": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-0.34.3.tgz#ef1570c68f038322db4d7130c9faec76780804d4" - integrity sha512-bNjP0RHe8UxdklCigZlk6FVCNbOiqVjWnpZJ1zKixpvb7YHSaZiN/w+mzpvXIoqyxyePzKC+L+G1oj7SB20PJw== + version "0.34.6" + resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz#931d9223fa738474e00c08f52b84e0f39cedb6d1" + integrity sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw== dependencies: "@ampproject/remapping" "^2.2.1" "@bcoe/v8-coverage" "^0.2.3" @@ -2184,46 +2217,46 @@ test-exclude "^6.0.0" v8-to-istanbul "^9.1.0" -"@vitest/expect@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.34.3.tgz#576e1fd6a3a8b8b7a79a06477f3d450a77d67852" - integrity sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg== +"@vitest/expect@0.34.6": + version "0.34.6" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.34.6.tgz#608a7b7a9aa3de0919db99b4cc087340a03ea77e" + integrity sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw== dependencies: - "@vitest/spy" "0.34.3" - "@vitest/utils" "0.34.3" - chai "^4.3.7" + "@vitest/spy" "0.34.6" + "@vitest/utils" "0.34.6" + chai "^4.3.10" -"@vitest/runner@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.34.3.tgz#ce09b777d133bbcf843e1a67f4a743365764e097" - integrity sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA== +"@vitest/runner@0.34.6": + version "0.34.6" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.34.6.tgz#6f43ca241fc96b2edf230db58bcde5b974b8dcaf" + integrity sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ== dependencies: - "@vitest/utils" "0.34.3" + "@vitest/utils" "0.34.6" p-limit "^4.0.0" pathe "^1.1.1" -"@vitest/snapshot@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.34.3.tgz#cb4767aa44711a1072bd2e06204b659275c4f0f2" - integrity sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ== +"@vitest/snapshot@0.34.6": + version "0.34.6" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.34.6.tgz#b4528cf683b60a3e8071cacbcb97d18b9d5e1d8b" + integrity sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w== dependencies: magic-string "^0.30.1" pathe "^1.1.1" pretty-format "^29.5.0" -"@vitest/spy@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.34.3.tgz#d4cf25e6ca9230991a0223ecd4ec2df30f0784ff" - integrity sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ== +"@vitest/spy@0.34.6": + version "0.34.6" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.34.6.tgz#b5e8642a84aad12896c915bce9b3cc8cdaf821df" + integrity sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ== dependencies: tinyspy "^2.1.1" "@vitest/ui@^0.34.1": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-0.34.3.tgz#c54a6384bf4a346027b67ca420bb25a2a438cf95" - integrity sha512-iNcOQ0xML9znOReiwpKJrTLSj5zFxmveD3VCxIJNqnsaMYpONSbSiiJLC1Y1dYlkmiHylp+ElNcUZYIMWdxRvA== + version "0.34.6" + resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-0.34.6.tgz#86a9d58d1514aaea6a4b27ddd3c430646afca488" + integrity sha512-/fxnCwGC0Txmr3tF3BwAbo3v6U2SkBTGR9UB8zo0Ztlx0BTOXHucE0gDHY7SjwEktCOHatiGmli9kZD6gYSoWQ== dependencies: - "@vitest/utils" "0.34.3" + "@vitest/utils" "0.34.6" fast-glob "^3.3.0" fflate "^0.8.0" flatted "^3.2.7" @@ -2231,10 +2264,10 @@ picocolors "^1.0.0" sirv "^2.0.3" -"@vitest/utils@0.34.3": - version "0.34.3" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.34.3.tgz#6e243189a358b736b9fc0216e6b6979bc857e897" - integrity sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA== +"@vitest/utils@0.34.6": + version "0.34.6" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.34.6.tgz#38a0a7eedddb8e7291af09a2409cb8a189516968" + integrity sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A== dependencies: diff-sequences "^29.4.3" loupe "^2.3.6" @@ -2258,9 +2291,9 @@ vue "^3.2.25" "@vue/apollo-composable@^4.0.0-beta.9": - version "4.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@vue/apollo-composable/-/apollo-composable-4.0.0-beta.9.tgz#3bbc0e584fcd068f9b98a4e0d3212ea391d0bccc" - integrity sha512-k0v2JmSs9METqKuHBpfPwLWumWCCmHuNqw93CjLqCcIzTvTEp7A2khStOFXgCk40OY6Q3Vu1vGsJ57xI8PyCqw== + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/@vue/apollo-composable/-/apollo-composable-4.0.0-beta.11.tgz#17af7ec824f521e306ea0c12ac3d94e743621903" + integrity sha512-ZtztRDrQe2sTn31h+teBfYw81AePfxlBssTaZVk2jOagdZgTfZigR7aJjO98FxwvGnB80ElWHKubvqYwNf8heg== dependencies: throttle-debounce "^5.0.0" ts-essentials "^9.4.0" @@ -2308,7 +2341,7 @@ "@vue/compiler-dom" "3.3.4" "@vue/shared" "3.3.4" -"@vue/devtools-api@^6.2.1", "@vue/devtools-api@^6.5.0": +"@vue/devtools-api@^6.5.0": version "6.5.0" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== @@ -2321,14 +2354,14 @@ eslint-config-prettier "^8.8.0" eslint-plugin-prettier "^5.0.0" -"@vue/eslint-config-typescript@^11.0.0": - version "11.0.3" - resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz#c720efa657d102cd2945bc54b4a79f35d57f6307" - integrity sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw== +"@vue/eslint-config-typescript@^12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz#0ce22d97af5e4155f3f2e7b21a48cfde8a6f3365" + integrity sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg== dependencies: - "@typescript-eslint/eslint-plugin" "^5.59.1" - "@typescript-eslint/parser" "^5.59.1" - vue-eslint-parser "^9.1.1" + "@typescript-eslint/eslint-plugin" "^6.7.0" + "@typescript-eslint/parser" "^6.7.0" + vue-eslint-parser "^9.3.1" "@vue/reactivity-transform@3.3.4": version "3.3.4" @@ -2387,14 +2420,14 @@ vue-component-type-helpers "1.8.4" "@vueuse/core@^10.0.2": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.4.1.tgz#fc2c8a83a571c207aaedbe393b22daa6d35123f2" - integrity sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg== + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.5.0.tgz#04d1e6d26592bb997bb755a4830ea7583c3e8612" + integrity sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A== dependencies: - "@types/web-bluetooth" "^0.0.17" - "@vueuse/metadata" "10.4.1" - "@vueuse/shared" "10.4.1" - vue-demi ">=0.14.5" + "@types/web-bluetooth" "^0.0.18" + "@vueuse/metadata" "10.5.0" + "@vueuse/shared" "10.5.0" + vue-demi ">=0.14.6" "@vueuse/head@^1.0": version "1.3.1" @@ -2406,25 +2439,25 @@ "@unhead/ssr" "^1.3.1" "@unhead/vue" "^1.3.1" -"@vueuse/metadata@10.4.1": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.4.1.tgz#9d2ff5c67abf17a8c07865c2413fbd0e92f7b7d7" - integrity sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg== +"@vueuse/metadata@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.5.0.tgz#7501a88cf5cbf7a515a03f0b8bbe3cecf30cad11" + integrity sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw== "@vueuse/router@^10.0.2": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-10.4.1.tgz#e424d12275e402e89d33e0a5834168f7c3f10cfa" - integrity sha512-gsMuSIDTUj7Gt91pnFbrhUCDaGObceQAs3+XGguRNj/WgzqLpywe37mE4645McDspEbig/n9nvn8SSmo6XRvPw== + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-10.5.0.tgz#12f22e197abf833b9082f5d79d0916fd0a0e43a6" + integrity sha512-KboRSnSTaRBvKiwhCJ9RJHidaUMy5+5RyAwq46IPovVtKm9nIUfV0/F8dPwYx36rxAWn9iNWZUbKfu4cGW3XuA== dependencies: - "@vueuse/shared" "10.4.1" - vue-demi ">=0.14.5" + "@vueuse/shared" "10.5.0" + vue-demi ">=0.14.6" -"@vueuse/shared@10.4.1": - version "10.4.1" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.4.1.tgz#d5ce33033c156efb60664b5d6034d6cd4e2f530c" - integrity sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg== +"@vueuse/shared@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.5.0.tgz#b3ac8c190a5dae41db5e1b60fe304a9b4247393c" + integrity sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg== dependencies: - vue-demi ">=0.14.5" + vue-demi ">=0.14.6" "@wry/context@^0.7.0", "@wry/context@^0.7.3": version "0.7.3" @@ -2663,33 +2696,34 @@ array.prototype.findlastindex@^1.2.2: get-intrinsic "^1.2.1" array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -arraybuffer.prototype.slice@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" - integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" call-bind "^1.0.2" define-properties "^1.2.0" + es-abstract "^1.22.1" get-intrinsic "^1.2.1" is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" @@ -2720,13 +2754,13 @@ at-least-node@^1.0.0: integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== autoprefixer@^10: - version "10.4.15" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.15.tgz#a1230f4aeb3636b89120b34a1f513e2f6834d530" - integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew== + version "10.4.16" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== dependencies: browserslist "^4.21.10" - caniuse-lite "^1.0.30001520" - fraction.js "^4.2.0" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -2746,12 +2780,12 @@ babel-plugin-polyfill-corejs2@^0.4.5: semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" - integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== + version "0.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" + integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.31.0" + core-js-compat "^3.32.2" babel-plugin-polyfill-regenerator@^0.5.2: version "0.5.2" @@ -2841,15 +2875,15 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.10, browserslist@^4.21.9: - version "4.21.10" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" - integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== +browserslist@^4.21.10, browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001517" - electron-to-chromium "^1.4.477" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" - update-browserslist-db "^1.0.11" + update-browserslist-db "^1.0.13" buffer-from@^1.0.0: version "1.1.2" @@ -2899,10 +2933,10 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: - version "1.0.30001525" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz#d2e8fdec6116ffa36284ca2c33ef6d53612fe1c8" - integrity sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q== +caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: + version "1.0.30001546" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz#10fdad03436cfe3cc632d3af7a99a0fb497407f0" + integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== capital-case@^1.0.4: version "1.0.4" @@ -2918,18 +2952,18 @@ case-anything@^2.1.13: resolved "https://registry.yarnpkg.com/case-anything/-/case-anything-2.1.13.tgz#0cdc16278cb29a7fcdeb072400da3f342ba329e9" integrity sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng== -chai@^4.3.7: - version "4.3.8" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.8.tgz#40c59718ad6928da6629c70496fe990b2bb5b17c" - integrity sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ== +chai@^4.3.10: + version "4.3.10" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.10.tgz#d784cec635e3b7e2ffb66446a63b4e33bd390384" + integrity sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g== dependencies: assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^4.1.2" - get-func-name "^2.0.0" - loupe "^2.3.1" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.5" + type-detect "^4.0.8" chalk@5.3.0: version "5.3.0" @@ -2982,10 +3016,12 @@ change-case@^4.1.2: snake-case "^3.0.4" tslib "^2.0.3" -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: version "3.5.3" @@ -3119,17 +3155,17 @@ constant-case@^3.0.4: tslib "^2.0.3" upper-case "^2.0.2" -convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.31.0: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.1.tgz#55f9a7d297c0761a8eb1d31b593e0f5b6ffae964" - integrity sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA== +core-js-compat@^3.31.0, core-js-compat@^3.32.2: + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" core-js@2.6.0: version "2.6.0" @@ -3255,7 +3291,7 @@ decimal.js@^10.4.2, decimal.js@^10.4.3: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -deep-eql@^4.1.2: +deep-eql@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== @@ -3290,6 +3326,15 @@ default-browser@^4.0.0: execa "^7.1.1" titleize "^3.0.0" +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -3301,10 +3346,11 @@ define-lazy-prop@^3.0.0: integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -3439,10 +3485,10 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.477: - version "1.4.508" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz#5641ff2f5ba11df4bd960fe6a2f9f70aa8b9af96" - integrity sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg== +electron-to-chromium@^1.4.535: + version "1.4.544" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz#fcb156d83f0ee6e4c9d030c6fedb2a37594f3abf" + integrity sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w== emoji-regex@^8.0.0: version "8.0.0" @@ -3474,18 +3520,18 @@ entities@~3.0.1: resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -es-abstract@^1.20.4, es-abstract@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" + function.prototype.name "^1.1.6" get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" @@ -3501,23 +3547,23 @@ es-abstract@^1.20.4, es-abstract@^1.22.1: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" typed-array-buffer "^1.0.0" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.11" es-set-tostringtag@^2.0.1: version "2.0.1" @@ -3673,14 +3719,6 @@ eslint-plugin-vue@^9.3.0: vue-eslint-parser "^9.3.1" xml-name-validator "^4.0.0" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-scope@^7.0.0, eslint-scope@^7.1.1, eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" @@ -3695,15 +3733,15 @@ eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.21.0, eslint@^8.7.0: - version "8.48.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" - integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.48.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.12.4" @@ -3765,11 +3803,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -3847,7 +3880,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -3876,9 +3909,9 @@ fastq@^1.6.0: reusify "^1.0.4" fflate@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.0.tgz#f93ad1dcbe695a25ae378cf2386624969a7cda32" - integrity sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg== + version "0.8.1" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.1.tgz#1ed92270674d2ad3c73f077cd0acf26486dae6c9" + integrity sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ== file-entry-cache@^6.0.1: version "6.0.1" @@ -3923,18 +3956,18 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" - integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.2.7" + flatted "^3.2.9" keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.7, flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== flexsearch@0.7.21: version "0.7.21" @@ -3980,7 +4013,7 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -fraction.js@^4.2.0: +fraction.js@^4.3.6: version "4.3.6" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d" integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== @@ -4024,7 +4057,7 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: +function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -4049,10 +4082,10 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== +get-func-name@^2.0.0, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: version "1.2.1" @@ -4137,9 +4170,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -4271,11 +4304,9 @@ has-tostringtag@^1.0.0: has-symbols "^1.0.2" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== header-case@^2.0.4: version "2.0.4" @@ -4286,9 +4317,9 @@ header-case@^2.0.4: tslib "^2.0.3" histoire@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/histoire/-/histoire-0.17.0.tgz#98c3de2be7fbedff206ccd3a3e2b824bb20f1d1b" - integrity sha512-q5fX2yAiw1vjlC0xaEcm8uqiJzdKmItozyNa24ujFVD+YjKpBE1R6tl/zpUIfqOBgpifMgh7xQD5uU4ZFd7v/g== + version "0.17.2" + resolved "https://registry.yarnpkg.com/histoire/-/histoire-0.17.2.tgz#f0a1a88172a79918c7e3c2bd7743714cfbbf14e3" + integrity sha512-Mz+4AWBs+P2TeopXJ0qG4ZsrpuLggNPNF3yG4Q8yg8kXcd6a9DXUWuEElYbglod/xP5XB8efaDy2nibLTybJzg== dependencies: "@akryum/tinypool" "^0.3.1" "@histoire/app" "^0.17.0" @@ -4320,7 +4351,7 @@ histoire@^0.17.0: sade "^1.8.1" shiki-es "^0.2.0" sirv "^2.0.3" - vite-node "0.28.4" + vite-node "^0.34.1" hoist-non-react-statics@^3.3.2: version "3.3.2" @@ -4654,7 +4685,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -4751,9 +4782,9 @@ jest-worker@^26.2.1: supports-color "^7.0.0" jiti@^1.18.2, jiti@^1.19.1: - version "1.19.3" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.3.tgz#ef554f76465b3c2b222dc077834a71f0d4a37569" - integrity sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w== + version "1.20.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== js-beautify@1.14.9: version "1.14.9" @@ -4918,9 +4949,9 @@ jwt-decode@^3.1.2: integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== keyv@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -4930,12 +4961,12 @@ kind-of@^6.0.0, kind-of@^6.0.2: integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: picocolors "^1.0.0" - shell-quote "^1.7.3" + shell-quote "^1.8.1" leaflet.locatecontrol@^0.79: version "0.79.0" @@ -5095,7 +5126,7 @@ loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loupe@^2.3.1, loupe@^2.3.6: +loupe@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== @@ -5131,9 +5162,9 @@ magic-string@^0.25.0, magic-string@^0.25.7: sourcemap-codec "^1.4.8" magic-string@^0.30.0, magic-string@^0.30.1: - version "0.30.3" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.3.tgz#403755dfd9d6b398dfa40635d52e96c5ac095b85" - integrity sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw== + version "0.30.4" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.4.tgz#c2c683265fc18dda49b56fc7318d33ca0332c98c" + integrity sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -5176,9 +5207,9 @@ markdown-it@^12.3.2: uc.micro "^1.0.5" markdown-it@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" - integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== + version "13.0.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536" + integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w== dependencies: argparse "^2.0.1" entities "~3.0.1" @@ -5262,10 +5293,10 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -mlly@^1.1.0, mlly@^1.2.0, mlly@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.1.tgz#7ab9cbb040bf8bd8205a0c341ce9acc3ae0c3a74" - integrity sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg== +mlly@^1.2.0, mlly@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" + integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== dependencies: acorn "^8.10.0" pathe "^1.1.1" @@ -5316,11 +5347,6 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5652,9 +5678,9 @@ pathval@^1.1.1: integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== phoenix@^1.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.7.7.tgz#829817ea65a83ef78a3a88e3e074125f502a034f" - integrity sha512-moAN6e4Z16x/x1nswUpnTR2v5gm7HsI7eluZ2YnYUUsBNzi3cY/5frmiJfXIEi877IQAafzTfp8hd6vEUMme+w== + version "1.7.8" + resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.7.8.tgz#edb3d14beca0b97b72b1a00ea45fbdd966ae7028" + integrity sha512-8eerNe5BFJ6tPa0Uh47ape129JqoOzjmY3HiLh/9KOOJcfSzMU3uICdA0+xV/Z1wO/nDa/DdS6qwwpbtrSYXHQ== picocolors@^1.0.0: version "1.0.0" @@ -5695,10 +5721,19 @@ plausible-tracker@^0.3.4: resolved "https://registry.yarnpkg.com/plausible-tracker/-/plausible-tracker-0.3.8.tgz#9b8b322cc41e0e1d6473869ef234deea365a5a40" integrity sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg== -playwright-core@1.37.1: - version "1.37.1" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.37.1.tgz#cb517d52e2e8cb4fa71957639f1cd105d1683126" - integrity sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA== +playwright-core@1.38.1: + version "1.38.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.38.1.tgz#75a3c470aa9576b7d7c4e274de3d79977448ba08" + integrity sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg== + +playwright@1.38.1: + version "1.38.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.38.1.tgz#82ecd9bc4f4f64dbeee8a11c31793748e2528130" + integrity sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow== + dependencies: + playwright-core "1.38.1" + optionalDependencies: + fsevents "2.3.2" postcss-import@^15.1.0: version "15.1.0" @@ -5753,9 +5788,9 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8, postcss@^8.1.10, postcss@^8.3.11, postcss@^8.4.23, postcss@^8.4.27: - version "8.4.29" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" - integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -5808,7 +5843,7 @@ pretty-bytes@^5.3.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-bytes@^6.0.0: +pretty-bytes@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b" integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== @@ -5822,9 +5857,9 @@ pretty-format@^23.0.1: ansi-styles "^3.2.0" pretty-format@^29.5.0: - version "29.6.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.3.tgz#d432bb4f1ca6f9463410c3fb25a0ba88e594ace7" - integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw== + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" @@ -5978,16 +6013,16 @@ prosemirror-trailing-node@^2.0.2: escape-string-regexp "^4.0.0" prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.0, prosemirror-transform@^1.7.3: - version "1.7.5" - resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.7.5.tgz#c62aac8645bd4f8cf447d6d53dda80abe8489f03" - integrity sha512-U/fWB6frEzY7dzwJUo+ir8dU1JEanaI/RwL12Imy9js/527N0v/IRUKewocP1kTq998JNT18IGtThaDLwLOBxQ== + version "1.8.0" + resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz#a47c64a3c373c1bd0ff46e95be3210c8dda0cd11" + integrity sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A== dependencies: prosemirror-model "^1.0.0" prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0: - version "1.31.7" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.31.7.tgz#dccb2879314e1e1a24d48044c15374754e50ef00" - integrity sha512-Pr7w93yOYmxQwzGIRSaNLZ/1uM6YjnenASzN2H6fO6kGekuzRbgZ/4bHbBTd1u4sIQmL33/TcGmzxxidyPwCjg== + version "1.32.0" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.32.0.tgz#2022538d02932c0901232d1e0430c064f79a8ea2" + integrity sha512-HwW7IWgca6ehiW2PA48H/8yl0TakA0Ms5LgN5Krc97oar7GfjIKE/NocUsLe74Jq4mwyWKUNoBljE8WkXKZwng== dependencies: prosemirror-model "^1.16.0" prosemirror-state "^1.0.0" @@ -6050,9 +6085,9 @@ readdirp@~3.6.0: picomatch "^2.2.1" regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -6088,14 +6123,14 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" regexpu-core@^5.3.1: version "5.3.2" @@ -6147,9 +6182,9 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" - integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" @@ -6213,9 +6248,9 @@ rollup@^2.43.1: fsevents "~2.3.2" rollup@^3.27.1: - version "3.28.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.1.tgz#fb44aa6d5e65c7e13fd5bcfff266d0c4ea9ba433" - integrity sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw== + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" @@ -6257,13 +6292,13 @@ sade@^1.8.1: dependencies: mri "^1.1.0" -safe-array-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" - integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" isarray "^2.0.5" @@ -6299,9 +6334,9 @@ sanitize-html@^2.5.3: postcss "^8.3.11" sass@^1.34.1: - version "1.66.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.66.1.tgz#04b51c4671e4650aa393740e66a4e58b44d055b1" - integrity sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA== + version "1.69.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.0.tgz#5195075371c239ed556280cf2f5944d234f42679" + integrity sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -6350,6 +6385,15 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -6362,7 +6406,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: +shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -6436,7 +6480,7 @@ sortablejs@1.14.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@^0.5.21, source-map-support@~0.5.20: +source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -6444,7 +6488,7 @@ source-map-support@^0.5.21, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6510,9 +6554,9 @@ string-width@^5.0.0, string-width@^5.0.1: strip-ansi "^7.0.1" string.prototype.matchall@^4.0.6: - version "4.0.9" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.9.tgz#148779de0f75d36b13b15885fec5cadde994520d" - integrity sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA== + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" @@ -6521,34 +6565,35 @@ string.prototype.matchall@^4.0.6: has-symbols "^1.0.3" internal-slot "^1.0.5" regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" side-channel "^1.0.4" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" stringify-object@^3.3.0: version "3.3.0" @@ -6721,9 +6766,9 @@ tempy@^0.6.0: unique-string "^2.0.0" terser@^5.0.0: - version "5.19.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.3.tgz#359baeba615aef13db4b8c4d77a2aa0d8814aa9e" - integrity sha512-pQzJ9UJzM0IgmT4FAtYI6+VqFf0lj/to58AV0Xfgg0Up37RyPG7Al+1cepC6/BVuAxR9oNb41/DL4DEoHJvTdg== + version "5.21.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" + integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -6769,9 +6814,9 @@ throttle-debounce@^5.0.0: integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== tinybench@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.5.0.tgz#4711c99bbf6f3e986f67eb722fed9cddb3a68ba5" - integrity sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA== + version "2.5.1" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.5.1.tgz#3408f6552125e53a5a48adee31261686fd71587e" + integrity sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg== tinypool@^0.7.0: version "0.7.0" @@ -6779,9 +6824,9 @@ tinypool@^0.7.0: integrity sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww== tinyspy@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.1.1.tgz#9e6371b00c259e5c5b301917ca18c01d40ae558c" - integrity sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w== + version "2.2.0" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.0.tgz#9dc04b072746520b432f77ea2c2d17933de5d6ce" + integrity sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg== tippy.js@^6.2.3, tippy.js@^6.3.7: version "6.3.7" @@ -6843,10 +6888,15 @@ tr46@^4.1.1: dependencies: punycode "^2.3.0" +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + ts-essentials@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.4.0.tgz#1d841fee4cd1485f84dec82bce828f90a6cfdd92" - integrity sha512-s4BzWZmTh926caZO7XF7MMbwCn1BioT3s3r9hT8ARnwW//30OD0XioEsMyq3ORAHP/deN4Zkst2ZvxXmL+tG6g== + version "9.4.1" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.4.1.tgz#6a6b6f81c2138008a5eef216e9fa468d8d9e2ab4" + integrity sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ== ts-interface-checker@^0.1.9: version "0.1.13" @@ -6901,7 +6951,7 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@^4.0.0, type-detect@^4.0.5: +type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -6970,10 +7020,10 @@ typescript@^4.5.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -typescript@~5.1.3: - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +typescript@~5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -6981,9 +7031,9 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== ufo@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.0.tgz#c92f8ac209daff607c57bbd75029e190930a0019" - integrity sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw== + version "1.3.1" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.1.tgz#e085842f4627c41d4c1b60ebea1f75cdab4ce86b" + integrity sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw== unbox-primitive@^1.0.2: version "1.0.2" @@ -7000,14 +7050,14 @@ unfetch@^5.0.0: resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-5.0.0.tgz#8a5b6e5779ebe4dde0049f7d7a81d4a1af99d142" integrity sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg== -unhead@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.5.0.tgz#4320570ce698957502e3b2163be727d57539dd2a" - integrity sha512-dCbAcYUA5DeYg8+1UrTNhah8OnScuz6Bxc6NmzCl4gWl513aQDzSwRoNEKEhZ/j1vmXVwerUUZdKHTfNcS5NhQ== +unhead@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.7.4.tgz#acf3e01b2a035ba6101cb34e41a72277025284b0" + integrity sha512-oOv+9aQS85DQUd0f1uJBtb2uG3SKwCURSTuUWp9WKKzANCb1TjW2dWp5TFmJH5ILF6urXi4uUQfjK+SawzBJAA== dependencies: - "@unhead/dom" "1.5.0" - "@unhead/schema" "1.5.0" - "@unhead/shared" "1.5.0" + "@unhead/dom" "1.7.4" + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" hookable "^5.5.3" unicode-canonical-property-names-ecmascript@^2.0.0: @@ -7065,10 +7115,10 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -7113,55 +7163,41 @@ utils-merge@1.0.1: integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== v8-to-istanbul@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + version "9.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" + integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" + convert-source-map "^2.0.0" -vite-node@0.28.4: - version "0.28.4" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.28.4.tgz#ce709cde2200d86a2a45457fed65f453234b0261" - integrity sha512-KM0Q0uSG/xHHKOJvVHc5xDBabgt0l70y7/lWTR7Q0pR5/MrYxadT+y32cJOE65FfjGmJgxpVEEY+69btJgcXOQ== - dependencies: - cac "^6.7.14" - debug "^4.3.4" - mlly "^1.1.0" - pathe "^1.1.0" - picocolors "^1.0.0" - source-map "^0.6.1" - source-map-support "^0.5.21" - vite "^3.0.0 || ^4.0.0" - -vite-node@0.34.3: - version "0.34.3" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.34.3.tgz#de134fe38bc1555ac8ab5e489d7df6159a3e1a4c" - integrity sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig== +vite-node@0.34.6, vite-node@^0.34.1: + version "0.34.6" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.34.6.tgz#34d19795de1498562bf21541a58edcd106328a17" + integrity sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA== dependencies: cac "^6.7.14" debug "^4.3.4" mlly "^1.4.0" pathe "^1.1.1" picocolors "^1.0.0" - vite "^3.0.0 || ^4.0.0" + vite "^3.0.0 || ^4.0.0 || ^5.0.0-0" vite-plugin-pwa@^0.16.4: - version "0.16.4" - resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.16.4.tgz#cd2618c8b4f83eac1493f2ed7b05f72552a2b735" - integrity sha512-lmwHFIs9zI2H9bXJld/zVTbCqCQHZ9WrpyDMqosICDV0FVnCJwniX1NMDB79HGTIZzOQkY4gSZaVTJTw6maz/Q== + version "0.16.5" + resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.16.5.tgz#863ae3ffe0a7b1183da94e4b5cf6966878c30308" + integrity sha512-Ahol4dwhMP2UHPQXkllSlXbihOaDFnvBIDPmAxoSZ1EObBUJGP4CMRyCyAVkIHjd6/H+//vH0DM2ON+XxHr81g== dependencies: debug "^4.3.4" - fast-glob "^3.2.12" - pretty-bytes "^6.0.0" + fast-glob "^3.3.1" + pretty-bytes "^6.1.1" workbox-build "^7.0.0" workbox-window "^7.0.0" -"vite@^3.0.0 || ^4.0.0", vite@^4.0.4: - version "4.4.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" - integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== +"vite@^3.0.0 || ^4.0.0 || ^5.0.0-0", "vite@^3.1.0 || ^4.0.0 || ^5.0.0-0", vite@^4.0.4: + version "4.4.11" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.11.tgz#babdb055b08c69cfc4c468072a2e6c9ca62102b0" + integrity sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A== dependencies: esbuild "^0.18.10" postcss "^8.4.27" @@ -7170,22 +7206,22 @@ vite-plugin-pwa@^0.16.4: fsevents "~2.3.2" vitest@^0.34.1: - version "0.34.3" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.34.3.tgz#863d61c133d01b16e49fd52d380c09fa5ac03188" - integrity sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ== + version "0.34.6" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.34.6.tgz#44880feeeef493c04b7f795ed268f24a543250d7" + integrity sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q== dependencies: "@types/chai" "^4.3.5" "@types/chai-subset" "^1.3.3" "@types/node" "*" - "@vitest/expect" "0.34.3" - "@vitest/runner" "0.34.3" - "@vitest/snapshot" "0.34.3" - "@vitest/spy" "0.34.3" - "@vitest/utils" "0.34.3" + "@vitest/expect" "0.34.6" + "@vitest/runner" "0.34.6" + "@vitest/snapshot" "0.34.6" + "@vitest/spy" "0.34.6" + "@vitest/utils" "0.34.6" acorn "^8.9.0" acorn-walk "^8.2.0" cac "^6.7.14" - chai "^4.3.7" + chai "^4.3.10" debug "^4.3.4" local-pkg "^0.4.3" magic-string "^0.30.1" @@ -7195,8 +7231,8 @@ vitest@^0.34.1: strip-literal "^1.0.1" tinybench "^2.5.0" tinypool "^0.7.0" - vite "^3.0.0 || ^4.0.0" - vite-node "0.34.3" + vite "^3.1.0 || ^4.0.0 || ^5.0.0-0" + vite-node "0.34.6" why-is-node-running "^2.2.2" vue-component-type-helpers@1.8.4: @@ -7204,7 +7240,7 @@ vue-component-type-helpers@1.8.4: resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-1.8.4.tgz#302d85fac912519cdf0dd2fb51402e5215d85628" integrity sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ== -vue-demi@>=0.14.5, vue-demi@^0.14.6: +vue-demi@>=0.14.6, vue-demi@^0.14.6: version "0.14.6" resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== @@ -7227,10 +7263,10 @@ vue-eslint-parser@^8.0.1: lodash "^4.17.21" semver "^7.3.5" -vue-eslint-parser@^9.1.1, vue-eslint-parser@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz#429955e041ae5371df5f9e37ebc29ba046496182" - integrity sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g== +vue-eslint-parser@^9.3.1: + version "9.3.2" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz#6f9638e55703f1c77875a19026347548d93fd499" + integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== dependencies: debug "^4.3.4" eslint-scope "^7.1.1" @@ -7252,14 +7288,13 @@ vue-i18n-extract@^2.0.4: js-yaml "^4.1.0" vue-i18n@9: - version "9.2.2" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.2.2.tgz#aeb49d9424923c77e0d6441e3f21dafcecd0e666" - integrity sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ== + version "9.5.0" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.5.0.tgz#361a820f591f6d9689435a42763fd1dae224833b" + integrity sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg== dependencies: - "@intlify/core-base" "9.2.2" - "@intlify/shared" "9.2.2" - "@intlify/vue-devtools" "9.2.2" - "@vue/devtools-api" "^6.2.1" + "@intlify/core-base" "9.5.0" + "@intlify/shared" "9.5.0" + "@vue/devtools-api" "^6.5.0" vue-material-design-icons@^5.1.2: version "5.2.0" @@ -7284,9 +7319,9 @@ vue-resize@^2.0.0-alpha.1: integrity sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg== vue-router@4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.4.tgz#382467a7e2923e6a85f015d081e1508052c191b9" - integrity sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ== + version "4.2.5" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a" + integrity sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw== dependencies: "@vue/devtools-api" "^6.5.0" @@ -7386,7 +7421,7 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.10, which-typed-array@^1.1.11: +which-typed-array@^1.1.11: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -7594,9 +7629,9 @@ wrappy@1: integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@^8.11.0, ws@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== xml-name-validator@^4.0.0: version "4.0.0" @@ -7686,10 +7721,10 @@ zen-observable@0.8.15, zen-observable@^0.8.0: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== -zhead@^2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.0.10.tgz#dc89c420081fae78a6f3d10687428ae676bc6291" - integrity sha512-irug8fXNKjqazkA27cFQs7C6/ZD3qNiEzLC56kDyzQART/Z9GMGfg8h2i6fb9c8ZWnIx/QgOgFJxK3A/CYHG0g== +zhead@^2.1.1, zhead@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.1.3.tgz#77d97ec4657fc9b35872ac482613af0cc6b86b57" + integrity sha512-T6kZx8TYdLhuy2vURjPUj9EK9Dobnctu12CYw9ibu6Xj/UAqh2q2bQaA3vFrL4Rna5+CXYHYN3uJrUu6VulYzw== zhyswan-vuedraggable@^4.1.3: version "4.1.3" diff --git a/lib/federation/activity_pub/actions/create.ex b/lib/federation/activity_pub/actions/create.ex index fb2d1b3ba..eb29bc0e5 100644 --- a/lib/federation/activity_pub/actions/create.ex +++ b/lib/federation/activity_pub/actions/create.ex @@ -14,7 +14,15 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Create do ] @type create_entities :: - :event | :comment | :discussion | :actor | :todo_list | :todo | :resource | :post + :event + | :comment + | :discussion + | :conversation + | :actor + | :todo_list + | :todo + | :resource + | :post @doc """ Create an activity of type `Create` @@ -50,18 +58,27 @@ defmodule Mobilizon.Federation.ActivityPub.Actions.Create do end end + @map_types %{ + :event => Types.Events, + :comment => Types.Comments, + :discussion => Types.Discussions, + :conversation => Types.Conversations, + :actor => Types.Actors, + :todo_list => Types.TodoLists, + :todo => Types.Todos, + :resource => Types.Resources, + :post => Types.Posts + } + @spec do_create(create_entities(), map(), map()) :: {:ok, Entity.t(), Activity.t()} | {:error, Ecto.Changeset.t() | atom()} defp do_create(type, args, additional) do - case type do - :event -> Types.Events.create(args, additional) - :comment -> Types.Comments.create(args, additional) - :discussion -> Types.Discussions.create(args, additional) - :actor -> Types.Actors.create(args, additional) - :todo_list -> Types.TodoLists.create(args, additional) - :todo -> Types.Todos.create(args, additional) - :resource -> Types.Resources.create(args, additional) - :post -> Types.Posts.create(args, additional) + mod = Map.get(@map_types, type) + + if is_nil(mod) do + {:error, :type_not_supported} + else + mod.create(args, additional) end end diff --git a/lib/federation/activity_pub/audience.ex b/lib/federation/activity_pub/audience.ex index fd1a97f6e..6c5bb30ab 100644 --- a/lib/federation/activity_pub/audience.ex +++ b/lib/federation/activity_pub/audience.ex @@ -5,6 +5,7 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do alias Mobilizon.{Actors, Discussions, Events, Share} alias Mobilizon.Actors.{Actor, Member} + alias Mobilizon.Conversations.Conversation alias Mobilizon.Discussions.{Comment, Discussion} alias Mobilizon.Events.{Event, Participant} alias Mobilizon.Federation.ActivityPub.Types.Entity @@ -38,6 +39,10 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do %{"to" => maybe_add_group_members([], actor), "cc" => []} end + def get_audience(%Conversation{participants: participants}) do + %{"to" => Enum.map(participants, & &1.url), "cc" => []} + end + # Deleted comments are just like tombstones def get_audience(%Comment{deleted_at: deleted_at}) when not is_nil(deleted_at) do %{"to" => [@ap_public], "cc" => []} diff --git a/lib/federation/activity_pub/fetcher.ex b/lib/federation/activity_pub/fetcher.ex index 1ffc008ab..97166baa2 100644 --- a/lib/federation/activity_pub/fetcher.ex +++ b/lib/federation/activity_pub/fetcher.ex @@ -177,7 +177,7 @@ defmodule Mobilizon.Federation.ActivityPub.Fetcher do {:error, :content_not_json} {:ok, %Tesla.Env{} = res} -> - Logger.debug("Resource returned bad HTTP code #{inspect(res)}") + Logger.debug("Resource returned bad HTTP code (#{res.status}) #{inspect(res)}") {:error, :http_error} {:error, err} -> diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index f8b46abc1..fcba654e2 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -68,24 +68,26 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do def handle_incoming(%{"type" => "Create", "object" => %{"type" => "Note"} = object}) do Logger.info("Handle incoming to create notes") - case Converter.Comment.as_to_model_data(object) do - %{visibility: visibility, event_id: event_id} - when visibility != :public and event_id != nil -> - Logger.info("Tried to reply to an event with a private comment - ignore") - :error + case Discussions.get_comment_from_url_with_preload(object["id"]) do + {:error, :comment_not_found} -> + case Converter.Comment.as_to_model_data(object) do + %{visibility: visibility} = object_data + when visibility === :private -> + Actions.Create.create(:conversation, object_data, false) - object_data when is_map(object_data) -> - case Discussions.get_comment_from_url_with_preload(object_data.url) do - {:error, :comment_not_found} -> - object_data - |> transform_object_data_for_discussion() - |> save_comment_or_discussion() - - {:ok, %Comment{} = comment} -> - # Object already exists - {:ok, nil, comment} + object_data when is_map(object_data) -> + case Discussions.get_comment_from_url_with_preload(object_data.url) do + {:error, :comment_not_found} -> + object_data + |> transform_object_data_for_discussion() + |> save_comment_or_discussion() + end end + {:ok, %Comment{} = comment} -> + # Object already exists + {:ok, nil, comment} + {:error, err} -> {:error, err} end diff --git a/lib/federation/activity_pub/types/conversation.ex b/lib/federation/activity_pub/types/conversation.ex new file mode 100644 index 000000000..0cdd614a8 --- /dev/null +++ b/lib/federation/activity_pub/types/conversation.ex @@ -0,0 +1,207 @@ +defmodule Mobilizon.Federation.ActivityPub.Types.Conversations do + @moduledoc false + + # alias Mobilizon.Conversations.ConversationParticipant + alias Mobilizon.{Actors, Conversations, Discussions} + alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.Conversation + alias Mobilizon.Discussions.Comment + alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor + alias Mobilizon.Federation.ActivityPub.{Audience, Permission} + alias Mobilizon.Federation.ActivityPub.Types.Entity + alias Mobilizon.Federation.ActivityStream + alias Mobilizon.Federation.ActivityStream.Converter.Utils, as: ConverterUtils + alias Mobilizon.Federation.ActivityStream.Convertible + alias Mobilizon.GraphQL.API.Utils, as: APIUtils + alias Mobilizon.Service.Activity.Conversation, as: ConversationActivity + alias Mobilizon.Web.Endpoint + import Mobilizon.Federation.ActivityPub.Utils, only: [make_create_data: 2, make_update_data: 2] + require Logger + + @behaviour Entity + + @impl Entity + @spec create(map(), map()) :: + {:ok, Conversation.t(), ActivityStream.t()} + | {:error, :conversation_not_found | :last_comment_not_found | Ecto.Changeset.t()} + def create(%{conversation_id: conversation_id} = args, additional) + when not is_nil(conversation_id) do + Logger.debug("Creating a reply to a conversation #{inspect(args, pretty: true)}") + args = prepare_args(args) + Logger.debug("Creating a reply to a conversation #{inspect(args, pretty: true)}") + + case Conversations.get_conversation(conversation_id) do + %Conversation{} = conversation -> + case Conversations.reply_to_conversation(conversation, args) do + {:ok, %Conversation{last_comment_id: last_comment_id} = conversation} -> + ConversationActivity.insert_activity(conversation, subject: "conversation_replied") + maybe_publish_graphql_subscription(conversation) + + case Discussions.get_comment_with_preload(last_comment_id) do + %Comment{} = last_comment -> + comment_as_data = Convertible.model_to_as(last_comment) + audience = Audience.get_audience(conversation) + create_data = make_create_data(comment_as_data, Map.merge(audience, additional)) + {:ok, conversation, create_data} + + nil -> + {:error, :last_comment_not_found} + end + + {:error, _, %Ecto.Changeset{} = err, _} -> + {:error, err} + end + + nil -> + {:error, :discussion_not_found} + end + end + + @impl Entity + def create(args, additional) do + with args when is_map(args) <- prepare_args(args) do + case Conversations.create_conversation(args) do + {:ok, %Conversation{} = conversation} -> + ConversationActivity.insert_activity(conversation, subject: "conversation_created") + conversation_as_data = Convertible.model_to_as(conversation) + audience = Audience.get_audience(conversation) + create_data = make_create_data(conversation_as_data, Map.merge(audience, additional)) + {:ok, conversation, create_data} + + {:error, _, %Ecto.Changeset{} = err, _} -> + {:error, err} + end + end + end + + @impl Entity + @spec update(Conversation.t(), map(), map()) :: + {:ok, Conversation.t(), ActivityStream.t()} | {:error, Ecto.Changeset.t()} + def update(%Conversation{} = old_conversation, args, additional) do + case Conversations.update_conversation(old_conversation, args) do + {:ok, %Conversation{} = new_conversation} -> + # ConversationActivity.insert_activity(new_conversation, + # subject: "conversation_renamed", + # old_conversation: old_conversation + # ) + + conversation_as_data = Convertible.model_to_as(new_conversation) + audience = Audience.get_audience(new_conversation) + update_data = make_update_data(conversation_as_data, Map.merge(audience, additional)) + {:ok, new_conversation, update_data} + + {:error, %Ecto.Changeset{} = err} -> + {:error, err} + end + end + + @impl Entity + @spec delete(Conversation.t(), Actor.t(), boolean, map()) :: + {:error, Ecto.Changeset.t()} | {:ok, ActivityStream.t(), Actor.t(), Conversation.t()} + def delete( + %Conversation{} = _conversation, + %Actor{} = _actor, + _local, + _additionnal + ) do + {:error, :not_applicable} + end + + # @spec actor(Conversation.t()) :: Actor.t() | nil + # def actor(%ConversationParticipant{actor_id: actor_id}), do: Actors.get_actor(actor_id) + + # @spec group_actor(Conversation.t()) :: Actor.t() | nil + # def group_actor(%Conversation{actor_id: actor_id}), do: Actors.get_actor(actor_id) + + @spec permissions(Conversation.t()) :: Permission.t() + def permissions(%Conversation{}) do + %Permission{access: :member, create: :member, update: :moderator, delete: :moderator} + end + + @spec maybe_publish_graphql_subscription(Conversation.t()) :: :ok + defp maybe_publish_graphql_subscription(%Conversation{} = conversation) do + Absinthe.Subscription.publish(Endpoint, conversation, + conversation_comment_changed: conversation.id + ) + + :ok + end + + @spec prepare_args(map) :: map | {:error, :empty_participants} + defp prepare_args(args) do + {text, mentions, _tags} = + APIUtils.make_content_html( + args |> Map.get(:text, "") |> String.trim(), + # Can't put additional tags on a comment + [], + "text/html" + ) + + mentions = + (args |> Map.get(:mentions, []) |> prepare_mentions()) ++ + ConverterUtils.fetch_mentions(mentions) + + if Enum.empty?(mentions) do + {:error, :empty_participants} + else + event = Map.get(args, :event, get_event(Map.get(args, :event_id))) + + participants = + (mentions ++ + [ + %{actor_id: args.actor_id}, + %{ + actor_id: + if(is_nil(event), + do: nil, + else: event.attributed_to_id || event.organizer_actor_id + ) + } + ]) + |> Enum.reduce( + [], + fn %{actor_id: actor_id}, acc -> + case Actors.get_actor(actor_id) do + nil -> acc + actor -> acc ++ [actor] + end + end + ) + |> Enum.uniq_by(& &1.id) + + args + |> Map.put(:text, text) + |> Map.put(:mentions, mentions) + |> Map.put(:participants, participants) + end + end + + @spec prepare_mentions(list(String.t())) :: list(%{actor_id: String.t()}) + defp prepare_mentions(mentions) do + Enum.reduce(mentions, [], &prepare_mention/2) + end + + @spec prepare_mention(String.t() | map(), list()) :: list(%{actor_id: String.t()}) + defp prepare_mention(%{actor_id: _} = mention, mentions) do + mentions ++ [mention] + end + + defp prepare_mention(mention, mentions) do + case ActivityPubActor.find_or_make_actor_from_nickname(mention) do + {:ok, %Actor{id: actor_id}} -> + mentions ++ [%{actor_id: actor_id}] + + {:error, _} -> + mentions + end + end + + defp get_event(nil), do: nil + + defp get_event(event_id) do + case Mobilizon.Events.get_event(event_id) do + {:ok, event} -> event + _ -> nil + end + end +end diff --git a/lib/federation/activity_pub/utils.ex b/lib/federation/activity_pub/utils.ex index c617f319e..0b9a96b6b 100644 --- a/lib/federation/activity_pub/utils.ex +++ b/lib/federation/activity_pub/utils.ex @@ -22,6 +22,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do @actor_types ["Group", "Person", "Application"] @all_actor_types @actor_types ++ ["Organization", "Service"] + @ap_public_audience "https://www.w3.org/ns/activitystreams#Public" # Wraps an object into an activity @spec create_activity(map(), boolean()) :: {:ok, Activity.t()} @@ -491,8 +492,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do if public do Logger.debug("Making announce data for a public object") - {[actor.followers_url, object_actor_url], - ["https://www.w3.org/ns/activitystreams#Public"]} + {[actor.followers_url, object_actor_url], [@ap_public_audience]} else Logger.debug("Making announce data for a private object") @@ -539,7 +539,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do "actor" => url, "object" => activity, "to" => [actor.followers_url, actor.url], - "cc" => ["https://www.w3.org/ns/activitystreams#Public"] + "cc" => [@ap_public_audience] } if activity_id, do: Map.put(data, "id", activity_id), else: data diff --git a/lib/federation/activity_stream/converter/comment.ex b/lib/federation/activity_stream/converter/comment.ex index 9fb98823c..d01030445 100644 --- a/lib/federation/activity_stream/converter/comment.ex +++ b/lib/federation/activity_stream/converter/comment.ex @@ -47,9 +47,6 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do case maybe_fetch_actor_and_attributed_to_id(object) do {:ok, %Actor{id: actor_id, domain: actor_domain}, attributed_to} -> - Logger.debug("Inserting full comment") - Logger.debug(inspect(object)) - data = %{ text: object["content"], url: object["id"], @@ -70,14 +67,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do is_announcement: Map.get(object, "isAnnouncement", false) } - Logger.debug("Converted object before fetching parents") - Logger.debug(inspect(data)) - - data = maybe_fetch_parent_object(object, data) - - Logger.debug("Converted object after fetching parents") - Logger.debug(inspect(data)) - data + maybe_fetch_parent_object(object, data) {:error, err} -> {:error, err} @@ -147,19 +137,22 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do end @spec determine_to(CommentModel.t()) :: [String.t()] - defp determine_to(%CommentModel{} = comment) do - cond do - not is_nil(comment.attributed_to) -> - [comment.attributed_to.url] + defp determine_to(%CommentModel{visibility: :private, mentions: mentions} = _comment) do + Enum.map(mentions, fn mention -> mention.actor.url end) + end - comment.visibility == :public -> - ["https://www.w3.org/ns/activitystreams#Public"] - - true -> - [comment.actor.followers_url] + defp determine_to(%CommentModel{visibility: :public} = comment) do + if is_nil(comment.attributed_to) do + ["https://www.w3.org/ns/activitystreams#Public"] + else + [comment.attributed_to.url] end end + defp determine_to(%CommentModel{} = comment) do + [comment.actor.followers_url] + end + defp maybe_fetch_parent_object(object, data) do # We fetch the parent object Logger.debug("We're fetching the parent object") @@ -170,9 +163,12 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do case ActivityPub.fetch_object_from_url(object["inReplyTo"]) do # Reply to an event (Event) - {:ok, %Event{id: id}} -> + {:ok, %Event{id: id} = event} -> Logger.debug("Parent object is an event") - data |> Map.put(:event_id, id) + + data + |> Map.put(:event_id, id) + |> Map.put(:event, event) # Reply to a comment (Comment) {:ok, %CommentModel{id: id} = comment} -> @@ -182,6 +178,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do |> Map.put(:in_reply_to_comment_id, id) |> Map.put(:origin_comment_id, comment |> CommentModel.get_thread_id()) |> Map.put(:event_id, comment.event_id) + |> Map.put(:conversation_id, comment.conversation_id) # Reply to a discucssion (Discussion) {:ok, diff --git a/lib/federation/activity_stream/converter/conversation.ex b/lib/federation/activity_stream/converter/conversation.ex new file mode 100644 index 000000000..46dd84126 --- /dev/null +++ b/lib/federation/activity_stream/converter/conversation.ex @@ -0,0 +1,68 @@ +defmodule Mobilizon.Federation.ActivityStream.Converter.Conversation do + @moduledoc """ + Comment converter. + + This module allows to convert conversations from ActivityStream format to our own + internal one, and back. + """ + + alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.Conversation + alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor + alias Mobilizon.Federation.ActivityStream.{Converter, Convertible} + alias Mobilizon.Federation.ActivityStream.Converter.Conversation, as: ConversationConverter + alias Mobilizon.Storage.Repo + import Mobilizon.Service.Guards, only: [is_valid_string: 1] + + require Logger + + @behaviour Converter + + defimpl Convertible, for: Conversation do + defdelegate model_to_as(comment), to: ConversationConverter + end + + @doc """ + Make an AS comment object from an existing `conversation` structure. + """ + @impl Converter + @spec model_to_as(Conversation.t()) :: map + def model_to_as(%Conversation{} = conversation) do + conversation = Repo.preload(conversation, [:participants, last_comment: [:actor]]) + + %{ + "type" => "Note", + "to" => Enum.map(conversation.participants, & &1.url), + "cc" => [], + "content" => conversation.last_comment.text, + "mediaType" => "text/html", + "actor" => conversation.last_comment.actor.url, + "id" => conversation.last_comment.url, + "publishedAt" => conversation.inserted_at + } + end + + @impl Converter + @spec as_to_model_data(map) :: map() | {:error, atom()} + def as_to_model_data(%{"type" => "Note", "name" => name} = object) when is_valid_string(name) do + with %{actor_id: actor_id, creator_id: creator_id} <- extract_actors(object) do + %{actor_id: actor_id, creator_id: creator_id, title: name, url: object["id"]} + end + end + + @spec extract_actors(map()) :: + %{actor_id: String.t(), creator_id: String.t()} | {:error, atom()} + defp extract_actors(%{"actor" => creator_url, "attributedTo" => actor_url} = _object) + when is_valid_string(creator_url) and is_valid_string(actor_url) do + with {:ok, %Actor{id: creator_id, suspended: false}} <- + ActivityPubActor.get_or_fetch_actor_by_url(creator_url), + {:ok, %Actor{id: actor_id, suspended: false}} <- + ActivityPubActor.get_or_fetch_actor_by_url(actor_url) do + %{actor_id: actor_id, creator_id: creator_id} + else + {:error, error} -> {:error, error} + {:ok, %Actor{url: ^creator_url}} -> {:error, :creator_suspended} + {:ok, %Actor{url: ^actor_url}} -> {:error, :actor_suspended} + end + end +end diff --git a/lib/federation/web_finger/web_finger.ex b/lib/federation/web_finger/web_finger.ex index a1d0b3af7..467e46b57 100644 --- a/lib/federation/web_finger/web_finger.ex +++ b/lib/federation/web_finger/web_finger.ex @@ -242,12 +242,15 @@ defmodule Mobilizon.Federation.WebFinger do @spec domain_from_federated_actor(String.t()) :: {:ok, String.t()} | {:error, :host_not_found} defp domain_from_federated_actor(actor) do case String.split(actor, "@") do + [_name, ""] -> + {:error, :host_not_found} + [_name, domain] -> {:ok, domain} _e -> host = URI.parse(actor).host - if is_nil(host), do: {:error, :host_not_found}, else: {:ok, host} + if is_nil(host) or host == "", do: {:error, :host_not_found}, else: {:ok, host} end end diff --git a/lib/graphql/api/comments.ex b/lib/graphql/api/comments.ex index 0c7fabf1a..a103e9dc2 100644 --- a/lib/graphql/api/comments.ex +++ b/lib/graphql/api/comments.ex @@ -4,7 +4,8 @@ defmodule Mobilizon.GraphQL.API.Comments do """ alias Mobilizon.Actors.Actor - alias Mobilizon.Discussions.Comment + alias Mobilizon.Conversations.Conversation + alias Mobilizon.Discussions.{Comment, Discussion} alias Mobilizon.Federation.ActivityPub.{Actions, Activity} alias Mobilizon.GraphQL.API.Utils @@ -53,6 +54,22 @@ defmodule Mobilizon.GraphQL.API.Comments do ) end + @doc """ + Creates a conversation (or reply to a conversation) + """ + @spec create_conversation(map()) :: + {:ok, Activity.t(), Conversation.t()} + | {:error, :entity_tombstoned | atom | Ecto.Changeset.t()} + def create_conversation(args) do + args = extract_pictures_from_comment_body(args) + + Actions.Create.create( + :conversation, + args, + true + ) + end + @spec extract_pictures_from_comment_body(map()) :: map() defp extract_pictures_from_comment_body(%{text: text, actor_id: actor_id} = args) do pictures = Utils.extract_pictures_from_body(text, actor_id) diff --git a/lib/graphql/api/events.ex b/lib/graphql/api/events.ex index 80d412827..a67787661 100644 --- a/lib/graphql/api/events.ex +++ b/lib/graphql/api/events.ex @@ -4,8 +4,8 @@ defmodule Mobilizon.GraphQL.API.Events do """ alias Mobilizon.Actors.Actor + alias Mobilizon.Discussions.Comment alias Mobilizon.Events.Event - alias Mobilizon.Federation.ActivityPub.{Actions, Activity, Utils} alias Mobilizon.GraphQL.API.Utils, as: APIUtils @@ -36,6 +36,12 @@ defmodule Mobilizon.GraphQL.API.Events do Actions.Delete.delete(event, actor, true) end + @spec send_private_message_to_participants(map()) :: + {:ok, Activity.t(), Comment.t()} | {:error, atom() | Ecto.Changeset.t()} + def send_private_message_to_participants(args) do + Actions.Create.create(:comment, args, true) + end + @spec prepare_args(map) :: map defp prepare_args(args) do organizer_actor = Map.get(args, :organizer_actor) diff --git a/lib/graphql/api/search.ex b/lib/graphql/api/search.ex index 7c9a08e36..03298bb2c 100644 --- a/lib/graphql/api/search.ex +++ b/lib/graphql/api/search.ex @@ -116,13 +116,9 @@ defmodule Mobilizon.GraphQL.API.Search do @spec process_from_username(String.t()) :: Page.t(Actor.t()) defp process_from_username(search) do case ActivityPubActor.find_or_make_actor_from_nickname(search) do - {:ok, %Actor{type: :Group} = actor} -> + {:ok, %Actor{} = actor} -> %Page{total: 1, elements: [actor]} - # Don't return anything else than groups - {:ok, %Actor{}} -> - %Page{total: 0, elements: []} - {:error, _err} -> Logger.debug(fn -> "Unable to find or make actor '#{search}'" end) diff --git a/lib/graphql/authorization.ex b/lib/graphql/authorization.ex index 21f4ad962..2bc333432 100644 --- a/lib/graphql/authorization.ex +++ b/lib/graphql/authorization.ex @@ -16,11 +16,13 @@ defmodule Mobilizon.GraphQL.Authorization do @impl true def has_user_access?(%User{}, _scope, _rule), do: true + @impl true def has_user_access?(%ApplicationToken{scope: scope} = _current_app_token, _struct, rule) when rule != :forbid_app_access do AppScope.has_app_access?(scope, rule) end + @impl true def has_user_access?(_current_user, _scoped_struct, _rule), do: false @impl true diff --git a/lib/graphql/resolvers/conversation.ex b/lib/graphql/resolvers/conversation.ex new file mode 100644 index 000000000..00f95de53 --- /dev/null +++ b/lib/graphql/resolvers/conversation.ex @@ -0,0 +1,269 @@ +defmodule Mobilizon.GraphQL.Resolvers.Conversation do + @moduledoc """ + Handles the group-related GraphQL calls. + """ + + alias Mobilizon.{Actors, Conversations} + alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.{Conversation, ConversationParticipant, ConversationView} + alias Mobilizon.Events.Event + alias Mobilizon.GraphQL.API.Comments + alias Mobilizon.Storage.Page + alias Mobilizon.Users.User + alias Mobilizon.Web.Endpoint + # alias Mobilizon.Users.User + import Mobilizon.Web.Gettext, only: [dgettext: 2] + + @spec find_conversations_for_event(Event.t(), map(), Absinthe.Resolution.t()) :: + {:ok, Page.t(ConversationView.t())} | {:error, :unauthenticated} + def find_conversations_for_event( + %Event{id: event_id, attributed_to_id: attributed_to_id}, + %{page: page, limit: limit}, + %{ + context: %{ + current_actor: %Actor{id: actor_id} + } + } + ) + when not is_nil(attributed_to_id) do + if Actors.is_member?(actor_id, attributed_to_id) do + {:ok, + event_id + |> Conversations.find_conversations_for_event(actor_id, page, limit) + |> conversation_participant_to_view()} + else + {:ok, %Page{total: 0, elements: []}} + end + end + + @spec find_conversations_for_event(Event.t(), map(), Absinthe.Resolution.t()) :: + {:ok, Page.t(ConversationView.t())} | {:error, :unauthenticated} + def find_conversations_for_event( + %Event{id: event_id, organizer_actor_id: organizer_actor_id}, + %{page: page, limit: limit}, + %{ + context: %{ + current_actor: %Actor{id: actor_id} + } + } + ) do + if organizer_actor_id == actor_id do + {:ok, + event_id + |> Conversations.find_conversations_for_event(actor_id, page, limit) + |> conversation_participant_to_view()} + else + {:ok, %Page{total: 0, elements: []}} + end + end + + def list_conversations(%Actor{id: actor_id}, %{page: page, limit: limit}, %{ + context: %{ + current_actor: %Actor{id: _current_actor_id} + } + }) do + {:ok, + actor_id + |> Conversations.list_conversation_participants_for_actor(page, limit) + |> conversation_participant_to_view()} + end + + def list_conversations(%User{id: user_id}, %{page: page, limit: limit}, %{ + context: %{ + current_actor: %Actor{id: _current_actor_id} + } + }) do + {:ok, + user_id + |> Conversations.list_conversation_participants_for_user(page, limit) + |> conversation_participant_to_view()} + end + + def unread_conversations_count(%Actor{id: actor_id}, _args, %{ + context: %{ + current_user: %User{} = user + } + }) do + case User.owns_actor(user, actor_id) do + {:is_owned, %Actor{}} -> + {:ok, Conversations.count_unread_conversation_participants_for_person(actor_id)} + + _ -> + {:error, :unauthorized} + end + end + + def get_conversation(_parent, %{id: conversation_participant_id}, %{ + context: %{ + current_actor: %Actor{id: performing_actor_id} + } + }) do + case Conversations.get_conversation_participant(conversation_participant_id) do + nil -> + {:error, :not_found} + + %ConversationParticipant{actor_id: actor_id} = conversation_participant -> + if actor_id == performing_actor_id or Actors.is_member?(performing_actor_id, actor_id) do + {:ok, conversation_participant_to_view(conversation_participant)} + else + {:error, :not_found} + end + end + end + + def get_comments_for_conversation( + %ConversationView{origin_comment_id: origin_comment_id, actor_id: conversation_actor_id}, + %{page: page, limit: limit}, + %{ + context: %{ + current_actor: %Actor{id: performing_actor_id} + } + } + ) do + if conversation_actor_id == performing_actor_id or + Actors.is_member?(performing_actor_id, conversation_actor_id) do + {:ok, + Mobilizon.Discussions.get_comments_in_reply_to_comment_id(origin_comment_id, page, limit)} + else + {:error, :unauthorized} + end + end + + def create_conversation( + _parent, + %{actor_id: actor_id} = args, + %{ + context: %{ + current_actor: %Actor{} = current_actor + } + } + ) do + if authorized_to_reply?( + Map.get(args, :conversation_id), + Map.get(args, :attributed_to_id), + current_actor.id + ) do + case Comments.create_conversation(args) do + {:ok, _activity, %Conversation{} = conversation} -> + Absinthe.Subscription.publish( + Endpoint, + Conversations.count_unread_conversation_participants_for_person(current_actor.id), + person_unread_conversations_count: current_actor.id + ) + + conversation_participant_actor = + args |> Map.get(:attributed_to_id, actor_id) |> Actors.get_actor() + + {:ok, conversation_to_view(conversation, conversation_participant_actor)} + + {:error, :empty_participants} -> + {:error, dgettext("errors", "Conversation needs to mention at least one participant")} + end + else + {:error, :unauthorized} + end + end + + def update_conversation(_parent, %{conversation_id: conversation_participant_id, read: read}, %{ + context: %{ + current_actor: %Actor{id: current_actor_id} + } + }) do + with {:no_participant, + %ConversationParticipant{actor_id: actor_id} = conversation_participant} <- + {:no_participant, + Conversations.get_conversation_participant(conversation_participant_id)}, + {:valid_actor, true} <- + {:valid_actor, + actor_id == current_actor_id or + Actors.is_member?(current_actor_id, actor_id)}, + {:ok, %ConversationParticipant{} = conversation_participant} <- + Conversations.update_conversation_participant(conversation_participant, %{ + unread: !read + }) do + Absinthe.Subscription.publish( + Endpoint, + Conversations.count_unread_conversation_participants_for_person(actor_id), + person_unread_conversations_count: actor_id + ) + + {:ok, conversation_participant_to_view(conversation_participant)} + else + {:no_participant, _} -> + {:error, :not_found} + + {:valid_actor, _} -> + {:error, :unauthorized} + end + end + + def delete_conversation(_, _, _), do: :ok + + defp conversation_participant_to_view(%Page{elements: elements} = page) do + %Page{page | elements: Enum.map(elements, &conversation_participant_to_view/1)} + end + + defp conversation_participant_to_view(%ConversationParticipant{} = conversation_participant) do + value = + conversation_participant + |> Map.from_struct() + |> Map.merge(Map.from_struct(conversation_participant.conversation)) + |> Map.delete(:conversation) + |> Map.put( + :participants, + Enum.map( + conversation_participant.conversation.participants, + &conversation_participant_to_actor/1 + ) + ) + |> Map.put(:conversation_participant_id, conversation_participant.id) + + struct(ConversationView, value) + end + + defp conversation_to_view( + %Conversation{id: conversation_id} = conversation, + %Actor{id: actor_id} = actor, + unread \\ true + ) do + value = + conversation + |> Map.from_struct() + |> Map.put(:actor, actor) + |> Map.put(:unread, unread) + |> Map.put( + :conversation_participant_id, + Conversations.get_participant_by_conversation_and_actor(conversation_id, actor_id).id + ) + + struct(ConversationView, value) + end + + defp conversation_participant_to_actor(%Actor{} = actor), do: actor + + defp conversation_participant_to_actor(%ConversationParticipant{} = conversation_participant), + do: conversation_participant.actor + + @spec authorized_to_reply?(String.t() | nil, String.t() | nil, String.t()) :: boolean() + # Not a reply + defp authorized_to_reply?(conversation_id, _attributed_to_id, _current_actor_id) + when is_nil(conversation_id), + do: true + + # We are authorized to reply if we are one of the participants, or if we a a member of a participant group + defp authorized_to_reply?(conversation_id, attributed_to_id, current_actor_id) do + case Conversations.get_conversation(conversation_id) do + nil -> + false + + %Conversation{participants: participants} -> + participant_ids = Enum.map(participants, fn participant -> to_string(participant.id) end) + + current_actor_id in participant_ids or + Enum.any?(participant_ids, fn participant_id -> + Actors.is_member?(current_actor_id, participant_id) and + attributed_to_id == participant_id + end) + end + end +end diff --git a/lib/graphql/resolvers/participant.ex b/lib/graphql/resolvers/participant.ex index f488e88c8..520ecb149 100644 --- a/lib/graphql/resolvers/participant.ex +++ b/lib/graphql/resolvers/participant.ex @@ -2,9 +2,12 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do @moduledoc """ Handles the participation-related GraphQL calls. """ + # alias Mobilizon.Conversations.ConversationParticipant alias Mobilizon.{Actors, Config, Crypto, Events} alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.{Conversation, ConversationView} alias Mobilizon.Events.{Event, Participant} + alias Mobilizon.GraphQL.API.Comments alias Mobilizon.GraphQL.API.Participations alias Mobilizon.Service.Export.Participants.{CSV, ODS, PDF} alias Mobilizon.Users.User @@ -346,6 +349,60 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do def export_event_participants(_, _, _), do: {:error, :unauthorized} + def send_private_messages_to_participants( + _parent, + %{roles: roles, event_id: event_id, actor_id: actor_id} = + args, + %{ + context: %{ + current_user: %User{locale: _locale}, + current_actor: %Actor{id: current_actor_id} + } + } + ) do + participant_actors = + event_id + |> Events.list_all_participants_for_event(roles) + |> Enum.map(& &1.actor) + + mentions = + participant_actors + |> Enum.map(& &1.id) + |> Enum.uniq() + |> Enum.map(&%{actor_id: &1, event_id: event_id}) + + args = + Map.merge(args, %{ + mentions: mentions, + visibility: :private + }) + + with {:member, true} <- + {:member, + current_actor_id == actor_id or Actors.is_member?(current_actor_id, actor_id)}, + {:ok, _activity, %Conversation{} = conversation} <- Comments.create_conversation(args) do + {:ok, conversation_to_view(conversation, Actors.get_actor(actor_id))} + else + {:member, false} -> + {:error, :unauthorized} + + {:error, err} -> + {:error, err} + end + end + + def send_private_messages_to_participants(_parent, _args, _resolution), + do: {:error, :unauthorized} + + defp conversation_to_view(%Conversation{} = conversation, %Actor{} = actor) do + value = + conversation + |> Map.from_struct() + |> Map.put(:actor, actor) + + struct(ConversationView, value) + end + @spec valid_email?(String.t() | nil) :: boolean defp valid_email?(email) when is_nil(email), do: false diff --git a/lib/graphql/schema.ex b/lib/graphql/schema.ex index b635bc726..6b550cfb5 100644 --- a/lib/graphql/schema.ex +++ b/lib/graphql/schema.ex @@ -55,6 +55,7 @@ defmodule Mobilizon.GraphQL.Schema do import_types(Schema.Users.ActivitySetting) import_types(Schema.FollowedGroupActivityType) import_types(Schema.AuthApplicationType) + import_types(Schema.ConversationType) @desc "A struct containing the id of the deleted object" object :deleted_object do @@ -165,6 +166,7 @@ defmodule Mobilizon.GraphQL.Schema do import_fields(:todo_list_queries) import_fields(:todo_queries) import_fields(:discussion_queries) + import_fields(:conversation_queries) import_fields(:resource_queries) import_fields(:post_queries) import_fields(:statistics_queries) @@ -189,6 +191,7 @@ defmodule Mobilizon.GraphQL.Schema do import_fields(:todo_list_mutations) import_fields(:todo_mutations) import_fields(:discussion_mutations) + import_fields(:conversation_mutations) import_fields(:resource_mutations) import_fields(:post_mutations) import_fields(:actor_mutations) @@ -204,6 +207,7 @@ defmodule Mobilizon.GraphQL.Schema do subscription do import_fields(:person_subscriptions) import_fields(:discussion_subscriptions) + import_fields(:conversation_subscriptions) end @spec middleware(list(module()), any(), map()) :: list(module()) diff --git a/lib/graphql/schema/actors/person.ex b/lib/graphql/schema/actors/person.ex index c138e0813..126921ea2 100644 --- a/lib/graphql/schema/actors/person.ex +++ b/lib/graphql/schema/actors/person.ex @@ -7,7 +7,7 @@ defmodule Mobilizon.GraphQL.Schema.Actors.PersonType do import Absinthe.Resolution.Helpers, only: [dataloader: 2] alias Mobilizon.Events - alias Mobilizon.GraphQL.Resolvers.{Media, Person} + alias Mobilizon.GraphQL.Resolvers.{Conversation, Media, Person} alias Mobilizon.GraphQL.Schema import_types(Schema.Events.FeedTokenType) @@ -136,6 +136,25 @@ defmodule Mobilizon.GraphQL.Schema.Actors.PersonType do arg(:limit, :integer, default_value: 10, description: "The limit of follows per page") resolve(&Person.person_follows/3) end + + @desc "The list of conversations this person has" + field(:conversations, :paginated_conversation_list, + meta: [private: true, rule: :"read:profile:conversations"] + ) do + arg(:page, :integer, + default_value: 1, + description: "The page in the conversations list" + ) + + arg(:limit, :integer, default_value: 10, description: "The limit of conversations per page") + resolve(&Conversation.list_conversations/3) + end + + field(:unread_conversations_count, :integer, + meta: [private: true, rule: :"read:profile:conversations"] + ) do + resolve(&Conversation.unread_conversations_count/3) + end end @desc """ @@ -353,5 +372,16 @@ defmodule Mobilizon.GraphQL.Schema.Actors.PersonType do {:ok, topic: [args.group, args.person_id]} end) end + + @desc "Notify when a person unread conversations count changed" + field(:person_unread_conversations_count, :integer, + meta: [private: true, rule: :"read:profile:conversations"] + ) do + arg(:person_id, non_null(:id), description: "The person's ID") + + config(fn args, _ -> + {:ok, topic: [args.person_id]} + end) + end end end diff --git a/lib/graphql/schema/conversation.ex b/lib/graphql/schema/conversation.ex new file mode 100644 index 000000000..30883eaa7 --- /dev/null +++ b/lib/graphql/schema/conversation.ex @@ -0,0 +1,132 @@ +defmodule Mobilizon.GraphQL.Schema.ConversationType do + @moduledoc """ + Schema representation for conversation + """ + use Absinthe.Schema.Notation + + # import Absinthe.Resolution.Helpers, only: [dataloader: 1] + + # alias Mobilizon.Actors + alias Mobilizon.GraphQL.Resolvers.Conversation + + @desc "A conversation" + object :conversation do + meta(:authorize, :user) + interfaces([:activity_object]) + field(:id, :id, description: "Internal ID for this conversation") + + field(:conversation_participant_id, :id, + description: "Internal ID for the conversation participant" + ) + + field(:last_comment, :comment, description: "The last comment of the conversation") + + field :comments, :paginated_comment_list do + arg(:page, :integer, default_value: 1) + arg(:limit, :integer, default_value: 10) + resolve(&Conversation.get_comments_for_conversation/3) + description("The comments for the conversation") + end + + field(:participants, list_of(:person), + # resolve: dataloader(Actors), + description: "The list of participants to the conversation" + ) + + field(:event, :event, description: "The event this conversation is associated to") + + field(:actor, :person, + # resolve: dataloader(Actors), + description: "The actor concerned by the conversation" + ) + + field(:unread, :boolean, description: "Whether this conversation is unread") + + field(:inserted_at, :datetime, description: "When was this conversation's created") + field(:updated_at, :datetime, description: "When was this conversation's updated") + end + + @desc "A paginated list of conversations" + object :paginated_conversation_list do + meta(:authorize, :user) + field(:elements, list_of(:conversation), description: "A list of conversations") + field(:total, :integer, description: "The total number of conversations in the list") + end + + object :conversation_queries do + @desc "Get a conversation" + field :conversation, type: :conversation do + arg(:id, :id, description: "The conversation's ID") + + middleware(Rajska.QueryAuthorization, + permit: :user, + scope: Mobilizon.Conversations.Conversation, + rule: :"read:conversations", + args: %{id: :id} + ) + + resolve(&Conversation.get_conversation/3) + end + end + + object :conversation_mutations do + @desc "Post a private message" + field :post_private_message, type: :conversation do + arg(:text, non_null(:string), description: "The conversation's first comment body") + arg(:actor_id, non_null(:id), description: "The profile ID to create the conversation as") + arg(:attributed_to_id, :id, description: "The group ID to attribute the conversation to") + arg(:conversation_id, :id, description: "The conversation ID to reply to") + arg(:language, :string, description: "The comment language", default_value: "und") + arg(:mentions, list_of(:string), description: "A list of federated usernames to mention") + + middleware(Rajska.QueryAuthorization, + permit: :user, + scope: Mobilizon.Conversations.ConversationParticipant, + rule: :"write:conversation:create", + args: %{actor_id: :actor_id} + ) + + resolve(&Conversation.create_conversation/3) + end + + @desc "Update a conversation" + field :update_conversation, type: :conversation do + arg(:conversation_id, non_null(:id), description: "The conversation's ID") + arg(:read, non_null(:boolean), description: "Whether the conversation is read or not") + + middleware(Rajska.QueryAuthorization, + permit: :user, + scope: Mobilizon.Conversations.Conversation, + rule: :"write:conversation:update", + args: %{id: :conversation_id} + ) + + resolve(&Conversation.update_conversation/3) + end + + @desc "Delete a conversation" + field :delete_conversation, type: :conversation do + arg(:conversation_id, non_null(:id), description: "The conversation's ID") + + middleware(Rajska.QueryAuthorization, + permit: :user, + scope: Mobilizon.Conversations.Conversation, + rule: :"write:conversation:delete", + args: %{id: :conversation_id} + ) + + resolve(&Conversation.delete_conversation/3) + end + end + + object :conversation_subscriptions do + @desc "Notify when a conversation changed" + field :conversation_comment_changed, :conversation do + arg(:id, non_null(:id), description: "The conversation's ID") + + config(fn args, _ -> + {:ok, topic: args.id} + end) + end + end +end diff --git a/lib/graphql/schema/discussions/comment.ex b/lib/graphql/schema/discussions/comment.ex index bc9af213d..f8b4a8c09 100644 --- a/lib/graphql/schema/discussions/comment.ex +++ b/lib/graphql/schema/discussions/comment.ex @@ -56,6 +56,8 @@ defmodule Mobilizon.GraphQL.Schema.Discussions.CommentType do description: "Whether this comment needs to be announced to participants" ) + field(:conversation, :conversation, description: "The conversation this comment is part of") + field(:language, :string, description: "The comment language") end diff --git a/lib/graphql/schema/event.ex b/lib/graphql/schema/event.ex index 7ace49bb1..9c6e04d5a 100644 --- a/lib/graphql/schema/event.ex +++ b/lib/graphql/schema/event.ex @@ -8,7 +8,7 @@ defmodule Mobilizon.GraphQL.Schema.EventType do import Absinthe.Resolution.Helpers, only: [dataloader: 1, dataloader: 2] alias Mobilizon.{Actors, Addresses, Discussions} - alias Mobilizon.GraphQL.Resolvers.{Event, Media, Tag} + alias Mobilizon.GraphQL.Resolvers.{Conversation, Event, Media, Tag} alias Mobilizon.GraphQL.Schema import_types(Schema.AddressType) @@ -113,6 +113,18 @@ defmodule Mobilizon.GraphQL.Schema.EventType do field(:options, :event_options, description: "The event options") field(:metadata, list_of(:event_metadata), description: "A key-value list of metadata") field(:language, :string, description: "The event language") + + field(:conversations, :paginated_conversation_list, + description: "The list of conversations started on this event" + ) do + arg(:page, :integer, + default_value: 1, + description: "The page in the paginated conversation list" + ) + + arg(:limit, :integer, default_value: 10, description: "The limit of conversations per page") + resolve(&Conversation.find_conversations_for_event/3) + end end @desc "The list of visibility options for an event" diff --git a/lib/graphql/schema/events/participant.ex b/lib/graphql/schema/events/participant.ex index 45f58fa52..0585173ae 100644 --- a/lib/graphql/schema/events/participant.ex +++ b/lib/graphql/schema/events/participant.ex @@ -159,5 +159,34 @@ defmodule Mobilizon.GraphQL.Schema.Events.ParticipantType do resolve(&Participant.export_event_participants/3) end + + @desc "Send private messages to participants" + field :send_event_private_message, :conversation do + arg(:event_id, non_null(:id), + description: "The ID from the event for which to export participants" + ) + + arg(:roles, list_of(:participant_role_enum), + default_value: [], + description: "The participant roles to include" + ) + + arg(:text, non_null(:string), description: "The private message body") + + arg(:actor_id, non_null(:id), + description: "The profile ID to create the private message as" + ) + + arg(:language, :string, description: "The private message language", default_value: "und") + + middleware(Rajska.QueryAuthorization, + permit: :user, + scope: Mobilizon.Events.Event, + rule: :"write:event:participants:private_message", + args: %{id: :event_id} + ) + + resolve(&Participant.send_private_messages_to_participants/3) + end end end diff --git a/lib/graphql/schema/user.ex b/lib/graphql/schema/user.ex index ce4941ad8..71c019ed4 100644 --- a/lib/graphql/schema/user.ex +++ b/lib/graphql/schema/user.ex @@ -8,7 +8,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do alias Mobilizon.Events alias Mobilizon.GraphQL.Resolvers.Application, as: ApplicationResolver - alias Mobilizon.GraphQL.Resolvers.{Media, User} + alias Mobilizon.GraphQL.Resolvers.{Conversation, Media, User} alias Mobilizon.GraphQL.Resolvers.Users.ActivitySettings alias Mobilizon.GraphQL.Schema @@ -191,6 +191,19 @@ defmodule Mobilizon.GraphQL.Schema.UserType do ) do resolve(&ApplicationResolver.get_user_applications/3) end + + @desc "The list of conversations this person has" + field(:conversations, :paginated_conversation_list, + meta: [private: true, rule: :"read:profile:conversations"] + ) do + arg(:page, :integer, + default_value: 1, + description: "The page in the conversations list" + ) + + arg(:limit, :integer, default_value: 10, description: "The limit of conversations per page") + resolve(&Conversation.list_conversations/3) + end end @desc "The list of roles an user can have" diff --git a/lib/mobilizon/activities/activities.ex b/lib/mobilizon/activities/activities.ex index d851f19fb..c02ba8e36 100644 --- a/lib/mobilizon/activities/activities.ex +++ b/lib/mobilizon/activities/activities.ex @@ -17,10 +17,24 @@ defmodule Mobilizon.Activities do very_high: 50 ) - @activity_types ["event", "post", "discussion", "resource", "group", "member", "comment"] + @activity_types [ + "event", + "post", + "conversation", + "discussion", + "resource", + "group", + "member", + "comment" + ] @event_activity_subjects ["event_created", "event_updated", "event_deleted", "comment_posted"] @participant_activity_subjects ["event_new_participation"] @post_activity_subjects ["post_created", "post_updated", "post_deleted"] + @conversation_activity_subjects [ + "conversation_created", + "conversation_replied", + "conversation_event_announcement" + ] @discussion_activity_subjects [ "discussion_created", "discussion_replied", @@ -49,6 +63,7 @@ defmodule Mobilizon.Activities do @settings_activity_subjects ["group_created", "group_updated"] @subjects @event_activity_subjects ++ + @conversation_activity_subjects ++ @participant_activity_subjects ++ @post_activity_subjects ++ @discussion_activity_subjects ++ @@ -61,6 +76,7 @@ defmodule Mobilizon.Activities do "actor", "post", "discussion", + "conversation", "resource", "member", "group", diff --git a/lib/mobilizon/actors/actor.ex b/lib/mobilizon/actors/actor.ex index 9db86aab7..3d5cedc8a 100644 --- a/lib/mobilizon/actors/actor.ex +++ b/lib/mobilizon/actors/actor.ex @@ -10,6 +10,7 @@ defmodule Mobilizon.Actors.Actor do alias Mobilizon.{Actors, Addresses, Config, Crypto, Mention, Share} alias Mobilizon.Actors.{ActorOpenness, ActorType, ActorVisibility, Follower, Member} alias Mobilizon.Addresses.Address + alias Mobilizon.Conversations.Conversation alias Mobilizon.Discussions.Comment alias Mobilizon.Events.{Event, FeedToken, Participant} alias Mobilizon.Medias.File @@ -196,6 +197,11 @@ defmodule Mobilizon.Actors.Actor do has_many(:owner_shares, Share, foreign_key: :owner_actor_id) many_to_many(:memberships, __MODULE__, join_through: Member) + many_to_many(:conversations, Conversation, + join_through: "conversation_participants", + join_keys: [conversation_id: :id, participant_id: :id] + ) + timestamps() end diff --git a/lib/mobilizon/conversations/conversation.ex b/lib/mobilizon/conversations/conversation.ex new file mode 100644 index 000000000..38c82d386 --- /dev/null +++ b/lib/mobilizon/conversations/conversation.ex @@ -0,0 +1,57 @@ +defmodule Mobilizon.Conversations.Conversation do + @moduledoc """ + Represents a conversation + """ + + use Ecto.Schema + + import Ecto.Changeset + + alias Ecto.Changeset + alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.ConversationParticipant + alias Mobilizon.Discussions.Comment + alias Mobilizon.Events.Event + + @type t :: %__MODULE__{ + id: String.t(), + origin_comment: Comment.t(), + last_comment: Comment.t(), + participants: list(Actor.t()) + } + + @required_attrs [:origin_comment_id, :last_comment_id] + @optional_attrs [:event_id] + @attrs @required_attrs ++ @optional_attrs + + schema "conversations" do + belongs_to(:origin_comment, Comment) + belongs_to(:last_comment, Comment) + belongs_to(:event, Event) + has_many(:comments, Comment) + + many_to_many(:participants, Actor, + join_through: ConversationParticipant, + join_keys: [conversation_id: :id, actor_id: :id], + on_replace: :delete + ) + + timestamps(type: :utc_datetime) + end + + @doc false + @spec changeset(t | Ecto.Schema.t(), map) :: Ecto.Changeset.t() + def changeset(%__MODULE__{} = conversation, attrs) do + conversation + |> cast(attrs, @attrs) + |> maybe_set_participants(attrs) + |> validate_required(@required_attrs) + end + + defp maybe_set_participants(%Changeset{} = changeset, %{participants: participants}) + when length(participants) > 0 do + put_assoc(changeset, :participants, participants) + end + + defp maybe_set_participants(%Changeset{} = changeset, _), do: changeset +end diff --git a/lib/mobilizon/conversations/conversation_participant.ex b/lib/mobilizon/conversations/conversation_participant.ex new file mode 100644 index 000000000..46bba8e26 --- /dev/null +++ b/lib/mobilizon/conversations/conversation_participant.ex @@ -0,0 +1,40 @@ +defmodule Mobilizon.Conversations.ConversationParticipant do + @moduledoc """ + Represents a conversation participant + """ + + use Ecto.Schema + + import Ecto.Changeset + + alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.Conversation + + @type t :: %__MODULE__{ + conversation: Conversation.t(), + actor: Actor.t(), + unread: boolean() + } + + @required_attrs [:actor_id, :conversation_id] + @optional_attrs [:unread] + @attrs @required_attrs ++ @optional_attrs + + schema "conversation_participants" do + belongs_to(:conversation, Conversation) + belongs_to(:actor, Actor) + field(:unread, :boolean, default: true) + + timestamps(type: :utc_datetime) + end + + @doc false + @spec changeset(t | Ecto.Schema.t(), map) :: Ecto.Changeset.t() + def changeset(%__MODULE__{} = conversation, attrs) do + conversation + |> cast(attrs, @attrs) + |> validate_required(@required_attrs) + |> foreign_key_constraint(:conversation_id) + |> foreign_key_constraint(:actor_id) + end +end diff --git a/lib/mobilizon/conversations/conversation_view.ex b/lib/mobilizon/conversations/conversation_view.ex new file mode 100644 index 000000000..e1313a0a9 --- /dev/null +++ b/lib/mobilizon/conversations/conversation_view.ex @@ -0,0 +1,22 @@ +defmodule Mobilizon.Conversations.ConversationView do + @moduledoc """ + Represents a conversation view for GraphQL API + """ + + defstruct [ + :id, + :conversation_participant_id, + :origin_comment, + :origin_comment_id, + :last_comment, + :last_comment_id, + :event, + :event_id, + :actor, + :actor_id, + :unread, + :inserted_at, + :updated_at, + :participants + ] +end diff --git a/lib/mobilizon/conversations/conversations.ex b/lib/mobilizon/conversations/conversations.ex new file mode 100644 index 000000000..35d6b70e2 --- /dev/null +++ b/lib/mobilizon/conversations/conversations.ex @@ -0,0 +1,344 @@ +defmodule Mobilizon.Conversations do + @moduledoc """ + The conversations context + """ + + import Ecto.Query + + alias Ecto.Changeset + alias Ecto.Multi + alias Mobilizon.Actors.{Actor, Member} + alias Mobilizon.Conversations.{Conversation, ConversationParticipant} + alias Mobilizon.Discussions.Comment + alias Mobilizon.Events.Event + alias Mobilizon.Storage.{Page, Repo} + + @conversation_preloads [ + :origin_comment, + :last_comment, + :event, + :participants + ] + + @comment_preloads [ + :actor, + :event, + :attributed_to, + :in_reply_to_comment, + :origin_comment, + :replies, + :tags, + :mentions, + :media + ] + + @doc """ + Get a conversation by it's ID + """ + @spec get_conversation(String.t() | integer()) :: Conversation.t() | nil + def get_conversation(conversation_id) do + Conversation + |> Repo.get(conversation_id) + |> Repo.preload(@conversation_preloads) + end + + @doc """ + Get a conversation by it's ID + """ + @spec get_conversation_participant(String.t() | integer()) :: Conversation.t() | nil + def get_conversation_participant(conversation_participant_id) do + preload_conversation_participant_details() + |> where([cp], cp.id == ^conversation_participant_id) + |> Repo.one() + end + + def get_participant_by_conversation_and_actor(conversation_id, actor_id) do + preload_conversation_participant_details() + |> where([cp], cp.conversation_id == ^conversation_id and cp.actor_id == ^actor_id) + |> Repo.one() + end + + defp preload_conversation_participant_details do + ConversationParticipant + |> join(:inner, [cp], c in Conversation, on: cp.conversation_id == c.id) + |> join(:left, [_cp, c], e in Event, on: c.event_id == e.id) + |> join(:inner, [cp], a in Actor, on: cp.actor_id == a.id) + |> join(:inner, [_cp, c], lc in Comment, on: c.last_comment_id == lc.id) + |> join(:inner, [_cp, c], oc in Comment, on: c.origin_comment_id == oc.id) + |> join(:inner, [_cp, c], p in ConversationParticipant, on: c.id == p.conversation_id) + |> join(:inner, [_cp, _c, _e, _a, _lc, _oc, p], ap in Actor, on: p.actor_id == ap.id) + |> preload([_cp, c, e, a, lc, oc, p, ap], + actor: a, + conversation: + {c, event: e, last_comment: lc, origin_comment: oc, participants: {p, actor: ap}} + ) + end + + @doc """ + Get a paginated list of conversations for an actor + """ + @spec find_conversations_for_actor(Actor.t(), integer | nil, integer | nil) :: + Page.t(Conversation.t()) + def find_conversations_for_actor(%Actor{id: actor_id}, page \\ nil, limit \\ nil) do + Conversation + |> where([c], c.actor_id == ^actor_id) + |> preload(^@conversation_preloads) + |> order_by(desc: :updated_at) + |> Page.build_page(page, limit) + end + + @spec find_conversations_for_event( + String.t() | integer, + String.t() | integer, + integer | nil, + integer | nil + ) :: Page.t(ConversationParticipant.t()) + def find_conversations_for_event(event_id, actor_id, page \\ nil, limit \\ nil) do + ConversationParticipant + |> join(:inner, [cp], c in Conversation, on: cp.conversation_id == c.id) + |> join(:left, [_cp, c], e in Event, on: c.event_id == e.id) + |> join(:inner, [cp], a in Actor, on: cp.actor_id == a.id) + |> join(:inner, [_cp, c], lc in Comment, on: c.last_comment_id == lc.id) + |> join(:inner, [_cp, c], oc in Comment, on: c.origin_comment_id == oc.id) + |> join(:inner, [_cp, c], p in ConversationParticipant, on: c.id == p.conversation_id) + |> join(:inner, [_cp, _c, _e, _a, _lc, _oc, p], ap in Actor, on: p.actor_id == ap.id) + |> where([_cp, c], c.event_id == ^event_id) + |> where([cp], cp.actor_id == ^actor_id) + |> preload([_cp, c, e, a, lc, oc, p, ap], + actor: a, + conversation: + {c, event: e, last_comment: lc, origin_comment: oc, participants: {p, actor: ap}} + ) + |> Page.build_page(page, limit) + end + + @spec list_conversation_participants_for_actor( + integer | String.t(), + integer | nil, + integer | nil + ) :: + Page.t(ConversationParticipant.t()) + def list_conversation_participants_for_actor(actor_id, page \\ nil, limit \\ nil) do + subquery = + ConversationParticipant + |> distinct([cp], cp.conversation_id) + |> join(:left, [cp], m in Member, on: cp.actor_id == m.parent_id) + |> where([cp], cp.actor_id == ^actor_id) + |> or_where( + [_cp, m], + m.actor_id == ^actor_id and m.role in [:creator, :administrator, :moderator] + ) + + subquery + |> subquery() + |> order_by([cp], desc: cp.unread, desc: cp.updated_at) + |> preload([:actor, conversation: [:last_comment, :participants]]) + |> Page.build_page(page, limit) + end + + @spec list_conversation_participants_for_user( + integer | String.t(), + integer | nil, + integer | nil + ) :: + Page.t(ConversationParticipant.t()) + def list_conversation_participants_for_user(user_id, page \\ nil, limit \\ nil) do + ConversationParticipant + |> join(:inner, [cp], a in Actor, on: cp.actor_id == a.id) + |> where([_cp, a], a.user_id == ^user_id) + |> preload([:actor, conversation: [:last_comment, :participants]]) + |> Page.build_page(page, limit) + end + + @spec list_conversation_participants_for_conversation(integer | String.t()) :: + list(ConversationParticipant.t()) + def list_conversation_participants_for_conversation(conversation_id) do + ConversationParticipant + |> where([cp], cp.conversation_id == ^conversation_id) + |> Repo.all() + end + + @spec count_unread_conversation_participants_for_person(integer | String.t()) :: + non_neg_integer() + def count_unread_conversation_participants_for_person(actor_id) do + ConversationParticipant + |> where([cp], cp.actor_id == ^actor_id and cp.unread == true) + |> Repo.aggregate(:count) + end + + @doc """ + Creates a conversation. + """ + @spec create_conversation(map()) :: + {:ok, Conversation.t()} | {:error, atom(), Changeset.t(), map()} + def create_conversation(attrs) do + with {:ok, %{comment: %Comment{} = _comment, conversation: %Conversation{} = conversation}} <- + Multi.new() + |> Multi.insert( + :comment, + Comment.changeset( + %Comment{}, + Map.merge(attrs, %{ + actor_id: attrs.actor_id, + attributed_to_id: attrs.actor_id, + visibility: :private + }) + ) + ) + |> Multi.insert(:conversation, fn %{ + comment: %Comment{ + id: comment_id, + origin_comment_id: origin_comment_id + } + } -> + Conversation.changeset( + %Conversation{}, + Map.merge(attrs, %{ + last_comment_id: comment_id, + origin_comment_id: origin_comment_id || comment_id, + participants: attrs.participants + }) + ) + end) + |> Multi.update(:update_comment, fn %{ + comment: %Comment{} = comment, + conversation: %Conversation{id: conversation_id} + } -> + Comment.changeset( + comment, + %{conversation_id: conversation_id} + ) + end) + |> Multi.update_all( + :conversation_participants, + fn %{ + conversation: %Conversation{ + id: conversation_id + } + } -> + ConversationParticipant + |> where( + [cp], + cp.conversation_id == ^conversation_id and cp.actor_id == ^attrs.actor_id + ) + |> update([cp], set: [unread: false, updated_at: ^NaiveDateTime.utc_now()]) + end, + [] + ) + |> Repo.transaction(), + %Conversation{} = conversation <- Repo.preload(conversation, @conversation_preloads) do + {:ok, conversation} + end + end + + @doc """ + Create a response to a conversation + """ + @spec reply_to_conversation(Conversation.t(), map()) :: + {:ok, Conversation.t()} | {:error, atom(), Ecto.Changeset.t(), map()} + def reply_to_conversation(%Conversation{id: conversation_id} = conversation, attrs \\ %{}) do + attrs = + Map.merge(attrs, %{ + conversation_id: conversation_id, + actor_id: Map.get(attrs, :creator_id, Map.get(attrs, :actor_id)), + origin_comment_id: conversation.origin_comment_id, + in_reply_to_comment_id: conversation.last_comment_id, + visibility: :private + }) + + changeset = + Comment.changeset( + %Comment{}, + attrs + ) + + with {:ok, %{comment: %Comment{} = comment, conversation: %Conversation{} = conversation}} <- + Multi.new() + |> Multi.insert( + :comment, + changeset + ) + |> Multi.update(:conversation, fn %{comment: %Comment{id: comment_id}} -> + Conversation.changeset( + conversation, + %{last_comment_id: comment_id} + ) + end) + |> Multi.update_all( + :conversation_participants, + fn %{ + conversation: %Conversation{ + id: conversation_id + } + } -> + ConversationParticipant + |> where( + [cp], + cp.conversation_id == ^conversation_id and cp.actor_id != ^attrs.actor_id + ) + |> update([cp], set: [unread: true, updated_at: ^NaiveDateTime.utc_now()]) + end, + [] + ) + |> Multi.update_all( + :conversation_participants_author, + fn %{ + conversation: %Conversation{ + id: conversation_id + } + } -> + ConversationParticipant + |> where( + [cp], + cp.conversation_id == ^conversation_id and cp.actor_id == ^attrs.actor_id + ) + |> update([cp], set: [unread: false, updated_at: ^NaiveDateTime.utc_now()]) + end, + [] + ) + |> Repo.transaction(), + # Conversation is not updated + %Comment{} = comment <- Repo.preload(comment, @comment_preloads) do + {:ok, %Conversation{conversation | last_comment: comment}} + end + end + + @doc """ + Update a conversation. + """ + @spec update_conversation(Conversation.t(), map()) :: + {:ok, Conversation.t()} | {:error, Changeset.t()} + def update_conversation(%Conversation{} = conversation, attrs \\ %{}) do + conversation + |> Conversation.changeset(attrs) + |> Repo.update() + end + + @doc """ + Delete a conversation. + """ + @spec delete_conversation(Conversation.t()) :: + {:ok, %{comments: {integer() | nil, any()}}} | {:error, :comments, Changeset.t(), map()} + def delete_conversation(%Conversation{id: conversation_id}) do + Multi.new() + |> Multi.delete_all(:comments, fn _ -> + where(Comment, [c], c.conversation_id == ^conversation_id) + end) + # |> Multi.delete(:conversation, conversation) + |> Repo.transaction() + end + + @doc """ + Update a conversation participant. Only their read status for now + """ + @spec update_conversation_participant(ConversationParticipant.t(), map()) :: + {:ok, ConversationParticipant.t()} | {:error, Changeset.t()} + def update_conversation_participant( + %ConversationParticipant{} = conversation_participant, + attrs \\ %{} + ) do + conversation_participant + |> ConversationParticipant.changeset(attrs) + |> Repo.update() + end +end diff --git a/lib/mobilizon/discussions/comment.ex b/lib/mobilizon/discussions/comment.ex index e83c5b20c..0bd20f245 100644 --- a/lib/mobilizon/discussions/comment.ex +++ b/lib/mobilizon/discussions/comment.ex @@ -9,6 +9,7 @@ defmodule Mobilizon.Discussions.Comment do import Mobilizon.Storage.Ecto, only: [maybe_add_published_at: 1] alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.Conversation alias Mobilizon.Discussions.{Comment, CommentVisibility, Discussion} alias Mobilizon.Events.{Event, Tag} alias Mobilizon.Medias.Media @@ -49,7 +50,9 @@ defmodule Mobilizon.Discussions.Comment do :local, :is_announcement, :discussion_id, - :language + :conversation_id, + :language, + :visibility ] @attrs @required_attrs ++ @optional_attrs @@ -71,6 +74,7 @@ defmodule Mobilizon.Discussions.Comment do belongs_to(:in_reply_to_comment, Comment, foreign_key: :in_reply_to_comment_id) belongs_to(:origin_comment, Comment, foreign_key: :origin_comment_id) belongs_to(:discussion, Discussion, type: :binary_id) + belongs_to(:conversation, Conversation) has_many(:replies, Comment, foreign_key: :origin_comment_id) many_to_many(:tags, Tag, join_through: "comments_tags", on_replace: :delete) has_many(:mentions, Mention) @@ -80,7 +84,7 @@ defmodule Mobilizon.Discussions.Comment do end @doc """ - Returns the id of the first comment in the discussion. + Returns the id of the first comment in the discussion or conversation. """ @spec get_thread_id(t) :: integer def get_thread_id(%__MODULE__{id: id, origin_comment_id: origin_comment_id}) do @@ -181,7 +185,7 @@ defmodule Mobilizon.Discussions.Comment do Tag.changeset(%Tag{}, tag) end - defp process_mention(tag) do - Mention.changeset(%Mention{}, tag) + defp process_mention(mention) do + Mention.changeset(%Mention{}, mention) end end diff --git a/lib/mobilizon/discussions/discussions.ex b/lib/mobilizon/discussions/discussions.ex index 78c06c91c..646cbb32d 100644 --- a/lib/mobilizon/discussions/discussions.ex +++ b/lib/mobilizon/discussions/discussions.ex @@ -42,9 +42,9 @@ defmodule Mobilizon.Discussions do :origin_comment, :replies, :tags, - :mentions, :discussion, - :media + :media, + mentions: [:actor] ] @discussion_preloads [ @@ -76,6 +76,7 @@ defmodule Mobilizon.Discussions do Comment |> join(:left, [c], r in Comment, on: r.origin_comment_id == c.id) |> where([c, _], is_nil(c.in_reply_to_comment_id)) + |> where([c], c.visibility in ^@public_visibility) # TODO: This was added because we don't want to count deleted comments in total_replies. # However, it also excludes all top-level comments with deleted replies from being selected # |> where([_, r], is_nil(r.deleted_at)) @@ -197,9 +198,13 @@ defmodule Mobilizon.Discussions do """ @spec update_comment(Comment.t(), map) :: {:ok, Comment.t()} | {:error, Changeset.t()} def update_comment(%Comment{} = comment, attrs) do - comment - |> Comment.update_changeset(attrs) - |> Repo.update() + with {:ok, %Comment{} = comment} <- + comment + |> Comment.update_changeset(attrs) + |> Repo.update(), + %Comment{} = comment <- Repo.preload(comment, @comment_preloads) do + {:ok, comment} + end end @doc """ @@ -272,6 +277,19 @@ defmodule Mobilizon.Discussions do |> Page.build_page(page, limit) end + @doc """ + Get all the comments contained into a discussion + """ + @spec get_comments_in_reply_to_comment_id(integer, integer | nil, integer | nil) :: + Page.t(Comment.t()) + def get_comments_in_reply_to_comment_id(origin_comment_id, page \\ nil, limit \\ nil) do + Comment + |> where([c], c.id == ^origin_comment_id) + |> or_where([c], c.origin_comment_id == ^origin_comment_id) + |> order_by(asc: :inserted_at) + |> Page.build_page(page, limit) + end + @doc """ Counts local comments under events """ diff --git a/lib/mobilizon/events/event.ex b/lib/mobilizon/events/event.ex index 3d2f8ad7e..9a1692e35 100644 --- a/lib/mobilizon/events/event.ex +++ b/lib/mobilizon/events/event.ex @@ -13,6 +13,7 @@ defmodule Mobilizon.Events.Event do alias Mobilizon.{Addresses, Events, Medias, Mention} alias Mobilizon.Addresses.Address + alias Mobilizon.Conversations.Conversation alias Mobilizon.Discussions.Comment alias Mobilizon.Events.{ @@ -126,6 +127,7 @@ defmodule Mobilizon.Events.Event do has_many(:sessions, Session) has_many(:mentions, Mention) has_many(:comments, Comment) + has_many(:conversations, Conversation) many_to_many(:contacts, Actor, join_through: "event_contacts", on_replace: :delete) many_to_many(:tags, Tag, join_through: "events_tags", on_replace: :delete) many_to_many(:participants, Actor, join_through: Participant) diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 7653fda97..77f69fbed 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -871,6 +871,21 @@ defmodule Mobilizon.Events do |> Page.build_page(page, limit) end + @doc """ + Returns the whole list of participants for an event. + Default behaviour is to not return :not_approved or :not_confirmed participants + """ + @spec list_all_participants_for_event(String.t(), list(atom())) :: list(Participant.t()) + def list_all_participants_for_event( + id, + roles \\ [] + ) do + id + |> participants_for_event_query(roles) + |> preload([:actor, :event]) + |> Repo.all() + end + @spec list_actors_participants_for_event(String.t()) :: [Actor.t()] def list_actors_participants_for_event(id) do id diff --git a/lib/mobilizon/mentions/mention.ex b/lib/mobilizon/mentions/mention.ex index 952d91e4b..d12501cdf 100644 --- a/lib/mobilizon/mentions/mention.ex +++ b/lib/mobilizon/mentions/mention.ex @@ -32,8 +32,8 @@ defmodule Mobilizon.Mention do @doc false @spec changeset(t | Ecto.Schema.t(), map) :: Ecto.Changeset.t() - def changeset(event, attrs) do - event + def changeset(mention, attrs) do + mention |> cast(attrs, @attrs) # TODO: Enforce having either event_id or comment_id |> validate_required(@required_attrs) diff --git a/lib/mobilizon/reports/reports.ex b/lib/mobilizon/reports/reports.ex index 5e407b10c..ccba7f00b 100644 --- a/lib/mobilizon/reports/reports.ex +++ b/lib/mobilizon/reports/reports.ex @@ -21,7 +21,14 @@ defmodule Mobilizon.Reports do def get_report(id) do Report |> Repo.get(id) - |> Repo.preload([:reported, :reporter, :manager, :events, :comments, :notes]) + |> Repo.preload([ + :reported, + :reporter, + :manager, + :events, + :notes, + comments: [conversation: [:participants]] + ]) end @doc """ diff --git a/lib/service/activity/conversation.ex b/lib/service/activity/conversation.ex new file mode 100644 index 000000000..f9dfe9738 --- /dev/null +++ b/lib/service/activity/conversation.ex @@ -0,0 +1,90 @@ +defmodule Mobilizon.Service.Activity.Conversation do + @moduledoc """ + Insert a conversation activity + """ + alias Mobilizon.Conversations + alias Mobilizon.Conversations.{Conversation, ConversationParticipant} + alias Mobilizon.Discussions.Comment + alias Mobilizon.Events.Event + alias Mobilizon.Service.Activity + alias Mobilizon.Service.Workers.LegacyNotifierBuilder + + @behaviour Activity + + @impl Activity + def insert_activity(conversation, options \\ []) + + def insert_activity( + %Conversation{} = conversation, + options + ) do + subject = Keyword.fetch!(options, :subject) + + send_participant_notifications(subject, conversation, conversation.last_comment, options) + end + + def insert_activity(_, _), do: {:ok, nil} + + @impl Activity + def get_object(conversation_id) do + Conversations.get_conversation(conversation_id) + end + + # An actor is mentionned + @spec send_participant_notifications(String.t(), Discussion.t(), Comment.t(), Keyword.t()) :: + {:ok, Oban.Job.t()} | {:ok, :skipped} + defp send_participant_notifications( + subject, + %Conversation{ + id: conversation_id + } = conversation, + %Comment{actor_id: actor_id}, + _options + ) + when subject in [ + "conversation_created", + "conversation_replied", + "conversation_event_announcement" + ] do + # We need to send each notification individually as the conversation URL varies for each participant + + conversation_id + |> Conversations.list_conversation_participants_for_conversation() + |> Enum.each(fn %ConversationParticipant{id: conversation_participant_id} = + conversation_participant -> + LegacyNotifierBuilder.enqueue( + :legacy_notify, + %{ + "subject" => subject, + "subject_params" => + Map.merge( + %{ + conversation_id: conversation_id, + conversation_participant_id: conversation_participant_id + }, + event_subject_params(conversation) + ), + "type" => :conversation, + "object_type" => :conversation, + "author_id" => actor_id, + "object_id" => to_string(conversation_id), + "participant" => Map.take(conversation_participant, [:id, :actor_id]) + } + ) + end) + + {:ok, :enqueued} + end + + defp send_participant_notifications(_, _, _, _), do: {:ok, :skipped} + + defp event_subject_params(%Conversation{ + event: %Event{id: conversation_event_id, title: conversation_event_title} + }), + do: %{ + conversation_event_id: conversation_event_id, + conversation_event_title: conversation_event_title + } + + defp event_subject_params(_), do: %{} +end diff --git a/lib/service/activity/renderer/conversation.ex b/lib/service/activity/renderer/conversation.ex new file mode 100644 index 000000000..e2a081188 --- /dev/null +++ b/lib/service/activity/renderer/conversation.ex @@ -0,0 +1,73 @@ +defmodule Mobilizon.Service.Activity.Renderer.Conversation do + @moduledoc """ + Render a conversation activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.Endpoint + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + profile = profile(activity) + + case activity.subject do + :conversation_created -> + %{ + body: + dgettext( + "activity", + "%{profile} sent you a message", + %{ + profile: profile + } + ), + url: conversation_url(activity) + } + + :conversation_replied -> + %{ + body: + dgettext( + "activity", + "%{profile} replied to your message", + %{ + profile: profile + } + ), + url: conversation_url(activity) + } + + :conversation_event_announcement -> + %{ + body: + dgettext( + "activity", + "%{profile} sent a private message about event %{event}", + %{ + profile: profile, + event: event_title(activity) + } + ), + url: conversation_url(activity) + } + end + end + + defp conversation_url(activity) do + Routes.page_url( + Endpoint, + :conversation, + activity.subject_params["conversation_id"] + ) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp event_title(activity), do: activity.subject_params["conversation_event_title"] +end diff --git a/lib/service/activity/renderer/renderer.ex b/lib/service/activity/renderer/renderer.ex index 7af3e5680..144732971 100644 --- a/lib/service/activity/renderer/renderer.ex +++ b/lib/service/activity/renderer/renderer.ex @@ -51,17 +51,25 @@ defmodule Mobilizon.Service.Activity.Renderer do res end + @types_map %{ + discussion: Discussion, + conversation: Conversation, + event: Event, + group: Group, + member: Member, + post: Post, + resource: Resource, + comment: Comment + } + @spec do_render(Activity.t(), Keyword.t()) :: common_render() defp do_render(%Activity{type: type} = activity, options) do - case type do - :discussion -> Discussion.render(activity, options) - :event -> Event.render(activity, options) - :group -> Group.render(activity, options) - :member -> Member.render(activity, options) - :post -> Post.render(activity, options) - :resource -> Resource.render(activity, options) - :comment -> Comment.render(activity, options) - _ -> nil + case Map.get(@types_map, type) do + nil -> + nil + + mod -> + mod.render(activity, options) end end end diff --git a/lib/service/notifier/email.ex b/lib/service/notifier/email.ex index 750c70706..71fead11d 100644 --- a/lib/service/notifier/email.ex +++ b/lib/service/notifier/email.ex @@ -70,6 +70,9 @@ defmodule Mobilizon.Service.Notifier.Email do @always_direct_subjects [ :participation_event_comment, :event_comment_mention, + :conversation_mention, + :conversation_created, + :conversation_replied, :discussion_mention, :event_new_comment ] @@ -175,6 +178,9 @@ defmodule Mobilizon.Service.Notifier.Email do "member_updated" => false, "user_email_password_updated" => true, "event_comment_mention" => true, + "conversation_mention" => true, + "conversation_created" => true, + "conversation_replied" => true, "discussion_mention" => true, "event_new_comment" => true } diff --git a/lib/service/notifier/filter.ex b/lib/service/notifier/filter.ex index f794b77f3..4301f8657 100644 --- a/lib/service/notifier/filter.ex +++ b/lib/service/notifier/filter.ex @@ -33,6 +33,10 @@ defmodule Mobilizon.Service.Notifier.Filter do defp map_activity_to_activity_setting(%Activity{subject: :event_comment_mention}), do: "event_comment_mention" + defp map_activity_to_activity_setting(%Activity{subject: subject}) + when subject in [:conversation_mention, :conversation_created, :conversation_replied], + do: to_string(subject) + defp map_activity_to_activity_setting(%Activity{subject: :discussion_mention}), do: "discussion_mention" diff --git a/lib/service/notifier/push.ex b/lib/service/notifier/push.ex index c6d9102f3..b592419f8 100644 --- a/lib/service/notifier/push.ex +++ b/lib/service/notifier/push.ex @@ -64,6 +64,7 @@ defmodule Mobilizon.Service.Notifier.Push do "member_updated" => false, "user_email_password_updated" => false, "event_comment_mention" => true, + "conversation_mention" => true, "discussion_mention" => false, "event_new_comment" => false } diff --git a/lib/service/workers/legacy_notifier_builder.ex b/lib/service/workers/legacy_notifier_builder.ex index eed20f9ac..4c0f776c7 100644 --- a/lib/service/workers/legacy_notifier_builder.ex +++ b/lib/service/workers/legacy_notifier_builder.ex @@ -8,6 +8,7 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do alias Mobilizon.Actors.Actor alias Mobilizon.Events.{Event, Participant} alias Mobilizon.Service.Notifier + require Logger use Mobilizon.Service.Workers.Helper, queue: "activity" @@ -15,6 +16,7 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do def perform(%Job{args: args}) do {"legacy_notify", args} = Map.pop(args, "op") activity = build_activity(args) + Logger.debug("Handling activity #{activity.subject} to notify in LegacyNotifierBuilder") if args["subject"] == "participation_event_comment" do notify_anonymous_participants(get_in(args, ["subject_params", "event_id"]), activity) @@ -22,7 +24,7 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do args |> users_to_notify(author_id: args["author_id"], group_id: Map.get(args, "group_id")) - |> Enum.each(&Notifier.notify(&1, activity, single_activity: true)) + |> Enum.each(¬ify_user(&1, activity)) end defp build_activity(args) do @@ -48,6 +50,15 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do users_from_actor_ids(mentionned_actor_ids, Keyword.fetch!(options, :author_id)) end + @spec users_to_notify(map(), Keyword.t()) :: list(Users.t()) + defp users_to_notify( + %{"subject" => subject, "participant" => %{"actor_id" => actor_id}}, + options + ) + when subject in ["conversation_created", "conversation_replied"] do + users_from_actor_ids([actor_id], Keyword.fetch!(options, :author_id)) + end + defp users_to_notify( %{"subject" => "discussion_mention", "mentions" => mentionned_actor_ids}, options @@ -114,4 +125,9 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do ) end) end + + defp notify_user(user, activity) do + Logger.debug("Notifying #{user.email} for activity #{activity.subject}") + Notifier.notify(user, activity, single_activity: true) + end end diff --git a/lib/web/auth/context.ex b/lib/web/auth/context.ex index 5c6fb6ed1..97d945e8a 100644 --- a/lib/web/auth/context.ex +++ b/lib/web/auth/context.ex @@ -44,7 +44,7 @@ defmodule Mobilizon.Web.Auth.Context do context = if is_nil(user_agent), do: context, else: Map.put(context, :user_agent, user_agent) - put_private(conn, :absinthe, %{context: context}) + Absinthe.Plug.put_options(conn, context: context) end defp set_user_context({conn, context}, %User{id: user_id, email: user_email} = user) do diff --git a/lib/web/cache/activity_pub.ex b/lib/web/cache/activity_pub.ex index d00926075..9b05cb650 100644 --- a/lib/web/cache/activity_pub.ex +++ b/lib/web/cache/activity_pub.ex @@ -3,9 +3,10 @@ defmodule Mobilizon.Web.Cache.ActivityPub do ActivityPub related cache. """ - alias Mobilizon.{Actors, Discussions, Events, Posts, Resources, Todos, Tombstone} + alias Mobilizon.{Actors, Conversations, Discussions, Events, Posts, Resources, Todos, Tombstone} alias Mobilizon.Actors.Actor, as: ActorModel alias Mobilizon.Actors.Member + alias Mobilizon.Conversations.Conversation alias Mobilizon.Discussions.{Comment, Discussion} alias Mobilizon.Events.Event alias Mobilizon.Federation.ActivityPub.{Actor, Relay} @@ -184,6 +185,23 @@ defmodule Mobilizon.Web.Cache.ActivityPub do end) end + @doc """ + Gets a conversation participant by it's ID, with all associations loaded. + """ + @spec get_conversation_by_id_with_preload(String.t()) :: + {:commit, Todo.t()} | {:ignore, nil} + def get_conversation_by_id_with_preload(id) do + Cachex.fetch(@cache, "conversation_participant_" <> id, fn "conversation_participant_" <> id -> + case Conversations.get_conversation_participant(id) do + %Conversation{} = conversation -> + {:commit, conversation} + + nil -> + {:ignore, nil} + end + end) + end + @doc """ Gets a member by its UUID, with all associations loaded. """ diff --git a/lib/web/cache/cache.ex b/lib/web/cache/cache.ex index 391806672..ccae007dc 100644 --- a/lib/web/cache/cache.ex +++ b/lib/web/cache/cache.ex @@ -4,6 +4,7 @@ defmodule Mobilizon.Web.Cache do """ alias Mobilizon.Actors.{Actor, Member} + alias Mobilizon.Conversations.Conversation alias Mobilizon.Discussions.{Comment, Discussion} alias Mobilizon.Events.Event alias Mobilizon.Posts.Post @@ -27,6 +28,10 @@ defmodule Mobilizon.Web.Cache do defdelegate get_todo_list_by_uuid_with_preload(uuid), to: ActivityPub @spec get_todo_by_uuid_with_preload(binary) :: {:commit, Todo.t()} | {:ignore, nil} defdelegate get_todo_by_uuid_with_preload(uuid), to: ActivityPub + + @spec get_conversation_by_id_with_preload(binary) :: + {:commit, Conversation.t()} | {:ignore, nil} + defdelegate get_conversation_by_id_with_preload(uuid), to: ActivityPub @spec get_member_by_uuid_with_preload(binary) :: {:commit, Member.t()} | {:ignore, nil} defdelegate get_member_by_uuid_with_preload(uuid), to: ActivityPub @spec get_post_by_slug_with_preload(binary) :: {:commit, Post.t()} | {:ignore, nil} diff --git a/lib/web/channels/graphql_socket.ex b/lib/web/channels/graphql_socket.ex index 7677104c0..f7ae15ada 100644 --- a/lib/web/channels/graphql_socket.ex +++ b/lib/web/channels/graphql_socket.ex @@ -13,9 +13,7 @@ defmodule Mobilizon.Web.GraphQLSocket do with {:ok, authed_socket} <- Guardian.Phoenix.Socket.authenticate(socket, Mobilizon.Web.Auth.Guardian, token), resource <- Guardian.Phoenix.Socket.current_resource(authed_socket) do - set_context(authed_socket, resource) - - {:ok, authed_socket} + {:ok, set_context(authed_socket, resource)} else {:error, _} -> :error @@ -24,8 +22,17 @@ defmodule Mobilizon.Web.GraphQLSocket do def connect(_args, _socket), do: :error - @spec id(any) :: nil - def id(_socket), do: nil + @spec id(Phoenix.Socket.t()) :: String.t() | nil + def id(%Phoenix.Socket{assigns: assigns}) do + context = Keyword.get(assigns.absinthe.opts, :context) + current_user = Map.get(context, :current_user) + + if current_user do + "user_socket:#{current_user.id}" + else + nil + end + end @spec set_context(Phoenix.Socket.t(), User.t() | ApplicationToken.t()) :: Phoenix.Socket.t() defp set_context(socket, %User{} = user) do diff --git a/lib/web/controllers/page_controller.ex b/lib/web/controllers/page_controller.ex index 798d91aaa..dcb80f391 100644 --- a/lib/web/controllers/page_controller.ex +++ b/lib/web/controllers/page_controller.ex @@ -85,6 +85,12 @@ defmodule Mobilizon.Web.PageController do render_or_error(conn, &checks?/3, status, :todo, todo) end + @spec conversation(Plug.Conn.t(), map()) :: Plug.Conn.t() | {:error, :not_found} + def conversation(conn, %{"id" => slug}) do + {status, conversation} = Cache.get_conversation_by_id_with_preload(slug) + render_or_error(conn, &checks?/3, status, :conversation, conversation) + end + @typep collections :: :resources | :posts | :discussions | :events | :todos @spec resources(Plug.Conn.t(), map()) :: Plug.Conn.t() diff --git a/lib/web/router.ex b/lib/web/router.ex index 2657dea21..037d256c1 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -132,6 +132,7 @@ defmodule Mobilizon.Web.Router do get("/@:name/discussions", PageController, :discussions) get("/@:name/events", PageController, :events) get("/p/:slug", PageController, :post) + get("/conversations/:id", PageController, :conversation) get("/@:name/c/:slug", PageController, :discussion) end @@ -176,6 +177,7 @@ defmodule Mobilizon.Web.Router do forward("/", Absinthe.Plug.GraphiQL, schema: Mobilizon.GraphQL.Schema, + socket: Mobilizon.Web.GraphQLSocket, interface: :playground ) end diff --git a/lib/web/templates/email/activity/_conversation_activity_item.html.heex b/lib/web/templates/email/activity/_conversation_activity_item.html.heex new file mode 100644 index 000000000..f59b2140c --- /dev/null +++ b/lib/web/templates/email/activity/_conversation_activity_item.html.heex @@ -0,0 +1,20 @@ +<%= case @activity.subject do %> + <% :conversation_created -> %> + <%= dgettext("activity", "%{profile} mentionned you in a %{conversation}.", %{ + profile: "<b>#{escaped_display_name_and_username(@activity.author)}</b>", + conversation: + "<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint, + :conversation, + @activity.subject_params["conversation_participant_id"]) |> URI.decode()}\">conversation</a>" + }) + |> raw %> + <% :conversation_replied -> %> + <%= dgettext("activity", "%{profile} replied you in a %{conversation}.", %{ + profile: "<b>#{escaped_display_name_and_username(@activity.author)}</b>", + conversation: + "<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint, + :conversation, + @activity.subject_params["conversation_participant_id"]) |> URI.decode()}\">conversation</a>" + }) + |> raw %> +<% end %> diff --git a/lib/web/templates/email/activity/_conversation_activity_item.text.eex b/lib/web/templates/email/activity/_conversation_activity_item.text.eex new file mode 100644 index 000000000..7fe1f8b4d --- /dev/null +++ b/lib/web/templates/email/activity/_conversation_activity_item.text.eex @@ -0,0 +1,11 @@ +<%= case @activity.subject do %><% :conversation_created -> %><%= dgettext("activity", "%{profile} mentionned you in a conversation.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + } +) %> +<%= Routes.page_url(Mobilizon.Web.Endpoint, :conversation, @activity.subject_params["conversation_participant_id"]) |> URI.decode() %><% :conversation_replied -> %><%= dgettext("activity", "%{profile} replied you in a conversation.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + } +) %> +<%= Routes.page_url(Mobilizon.Web.Endpoint, :conversation, @activity.subject_params["conversation_participant_id"]) |> URI.decode() %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/email_direct_activity.html.heex b/lib/web/templates/email/email_direct_activity.html.heex index c3a7089cb..0312449a7 100644 --- a/lib/web/templates/email/email_direct_activity.html.heex +++ b/lib/web/templates/email/email_direct_activity.html.heex @@ -167,6 +167,10 @@ <%= render("activity/_discussion_activity_item.html", activity: activity ) %> + <% :conversation -> %> + <%= render("activity/_conversation_activity_item.html", + activity: activity + ) %> <% :event -> %> <%= render("activity/_event_activity_item.html", activity: activity diff --git a/lib/web/templates/email/email_direct_activity.text.eex b/lib/web/templates/email/email_direct_activity.text.eex index e795ec0ab..7658bba4a 100644 --- a/lib/web/templates/email/email_direct_activity.text.eex +++ b/lib/web/templates/email/email_direct_activity.text.eex @@ -15,7 +15,7 @@ <% end %> <%= for activity <- Enum.take(group_activities, 5) do %> -* <%= case activity.type do %><% :discussion -> %><%= render("activity/_discussion_activity_item.text", activity: activity) %><% :event -> %><%= render("activity/_event_activity_item.text", activity: activity) %><% :group -> %><%= render("activity/_group_activity_item.text", activity: activity) %> +* <%= case activity.type do %><% :discussion -> %><%= render("activity/_discussion_activity_item.text", activity: activity) %><% :conversation -> %><%= render("activity/_conversation_activity_item.text", activity: activity) %><% :event -> %><%= render("activity/_event_activity_item.text", activity: activity) %><% :group -> %><%= render("activity/_group_activity_item.text", activity: activity) %> <% :member -> %><%= render("activity/_member_activity_item.text", activity: activity) %><% :post -> %><%= render("activity/_post_activity_item.text", activity: activity) %><% :resource -> %><%= render("activity/_resource_activity_item.text", activity: activity) %><% :comment -> %><%= render("activity/_comment_activity_item.text", activity: activity) %><% end %> <%= unless @single_activity do %><%= datetime_to_string(activity.inserted_at, @locale, :short) %><% end %> <% end %> diff --git a/priv/repo/migrations/20230920071502_add_actor_conversations.exs b/priv/repo/migrations/20230920071502_add_actor_conversations.exs new file mode 100644 index 000000000..dfe8a3062 --- /dev/null +++ b/priv/repo/migrations/20230920071502_add_actor_conversations.exs @@ -0,0 +1,37 @@ +defmodule Mobilizon.Storage.Repo.Migrations.AddActorConversations do + use Ecto.Migration + + def up do + create table(:conversations) do + add(:event_id, references(:events, on_delete: :delete_all), null: true) + add(:origin_comment_id, references(:comments, on_delete: :delete_all), null: false) + add(:last_comment_id, references(:comments, on_delete: :delete_all), null: false) + + timestamps() + end + + create table(:conversation_participants) do + add(:conversation_id, references(:conversations, on_delete: :delete_all), null: false) + + add(:actor_id, references(:actors, on_delete: :delete_all), null: false) + + add(:unread, :boolean, default_value: true) + + timestamps() + end + + alter table(:comments) do + add(:conversation_id, references(:conversations, on_delete: :delete_all), null: true) + end + end + + def down do + drop table(:conversation_participants) + + alter table(:comments) do + remove(:conversation_id) + end + + drop table(:conversations) + end +end diff --git a/test/federation/activity_pub/transmogrifier/create_test.exs b/test/federation/activity_pub/transmogrifier/create_test.exs new file mode 100644 index 000000000..11e949a63 --- /dev/null +++ b/test/federation/activity_pub/transmogrifier/create_test.exs @@ -0,0 +1,107 @@ +defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.CreateTest do + use Mobilizon.DataCase + + import Mobilizon.Factory + import Mox + alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.Conversation + alias Mobilizon.Discussions.Comment + alias Mobilizon.Federation.ActivityPub.Transmogrifier + alias Mobilizon.Service.HTTP.ActivityPub.Mock + + describe "Receive Create Notes" do + test "it creates conversations for received comments in reply to events" do + actor_data = File.read!("test/fixtures/mastodon-actor.json") |> Jason.decode!() + + Mock + |> expect(:call, 2, fn + %{method: :get, url: "https://framapiaf.org/users/admin"}, _opts -> + {:ok, + %Tesla.Env{ + status: 200, + body: + actor_data + |> Map.put("id", "https://framapiaf.org/users/admin") + |> Map.put("preferredUsername", "admin") + }} + + %{method: :get, url: "https://framapiaf.org/users/tcit"}, _opts -> + {:ok, + %Tesla.Env{ + status: 200, + body: + actor_data + |> Map.put("id", "https://framapiaf.org/users/tcit") + |> Map.put("preferredUsername", "tcit") + }} + end) + + data = File.read!("test/fixtures/mastodon-post-activity-private.json") |> Jason.decode!() + event = insert(:event) + object = data["object"] + object = Map.put(object, "inReplyTo", event.url) + data = Map.put(data, "object", object) + + {:ok, _activity, + %Conversation{ + origin_comment: %Comment{visibility: :private, id: origin_comment_id}, + last_comment: %Comment{visibility: :private, id: last_comment_id}, + participants: participants, + event: matched_event + }} = Transmogrifier.handle_incoming(data) + + assert origin_comment_id == last_comment_id + assert event.id == matched_event.id + participant_ids = participants |> Enum.map(& &1.id) |> MapSet.new() + {:ok, tcit} = Mobilizon.Actors.get_actor_by_url("https://framapiaf.org/users/tcit") + {:ok, admin} = Mobilizon.Actors.get_actor_by_url("https://framapiaf.org/users/admin") + assert participant_ids == MapSet.new([event.organizer_actor_id, tcit.id, admin.id]) + end + + test "it creates conversations for received comments if we're concerned" do + actor_data = File.read!("test/fixtures/mastodon-actor.json") |> Jason.decode!() + + Mock + |> expect(:call, 1, fn + %{method: :get, url: "https://framapiaf.org/users/admin"}, _opts -> + {:ok, + %Tesla.Env{ + status: 200, + body: + actor_data + |> Map.put("id", "https://framapiaf.org/users/admin") + |> Map.put("preferredUsername", "admin") + }} + end) + + actor = insert(:actor) + data = File.read!("test/fixtures/mastodon-post-activity-private.json") |> Jason.decode!() + data = Map.put(data, "to", [actor.url]) + + object = + data["object"] + |> Map.put("to", [actor.url]) + |> Map.put("tag", [ + data["object"]["tag"] + |> hd() + |> Map.put("href", actor.url) + |> Map.put("name", Actor.preferred_username_and_domain(actor)) + ]) + + data = Map.put(data, "object", object) + + {:ok, _activity, + %Conversation{ + origin_comment: %Comment{visibility: :private, id: origin_comment_id}, + last_comment: %Comment{visibility: :private, id: last_comment_id}, + participants: participants, + event: nil + }} = Transmogrifier.handle_incoming(data) + + assert origin_comment_id == last_comment_id + participant_ids = participants |> Enum.map(& &1.id) |> MapSet.new() + {:ok, admin} = Mobilizon.Actors.get_actor_by_url("https://framapiaf.org/users/admin") + assert participant_ids == MapSet.new([actor.id, admin.id]) + end + end +end diff --git a/test/graphql/resolvers/conversation_test.exs b/test/graphql/resolvers/conversation_test.exs new file mode 100644 index 000000000..7c1479f4e --- /dev/null +++ b/test/graphql/resolvers/conversation_test.exs @@ -0,0 +1,78 @@ +defmodule Mobilizon.GraphQL.Resolvers.ConversationTest do + use Mobilizon.Web.ConnCase + alias Mobilizon.Actors + alias Mobilizon.Actors.Actor + + alias Mobilizon.GraphQL.AbsintheHelpers + import Mobilizon.Factory + + setup %{conn: conn} do + user = insert(:user) + actor = insert(:actor, user: user, preferred_username: "test") + + {:ok, conn: conn, user: user, actor: actor} + end + + @event_conversations_query """ + query Event($uuid: UUID!) { + event(uuid: $uuid) { + id + uuid + conversations { + total + elements { + id + lastComment { + id + text + } + comments { + total + elements { + id + text + } + } + actor { + id + preferredUsername + } + } + } + } + } + """ + + describe "Find conversations for event" do + test "for a given event", %{conn: conn, user: user, actor: actor} do + event = insert(:event, organizer_actor: actor) + conversation = insert(:conversation, event: event) + another_comment = build(:comment, origin_comment: conversation.origin_comment) + + conversation_participant = + insert(:conversation_participant, actor: actor, conversation: conversation) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @event_conversations_query, + variables: %{uuid: conversation.event.uuid} + ) + + assert res["errors"] == nil + assert res["data"]["event"]["uuid"] == to_string(conversation.event.uuid) + assert res["data"]["event"]["conversations"]["total"] == 1 + conversation_data = hd(res["data"]["event"]["conversations"]["elements"]) + assert conversation_data["id"] == to_string(conversation.id) + assert conversation_data["lastComment"]["text"] == conversation.last_comment.text + assert conversation_data["comments"]["total"] == 2 + + assert conversation_data["comments"]["elements"] + |> Enum.any?(fn comment -> comment.text == conversation.origin_comment.text end) + + assert conversation_data["actor"]["preferredUsername"] == + conversation_participant.actor.preferred_username + end + end +end diff --git a/test/mobilizon/conversations_test.exs b/test/mobilizon/conversations_test.exs new file mode 100644 index 000000000..1ff2e64ad --- /dev/null +++ b/test/mobilizon/conversations_test.exs @@ -0,0 +1,86 @@ +defmodule Mobilizon.DiscussionsTest do + use Mobilizon.DataCase + + import Mobilizon.Factory + + alias Mobilizon.Conversations + alias Mobilizon.Conversations.{Conversation, ConversationParticipant} + + describe "create_conversation/1" do + @conversation_attrs %{ + text: "A conversation comment", + published_at: NaiveDateTime.utc_now() + } + + test "creates a conversation" do + actor = insert(:actor) + actor_participant1 = insert(:actor) + actor_participant2 = insert(:actor) + participants = [actor, actor_participant1, actor_participant2] + + assert {:ok, %Conversation{} = conversation} = + Conversations.create_conversation( + Map.merge(@conversation_attrs, %{ + actor_id: actor.id, + participants: participants + }) + ) + + participants = + Conversations.list_conversation_participants_for_conversation(conversation.id) + + assert length(participants) == 3 + + assert %ConversationParticipant{unread: false} = + Enum.find(participants, &(&1.actor_id == actor.id)) + + assert %ConversationParticipant{unread: true} = + Enum.find(participants, &(&1.actor_id == actor_participant1.id)) + + assert %ConversationParticipant{unread: true} = + Enum.find(participants, &(&1.actor_id == actor_participant2.id)) + end + end + + describe "reply_to_conversation/2" do + @conversation_attrs %{ + text: "A conversation reply", + published_at: NaiveDateTime.utc_now() + } + + test "creates a reply" do + conversation = insert(:conversation) + actor = insert(:actor) + actor_participant1 = insert(:actor) + actor_participant2 = insert(:actor) + insert(:conversation_participant, conversation: conversation, actor: actor) + insert(:conversation_participant, conversation: conversation, actor: actor_participant1) + insert(:conversation_participant, conversation: conversation, actor: actor_participant2) + + participants = [actor, actor_participant1, actor_participant2] + + assert {:ok, %Conversation{} = conversation} = + Conversations.reply_to_conversation( + conversation, + Map.merge(@conversation_attrs, %{ + actor_id: actor.id, + participants: participants + }) + ) + + participants = + Conversations.list_conversation_participants_for_conversation(conversation.id) + + assert length(participants) == 3 + + assert %ConversationParticipant{unread: false} = + Enum.find(participants, &(&1.actor_id == actor.id)) + + assert %ConversationParticipant{unread: true} = + Enum.find(participants, &(&1.actor_id == actor_participant1.id)) + + assert %ConversationParticipant{unread: true} = + Enum.find(participants, &(&1.actor_id == actor_participant2.id)) + end + end +end diff --git a/test/service/activity/conversation_test.exs b/test/service/activity/conversation_test.exs new file mode 100644 index 000000000..bd6b819e5 --- /dev/null +++ b/test/service/activity/conversation_test.exs @@ -0,0 +1,70 @@ +defmodule Mobilizon.Service.Activity.ConversationTest do + @moduledoc """ + Test the Comment activity provider module + """ + + alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations + alias Mobilizon.Conversations.Conversation + alias Mobilizon.Discussions.Comment + alias Mobilizon.Service.Activity.Conversation, as: ConversationActivity + alias Mobilizon.Service.Workers.LegacyNotifierBuilder + alias Mobilizon.Users.User + + use Mobilizon.DataCase + use Oban.Testing, repo: Mobilizon.Storage.Repo + import Mobilizon.Factory + + describe "handle conversation" do + test "with participants" do + %User{} = user = insert(:user) + %Actor{id: actor_id} = actor = insert(:actor, user: user) + + %Conversation{id: conversation_id, last_comment: %Comment{actor_id: last_comment_actor_id}} = + conversation = insert(:conversation) + + insert(:conversation_participant, actor: actor, conversation: conversation) + insert(:conversation_participant, conversation: conversation) + + conversation = Conversations.get_conversation(conversation_id) + + assert {:ok, _} = + ConversationActivity.insert_activity(conversation, subject: "conversation_created") + + assert_enqueued( + worker: LegacyNotifierBuilder, + args: %{ + "author_id" => last_comment_actor_id, + "participants" => [actor_id], + "object_id" => to_string(conversation_id), + "object_type" => "conversation", + "op" => "legacy_notify", + "subject" => "conversation_created", + "subject_params" => %{ + "conversation_id" => conversation_id + }, + "type" => "conversation" + } + ) + + assert_enqueued( + worker: LegacyNotifierBuilder, + args: %{ + "author_id" => author_id, + "object_id" => to_string(comment_id), + "object_type" => "comment", + "op" => "legacy_notify", + "subject" => "event_new_comment", + "subject_params" => %{ + "comment_reply_to_uuid" => nil, + "event_title" => event_title, + "event_uuid" => event_uuid, + "comment_reply_to" => false, + "comment_uuid" => comment_uuid + }, + "type" => "comment" + } + ) + end + end +end diff --git a/test/support/factory.ex b/test/support/factory.ex index 7ca138b34..dca2e660e 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -536,4 +536,20 @@ defmodule Mobilizon.Factory do application: build(:auth_application) } end + + def conversation_factory do + %Mobilizon.Conversations.Conversation{ + event: build(:event), + origin_comment: build(:comment), + last_comment: build(:comment) + } + end + + def conversation_participant_factory do + %Mobilizon.Conversations.ConversationParticipant{ + conversation: build(:conversation), + actor: build(:actor), + unread: true + } + end end From ec397aa4894baab2d1d954c034300d773793f54d Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 25 Oct 2023 12:25:55 +0200 Subject: [PATCH 03/18] build(deps): replace absinthe socket library with fork Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/package.json | 4 +- js/src/apollo/absinthe-socket-link.ts | 4 +- js/src/typings/absinthe.d.ts | 4 +- js/yarn.lock | 163 +++++++++++++++----------- 4 files changed, 103 insertions(+), 72 deletions(-) diff --git a/js/package.json b/js/package.json index b9d10a365..a0debe121 100644 --- a/js/package.json +++ b/js/package.json @@ -24,10 +24,10 @@ ] }, "dependencies": { - "@absinthe/socket": "^0.2.1", - "@absinthe/socket-apollo-link": "^0.2.1", "@apollo/client": "^3.3.16", "@oruga-ui/oruga-next": "^0.7.0", + "@pluralsh/socket": "^1.0.0", + "@pluralsh/socket-apollo-link": "^1.0.0", "@sentry/tracing": "^7.1", "@sentry/vue": "^7.1", "@tiptap/core": "^2.0.0-beta.41", diff --git a/js/src/apollo/absinthe-socket-link.ts b/js/src/apollo/absinthe-socket-link.ts index 70a462666..ad3dad192 100644 --- a/js/src/apollo/absinthe-socket-link.ts +++ b/js/src/apollo/absinthe-socket-link.ts @@ -1,6 +1,6 @@ import { Socket as PhoenixSocket } from "phoenix"; -import { create } from "@absinthe/socket"; -import { createAbsintheSocketLink } from "@absinthe/socket-apollo-link"; +import { create } from "@pluralsh/socket"; +import { createAbsintheSocketLink } from "@pluralsh/socket-apollo-link"; import { AUTH_ACCESS_TOKEN } from "@/constants"; import { GRAPHQL_API_ENDPOINT } from "@/api/_entrypoint"; diff --git a/js/src/typings/absinthe.d.ts b/js/src/typings/absinthe.d.ts index b388a9d11..e26cc6ce4 100644 --- a/js/src/typings/absinthe.d.ts +++ b/js/src/typings/absinthe.d.ts @@ -1,5 +1,5 @@ -declare module "@absinthe/socket"; +declare module "@pluralsh/socket"; -declare module "@absinthe/socket-apollo-link"; +declare module "@pluralsh/socket-apollo-link"; declare module "apollo-absinthe-upload-link"; diff --git a/js/yarn.lock b/js/yarn.lock index e17752607..f40a6f14b 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -7,31 +7,6 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@absinthe/socket-apollo-link@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@absinthe/socket-apollo-link/-/socket-apollo-link-0.2.1.tgz#449c93109c903403b948abb8e911d9847cca9125" - integrity sha512-QxEazdjUXth+XMTAdlODZwS5h7fUAq9LEIH5O/EN0c/pS7Q3dFrTM1ZiP6n/0VdSEc+xBZyTisN63N2cPgE8ZQ== - dependencies: - "@absinthe/socket" "0.2.1" - "@babel/runtime" "7.2.0" - apollo-link "1.2.5" - core-js "2.6.0" - flow-static-land "0.2.8" - graphql "14.0.2" - zen-observable "0.8.11" - -"@absinthe/socket@0.2.1", "@absinthe/socket@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@absinthe/socket/-/socket-0.2.1.tgz#dd0d7bfc8e149f8376429c7fc2e87ac958578b91" - integrity sha512-rCuMRG4WndooGR+QfU5v+xL6U8YKEXFyvjqYt0qTHupAh+k+tpD6a5dlxcLO0g38p/hb1I12OzKvl+0G1XYCkA== - dependencies: - "@babel/runtime" "7.2.0" - "@jumpn/utils-array" "0.3.4" - "@jumpn/utils-composite" "0.7.0" - "@jumpn/utils-graphql" "0.6.0" - core-js "2.6.0" - zen-observable "0.8.11" - "@akryum/tinypool@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@akryum/tinypool/-/tinypool-0.3.1.tgz#a14b3d51a400e7c0ab4c7e2b1c2e2fa0386aea87" @@ -59,6 +34,24 @@ jsonpointer "^5.0.0" leven "^3.1.0" +"@apollo/client@3.5.10": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.10.tgz#43463108a6e07ae602cca0afc420805a19339a71" + integrity sha512-tL3iSpFe9Oldq7gYikZK1dcYxp1c01nlSwtsMz75382HcI6fvQXyFXUCJTTK3wgO2/ckaBvRGw7VqjFREdVoRw== + dependencies: + "@graphql-typed-document-node/core" "^3.0.0" + "@wry/context" "^0.6.0" + "@wry/equality" "^0.5.0" + "@wry/trie" "^0.3.0" + graphql-tag "^2.12.3" + hoist-non-react-statics "^3.3.2" + optimism "^0.16.1" + prop-types "^15.7.2" + symbol-observable "^4.0.0" + ts-invariant "^0.9.4" + tslib "^2.3.0" + zen-observable-ts "^1.2.0" + "@apollo/client@^3.0.0", "@apollo/client@^3.3.16": version "3.8.5" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.5.tgz#becd2101d6049afd03dd796693fb5804346df42f" @@ -961,6 +954,13 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== +"@babel/runtime@7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" @@ -1238,7 +1238,7 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== -"@graphql-typed-document-node/core@^3.1.1": +"@graphql-typed-document-node/core@^3.0.0", "@graphql-typed-document-node/core@^3.1.1": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== @@ -1498,6 +1498,31 @@ dependencies: playwright "1.38.1" +"@pluralsh/socket-apollo-link@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@pluralsh/socket-apollo-link/-/socket-apollo-link-1.0.0.tgz#cbdf76669f747cfdd82fc6a557b65cb485edc93f" + integrity sha512-CC1wFfaN+1cP6VQY64y2qh6U+Cn1PuVfX7sJCt1SHF+53aNTcowbVsVHvmqf5jKlNlbStZlAJ3ithl17qc4Egw== + dependencies: + "@apollo/client" "3.5.10" + "@babel/runtime" "7.17.9" + "@pluralsh/socket" ">=1.0.0" + core-js "2.6.0" + flow-static-land "0.2.8" + graphql "15.5.0" + zen-observable "0.8.11" + +"@pluralsh/socket@>=1.0.0", "@pluralsh/socket@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@pluralsh/socket/-/socket-1.0.0.tgz#a8bbe555ea666995556244fa8e247773b9ffba32" + integrity sha512-fbVp4VUosX5fA0WPencZ4ojWrkKyej5XIDDh6UxE6fCb33k2+jGPCXbLBkFaJ4TmqkjSzBTX+d14RR8LYcFo/Q== + dependencies: + "@babel/runtime" "7.2.0" + "@jumpn/utils-array" "0.3.4" + "@jumpn/utils-composite" "0.7.0" + "@jumpn/utils-graphql" "0.6.0" + core-js "2.6.0" + zen-observable "0.8.11" + "@polka/url@^1.0.0-next.20": version "1.0.0-next.23" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" @@ -2459,6 +2484,13 @@ dependencies: vue-demi ">=0.14.6" +"@wry/context@^0.6.0": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.6.1.tgz#c3c29c0ad622adb00f6a53303c4f965ee06ebeb2" + integrity sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw== + dependencies: + tslib "^2.3.0" + "@wry/context@^0.7.0", "@wry/context@^0.7.3": version "0.7.3" resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.3.tgz#240f6dfd4db5ef54f81f6597f6714e58d4f476a1" @@ -2466,12 +2498,12 @@ dependencies: tslib "^2.3.0" -"@wry/equality@^0.1.2": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" - integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== +"@wry/equality@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" + integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== dependencies: - tslib "^1.9.3" + tslib "^2.3.0" "@wry/equality@^0.5.6": version "0.5.6" @@ -2480,6 +2512,13 @@ dependencies: tslib "^2.3.0" +"@wry/trie@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.3.2.tgz#a06f235dc184bd26396ba456711f69f8c35097e6" + integrity sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ== + dependencies: + tslib "^2.3.0" + "@wry/trie@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" @@ -2625,24 +2664,6 @@ apollo-absinthe-upload-link@^1.5.0: graphql "^15.0.0" rxjs "~6.2.2" -apollo-link@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.5.tgz#f54932d6b8f1412a35e088bc199a116bce3f1f16" - integrity sha512-GJHEE4B06oEB58mpRRwW6ISyvgX2aCqCLjpcE3M/6/4e+ZVeX7fRGpMJJDq2zZ8n7qWdrEuY315JfxzpsJmUhA== - dependencies: - apollo-utilities "^1.0.0" - zen-observable-ts "^0.8.12" - -apollo-utilities@^1.0.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" - integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== - dependencies: - "@wry/equality" "^0.1.2" - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - arg@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" @@ -4223,7 +4244,7 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-tag@^2.10.3, graphql-tag@^2.12.6: +graphql-tag@^2.10.3, graphql-tag@^2.12.3, graphql-tag@^2.12.6: version "2.12.6" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== @@ -4237,6 +4258,11 @@ graphql@14.0.2: dependencies: iterall "^1.2.2" +graphql@15.5.0: + version "15.5.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" + integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== + graphql@^15.0.0, graphql@^15.8.0: version "15.8.0" resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" @@ -5532,6 +5558,14 @@ open@^9.1.0: is-inside-container "^1.0.0" is-wsl "^2.2.0" +optimism@^0.16.1: + version "0.16.2" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.2.tgz#519b0c78b3b30954baed0defe5143de7776bf081" + integrity sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ== + dependencies: + "@wry/context" "^0.7.0" + "@wry/trie" "^0.3.0" + optimism@^0.17.5: version "0.17.5" resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.17.5.tgz#a4c78b3ad12c58623abedbebb4f2f2c19b8e8816" @@ -6111,6 +6145,11 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== +regenerator-runtime@^0.13.4: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" @@ -6910,12 +6949,12 @@ ts-invariant@^0.10.3: dependencies: tslib "^2.1.0" -ts-invariant@^0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" - integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== +ts-invariant@^0.9.4: + version "0.9.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.4.tgz#42ac6c791aade267dd9dc65276549df5c5d71cac" + integrity sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ== dependencies: - tslib "^1.9.3" + tslib "^2.1.0" tsconfig-paths@^3.14.2: version "3.14.2" @@ -6927,7 +6966,7 @@ tsconfig-paths@^3.14.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -7696,15 +7735,7 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -zen-observable-ts@^0.8.12: - version "0.8.21" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" - integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable-ts@^1.2.5: +zen-observable-ts@^1.2.0, zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== @@ -7716,7 +7747,7 @@ zen-observable@0.8.11: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.11.tgz#d3415885eeeb42ee5abb9821c95bb518fcd6d199" integrity sha512-N3xXQVr4L61rZvGMpWe8XoCGX8vhU35dPyQ4fm5CY/KDlG0F75un14hjbckPXTDuKUY6V0dqR2giT6xN8Y4GEQ== -zen-observable@0.8.15, zen-observable@^0.8.0: +zen-observable@0.8.15: version "0.8.15" resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== From 1d0398df42520e989315c47088d173c103a122bc Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Tue, 14 Nov 2023 12:44:30 +0100 Subject: [PATCH 04/18] chore: update Sobelow security ignores Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .sobelow-skips | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.sobelow-skips b/.sobelow-skips index 60c0c7623..eb69fdfc3 100644 --- a/.sobelow-skips +++ b/.sobelow-skips @@ -6,15 +6,15 @@ 4A4B7002DEB734A943B467DF7D2BD1AA 4E7C044C59E0BCB76AA826789998F624 53CBBEB6243FAF5C37249CBA17DE6F4C +5804C3D68F833A3E8D258C0704DEE775 5BCE3651A03711295046DE48BDFE007E 630C0972985257251EDF89A7117DE423 -8274AF29B81EC7CF7F585D5EED8A64E1 +81BAE1F18B4148E83C3265F81FFA6F5C 94ACF7B17C3FF42F64E57DD1DA936BD8 A32E125003F1EDFAD95C487C6A969725 ACF6272A1DBB3A2ABD96C0C120B5CA69 C46C4893B2F702ACADC4CAA5683FE370 CDF2CCE0CF10F49CDFAE22FE26208155 E720CB13C50FF3ADEE7C522531E11217 -E8FC5F2C5DEA6671BA596B022C4FE6F2 F3D5851D3FB050939841ED2F14307A27 FD1C9756370A195B74E95CE504C45E9E \ No newline at end of file From 435bd9dcccaca7457b8fc5e5cb224e2e90c53883 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Tue, 14 Nov 2023 12:45:13 +0100 Subject: [PATCH 05/18] build: replace @pluralsh/socket with @framasoft/socket For https://github.com/pluralsh/absinthe-socket/issues/13 Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/package.json | 4 +- js/yarn.lock | 175 +++++++++++++++++++----------------------------- 2 files changed, 72 insertions(+), 107 deletions(-) diff --git a/js/package.json b/js/package.json index a0debe121..65561b06e 100644 --- a/js/package.json +++ b/js/package.json @@ -26,8 +26,8 @@ "dependencies": { "@apollo/client": "^3.3.16", "@oruga-ui/oruga-next": "^0.7.0", - "@pluralsh/socket": "^1.0.0", - "@pluralsh/socket-apollo-link": "^1.0.0", + "@framasoft/socket": "^1.0.0", + "@framasoft/socket-apollo-link": "^1.0.0", "@sentry/tracing": "^7.1", "@sentry/vue": "^7.1", "@tiptap/core": "^2.0.0-beta.41", diff --git a/js/yarn.lock b/js/yarn.lock index f40a6f14b..b8a665c7d 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -34,24 +34,6 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@apollo/client@3.5.10": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.10.tgz#43463108a6e07ae602cca0afc420805a19339a71" - integrity sha512-tL3iSpFe9Oldq7gYikZK1dcYxp1c01nlSwtsMz75382HcI6fvQXyFXUCJTTK3wgO2/ckaBvRGw7VqjFREdVoRw== - dependencies: - "@graphql-typed-document-node/core" "^3.0.0" - "@wry/context" "^0.6.0" - "@wry/equality" "^0.5.0" - "@wry/trie" "^0.3.0" - graphql-tag "^2.12.3" - hoist-non-react-statics "^3.3.2" - optimism "^0.16.1" - prop-types "^15.7.2" - symbol-observable "^4.0.0" - ts-invariant "^0.9.4" - tslib "^2.3.0" - zen-observable-ts "^1.2.0" - "@apollo/client@^3.0.0", "@apollo/client@^3.3.16": version "3.8.5" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.5.tgz#becd2101d6049afd03dd796693fb5804346df42f" @@ -71,6 +53,25 @@ tslib "^2.3.0" zen-observable-ts "^1.2.5" +"@apollo/client@^3.8.7": + version "3.8.7" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.7.tgz#090b1518f513503b9a6a690ee3eaec49529822e1" + integrity sha512-DnQtFkQrCyxHTSa9gR84YRLmU/al6HeXcLZazVe+VxKBmx/Hj4rV8xWtzfWYX5ijartsqDR7SJgV037MATEecA== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + "@wry/context" "^0.7.3" + "@wry/equality" "^0.5.6" + "@wry/trie" "^0.4.3" + graphql-tag "^2.12.6" + hoist-non-react-statics "^3.3.2" + optimism "^0.17.5" + prop-types "^15.7.2" + response-iterator "^0.2.6" + symbol-observable "^4.0.0" + ts-invariant "^0.10.3" + tslib "^2.3.0" + zen-observable-ts "^1.2.5" + "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.13": version "7.22.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" @@ -954,13 +955,6 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" - integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/runtime@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" @@ -975,6 +969,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" @@ -1238,7 +1239,32 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== -"@graphql-typed-document-node/core@^3.0.0", "@graphql-typed-document-node/core@^3.1.1": +"@framasoft/socket-apollo-link@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@framasoft/socket-apollo-link/-/socket-apollo-link-1.0.1.tgz#a25285a041cd50154f6a955585b6432781719e4c" + integrity sha512-j2RHnVcPQx1iTWqBnRcjFPwY4lfED/X+/irKmsQahJUg3aMZUhiyX1+CwN14jTYc++oF8UVXbsn8knETCKkm8w== + dependencies: + "@apollo/client" "^3.8.7" + "@babel/runtime" "^7.23.2" + "@framasoft/socket" ">=1.0.0" + core-js "^3.33.2" + flow-static-land "^0.2.8" + graphql "^16.8.1" + zen-observable "^0.10.0" + +"@framasoft/socket@>=1.0.0", "@framasoft/socket@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@framasoft/socket/-/socket-1.0.3.tgz#99184acbb9da7d5824f83139f9e01f27c2161d71" + integrity sha512-84vWRlHqEBSAawJWh5du/GxIQX3fuqedh9fAETqm8o1SJ8/2APzDBibpjHBA4q2hrqhwOBHdBxKykU/bEJ++EQ== + dependencies: + "@babel/runtime" "^7.23.2" + "@jumpn/utils-array" "0.3.4" + "@jumpn/utils-composite" "0.7.0" + "@jumpn/utils-graphql" "0.6.0" + core-js "^3.33.2" + zen-observable "^0.10.0" + +"@graphql-typed-document-node/core@^3.1.1": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== @@ -1498,31 +1524,6 @@ dependencies: playwright "1.38.1" -"@pluralsh/socket-apollo-link@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@pluralsh/socket-apollo-link/-/socket-apollo-link-1.0.0.tgz#cbdf76669f747cfdd82fc6a557b65cb485edc93f" - integrity sha512-CC1wFfaN+1cP6VQY64y2qh6U+Cn1PuVfX7sJCt1SHF+53aNTcowbVsVHvmqf5jKlNlbStZlAJ3ithl17qc4Egw== - dependencies: - "@apollo/client" "3.5.10" - "@babel/runtime" "7.17.9" - "@pluralsh/socket" ">=1.0.0" - core-js "2.6.0" - flow-static-land "0.2.8" - graphql "15.5.0" - zen-observable "0.8.11" - -"@pluralsh/socket@>=1.0.0", "@pluralsh/socket@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@pluralsh/socket/-/socket-1.0.0.tgz#a8bbe555ea666995556244fa8e247773b9ffba32" - integrity sha512-fbVp4VUosX5fA0WPencZ4ojWrkKyej5XIDDh6UxE6fCb33k2+jGPCXbLBkFaJ4TmqkjSzBTX+d14RR8LYcFo/Q== - dependencies: - "@babel/runtime" "7.2.0" - "@jumpn/utils-array" "0.3.4" - "@jumpn/utils-composite" "0.7.0" - "@jumpn/utils-graphql" "0.6.0" - core-js "2.6.0" - zen-observable "0.8.11" - "@polka/url@^1.0.0-next.20": version "1.0.0-next.23" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" @@ -2484,13 +2485,6 @@ dependencies: vue-demi ">=0.14.6" -"@wry/context@^0.6.0": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.6.1.tgz#c3c29c0ad622adb00f6a53303c4f965ee06ebeb2" - integrity sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw== - dependencies: - tslib "^2.3.0" - "@wry/context@^0.7.0", "@wry/context@^0.7.3": version "0.7.3" resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.3.tgz#240f6dfd4db5ef54f81f6597f6714e58d4f476a1" @@ -2498,13 +2492,6 @@ dependencies: tslib "^2.3.0" -"@wry/equality@^0.5.0": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" - integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== - dependencies: - tslib "^2.3.0" - "@wry/equality@^0.5.6": version "0.5.6" resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.6.tgz#cd4a533c72c3752993ab8cbf682d3d20e3cb601e" @@ -2512,13 +2499,6 @@ dependencies: tslib "^2.3.0" -"@wry/trie@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.3.2.tgz#a06f235dc184bd26396ba456711f69f8c35097e6" - integrity sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ== - dependencies: - tslib "^2.3.0" - "@wry/trie@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" @@ -3198,6 +3178,11 @@ core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== +core-js@^3.33.2: + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.2.tgz#312bbf6996a3a517c04c99b9909cdd27138d1ceb" + integrity sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ== + crelt@^1.0.0, crelt@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" @@ -4008,7 +3993,7 @@ flow-static-land@0.2.7: resolved "https://registry.yarnpkg.com/flow-static-land/-/flow-static-land-0.2.7.tgz#937f9dcb2780889a609155e5d1a55a993bc2ffb3" integrity sha512-SmGgln4qcqLAysXM5BF8EQS+clj0TUf9+KlZUJgwuzNHvwbput+opz3CMyee9sDuLf4J/3sJbYGjdNsd2jSurA== -flow-static-land@0.2.8: +flow-static-land@0.2.8, flow-static-land@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/flow-static-land/-/flow-static-land-0.2.8.tgz#49617e531396928bae6eb5d8ba32e7071637e5b9" integrity sha512-pOZFExu2rbscCgcEo7nL7FNhBubMi18dn1Un4lm8LOmQkYhgsHLsrBGMWmuJXRWcYMrOC7I/bPsiqqVjdD3K1g== @@ -4244,7 +4229,7 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-tag@^2.10.3, graphql-tag@^2.12.3, graphql-tag@^2.12.6: +graphql-tag@^2.10.3, graphql-tag@^2.12.6: version "2.12.6" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== @@ -4258,16 +4243,16 @@ graphql@14.0.2: dependencies: iterall "^1.2.2" -graphql@15.5.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" - integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== - graphql@^15.0.0, graphql@^15.8.0: version "15.8.0" resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== +graphql@^16.8.1: + version "16.8.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" + integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + gray-matter@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" @@ -5558,14 +5543,6 @@ open@^9.1.0: is-inside-container "^1.0.0" is-wsl "^2.2.0" -optimism@^0.16.1: - version "0.16.2" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.2.tgz#519b0c78b3b30954baed0defe5143de7776bf081" - integrity sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ== - dependencies: - "@wry/context" "^0.7.0" - "@wry/trie" "^0.3.0" - optimism@^0.17.5: version "0.17.5" resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.17.5.tgz#a4c78b3ad12c58623abedbebb4f2f2c19b8e8816" @@ -6145,11 +6122,6 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regenerator-runtime@^0.13.4: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - regenerator-runtime@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" @@ -6949,13 +6921,6 @@ ts-invariant@^0.10.3: dependencies: tslib "^2.1.0" -ts-invariant@^0.9.4: - version "0.9.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.4.tgz#42ac6c791aade267dd9dc65276549df5c5d71cac" - integrity sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ== - dependencies: - tslib "^2.1.0" - tsconfig-paths@^3.14.2: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" @@ -7735,23 +7700,23 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -zen-observable-ts@^1.2.0, zen-observable-ts@^1.2.5: +zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== dependencies: zen-observable "0.8.15" -zen-observable@0.8.11: - version "0.8.11" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.11.tgz#d3415885eeeb42ee5abb9821c95bb518fcd6d199" - integrity sha512-N3xXQVr4L61rZvGMpWe8XoCGX8vhU35dPyQ4fm5CY/KDlG0F75un14hjbckPXTDuKUY6V0dqR2giT6xN8Y4GEQ== - zen-observable@0.8.15: version "0.8.15" resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== +zen-observable@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.10.0.tgz#ee10eba75272897dbee5f152ab26bb5e0107f0c8" + integrity sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw== + zhead@^2.1.1, zhead@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.1.3.tgz#77d97ec4657fc9b35872ac482613af0cc6b86b57" From 3d9beaa1cacf97913076c68a448091f9f6f2c488 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Tue, 14 Nov 2023 14:21:51 +0100 Subject: [PATCH 06/18] chore(deps): upgrade dependencies Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/package.json | 10 +- js/src/App.vue | 5 +- js/src/apollo/absinthe-socket-link.ts | 4 +- js/src/typings/absinthe.d.ts | 4 +- js/yarn.lock | 2572 ++++++++++++------------- 5 files changed, 1291 insertions(+), 1304 deletions(-) diff --git a/js/package.json b/js/package.json index 65561b06e..a7a316241 100644 --- a/js/package.json +++ b/js/package.json @@ -25,9 +25,9 @@ }, "dependencies": { "@apollo/client": "^3.3.16", - "@oruga-ui/oruga-next": "^0.7.0", "@framasoft/socket": "^1.0.0", "@framasoft/socket-apollo-link": "^1.0.0", + "@oruga-ui/oruga-next": "^0.7.0", "@sentry/tracing": "^7.1", "@sentry/vue": "^7.1", "@tiptap/core": "^2.0.0-beta.41", @@ -68,11 +68,11 @@ "date-fns": "^2.16.0", "date-fns-tz": "^2.0.0", "floating-vue": "^2.0.0-beta.24", - "graphql": "^15.8.0", + "graphql": "^16.8.1", "graphql-tag": "^2.10.3", "hammerjs": "^2.0.8", "intersection-observer": "^0.12.0", - "jwt-decode": "^3.1.2", + "jwt-decode": "^4.0.0", "leaflet": "^1.4.0", "leaflet.locatecontrol": "^0.79", "leaflet.markercluster": "^1.5.3", @@ -125,10 +125,10 @@ "histoire": "^0.17.0", "husky": "^8.0.3", "jsdom": "^22.0.0", - "lint-staged": "^14.0.1", + "lint-staged": "^15.1.0", "mock-apollo-client": "^1.1.0", "prettier": "^3.0.0", - "prettier-eslint": "^15.0.1", + "prettier-eslint": "^16.1.2", "rollup-plugin-visualizer": "^5.7.1", "sass": "^1.34.1", "typescript": "~5.2.2", diff --git a/js/src/App.vue b/js/src/App.vue index 846962227..efdc54941 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -41,7 +41,8 @@ import { } from "@/constants"; import { UPDATE_CURRENT_USER_CLIENT } from "@/graphql/user"; import MobilizonFooter from "@/components/PageFooter.vue"; -import jwt_decode, { JwtPayload } from "jwt-decode"; +import { jwtDecode } from "jwt-decode"; +import type { JwtPayload } from "jwt-decode"; import { refreshAccessToken } from "@/apollo/utils"; import { reactive, @@ -127,7 +128,7 @@ const notifier = inject<Notifier>("notifier"); interval.value = window.setInterval(async () => { const accessToken = localStorage.getItem(AUTH_ACCESS_TOKEN); if (accessToken) { - const token = jwt_decode<JwtPayload>(accessToken); + const token = jwtDecode<JwtPayload>(accessToken); if ( token?.exp !== undefined && new Date(token.exp * 1000 - 60000) < new Date() diff --git a/js/src/apollo/absinthe-socket-link.ts b/js/src/apollo/absinthe-socket-link.ts index ad3dad192..9927cabca 100644 --- a/js/src/apollo/absinthe-socket-link.ts +++ b/js/src/apollo/absinthe-socket-link.ts @@ -1,6 +1,6 @@ import { Socket as PhoenixSocket } from "phoenix"; -import { create } from "@pluralsh/socket"; -import { createAbsintheSocketLink } from "@pluralsh/socket-apollo-link"; +import { create } from "@framasoft/socket"; +import { createAbsintheSocketLink } from "@framasoft/socket-apollo-link"; import { AUTH_ACCESS_TOKEN } from "@/constants"; import { GRAPHQL_API_ENDPOINT } from "@/api/_entrypoint"; diff --git a/js/src/typings/absinthe.d.ts b/js/src/typings/absinthe.d.ts index e26cc6ce4..026f2428a 100644 --- a/js/src/typings/absinthe.d.ts +++ b/js/src/typings/absinthe.d.ts @@ -1,5 +1,5 @@ -declare module "@pluralsh/socket"; +declare module "@framasoft/socket"; -declare module "@pluralsh/socket-apollo-link"; +declare module "@framasoft/socket-apollo-link"; declare module "apollo-absinthe-upload-link"; diff --git a/js/yarn.lock b/js/yarn.lock index b8a665c7d..8c8d86048 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -34,26 +34,7 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@apollo/client@^3.0.0", "@apollo/client@^3.3.16": - version "3.8.5" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.5.tgz#becd2101d6049afd03dd796693fb5804346df42f" - integrity sha512-/ueWC3f1pFeH+tWbM1phz6pzUGGijyml6oQ+LKUcQzpXF6tVFPrb6oUIUQCbZpr6Xmv/dtNiFDohc39ra7Solg== - dependencies: - "@graphql-typed-document-node/core" "^3.1.1" - "@wry/context" "^0.7.3" - "@wry/equality" "^0.5.6" - "@wry/trie" "^0.4.3" - graphql-tag "^2.12.6" - hoist-non-react-statics "^3.3.2" - optimism "^0.17.5" - prop-types "^15.7.2" - response-iterator "^0.2.6" - symbol-observable "^4.0.0" - ts-invariant "^0.10.3" - tslib "^2.3.0" - zen-observable-ts "^1.2.5" - -"@apollo/client@^3.8.7": +"@apollo/client@^3.0.0", "@apollo/client@^3.3.16", "@apollo/client@^3.8.7": version "3.8.7" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.7.tgz#090b1518f513503b9a6a690ee3eaec49529822e1" integrity sha512-DnQtFkQrCyxHTSa9gR84YRLmU/al6HeXcLZazVe+VxKBmx/Hj4rV8xWtzfWYX5ijartsqDR7SJgV037MATEecA== @@ -80,38 +61,38 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" - integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" + integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== "@babel/core@^7.11.1": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" - integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" + integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/generator" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.0" - "@babel/parser" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.3" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" - "@babel/types" "^7.23.0" + "@babel/traverse" "^7.23.3" + "@babel/types" "^7.23.3" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" - integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== +"@babel/generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e" + integrity sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg== dependencies: - "@babel/types" "^7.23.0" + "@babel/types" "^7.23.3" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -123,14 +104,14 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== @@ -141,7 +122,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": +"@babel/helper-create-class-features-plugin@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== @@ -156,7 +137,7 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== @@ -165,10 +146,10 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" - integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -203,17 +184,17 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" - integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-module-imports" "^7.22.15" @@ -233,7 +214,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": +"@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== @@ -242,7 +223,7 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== @@ -296,13 +277,13 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.23.0": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" - integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" "@babel/highlight@^7.22.13": @@ -314,26 +295,34 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.20.15", "@babel/parser@^7.21.3", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" + integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" - integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" - integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098" + integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -375,17 +364,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -467,211 +456,211 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" - integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== +"@babel/plugin-transform-async-generator-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz#9df2627bad7f434ed13eef3e61b2b65cafd4885b" + integrity sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== dependencies: - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" - integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== +"@babel/plugin-transform-block-scoping@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz#e99a3ff08f58edd28a8ed82481df76925a4ffca7" + integrity sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" - integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== +"@babel/plugin-transform-class-static-block@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz#56f2371c7e5bf6ff964d84c5dc4d4db5536b5159" + integrity sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" - integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== +"@babel/plugin-transform-classes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" + integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" + "@babel/template" "^7.22.15" -"@babel/plugin-transform-destructuring@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" - integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" - integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== +"@babel/plugin-transform-dynamic-import@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz#82625924da9ed5fb11a428efb02e43bc9a3ab13e" + integrity sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" - integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== +"@babel/plugin-transform-export-namespace-from@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz#dcd066d995f6ac6077e5a4ccb68322a01e23ac49" + integrity sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-for-of@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" - integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== +"@babel/plugin-transform-for-of@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559" + integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" - integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== +"@babel/plugin-transform-json-strings@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz#489724ab7d3918a4329afb4172b2fd2cf3c8d245" + integrity sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" - integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== +"@babel/plugin-transform-logical-assignment-operators@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz#3a406d6083feb9487083bca6d2334a3c9b6c4808" + integrity sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.22.5": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" - integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== dependencies: - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" - integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== +"@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== dependencies: - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.22.11": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" - integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== +"@babel/plugin-transform-modules-systemjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" + integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": @@ -682,198 +671,199 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" - integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz#8a613d514b521b640344ed7c56afeff52f9413f8" + integrity sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" - integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== +"@babel/plugin-transform-numeric-separator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz#2f8da42b75ba89e5cfcd677afd0856d52c0c2e68" + integrity sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" - integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== +"@babel/plugin-transform-object-rest-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz#509373753b5f7202fe1940e92fd075bd7874955f" + integrity sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog== dependencies: - "@babel/compat-data" "^7.22.9" + "@babel/compat-data" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.23.3" -"@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" - integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== +"@babel/plugin-transform-optional-catch-binding@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz#362c0b545ee9e5b0fa9d9e6fe77acf9d4c480027" + integrity sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" - integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== +"@babel/plugin-transform-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz#92fc83f54aa3adc34288933fa27e54c13113f4be" + integrity sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" - integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== +"@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" - integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== +"@babel/plugin-transform-private-property-in-object@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz#5cd34a2ce6f2d008cc8f91d8dcc29e2c41466da6" + integrity sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.11.0": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" - integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" + integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== dependencies: - "@babel/compat-data" "^7.22.20" + "@babel/compat-data" "^7.23.3" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -885,59 +875,58 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.15" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.15" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.15" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.15" - "@babel/plugin-transform-modules-systemjs" "^7.22.11" - "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.3" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.3" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.3" + "@babel/plugin-transform-classes" "^7.23.3" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.3" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.3" + "@babel/plugin-transform-for-of" "^7.23.3" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.3" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.22.15" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" + "@babel/plugin-transform-numeric-separator" "^7.23.3" + "@babel/plugin-transform-object-rest-spread" "^7.23.3" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.3" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.3" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.19" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" core-js-compat "^3.31.0" semver "^6.3.1" @@ -962,21 +951,14 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.11.2", "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" - integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.23.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.22.5": +"@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -985,26 +967,26 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" - integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== +"@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" + integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== dependencies: "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" + "@babel/generator" "^7.23.3" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" + "@babel/parser" "^7.23.3" + "@babel/types" "^7.23.3" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== +"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.4.4": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" + integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== dependencies: "@babel/helper-string-parser" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" @@ -1034,9 +1016,9 @@ "@lezer/json" "^1.0.0" "@codemirror/language@^6.0.0", "@codemirror/language@^6.8.0": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.9.1.tgz#97e2c3e44cf4ff152add865ed7ecec73868446a4" - integrity sha512-lWRP3Y9IUdOms6DXuBpoWwjkR7yRmnS0hKYCbSfPz9v6Em1A1UCRujAkDiCrdYfs1Z0Eu4dGtwovNPStIfkgNA== + version "6.9.2" + resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.9.2.tgz#1fba6e0eab995afda683d4e6c556365a982b5258" + integrity sha512-QGTQXSpAKDIzaSE96zNK1UfIUhPgkT1CLjh1N5qVzZuxgsEOhz5RqaN8QCIdyOQklGLx3MgHd9YrE3X3+Pl1ow== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.0.0" @@ -1055,9 +1037,9 @@ crelt "^1.0.5" "@codemirror/state@^6.0.0", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0", "@codemirror/state@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.2.1.tgz#6dc8d8e5abb26b875e3164191872d69a5e85bd73" - integrity sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw== + version "6.3.1" + resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.3.1.tgz#acabbbaeedcbfd31680704aba22102a75104f434" + integrity sha512-88e4HhMtKJyw6fKprGaN/yZfiaoGYOi2nM45YCUC6R/kex9sxFWBDGatS1vk4lMgnWmdIIB9tk8Gj1LmL8YfvA== "@codemirror/theme-one-dark@^6.1.2": version "6.1.2" @@ -1070,9 +1052,9 @@ "@lezer/highlight" "^1.0.0" "@codemirror/view@^6.0.0", "@codemirror/view@^6.16.0": - version "6.21.3" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.21.3.tgz#cf8e3ee6f08e06a6912f18bc90548b4b74badb7a" - integrity sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A== + version "6.22.0" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.22.0.tgz#5a5214a04f149ecf54c4803b7fec9bdac56d0d74" + integrity sha512-6zLj4YIoIpfTGKrDMTbeZRpa8ih4EymMCKmddEDcJWrCdp/N1D46B38YEz4creTb4T177AVS9EyXkLeC/HL2jA== dependencies: "@codemirror/state" "^6.1.4" style-mod "^4.1.0" @@ -1196,14 +1178,14 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" - integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1215,10 +1197,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.51.0": - version "8.51.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" - integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" + integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== "@floating-ui/core@^1.1.0": version "1.5.0" @@ -1269,22 +1251,22 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@histoire/app@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@histoire/app/-/app-0.17.0.tgz#4dab512876a6d7f3b5beff000d9a979b373c88d7" - integrity sha512-rZyuIw3Ck6RqwBSkCfIAZAzKZTclzWmLcCNtSCbUHF/wcEUbFdfAhGTW56+NhzNeURq+QxNuklHhSnE+x0PiEQ== +"@histoire/app@^0.17.5": + version "0.17.5" + resolved "https://registry.yarnpkg.com/@histoire/app/-/app-0.17.5.tgz#2fb379581a07e58b52e203063fa14bc868bcba98" + integrity sha512-R3mn28OqBLAKzNuTuMpRFiBdRMrMGsn9rOgJZUC/Km1aj1KpRpg5ETzeWRMtqR3ZAWrlT3Z3pzvGAesPNoXHDw== dependencies: - "@histoire/controls" "^0.17.0" - "@histoire/shared" "^0.17.0" - "@histoire/vendors" "^0.17.0" + "@histoire/controls" "^0.17.4" + "@histoire/shared" "^0.17.5" + "@histoire/vendors" "^0.17.4" "@types/flexsearch" "^0.7.3" flexsearch "0.7.21" shiki-es "^0.2.0" -"@histoire/controls@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@histoire/controls/-/controls-0.17.0.tgz#9a7a524fcf53600b5f5585b2c54fa601f1064cf3" - integrity sha512-zdZB4kLthWIZxe/GxUdYM18y7lXiF13g8BMomE9d/YudY1KFkfmMKSbrNlDyM9yKiTd6ycSRJIWEXlxOSuyNrw== +"@histoire/controls@^0.17.4": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@histoire/controls/-/controls-0.17.4.tgz#fa9acf54430d5161e6fef55963fa35506c4ca436" + integrity sha512-eHon0NF7NpvQt1azE83laK+rX2elCm5wp45Oijv1viBwD+1KfXuxlU1xQoFqeNHPyD2F2c3NYLuKUOW/tzTKDw== dependencies: "@codemirror/commands" "^6.2.4" "@codemirror/lang-json" "^6.0.1" @@ -1293,45 +1275,45 @@ "@codemirror/state" "^6.2.1" "@codemirror/theme-one-dark" "^6.1.2" "@codemirror/view" "^6.16.0" - "@histoire/shared" "^0.17.0" - "@histoire/vendors" "^0.17.0" + "@histoire/shared" "^0.17.4" + "@histoire/vendors" "^0.17.4" "@histoire/plugin-vue@^0.17.1": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@histoire/plugin-vue/-/plugin-vue-0.17.1.tgz#1ddd1c5ec0572469261dba2ceff2cb0afdecf4fb" - integrity sha512-p9MkCy1Ohe0RkAwpTB6XcOoAhlSsONBSWorhVukwi4HnIMUsPbTjOVkLfKhALW9QtVux+7reWXRocJdLECNwGA== + version "0.17.5" + resolved "https://registry.yarnpkg.com/@histoire/plugin-vue/-/plugin-vue-0.17.5.tgz#cefdec440b3f14169d7a07da9b82d219cb872c9c" + integrity sha512-xP/zQ+N0E83IUaoZgchAKtKJg1OQahih7tEcYgwhrmBxMw9F8TG0TyeGleJYLTbYXcy7THwIANZGfEPdQBuyuA== dependencies: - "@histoire/controls" "^0.17.0" - "@histoire/shared" "^0.17.0" - "@histoire/vendors" "^0.17.0" + "@histoire/controls" "^0.17.4" + "@histoire/shared" "^0.17.5" + "@histoire/vendors" "^0.17.4" change-case "^4.1.2" globby "^13.2.2" launch-editor "^2.6.0" pathe "^0.2.0" -"@histoire/shared@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@histoire/shared/-/shared-0.17.0.tgz#c9ba36cb36caab7d74b4f51e9ef4f63c08e7af3e" - integrity sha512-itdEqD+V+WNkCqhSsgoSRuoHeXBH3/bNjY98vHz/89prKeqEVMGbBbGPUpgm1IpKEYrNcLhfDAREJHnwsKxKCg== +"@histoire/shared@^0.17.4", "@histoire/shared@^0.17.5": + version "0.17.5" + resolved "https://registry.yarnpkg.com/@histoire/shared/-/shared-0.17.5.tgz#b1fc16e6b7576b4df2fe98c7f5b011ebc3cadbed" + integrity sha512-sxdbRhYd5puUjM30Je6HpAyU2pCBpltopsZBF+4DhB+GKCWi3unhnwFHC2wCMcsYA+/J/YmYJqI3mVXQJCzmqg== dependencies: - "@histoire/vendors" "^0.17.0" + "@histoire/vendors" "^0.17.4" "@types/fs-extra" "^9.0.13" "@types/markdown-it" "^12.2.3" chokidar "^3.5.3" pathe "^0.2.0" picocolors "^1.0.0" -"@histoire/vendors@^0.17.0": - version "0.17.0" - resolved "https://registry.yarnpkg.com/@histoire/vendors/-/vendors-0.17.0.tgz#12eff1055eacee80fea05bdb0eadb6d30a6541f8" - integrity sha512-HI2hkai3p5+gAoWZAGWoAdDLlu0ujfYtGhykGChTQyKAroocizRG21l/2w71cN1K+oigbAccqtxP8BkpqX74cQ== +"@histoire/vendors@^0.17.4": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@histoire/vendors/-/vendors-0.17.4.tgz#33e91f89a4417773ba8ac437a95917893dc13208" + integrity sha512-Tz9bGp3onic5cc1x+5NErS+Y19NxNEAPpYKab7UnPbx8iEsWqNGsbgZAAEL8CJKhOX/DiKfD7NUEQMC4AW/Kbg== -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -1340,31 +1322,43 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== -"@intlify/core-base@9.5.0": - version "9.5.0" - resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.5.0.tgz#cbb17a27029ccfd0a83a837931baee08b887af60" - integrity sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w== +"@intlify/core-base@9.6.5": + version "9.6.5" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.6.5.tgz#af92cae122fb99e882b3d7f1433f682065a3e164" + integrity sha512-LzbGXiZkMWPIHnHI0g6q554S87Cmh2mmCmjytK/3pDQfjI84l+dgGoeQuKj02q7EbULRuUUgYVZVqAwEUawXGg== dependencies: - "@intlify/message-compiler" "9.5.0" - "@intlify/shared" "9.5.0" + "@intlify/message-compiler" "9.6.5" + "@intlify/shared" "9.6.5" -"@intlify/message-compiler@9.5.0": - version "9.5.0" - resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.5.0.tgz#1b4916bf11ca7024f9c15be0d6b4de7be5317808" - integrity sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g== +"@intlify/message-compiler@9.6.5": + version "9.6.5" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.6.5.tgz#3a33882497417c63b23b012731d60a485c8e5558" + integrity sha512-WeJ499thIj0p7JaIO1V3JaJbqdqfBykS5R8fElFs5hNeotHtPAMBs4IiA+8/KGFkAbjJusgFefCq6ajP7F7+4Q== dependencies: - "@intlify/shared" "9.5.0" + "@intlify/shared" "9.6.5" source-map-js "^1.0.2" -"@intlify/shared@9.5.0": - version "9.5.0" - resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.5.0.tgz#185d9ab9f6b4bb4f4d133cfdd51432e9b94c2c44" - integrity sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA== +"@intlify/shared@9.6.5": + version "9.6.5" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.6.5.tgz#a81f384d804e99ceac55bb061c344f156bd96590" + integrity sha512-gD7Ey47Xi4h/t6P+S04ymMSoA3wVRxGqjxuIMglwRO8POki9h164Epu2N8wk/GHXM/hR6ZGcsx2HArCCENjqSQ== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" "@istanbuljs/schema@^0.1.2": version "0.1.3" @@ -1411,9 +1405,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1448,14 +1442,14 @@ graphql "14.0.2" "@lezer/common@^1.0.0", "@lezer/common@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.1.0.tgz#2e5bfe01d7a2ada6056d93c677bba4f1495e098a" - integrity sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.1.1.tgz#4a06a0e1b9214d7eb2ea4a9354d47a63044cee49" + integrity sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg== "@lezer/highlight@^1.0.0": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.6.tgz#87e56468c0f43c2a8b3dc7f0b7c2804b34901556" - integrity sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg== + version "1.2.0" + resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.0.tgz#e5898c3644208b4b589084089dceeea2966f7780" + integrity sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA== dependencies: "@lezer/common" "^1.0.0" @@ -1468,9 +1462,9 @@ "@lezer/lr" "^1.0.0" "@lezer/lr@^1.0.0": - version "1.3.13" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.13.tgz#578e06c6c52e4dc38421368904585afa3eb82ec8" - integrity sha512-RLAbau/4uSzKgIKj96mI5WUtG1qtiR0Frn0Ei9zhPj8YOkHM+1Bb8SgdVvmR/aWJCFIzjo2KFnDiRZ75Xf5NdQ== + version "1.3.14" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.14.tgz#59d4a3b25698bdac0ef182fa6eadab445fc4f29a" + integrity sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug== dependencies: "@lezer/common" "^1.0.0" @@ -1505,6 +1499,11 @@ resolved "https://registry.yarnpkg.com/@oruga-ui/oruga-next/-/oruga-next-0.7.0.tgz#3d454cf648182d25a99a21c7101506f8f585d13a" integrity sha512-T2KnNhGzgqv/Xzu4Efx3wnYahANcP6Z7Yc8DHOFIOLrM+ZDdTS9OjL3gofBVDrDBRg1DQv6EvsSsNkwMR88LpA== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@pkgr/utils@^2.3.1": version "2.4.2" resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" @@ -1518,11 +1517,11 @@ tslib "^2.6.0" "@playwright/test@^1.25.1": - version "1.38.1" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.38.1.tgz#8ef4263e355cd1d8ad7905d471d268e8acb82ed6" - integrity sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ== + version "1.39.0" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.39.0.tgz#d10ba8e38e44104499e25001945f07faa9fa91cd" + integrity sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ== dependencies: - playwright "1.38.1" + playwright "1.39.0" "@polka/url@^1.0.0-next.20": version "1.0.0-next.23" @@ -1607,76 +1606,72 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== -"@sentry-internal/tracing@7.73.0": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.73.0.tgz#4838f31e41d23a6041ef4520519b80f788bf1cac" - integrity sha512-ig3WL/Nqp8nRQ52P205NaypGKNfIl/G+cIqge9xPW6zfRb5kJdM1YParw9GSJ1SPjEZBkBORGAML0on5H2FILw== +"@sentry-internal/tracing@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.80.1.tgz#b0e993265aa75743787d84e6c0655ed17e4bac0f" + integrity sha512-5gZ4LPIj2vpQl2/dHBM4uXMi9OI5E0VlOhJQt0foiuN6JJeiOjdpJFcfVqJk69wrc0deVENTtgKKktxqMwVeWQ== dependencies: - "@sentry/core" "7.73.0" - "@sentry/types" "7.73.0" - "@sentry/utils" "7.73.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry/core" "7.80.1" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" -"@sentry/browser@7.73.0": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.73.0.tgz#a8eaeb50cf16ca32f0039a81719c503d7045495f" - integrity sha512-e301hUixcJ5+HNKCJwajFF5smF4opXEFSclyWsJuFNufv5J/1C1SDhbwG2JjBt5zzdSoKWJKT1ewR6vpICyoDw== +"@sentry/browser@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.80.1.tgz#3e63a122846a4d5dec04237b97ae064b80546da4" + integrity sha512-1dPR6vPJ9vOTzgXff9HGheb178XeEv5hyjBNhCO1f6rjCgnVj99XGNZIgO1Ee1ALJbqlfPWaeV+uSWbbcmgJMA== dependencies: - "@sentry-internal/tracing" "7.73.0" - "@sentry/core" "7.73.0" - "@sentry/replay" "7.73.0" - "@sentry/types" "7.73.0" - "@sentry/utils" "7.73.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry-internal/tracing" "7.80.1" + "@sentry/core" "7.80.1" + "@sentry/replay" "7.80.1" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" -"@sentry/core@7.73.0": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.73.0.tgz#1caeeec44f42c4d58c06cc05dec39e5497b65aa3" - integrity sha512-9FEz4Gq848LOgVN2OxJGYuQqxv7cIVw69VlAzWHEm3njt8mjvlTq+7UiFsGRo84+59V2FQuHxzA7vVjl90WfSg== +"@sentry/core@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.80.1.tgz#ccb85e15495bf0c8b142ca1713408c64e38c9f4c" + integrity sha512-3Yh+O9Q86MxwIuJFYtuSSoUCpdx99P1xDAqL0FIPTJ+ekaVMiUJq9NmyaNh9uN2myPSmxvEXW6q3z37zta9ZHg== dependencies: - "@sentry/types" "7.73.0" - "@sentry/utils" "7.73.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" -"@sentry/replay@7.73.0": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.73.0.tgz#4e6c522bac5c12f596ef76afe15ecb3807407669" - integrity sha512-a8IC9SowBisLYD2IdLkXzx7gN4iVwHDJhQvLp2B8ARs1PyPjJ7gCxSMHeGrYp94V0gOXtorNYkrxvuX8ayPROA== +"@sentry/replay@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.80.1.tgz#1f47d3e52bfd0ad531f3032ae1eda8528c947c44" + integrity sha512-yjpftIyybQeWD2i0Nd7C96tZwjNbSMRW515EL9jwlNxYbQtGtMs0HavP9Y7uQvQrzwSHY0Wp+ooe9PMuvzqbHw== dependencies: - "@sentry/core" "7.73.0" - "@sentry/types" "7.73.0" - "@sentry/utils" "7.73.0" + "@sentry-internal/tracing" "7.80.1" + "@sentry/core" "7.80.1" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" "@sentry/tracing@^7.1": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.73.0.tgz#0998aab726a7af18744fd694c6d199f5d1dd1a3d" - integrity sha512-LOQR6Hkc8ZoflCXWtMlxTbCBEwv0MSOr3vesnRsmlFG8TW1YUIneU+wKnVxToWAZ8fq+6ubclnuIUKHfqTk/Tg== + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.80.1.tgz#2c85758ff45f70086f14eef136cacaf8ffabb230" + integrity sha512-sFkcxCBtLNVa3EyeCafZqhJHZ714f2+ryPWTBckAmxAsON4yjh/YLs2X1FJ2n6Rnv16TP6gWGt4SnhFT03WStA== dependencies: - "@sentry-internal/tracing" "7.73.0" + "@sentry-internal/tracing" "7.80.1" -"@sentry/types@7.73.0": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.73.0.tgz#6d811bbe413d319df0a592a672d6d72a94a8e716" - integrity sha512-/v8++bly8jW7r4cP2wswYiiVpn7eLLcqwnfPUMeCQze4zj3F3nTRIKc9BGHzU0V+fhHa3RwRC2ksqTGq1oJMDg== +"@sentry/types@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.80.1.tgz#dc720d6f2da0b510d586814451a04a2cdd2f4a9d" + integrity sha512-CVu4uPVTOI3U9kYiOdA085R7jX5H1oVODbs9y+A8opJ0dtJTMueCXgZyE8oXQ0NjGVs6HEeaLkOuiV0mj8X3yw== -"@sentry/utils@7.73.0": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.73.0.tgz#530cf023f7c395aa7708cd3824e5a45948449c10" - integrity sha512-h3ZK/qpf4k76FhJV9uiSbvMz3V/0Ovy94C+5/9UgPMVCJXFmVsdw8n/dwANJ7LupVPfYP23xFGgebDMFlK1/2w== +"@sentry/utils@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.80.1.tgz#1c719f41b4d2c818363551fc40776a274b71efff" + integrity sha512-bfFm2e/nEn+b9++QwjNEYCbS7EqmteT8uf0XUs7PljusSimIqqxDtK1pfD9zjynPgC8kW/fVBKv0pe2LufomeA== dependencies: - "@sentry/types" "7.73.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry/types" "7.80.1" "@sentry/vue@^7.1": - version "7.73.0" - resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.73.0.tgz#c518362a1fb2b930f4320d8fbf00e0fa17b02a06" - integrity sha512-BTZVvY4PTLqqIbLbwBr0fbMQsUalV+BSm1JbCx2cy4IX/Rcf5YQUdkv1CvUMvI4yZKYTINMamyT/8XCCPljl6A== + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.80.1.tgz#b3e22c7702940a7a84b11d955f09c02308a37c71" + integrity sha512-6X9LM1rrJg31jJQ+9LnCCbzDNbD7RaGwfXHAiAtV2aH1ya40YKNK/DjYNzTVMXiXNiJJyjeeFTkLwBt7OFk2tg== dependencies: - "@sentry/browser" "7.73.0" - "@sentry/core" "7.73.0" - "@sentry/types" "7.73.0" - "@sentry/utils" "7.73.0" - tslib "^2.4.1 || ^1.9.3" + "@sentry/browser" "7.80.1" + "@sentry/core" "7.80.1" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -1694,9 +1689,9 @@ string.prototype.matchall "^4.0.6" "@tailwindcss/forms@^0.5.2": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.6.tgz#29c6c2b032b363e0c5110efed1499867f6d7e868" - integrity sha512-Fw+2BJ0tmAwK/w01tEFL5TiaJBX1NLT1/YbWgvm7ws3Qcn11kiXxzNTEQDMs5V3mQemhB56l3u0i9dwdzSQldA== + version "0.5.7" + resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.7.tgz#db5421f062a757b5f828bc9286ba626c6685e821" + integrity sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw== dependencies: mini-svg-data-uri "^1.2.3" @@ -1711,125 +1706,125 @@ postcss-selector-parser "6.0.10" "@tiptap/core@^2.0.0-beta.41": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.11.tgz#06bbd189c6b2dffe58b1c80f848737d76fb012bd" - integrity sha512-1W2DdjpPwfphHgQ3Qm4s5wzCnEjiXm1TeZ+6/zBl89yKURXgv8Mw1JGdj/NcImQjtDcsNn97MscACK3GKbEJBA== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.12.tgz#904fdf147e91b5e60561c76e7563c1b5a32f54ab" + integrity sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ== "@tiptap/extension-blockquote@^2.0.0-beta.25": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.11.tgz#f91729fb7f328384243c37516fab55ab2efa01a4" - integrity sha512-IEVe3goA0rgp1G8Wm733BSRJiy71Vh2fmTCyZKWmc2A6GREVSy1X3fCvAo6pMENRObhjIoaBQUCE3p4iJYOxqg== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.12.tgz#97b43419606acf9bfd93b9f482a1827dcac8c3e9" + integrity sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg== "@tiptap/extension-bold@^2.0.0-beta.24": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.11.tgz#a890d278ba932d91081dc91b75d2b3579a276f5c" - integrity sha512-vhdkBtvd029ufOYt2ug49Gz+RLKSczO/CCqKYBqBmpIpsifyK7M6jkgamvAQg3c/vYk0LNcKiL2dp0Jp7L+5Gw== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.12.tgz#5dbf41105fc0fbde8adbff629312187fbebc39b0" + integrity sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg== -"@tiptap/extension-bubble-menu@^2.0.0-beta.9", "@tiptap/extension-bubble-menu@^2.1.11": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.11.tgz#3cc3d8be3108932f15c36e9b00948219cc92ab0f" - integrity sha512-WFJJpZvl9DP94Y5RQZB/THDxvDbrTo8tuhjT7yWlhseJ6zyhWmRXdutt39wfSZNFxitv/As+s7cO9aYLML/TVg== +"@tiptap/extension-bubble-menu@^2.0.0-beta.9", "@tiptap/extension-bubble-menu@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.12.tgz#4103a21a6433e58690c8f742ece39fad78dc26eb" + integrity sha512-gAGi21EQ4wvLmT7klgariAc2Hf+cIjaNU2NWze3ut6Ku9gUo5ZLqj1t9SKHmNf4d5JG63O8GxpErqpA7lHlRtw== dependencies: tippy.js "^6.3.7" "@tiptap/extension-bullet-list@^2.0.0-beta.23": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.11.tgz#bb72bbd8b7aaeb8c03ba9575886f7c1faec8e4e5" - integrity sha512-SOOVH2aSmdMtjWL7TTLbN72xbAFz2G5jifT4UCXb7Qx6LsyhNCyDCu0ukOW8rSosGoSdmBXxAsD9sBJ1jEOmZw== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.12.tgz#7c905a577ce30ef2cb335870a23f9d24fd26f6aa" + integrity sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ== "@tiptap/extension-document@^2.0.0-beta.15": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.11.tgz#76782660420900acb6301a5ba69c27054139b622" - integrity sha512-L/iLuqxvJep33ycCFNrnUhdR0VtcZyeNnqB+ZvVHzEwLoRud+LBy44lpEdBrAFsvRm3DG14m/FGYL+TfaD0vxA== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.12.tgz#e19e4716dfad60cbeb6abaf2f362fed759963529" + integrity sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw== "@tiptap/extension-dropcursor@^2.0.0-beta.25": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.11.tgz#1a23efec39c3e59c1b7eeb970ed2facdbe1f920d" - integrity sha512-MiJepRpHlu93aInOMW8NeRCvm9VE5rL0MA9TONY/IspJFGFIqonc/01J6t33JQa3Xh/x3xAfis4nKa/UazeVJw== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.12.tgz#9da0c275291c9d47497d3db41b4d70d96366b4ff" + integrity sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A== -"@tiptap/extension-floating-menu@^2.1.11": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.11.tgz#3013924727ad95a1cd484e4bc426912b63e1a444" - integrity sha512-ExeoOQ6nT0CY0eWx6WjbG+osurXLXa7XrqIdhCAcTmzBAlGiKt8khX9qaZ+QF+BRK1r1lja2KX+5/fpLK7Dt1g== +"@tiptap/extension-floating-menu@^2.1.12": + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.12.tgz#68a658b2b9bdd3a0fc1afc5165231838061a8fde" + integrity sha512-uo0ydCJNg6AWwLT6cMUJYVChfvw2PY9ZfvKRhh9YJlGfM02jS4RUG/bJBts6R37f+a5FsOvAVwg8EvqPlNND1A== dependencies: tippy.js "^6.3.7" "@tiptap/extension-gapcursor@^2.0.0-beta.33": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.11.tgz#77bcd8d886405c10ddbc251186d88be752db2ec4" - integrity sha512-P/xjyhSOVyop5XXbNtRPgrooQrSlpYblwR67ClI9FAC7uQliuOwi5VcndmEItjWWSe85kJa2IHjOS7mLYvJe8A== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.12.tgz#63844c3abd1a38af915839cf0c097b6d2e5a86fe" + integrity sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ== "@tiptap/extension-heading@^2.0.0-beta.23": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.11.tgz#fa9802e006a47a8d3afd652e67cde4e68afeb1d0" - integrity sha512-QBtl0S1aDFB+F1wvTrS5iGdNUEeXp+WuTddj+L2f5EP4KqG2x7sj7e7ENMy20g/l8tbKwzd3AZZydvClH4Ybbw== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.12.tgz#05ae4684d6f29ae611495ab114038e14a5d1dff6" + integrity sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w== "@tiptap/extension-history@^2.0.0-beta.21": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.11.tgz#80a6a8887c8a5a4b73f06285a273928d4c51d7b5" - integrity sha512-88dovV2O9icmBn0IvaArFFeS6X5ts6BxZPu5VbGML8KBL8iAu+Og7RXEPdOy5e13K0K4V21fDpO3n7KdvNOAYQ== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.12.tgz#03bcb9422e8ea2b82dc45207d1a1b0bc0241b055" + integrity sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg== "@tiptap/extension-image@^2.0.0-beta.6": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.1.11.tgz#96990fbea4e5fee1e23cb03849144645ca328fac" - integrity sha512-dFFRvzl9F4fEcG95nyka72TeV127C1UVaMm816GHoFlVEFGV4yJ8NKgzT3UEDgFcs6OPwPlt8tuHuDeYm7EVOQ== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.1.12.tgz#ab035db82f0961b1d906c4d426bf68be563fdcd3" + integrity sha512-VCgOTeNLuoR89WoCESLverpdZpPamOd7IprQbDIeG14sUySt7RHNgf2AEfyTYJEHij12rduvAwFzerPldVAIJg== "@tiptap/extension-italic@^2.0.0-beta.24": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.11.tgz#31b5d096e7bd15e855644a0066eb750140b1a57a" - integrity sha512-QmDsHtnBBit/1KtQpBPxjSPjDC1mVKtoNTgsEwMWK6YAkCKOKPj7oPEqqjaNZIRMKPPzE5XCsfBoS3jtVmo+6A== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.12.tgz#e99480eb77f8b4e5444fc236add8a831d5aa2343" + integrity sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A== "@tiptap/extension-link@^2.0.0-beta.8": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.11.tgz#88cb79513b5fdf1dea3dbe38af95009692734c1d" - integrity sha512-Dn8hq4ld8br53fE4/QUZ7/y6ejY/kqAxeNhtud+OZKRs6VRn/CQd0H6A26opL+mKAK0kzrs0rh7rJPpHvahx/Q== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.12.tgz#a18f83a0b54342e6274ff9e5a5907ef7f15aa723" + integrity sha512-Sti5hhlkCqi5vzdQjU/gbmr8kb578p+u0J4kWS+SSz3BknNThEm/7Id67qdjBTOQbwuN07lHjDaabJL0hSkzGQ== dependencies: linkifyjs "^4.1.0" "@tiptap/extension-list-item@^2.0.0-beta.19": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.11.tgz#466e4d1dcad153b4e52678b08d2bf073339c2dc9" - integrity sha512-YhwHaPGhffsFsg/zjCu1G24//j/BTRDRZbZXmMwp77m1yEqPULcWyoWrI+gUzetQxJRD/ruAucqjLtoLLfICmQ== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.12.tgz#3eb28dc998490a98f14765783770b3cf6587d39e" + integrity sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg== "@tiptap/extension-mention@^2.0.0-beta.42": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.1.11.tgz#cad9ee38335cc7c737371957b659254c0eb8e4ee" - integrity sha512-QMHmAkhiDQEgAdUHdKRfVna0AINcbSbQCrpgwKLIHGWcpbi1zJbAPpm+xngbl0I9ZNxaMzbP4utTAzeQ92pJkw== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.1.12.tgz#a395e7757b45630ec3047f14b0ba2dde8e1c9c93" + integrity sha512-Nc8wFlyPp+/48IpOFPk2O3hYsF465wizcM3aihMvZM96Ahic7dvv9yVptyOfoOwgpExl2FIn1QPjRDXF60VAUg== "@tiptap/extension-ordered-list@^2.0.0-beta.24": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.11.tgz#19c993090bc2aca6d8fed8b9c8759dd4816f06db" - integrity sha512-/tghfEJ5U7WFbF8xyOqRJks8KxP/lRjnroMXMglaushSMx8PYPo1dZDB/dJZw7ksy47MAaKJfKlx3gyN2CPXBQ== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.12.tgz#f41a45bc66b4d19e379d4833f303f2e0cd6b9d60" + integrity sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA== "@tiptap/extension-paragraph@^2.0.0-beta.22": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.11.tgz#6d0eb3d7509e1d467526f2658a147db52dd225d6" - integrity sha512-gXMgJ2CU3X4yh1wKnb8RdbDmhITB76pH6DX0uWprmEgvzNMN3Qw+h5uBD9lgxg1WVghbCmkG9mY9J4PPbPTLxw== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.12.tgz#922447b2aa1c7184787d351ceec593a74d24ed03" + integrity sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw== "@tiptap/extension-placeholder@^2.0.0-beta.199": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.1.11.tgz#ba115f714dd48d5bbc65df277b74f357ff3b100e" - integrity sha512-laHYRFxJWj6m72Yf1v6Q5nF2nvwWpQlKUj6Yu/yluOOoVE92HpLqCAvA8RamqLtPiw5VxR3v3oCY0WNeQRvyIg== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.1.12.tgz#f6267a563d17a5ae8a04da32231eac8d8868519e" + integrity sha512-K52o7B1zkP4vaVy3z4ZwHn+tQy6KlXtedj1skLg+796ImwH2GYS5z6MFOTfKzBO2hLncUzLco/s0C5PLCD6SDw== "@tiptap/extension-strike@^2.0.0-beta.26": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.11.tgz#738df0eebb6ab997783e01434397156601017bcb" - integrity sha512-UnjeSVgu3bDuyjjUdWsUErRCoQKAHCzH/pAiqTEPEEdFYgZFQPBpcJICRVdlYjRmI2ZKh6d0TMUS55m7ckmwmQ== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.12.tgz#2b049aedf2985e9c9e3c3f1cc0b203a574c85bd8" + integrity sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g== "@tiptap/extension-text@^2.0.0-beta.15": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.11.tgz#f67ac1a782a8ee1d30885680e52bba3ef19322f9" - integrity sha512-Iey0EXYv9079+lbHMvZtLc6XcYfKrq++msEXuFFNHxvL0i/XzndhGf+qlDhLROLgEtDiiTqzOBBwFCGlFjbDow== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.12.tgz#466e3244bdd9b2db2304c0c9a1d51ce59f5327d0" + integrity sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg== "@tiptap/extension-underline@^2.0.0-beta.7": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.1.11.tgz#05cd5e9ca768d3544031d6879b372fdcdbd8974a" - integrity sha512-2C/jDNRV3WHfM5kgx6xB/1ooBciQ9j02gJVJkTHeLpz6zUWkxrRgU/u+FvZxGVBVskasJsQnsYMG9pAqwd9R8A== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.1.12.tgz#abd59c4b6c8434dbadb4ff9bff23eefcc6bc095e" + integrity sha512-NwwdhFT8gDD0VUNLQx85yFBhP9a8qg8GPuxlGzAP/lPTV8Ubh3vSeQ5N9k2ZF/vHlEvnugzeVCbmYn7wf8vn1g== "@tiptap/pm@^2.0.0-beta.220": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.11.tgz#023c854d447a6509d52da0be890539037582cf39" - integrity sha512-vBIAic+H8fjHfT8r2qJkAOxdx1Iiss9+qMyujAoIdPkiyjEc4+sXcM0qSYgIr6KL5icITyuK8J7x/V62VfB7Uw== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.12.tgz#88a4b19be0eabb13d42ddd540c19ba1bbe74b322" + integrity sha512-Q3MXXQABG4CZBesSp82yV84uhJh/W0Gag6KPm2HRWPimSFELM09Z9/5WK9RItAYE0aLhe4Krnyiczn9AAa1tQQ== dependencies: prosemirror-changeset "^2.2.0" prosemirror-collab "^1.3.0" @@ -1851,17 +1846,17 @@ prosemirror-view "^1.28.2" "@tiptap/suggestion@^2.0.0-beta.195": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.1.11.tgz#3b814c317565b6adbc9dffa9312d7fd1e4e0ebed" - integrity sha512-AVMB4x1X3eU7QCO1A8URQK0W7ps5dsVzveIP7+c//Z/GYe8lFSGIUnEbLJdr6bwgPkRL56m7c9+oZqVST5wfjQ== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.1.12.tgz#a13782d1e625ec03b3f61b6839ecc95b6b685d3f" + integrity sha512-rhlLWwVkOodBGRMK0mAmE34l2a+BqM2Y7q1ViuQRBhs/6sZ8d83O4hARHKVwqT5stY4i1l7d7PoemV3uAGI6+g== "@tiptap/vue-3@^2.0.0-beta.96": - version "2.1.11" - resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.1.11.tgz#f1ba991a6db840541ae582d2e2fe510be9ae3962" - integrity sha512-PA0ep7W4cXh1jSXpXgR/eKjTbBxP8b0rIKmwLHOLVLaXz2fGFYt+HwKmtZSnYMTcf+CscXmbhmajBJZQJVJQwQ== + version "2.1.12" + resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.1.12.tgz#20f4d829f6c2487ca82c5a4750f6faa718a12aac" + integrity sha512-yAcfmWw/9jtIUbhb0uGQVI9NoPYgHRasX2sAGWnm9Al+0aJktgmQ3mLCifXfXfjyEbeMF0p2L6Ul8tO7eho7aQ== dependencies: - "@tiptap/extension-bubble-menu" "^2.1.11" - "@tiptap/extension-floating-menu" "^2.1.11" + "@tiptap/extension-bubble-menu" "^2.1.12" + "@tiptap/extension-floating-menu" "^2.1.12" "@tootallnate/once@2": version "2.0.0" @@ -1869,29 +1864,16 @@ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/chai-subset@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94" - integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw== + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.5.tgz#3fc044451f26985f45625230a7f22284808b0a9a" + integrity sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A== dependencies: "@types/chai" "*" "@types/chai@*", "@types/chai@^4.3.5": - version "4.3.6" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.6.tgz#7b489e8baf393d5dd1266fb203ddd4ea941259e6" - integrity sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw== - -"@types/eslint@^8.4.2": - version "8.44.3" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.3.tgz#96614fae4875ea6328f56de38666f582d911d962" - integrity sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" - integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== + version "4.3.10" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.10.tgz#2ad2959d1767edee5b0e4efb1a0cd2b500747317" + integrity sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg== "@types/estree@0.0.39": version "0.0.39" @@ -1899,9 +1881,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/flexsearch@^0.7.3": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@types/flexsearch/-/flexsearch-0.7.4.tgz#6e72bf21a8cc838d6d3449ddadc2745bcee3e239" - integrity sha512-R5ZZmhxOBquntySny8dWYLDGdPJlX9K6p6vcj1w5NWGQ33X4V8MEtdQXK5KFFR1j6o0RhbPMdLSVg5XULVn3oA== + version "0.7.6" + resolved "https://registry.yarnpkg.com/@types/flexsearch/-/flexsearch-0.7.6.tgz#240c11d16825c56833ec0c66eb1de3ea0e162a49" + integrity sha512-H5IXcRn96/gaDmo+rDl2aJuIJsob8dgOXDqf8K0t8rWZd1AFNaaspmRsElESiU+EWE33qfbFPgI0OC/B1g9FCA== "@types/fs-extra@^9.0.13": version "9.0.13" @@ -1911,24 +1893,24 @@ "@types/node" "*" "@types/geojson@*": - version "7946.0.11" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.11.tgz#012c17cb2256ad8de78560da851ab914a7b9b40e" - integrity sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg== + version "7946.0.13" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.13.tgz#e6e77ea9ecf36564980a861e24e62a095988775e" + integrity sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ== "@types/hammerjs@^2.0.41": - version "2.0.42" - resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.42.tgz#d7a53edbc51b2c13a9a759c45d7b5e61243d7dba" - integrity sha512-Xxk14BrwHnGi0xlURPRb+Y0UNn2w3cTkeFm7pKMsYOaNgH/kabbJLhcBoNIodwsbTz7Z8KcWjtDvlGH0nc0U9w== + version "2.0.44" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.44.tgz#d90637ee049c4cf44cd8fa0072afca2124f947be" + integrity sha512-pdGBkAh4ggfXAkiwgmTdROJe3mwvLWJYm6JiaAwCtskAU0Weh+JQyyMTbhvxjxD2n8sr8PrxVwyDzmpnK4pUrQ== "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== -"@types/json-schema@*", "@types/json-schema@^7.0.12": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" @@ -1936,35 +1918,35 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/leaflet.locatecontrol@^0.74": - version "0.74.2" - resolved "https://registry.yarnpkg.com/@types/leaflet.locatecontrol/-/leaflet.locatecontrol-0.74.2.tgz#ea922d57a7f58c7bb85405a7f57d2a5ef53d7a09" - integrity sha512-Eu3fGi0R3WDA4MQMiBTDQmcupABAVQtqh8XV/1ve1tct5IZGRB2BAEqUNCP7/LwFgMX3Da4Bxfah9mTPL3QE9g== + version "0.74.4" + resolved "https://registry.yarnpkg.com/@types/leaflet.locatecontrol/-/leaflet.locatecontrol-0.74.4.tgz#15cb1f3a5c49956da9dadeea7e65b0e53193ff09" + integrity sha512-JNS2WYI80KrR980DXjQyHnzFoNEy0Vjtt6f8gJvit6RBgRqsQw83rH0ZTtLCwpFHIKrjF/jvIPv/3Fhv4F4SUg== dependencies: "@types/leaflet" "*" "@types/leaflet.markercluster@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/leaflet.markercluster/-/leaflet.markercluster-1.5.2.tgz#83ad6f35bc144de942bb5dff78f4bbba3d4fc81d" - integrity sha512-Yfi5R0Fb0xc/qotTuqJDAX65XKRt6DauzIdsMTcgrrhgf8DpBOrqPV/jw8/zUjY8FetRd6QdnefNdNJKmG/+zA== + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/leaflet.markercluster/-/leaflet.markercluster-1.5.4.tgz#2ab43417cf3f6a42d0f1baf4e1c8f659cf1dc3a1" + integrity sha512-tfMP8J62+wfsVLDLGh5Zh1JZxijCaBmVsMAX78MkLPwvPitmZZtSin5aWOVRhZrCS+pEOZwNzexbfWXlY+7yjg== dependencies: "@types/leaflet" "*" "@types/leaflet@*", "@types/leaflet@^1.5.2": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.6.tgz#d58ecdbe9f1f383cb0a7133a020cd05bfe00a762" - integrity sha512-HakGTK5LBBWegNWsAmTlG55zN1zszYec7aG47/z6SzT90bW2vqjmbqk3YKAbrtveO+G7fSTKTYqVbIwAFnTrbg== + version "1.9.8" + resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.8.tgz#32162a8eaf305c63267e99470b9603b5883e63e8" + integrity sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg== dependencies: "@types/geojson" "*" "@types/linkify-it@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.3.tgz#15a0712296c5041733c79efe233ba17ae5a7587b" - integrity sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8" + integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== "@types/lodash@^4.14.141": - version "4.14.199" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" - integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== + version "4.14.201" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.201.tgz#76f47cb63124e806824b6c18463daf3e1d480239" + integrity sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ== "@types/markdown-it@^12.2.3": version "12.2.3" @@ -1975,39 +1957,36 @@ "@types/mdurl" "*" "@types/mdurl@*": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.3.tgz#d0aefccdd1a96f4bec76047d6b314601f0b0f3de" - integrity sha512-T5k6kTXak79gwmIOaDF2UUQXFbnBE0zBUzF20pz7wDYu0RQMzWg+Ml/Pz50214NsFHBITkoi5VtdjFZnJ2ijjA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.5.tgz#3e0d2db570e9fb6ccb2dc8fde0be1d79ac810d39" + integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== "@types/ngeohash@^0.6.2": - version "0.6.5" - resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.5.tgz#2acc86800f0c94e3be467291c53cef20cffb4448" - integrity sha512-MBQKbbrz6OB819PUGYbEjYmdymJKvzEDYU8zAjZ45JI4f6H0nYcSwTFBWHkX9h1Vk43KPl7gIa4sGZ/D5eQRlg== + version "0.6.7" + resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.7.tgz#f6634461fb275fda82bd61812e9a74d2029c8c8d" + integrity sha512-lnUfLArRbLUMG/8dvzDXXZt7VzMh3TQfTGBmKmq3+K+/x7tNjFwTNc//LbgPKQHpZxhG5ATemxbBLJI+Jx2Zag== "@types/node@*": - version "20.8.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.3.tgz#c4ae2bb1cfab2999ed441a95c122bbbe1567a66d" - integrity sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw== + version "20.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298" + integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw== + dependencies: + undici-types "~5.26.4" "@types/object.omit@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/object.omit/-/object.omit-3.0.1.tgz#1b9de058cf94344b9284308a41b17e3a356ed18e" - integrity sha512-24XD34UeRWw505TsMNBrQ4bES2s8IxiFC59mmNUFhTz9IX2hAtA7gQ8wVww1i17QmhBYILg5iqYP2y7aqA3pwQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/object.omit/-/object.omit-3.0.3.tgz#cc52b1d9774c1619b5c6fc50229d087f01eabd68" + integrity sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew== "@types/object.pick@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.2.tgz#9eb28118240ad8f658b9c9c6caf35359fdb37150" - integrity sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.4.tgz#1a38b6e69a35f36ec2dcc8b9f5ffd555c1c4d7fc" + integrity sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA== "@types/phoenix@^1.5.2": - version "1.6.2" - resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.2.tgz#9a3838b6f45c895b0d7d9072025abb7525933a86" - integrity sha512-I3mm7x5XIi+5NsIY3nfreY+H4PmQdyBwJ84SiUSOxSg1axwEPNmkKWYVm56y+emDpPPUL3cPzrLcgRWSd9gI7g== - -"@types/prettier@^2.6.0": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + version "1.6.4" + resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.4.tgz#cceac93a827555473ad38057d1df7d06eef1ed71" + integrity sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA== "@types/resolve@1.17.1": version "1.17.1" @@ -2017,16 +1996,16 @@ "@types/node" "*" "@types/sanitize-html@^2.5.0": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.9.1.tgz#6e4b232916cfb3ec0c4733c9899c99e1697ef953" - integrity sha512-XSLD0a9P8c+rKUM09KIi5Nd8mOHLHNgXb1G04rpXWa/GqQVpM+knrS9KR9ptj1CeC3gXWGZn75ApH3H6qNbhYA== + version "2.9.4" + resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.9.4.tgz#bfc2df463ec35904fecc57b29ba080e53732a140" + integrity sha512-Ym4hjmAFxF/eux7nW2yDPAj2o9RYh0vP/9V5ECoHtgJ/O9nPGslUd20CMn6WatRMlFVfjMTg3lMcWq8YyO6QnA== dependencies: htmlparser2 "^8.0.0" "@types/semver@^7.5.0": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.5" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" + integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== "@types/throttle-debounce@^2.1.0": version "2.1.0" @@ -2034,25 +2013,25 @@ integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== "@types/trusted-types@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.4.tgz#2b38784cd16957d3782e8e2b31c03bc1d13b4d65" - integrity sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.6.tgz#d12451beaeb9c3838f12024580dc500b7e88b0ad" + integrity sha512-HYtNooPvUY9WAVRBr4u+4Qa9fYD1ze2IUlAD3HoA6oehn1taGwBx3Oa52U4mTslTS+GAExKpaFu39Y5xUEwfjg== -"@types/web-bluetooth@^0.0.18": - version "0.0.18" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz#74bd1c8fd3a2058cb6fc76b188fcded50a83d866" - integrity sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw== +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== "@typescript-eslint/eslint-plugin@^6.7.0": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz#057338df21b6062c2f2fc5999fbea8af9973ac6d" - integrity sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA== + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz#52aae65174ff526576351f9ccd41cea01001463f" + integrity sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/type-utils" "6.7.4" - "@typescript-eslint/utils" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" + "@typescript-eslint/scope-manager" "6.11.0" + "@typescript-eslint/type-utils" "6.11.0" + "@typescript-eslint/utils" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -2060,171 +2039,124 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== +"@typescript-eslint/parser@^6.7.0", "@typescript-eslint/parser@^6.7.5": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.11.0.tgz#9640d9595d905f3be4f278bf515130e6129b202e" + integrity sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ== dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/scope-manager" "6.11.0" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/typescript-estree" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" debug "^4.3.4" -"@typescript-eslint/parser@^6.7.0": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.4.tgz#23d1dd4fe5d295c7fa2ab651f5406cd9ad0bd435" - integrity sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA== +"@typescript-eslint/scope-manager@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz#621f603537c89f4d105733d949aa4d55eee5cea8" + integrity sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A== dependencies: - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/typescript-estree" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" - debug "^4.3.4" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== +"@typescript-eslint/type-utils@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz#d0b8b1ab6c26b974dbf91de1ebc5b11fea24e0d1" + integrity sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz#a484a17aa219e96044db40813429eb7214d7b386" - integrity sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A== - dependencies: - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" - -"@typescript-eslint/type-utils@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.4.tgz#847cd3b59baf948984499be3e0a12ff07373e321" - integrity sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ== - dependencies: - "@typescript-eslint/typescript-estree" "6.7.4" - "@typescript-eslint/utils" "6.7.4" + "@typescript-eslint/typescript-estree" "6.11.0" + "@typescript-eslint/utils" "6.11.0" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== +"@typescript-eslint/types@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.11.0.tgz#8ad3aa000cbf4bdc4dcceed96e9b577f15e0bf53" + integrity sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA== -"@typescript-eslint/types@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.4.tgz#5d358484d2be986980c039de68e9f1eb62ea7897" - integrity sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== +"@typescript-eslint/typescript-estree@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz#7b52c12a623bf7f8ec7f8a79901b9f98eb5c7990" + integrity sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz#f2baece09f7bb1df9296e32638b2e1130014ef1a" - integrity sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ== - dependencies: - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/visitor-keys" "6.7.4" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/visitor-keys" "6.11.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.4.tgz#2236f72b10e38277ee05ef06142522e1de470ff2" - integrity sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA== +"@typescript-eslint/utils@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.11.0.tgz#11374f59ef4cea50857b1303477c08aafa2ca604" + integrity sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.7.4" - "@typescript-eslint/types" "6.7.4" - "@typescript-eslint/typescript-estree" "6.7.4" + "@typescript-eslint/scope-manager" "6.11.0" + "@typescript-eslint/types" "6.11.0" + "@typescript-eslint/typescript-estree" "6.11.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== +"@typescript-eslint/visitor-keys@6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz#d991538788923f92ec40d44389e7075b359f3458" + integrity sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ== dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.7.4": - version "6.7.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz#80dfecf820fc67574012375859085f91a4dff043" - integrity sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA== - dependencies: - "@typescript-eslint/types" "6.7.4" + "@typescript-eslint/types" "6.11.0" eslint-visitor-keys "^3.4.1" -"@unhead/dom@1.7.4", "@unhead/dom@^1.3.1": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.7.4.tgz#d6d5899245a0b4e16b01d08553bcde570f8eb00a" - integrity sha512-xanQMtGmgikqTvDtuyJy6GXgqvUXOdrdnIyqAabpeS8goD8udxo0stzjtbT8ERbMQibzPGSGcN+Ux+MKoWzrjQ== - dependencies: - "@unhead/schema" "1.7.4" - "@unhead/shared" "1.7.4" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@unhead/schema@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.7.4.tgz#c70526f481828c5a4217501a544cfc48a85c1e55" - integrity sha512-wUL4CK0NSEm3KH4kYsiqVYQw5xBk1hpBi5tiNj0BTZgpQVrRufICdK5EHA9Fh7OIAR6tOTWwTvsf5+nK0BgQDA== +"@unhead/dom@1.8.3", "@unhead/dom@^1.3.1": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.8.3.tgz#af0cc0cb182c5e6b9059d204e7003d5fbd1f7577" + integrity sha512-rPj9PiRTDf+Qy7tSK/UCGxwKfsOOQ+YniANxQy9v2AhWsDy2amW7kbfgR9fVaSlOFdpsyuh2wLCbMcyj9Wn0Jw== + dependencies: + "@unhead/schema" "1.8.3" + "@unhead/shared" "1.8.3" + +"@unhead/schema@1.8.3", "@unhead/schema@^1.3.1": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.8.3.tgz#dca988e9adcb1ce817bb4b7bf00258823e8f52af" + integrity sha512-3XbcJzdlyLr/RV2TKaygI21YorlU6XPgHn/MoWjQvH4PYiHkH8PtTGg8Je6k3gvcUURSiDfucFKaGEYdJXAVqQ== dependencies: hookable "^5.5.3" - zhead "^2.1.1" + zhead "^2.2.4" -"@unhead/schema@^1.3.1": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.7.5.tgz#2fd22803a74962fc4bf82b986705eac2971ebc8c" - integrity sha512-qmXRX8HoRS6OlIJGM1HMsP67+QFNKD7segptggHR7vrV+MaumVoIrzL1Tq5TPkk9hxeP38o1wnX+KCZiDKifXg== +"@unhead/shared@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.8.3.tgz#a216d158e28e61ba035b4359feea30fc4fa24f80" + integrity sha512-E1knEiAO0iENLzZd+LjWA4mUp8JRaSxo5V0vMjSENyf5hSVB/SxAVjDPmTIelLY7KrP5mJrNMen2ZmQrr/AZJw== dependencies: - hookable "^5.5.3" - zhead "^2.1.2" - -"@unhead/shared@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.7.4.tgz#4ebab1809e96e633b18727c40cc042bf3ab6adcc" - integrity sha512-YUNA2UxAuDPnDps41BQ8aEIY5hdyvruSB1Vs3AALhRo07MxMivSq5DjNKfYr/JvRN6593RtfI1NHnP9x5M57xA== - dependencies: - "@unhead/schema" "1.7.4" + "@unhead/schema" "1.8.3" "@unhead/ssr@^1.3.1": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@unhead/ssr/-/ssr-1.7.4.tgz#c0fde1eb6e5cb0a8d2571ac4205d10efdb4e8e79" - integrity sha512-2QqaHdC48XJGP9Pd0F2fblPv9/6G4IU04iZ5qLRAs6MFFmFEzrdvoooFlcwdcoH/WDGRnpYBmo+Us2nzQz1MMQ== + version "1.8.3" + resolved "https://registry.yarnpkg.com/@unhead/ssr/-/ssr-1.8.3.tgz#85c4e485ca7326706eb6b59c082c5c5a9e091ee4" + integrity sha512-GSTkUCL4qymGkPU8BXiV74Epj0yyXJgmfTSJ3EqalpQTYyJHl910Mq2oDWk7Xyl5lHBrz2Bn0lzNXfSkS7Ao0Q== dependencies: - "@unhead/schema" "1.7.4" - "@unhead/shared" "1.7.4" + "@unhead/schema" "1.8.3" + "@unhead/shared" "1.8.3" "@unhead/vue@^1.3.1": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-1.7.4.tgz#2869e7d8114de9f460d1c4e2ce4db82196eda909" - integrity sha512-ZfgzOhg1Bxo9xwp3upawqerw4134hc9Lhz6t005ixcBwPX+39Wpgc9dC3lf+owFQEVuWkf8F+eAwK2sghVBK4A== + version "1.8.3" + resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-1.8.3.tgz#409ccc5a0f72b1f38db4e5d6ea358bb66b126b9e" + integrity sha512-sj/1VosMreUQXd68rn5jDLdpgFVdN0mKrjW/8eZMWbomZkzbzs7FxyRUApd584xNjFVdtyWrTepmrNSKmEwKgg== dependencies: - "@unhead/schema" "1.7.4" - "@unhead/shared" "1.7.4" + "@unhead/schema" "1.8.3" + "@unhead/shared" "1.8.3" hookable "^5.5.3" - unhead "1.7.4" + unhead "1.8.3" "@vitejs/plugin-vue@^4.0.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz#8ae96573236cdb12de6850a6d929b5537ec85390" - integrity sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.1.tgz#5050895fb8b2258d2f228110849df4a8a94b9038" + integrity sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA== "@vitest/coverage-v8@^0.34.1": version "0.34.6" @@ -2325,52 +2257,52 @@ ts-essentials "^9.4.0" vue-demi "^0.14.6" -"@vue/compiler-core@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128" - integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g== +"@vue/compiler-core@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313" + integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g== dependencies: - "@babel/parser" "^7.21.3" - "@vue/shared" "3.3.4" + "@babel/parser" "^7.23.0" + "@vue/shared" "3.3.8" estree-walker "^2.0.2" source-map-js "^1.0.2" -"@vue/compiler-dom@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151" - integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w== +"@vue/compiler-dom@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b" + integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ== dependencies: - "@vue/compiler-core" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" -"@vue/compiler-sfc@3.3.4", "@vue/compiler-sfc@^3.2.37": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df" - integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ== +"@vue/compiler-sfc@3.3.8", "@vue/compiler-sfc@^3.2.37": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1" + integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA== dependencies: - "@babel/parser" "^7.20.15" - "@vue/compiler-core" "3.3.4" - "@vue/compiler-dom" "3.3.4" - "@vue/compiler-ssr" "3.3.4" - "@vue/reactivity-transform" "3.3.4" - "@vue/shared" "3.3.4" + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-ssr" "3.3.8" + "@vue/reactivity-transform" "3.3.8" + "@vue/shared" "3.3.8" estree-walker "^2.0.2" - magic-string "^0.30.0" - postcss "^8.1.10" + magic-string "^0.30.5" + postcss "^8.4.31" source-map-js "^1.0.2" -"@vue/compiler-ssr@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777" - integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ== +"@vue/compiler-ssr@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce" + integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w== dependencies: - "@vue/compiler-dom" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-dom" "3.3.8" + "@vue/shared" "3.3.8" "@vue/devtools-api@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" - integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== + version "6.5.1" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" + integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== "@vue/eslint-config-prettier@^8.0.0": version "8.0.0" @@ -2389,70 +2321,70 @@ "@typescript-eslint/parser" "^6.7.0" vue-eslint-parser "^9.3.1" -"@vue/reactivity-transform@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929" - integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw== +"@vue/reactivity-transform@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2" + integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw== dependencies: - "@babel/parser" "^7.20.15" - "@vue/compiler-core" "3.3.4" - "@vue/shared" "3.3.4" + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" estree-walker "^2.0.2" - magic-string "^0.30.0" + magic-string "^0.30.5" -"@vue/reactivity@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253" - integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ== +"@vue/reactivity@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d" + integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw== dependencies: - "@vue/shared" "3.3.4" + "@vue/shared" "3.3.8" -"@vue/runtime-core@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1" - integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA== +"@vue/runtime-core@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb" + integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw== dependencies: - "@vue/reactivity" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/reactivity" "3.3.8" + "@vue/shared" "3.3.8" -"@vue/runtime-dom@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566" - integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ== +"@vue/runtime-dom@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4" + integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA== dependencies: - "@vue/runtime-core" "3.3.4" - "@vue/shared" "3.3.4" - csstype "^3.1.1" + "@vue/runtime-core" "3.3.8" + "@vue/shared" "3.3.8" + csstype "^3.1.2" -"@vue/server-renderer@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c" - integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ== +"@vue/server-renderer@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2" + integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg== dependencies: - "@vue/compiler-ssr" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-ssr" "3.3.8" + "@vue/shared" "3.3.8" -"@vue/shared@3.3.4": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" - integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== +"@vue/shared@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d" + integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw== "@vue/test-utils@^2.0.2": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.1.tgz#7db869b4142d2a5fce4ad6c6dfa01c8ea524f26c" - integrity sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg== + version "2.4.2" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.2.tgz#43ce99c4e2eab0adbf1220257dc9974bc5ae38a7" + integrity sha512-07lLjpG1o9tEBoWQfVOFhDT7+WFCdDeECoeSdzOuVgIi6nxb2JDLGNNOV6+3crPpyg/jMlIocj96UROcgomiGg== dependencies: - js-beautify "1.14.9" - vue-component-type-helpers "1.8.4" + js-beautify "^1.14.9" + vue-component-type-helpers "^1.8.21" "@vueuse/core@^10.0.2": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.5.0.tgz#04d1e6d26592bb997bb755a4830ea7583c3e8612" - integrity sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A== + version "10.6.1" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.6.1.tgz#5b16d8238054c6983b6cb7cd77a78035f098dd89" + integrity sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q== dependencies: - "@types/web-bluetooth" "^0.0.18" - "@vueuse/metadata" "10.5.0" - "@vueuse/shared" "10.5.0" + "@types/web-bluetooth" "^0.0.20" + "@vueuse/metadata" "10.6.1" + "@vueuse/shared" "10.6.1" vue-demi ">=0.14.6" "@vueuse/head@^1.0": @@ -2465,37 +2397,37 @@ "@unhead/ssr" "^1.3.1" "@unhead/vue" "^1.3.1" -"@vueuse/metadata@10.5.0": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.5.0.tgz#7501a88cf5cbf7a515a03f0b8bbe3cecf30cad11" - integrity sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw== +"@vueuse/metadata@10.6.1": + version "10.6.1" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.6.1.tgz#100faa0ced3c0ab4c014fb8e66e781e85e4eb88d" + integrity sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw== "@vueuse/router@^10.0.2": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-10.5.0.tgz#12f22e197abf833b9082f5d79d0916fd0a0e43a6" - integrity sha512-KboRSnSTaRBvKiwhCJ9RJHidaUMy5+5RyAwq46IPovVtKm9nIUfV0/F8dPwYx36rxAWn9iNWZUbKfu4cGW3XuA== + version "10.6.1" + resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-10.6.1.tgz#34fccd572d4d679338415ec4b9ba4ce081615c1f" + integrity sha512-9EMf30SownmxYKC3h36tl8uALSBGFkz3Dc2n+lQgJuyOYPIO/VotzDdkBxuEoHYKaCWw2JQa/S1q+t8NR26PvQ== dependencies: - "@vueuse/shared" "10.5.0" + "@vueuse/shared" "10.6.1" vue-demi ">=0.14.6" -"@vueuse/shared@10.5.0": - version "10.5.0" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.5.0.tgz#b3ac8c190a5dae41db5e1b60fe304a9b4247393c" - integrity sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg== +"@vueuse/shared@10.6.1": + version "10.6.1" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.6.1.tgz#1d9fc1e3f9083e45b59a693fc372bc50ad62a9e4" + integrity sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q== dependencies: vue-demi ">=0.14.6" "@wry/context@^0.7.0", "@wry/context@^0.7.3": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.3.tgz#240f6dfd4db5ef54f81f6597f6714e58d4f476a1" - integrity sha512-Nl8WTesHp89RF803Se9X3IiHjdmLBrIvPMaJkl+rKVJAYyPsz1TEUbu89943HpvujtSJgDUx9W4vZw3K1Mr3sA== + version "0.7.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" + integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== dependencies: tslib "^2.3.0" "@wry/equality@^0.5.6": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.6.tgz#cd4a533c72c3752993ab8cbf682d3d20e3cb601e" - integrity sha512-D46sfMTngaYlrH+OspKf8mIJETntFnf6Hsjb0V41jAXJ7Bx2kB8Rv8RCUujuVWYttFtHkUNp7g+FwxNQAr6mXA== + version "0.5.7" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" + integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== dependencies: tslib "^2.3.0" @@ -2511,10 +2443,10 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -abbrev@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== acorn-globals@^7.0.0: version "7.0.1" @@ -2530,14 +2462,14 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.2, acorn-walk@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== acorn@^8.1.0, acorn@^8.10.0, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== agent-base@6: version "6.0.2" @@ -2578,11 +2510,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -2598,7 +2525,7 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -2669,7 +2596,7 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-includes@^3.1.6: +array-includes@^3.1.7: version "3.1.7" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== @@ -2685,7 +2612,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlastindex@^1.2.2: +array.prototype.findlastindex@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== @@ -2696,7 +2623,7 @@ array.prototype.findlastindex@^1.2.2: es-shim-unscopables "^1.0.0" get-intrinsic "^1.2.1" -array.prototype.flat@^1.3.1: +array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -2706,7 +2633,7 @@ array.prototype.flat@^1.3.1: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1: +array.prototype.flatmap@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== @@ -2740,9 +2667,9 @@ async-queue-chain@^1.1.0: integrity sha512-O/qRg8ptgcy7h7QzBMZ0OltUioYYr69/sxpH/ReTK991s3G8pMZFQS2fe8NQpjpKK7nUS/yO+4jCJKaA8KeaeA== async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== asynckit@^0.4.0: version "0.4.0" @@ -2771,29 +2698,29 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -babel-plugin-polyfill-corejs2@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" - integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" - integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.32.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" -babel-plugin-polyfill-regenerator@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" - integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" babel-polyfill@6.26.0: version "6.26.0" @@ -2908,13 +2835,14 @@ cac@^6.7.12, cac@^6.7.14: resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -2935,9 +2863,9 @@ camelcase-css@^2.0.1: integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001546" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz#10fdad03436cfe3cc632d3af7a99a0fb497407f0" - integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== + version "1.0.30001562" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001562.tgz#9d16c5fd7e9c592c4cd5e304bc0f75b0008b2759" + integrity sha512-kfte3Hym//51EdX4239i+Rmp20EsLIYGdPkERegTgU19hQWCRhsRFGKHTliUlsry53tv17K7n077Kqa0WJU4ng== capital-case@^1.0.4: version "1.0.4" @@ -3099,10 +3027,10 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" - integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== +commander@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== commander@^10.0.0: version "10.0.1" @@ -3161,10 +3089,10 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" + integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== dependencies: browserslist "^4.22.1" @@ -3188,7 +3116,7 @@ crelt@^1.0.0, crelt@^1.0.5: resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3231,7 +3159,7 @@ cssstyle@^3.0.0: dependencies: rrweb-cssom "^0.6.0" -csstype@^3.1.1: +csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -3332,10 +3260,10 @@ default-browser@^4.0.0: execa "^7.1.1" titleize "^3.0.0" -define-data-property@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" - integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: get-intrinsic "^1.2.1" gopd "^1.0.1" @@ -3361,9 +3289,9 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: object-keys "^1.1.1" defu@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" - integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== + version "6.1.3" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.3.tgz#6d7f56bc61668e844f9f593ace66fd67ef1205fd" + integrity sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ== delayed-stream@~1.0.0: version "1.0.0" @@ -3492,9 +3420,9 @@ ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.535: - version "1.4.544" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.544.tgz#fcb156d83f0ee6e4c9d030c6fedb2a37594f3abf" - integrity sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w== + version "1.4.582" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.582.tgz#4908215182266793499ac57d80e2680d7dd9b3db" + integrity sha512-89o0MGoocwYbzqUUjc+VNpeOFSOK9nIdC5wY4N+PVUarUK0MtjyTjks75AZS2bW4Kl8MdewdFsWaH0jLy+JNoA== emoji-regex@^8.0.0: version "8.0.0" @@ -3527,25 +3455,25 @@ entities@~3.0.1: integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== es-abstract@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" - integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -3555,7 +3483,7 @@ es-abstract@^1.22.1: is-string "^1.0.7" is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.5.1" @@ -3569,23 +3497,23 @@ es-abstract@^1.22.1: typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.11" + which-typed-array "^1.1.13" es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -3665,7 +3593,7 @@ eslint-config-prettier@^9.0.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== -eslint-import-resolver-node@^0.3.7: +eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== @@ -3682,40 +3610,40 @@ eslint-module-utils@^2.8.0: debug "^3.2.7" eslint-plugin-import@^2.20.2: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + version "2.29.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" + eslint-import-resolver-node "^0.3.9" eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" + hasown "^2.0.0" + is-core-module "^2.13.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.6" - object.groupby "^1.0.0" - object.values "^1.1.6" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" semver "^6.3.1" tsconfig-paths "^3.14.2" eslint-plugin-prettier@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" - integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" + integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== dependencies: prettier-linter-helpers "^1.0.0" synckit "^0.8.5" eslint-plugin-vue@^9.3.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz#4501547373f246547083482838b4c8f4b28e5932" - integrity sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ== + version "9.18.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz#73cf29df7450ce5913296465f8d1dc545344920c" + integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" natural-compare "^1.4.0" @@ -3725,7 +3653,7 @@ eslint-plugin-vue@^9.3.0: vue-eslint-parser "^9.3.1" xml-name-validator "^4.0.0" -eslint-scope@^7.0.0, eslint-scope@^7.1.1, eslint-scope@^7.2.2: +eslint-scope@^7.1.1, eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== @@ -3733,23 +3661,24 @@ eslint-scope@^7.0.0, eslint-scope@^7.1.1, eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.21.0, eslint@^8.7.0: - version "8.51.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" - integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + version "8.53.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" + integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.51.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.53.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -3781,7 +3710,7 @@ eslint@^8.21.0, eslint@^8.7.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.0.0, espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: +espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -3834,19 +3763,19 @@ eventemitter3@^5.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -execa@7.2.0, execa@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" - integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== +execa@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== dependencies: cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" + get-stream "^8.0.1" + human-signals "^5.0.0" is-stream "^3.0.0" merge-stream "^2.0.0" npm-run-path "^5.1.0" onetime "^6.0.0" - signal-exit "^3.0.7" + signal-exit "^4.1.0" strip-final-newline "^3.0.0" execa@^5.0.0: @@ -3864,6 +3793,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -3886,10 +3830,10 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -3962,9 +3906,9 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" - integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" keyv "^4.5.3" @@ -4010,6 +3954,14 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -4020,9 +3972,9 @@ form-data@^4.0.0: mime-types "^2.1.12" fraction.js@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d" - integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== fs-extra@^10.1.0: version "10.1.0" @@ -4058,10 +4010,10 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.6: version "1.1.6" @@ -4088,20 +4040,20 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0, get-func-name@^2.0.2: +get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" @@ -4113,6 +4065,11 @@ get-stream@^6.0.0, get-stream@^6.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -4147,6 +4104,17 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.3.3: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + glob@^7.1.3, glob@^7.1.4, glob@^7.1.5, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -4159,7 +4127,7 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.5, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1, glob@^8.1.0: +glob@^8.0.1: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -4243,7 +4211,7 @@ graphql@14.0.2: dependencies: iterall "^1.2.2" -graphql@^15.0.0, graphql@^15.8.0: +graphql@^15.0.0: version "15.8.0" resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== @@ -4291,11 +4259,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -4314,10 +4282,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" - integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" header-case@^2.0.4: version "2.0.4" @@ -4328,15 +4298,15 @@ header-case@^2.0.4: tslib "^2.0.3" histoire@^0.17.0: - version "0.17.2" - resolved "https://registry.yarnpkg.com/histoire/-/histoire-0.17.2.tgz#f0a1a88172a79918c7e3c2bd7743714cfbbf14e3" - integrity sha512-Mz+4AWBs+P2TeopXJ0qG4ZsrpuLggNPNF3yG4Q8yg8kXcd6a9DXUWuEElYbglod/xP5XB8efaDy2nibLTybJzg== + version "0.17.5" + resolved "https://registry.yarnpkg.com/histoire/-/histoire-0.17.5.tgz#9cb48ec6104eb774e1970d308c1248ebb4eece45" + integrity sha512-1Zr/oQbqpsW8K7X/4UHKR2ycdatOvBsVk3oSJ4IyughtmdfyvAvi6YOch38NEbEElqObB446ZrWzESadLorekQ== dependencies: "@akryum/tinypool" "^0.3.1" - "@histoire/app" "^0.17.0" - "@histoire/controls" "^0.17.0" - "@histoire/shared" "^0.17.0" - "@histoire/vendors" "^0.17.0" + "@histoire/app" "^0.17.5" + "@histoire/controls" "^0.17.4" + "@histoire/shared" "^0.17.5" + "@histoire/vendors" "^0.17.4" "@types/flexsearch" "^0.7.3" "@types/markdown-it" "^12.2.3" birpc "^0.1.1" @@ -4357,7 +4327,7 @@ histoire@^0.17.0: markdown-it-emoji "^2.0.2" micromatch "^4.0.5" mrmime "^1.0.1" - pathe "^0.2.0" + pathe "^1.1.1" picocolors "^1.0.0" sade "^1.8.1" shiki-es "^0.2.0" @@ -4425,6 +4395,11 @@ human-signals@^4.3.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + husky@^8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" @@ -4489,12 +4464,12 @@ ini@^1.3.4: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" intersection-observer@^0.12.0: @@ -4538,12 +4513,12 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1: version "1.0.5" @@ -4738,9 +4713,9 @@ isobject@^3.0.1: integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: version "3.0.1" @@ -4773,6 +4748,15 @@ iterall@^1.2.2: resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: version "10.8.7" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" @@ -4792,20 +4776,20 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" -jiti@^1.18.2, jiti@^1.19.1: - version "1.20.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" - integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== +jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== -js-beautify@1.14.9: - version "1.14.9" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.9.tgz#a5db728bc5a0d84d3b1a597c376b29bd4d39c8e5" - integrity sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg== +js-beautify@^1.14.9: + version "1.14.11" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.11.tgz#57b17e009549ac845bdc58eddf8e1862e311314e" + integrity sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw== dependencies: config-chain "^1.1.13" editorconfig "^1.0.3" - glob "^8.1.0" - nopt "^6.0.0" + glob "^10.3.3" + nopt "^7.2.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -4954,10 +4938,10 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -jwt-decode@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" - integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== +jwt-decode@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" + integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== keyv@^4.5.3: version "4.5.4" @@ -5032,30 +5016,30 @@ linkify-it@^4.0.1: uc.micro "^1.0.1" linkifyjs@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.1.tgz#73d427e3bbaaf4ca8e71c589ad4ffda11a9a5fde" - integrity sha512-zFN/CTVmbcVef+WaDXT63dNzzkfRBKT1j464NJQkV7iSgJU0sLBus9W0HBwnXK13/hf168pbrx/V/bjEHOXNHA== + version "4.1.2" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.2.tgz#48fadb05ddf5a5f7065510a385a500ca1ac4e65e" + integrity sha512-1elJrH8MwUgr77Rgmx4JgB/nBgISYVoGossH6pAfCeHG+07TblTn6RWKx0MKozEMJU6NCFYHRih9M8ZtV3YZ+Q== -lint-staged@^14.0.1: - version "14.0.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-14.0.1.tgz#57dfa3013a3d60762d9af5d9c83bdb51291a6232" - integrity sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw== +lint-staged@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.1.0.tgz#c0f8e4d96ac3c09beac5c76d08524d6000c207b4" + integrity sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw== dependencies: chalk "5.3.0" - commander "11.0.0" + commander "11.1.0" debug "4.3.4" - execa "7.2.0" + execa "8.0.1" lilconfig "2.1.0" - listr2 "6.6.1" + listr2 "7.0.2" micromatch "4.0.5" pidtree "0.6.0" string-argv "0.3.2" - yaml "2.3.1" + yaml "2.3.4" -listr2@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-6.6.1.tgz#08b2329e7e8ba6298481464937099f4a2cd7f95d" - integrity sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg== +listr2@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-7.0.2.tgz#3aa3e1549dfaf3c57ab5eeaba754da3b87f33063" + integrity sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g== dependencies: cli-truncate "^3.1.0" colorette "^2.0.20" @@ -5138,11 +5122,11 @@ loose-envify@^1.4.0: js-tokens "^3.0.0 || ^4.0.0" loupe@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" - integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: - get-func-name "^2.0.0" + get-func-name "^2.0.1" lower-case@^2.0.2: version "2.0.2" @@ -5165,6 +5149,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +"lru-cache@^9.1.1 || ^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.2.tgz#34504678cc3266b09b8dfd6fab4e1515258271b7" + integrity sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg== + dependencies: + semver "^7.3.5" + magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -5172,10 +5163,10 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -magic-string@^0.30.0, magic-string@^0.30.1: - version "0.30.4" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.4.tgz#c2c683265fc18dda49b56fc7318d33ca0332c98c" - integrity sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg== +magic-string@^0.30.1, magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -5299,11 +5290,23 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + mlly@^1.2.0, mlly@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" @@ -5354,9 +5357,9 @@ mz@^2.7.0: thenify-all "^1.0.0" nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== natural-compare@^1.4.0: version "1.4.0" @@ -5381,12 +5384,12 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -nopt@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== +nopt@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" + integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA== dependencies: - abbrev "^1.0.0" + abbrev "^2.0.0" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -5434,10 +5437,10 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -5454,7 +5457,7 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.fromentries@^2.0.6: +object.fromentries@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== @@ -5463,7 +5466,7 @@ object.fromentries@^2.0.6: define-properties "^1.2.0" es-abstract "^1.22.1" -object.groupby@^1.0.0: +object.groupby@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== @@ -5487,7 +5490,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.6: +object.values@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== @@ -5668,6 +5671,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -5689,9 +5700,9 @@ pathval@^1.1.1: integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== phoenix@^1.6: - version "1.7.8" - resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.7.8.tgz#edb3d14beca0b97b72b1a00ea45fbdd966ae7028" - integrity sha512-8eerNe5BFJ6tPa0Uh47ape129JqoOzjmY3HiLh/9KOOJcfSzMU3uICdA0+xV/Z1wO/nDa/DdS6qwwpbtrSYXHQ== + version "1.7.10" + resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.7.10.tgz#e7951219e3128c6f9d1fe8e551180097623c6498" + integrity sha512-akfr/QvLPFRB8sORyc8FQFY/YoGwjWhka/YRcu45sKlBOZHvA80EkLYBUsYlW63UicxgrXABZdrjDkv54LTE+g== picocolors@^1.0.0: version "1.0.0" @@ -5732,17 +5743,17 @@ plausible-tracker@^0.3.4: resolved "https://registry.yarnpkg.com/plausible-tracker/-/plausible-tracker-0.3.8.tgz#9b8b322cc41e0e1d6473869ef234deea365a5a40" integrity sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg== -playwright-core@1.38.1: - version "1.38.1" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.38.1.tgz#75a3c470aa9576b7d7c4e274de3d79977448ba08" - integrity sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg== +playwright-core@1.39.0: + version "1.39.0" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.39.0.tgz#efeaea754af4fb170d11845b8da30b2323287c63" + integrity sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw== -playwright@1.38.1: - version "1.38.1" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.38.1.tgz#82ecd9bc4f4f64dbeee8a11c31793748e2528130" - integrity sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow== +playwright@1.39.0: + version "1.39.0" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.39.0.tgz#184c81cd6478f8da28bcd9e60e94fcebf566e077" + integrity sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw== dependencies: - playwright-core "1.38.1" + playwright-core "1.39.0" optionalDependencies: fsevents "2.3.2" @@ -5798,7 +5809,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8, postcss@^8.1.10, postcss@^8.3.11, postcss@^8.4.23, postcss@^8.4.27: +postcss@^8, postcss@^8.3.11, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -5812,25 +5823,23 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier-eslint@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-15.0.1.tgz#2543a43e9acec2a9767ad6458165ce81f353db9c" - integrity sha512-mGOWVHixSvpZWARqSDXbdtTL54mMBxc5oQYQ6RAqy8jecuNJBgN3t9E5a81G66F8x8fsKNiR1HWaBV66MJDOpg== +prettier-eslint@^16.1.2: + version "16.1.2" + resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-16.1.2.tgz#86364fea13dd063f3df715b922678dd8a0fd4be1" + integrity sha512-mGFGZQbAh11FSnwW3H1zngzQYR2QMmHO8vdfgnAuzOFhnDeUZHYtwpqQvOMOMT0k818Dr1X+J4a/sVE0r34RKQ== dependencies: - "@types/eslint" "^8.4.2" - "@types/prettier" "^2.6.0" - "@typescript-eslint/parser" "^5.10.0" + "@typescript-eslint/parser" "^6.7.5" common-tags "^1.4.0" dlv "^1.1.0" eslint "^8.7.0" indent-string "^4.0.0" lodash.merge "^4.6.0" loglevel-colored-level-prefix "^1.0.0" - prettier "^2.5.1" - pretty-format "^23.0.1" + prettier "^3.0.1" + pretty-format "^29.7.0" require-relative "^0.8.7" - typescript "^4.5.4" - vue-eslint-parser "^8.0.1" + typescript "^5.2.2" + vue-eslint-parser "^9.1.0" prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -5839,15 +5848,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.5.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" - integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== +prettier@^3.0.0, prettier@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" + integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== pretty-bytes@^5.3.0: version "5.6.0" @@ -5859,15 +5863,7 @@ pretty-bytes@^6.1.1: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b" integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== -pretty-format@^23.0.1: - version "23.6.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -pretty-format@^29.5.0: +pretty-format@^29.5.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -6031,9 +6027,9 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor prosemirror-model "^1.0.0" prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0: - version "1.32.0" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.32.0.tgz#2022538d02932c0901232d1e0430c064f79a8ea2" - integrity sha512-HwW7IWgca6ehiW2PA48H/8yl0TakA0Ms5LgN5Krc97oar7GfjIKE/NocUsLe74Jq4mwyWKUNoBljE8WkXKZwng== + version "1.32.4" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.32.4.tgz#c8f24bab3bcc8b57bcfb62490fc468180559f51b" + integrity sha512-WoT+ZYePp0WQvp5coABAysheZg9WttW3TSEUNgsfDQXmVOJlnjkbFbXicKPvWFLiC0ZjKt1ykbyoVKqhVnCiSQ== dependencies: prosemirror-model "^1.16.0" prosemirror-state "^1.0.0" @@ -6050,9 +6046,9 @@ psl@^1.1.33: integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== querystringify@^2.1.1: version "2.2.0" @@ -6193,9 +6189,9 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.6" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" - integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" @@ -6345,9 +6341,9 @@ sanitize-html@^2.5.3: postcss "^8.3.11" sass@^1.34.1: - version "1.69.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.0.tgz#5195075371c239ed556280cf2f5944d234f42679" - integrity sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ== + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde" + integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -6373,7 +6369,7 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: +semver@^7.3.5, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -6396,6 +6392,16 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -6446,6 +6452,11 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + sirv@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446" @@ -6537,16 +6548,16 @@ statuses@~1.5.0: integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== std-env@^3.3.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.4.3.tgz#326f11db518db751c83fd58574f449b7c3060910" - integrity sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q== + version "3.5.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.5.0.tgz#83010c9e29bd99bf6f605df87c19012d82d63b97" + integrity sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA== string-argv@0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6555,7 +6566,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.0, string-width@^5.0.1: +string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== @@ -6615,6 +6626,13 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -6622,13 +6640,6 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -6734,19 +6745,19 @@ synckit@^0.8.5: tslib "^2.5.0" tailwindcss@^3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf" - integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w== + version "3.3.5" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8" + integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" chokidar "^3.5.3" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.2.12" + fast-glob "^3.3.0" glob-parent "^6.0.2" is-glob "^4.0.3" - jiti "^1.18.2" + jiti "^1.19.1" lilconfig "^2.1.0" micromatch "^4.0.5" normalize-path "^3.0.0" @@ -6777,9 +6788,9 @@ tempy@^0.6.0: unique-string "^2.0.0" terser@^5.0.0: - version "5.21.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" - integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== + version "5.24.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" + integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -6931,23 +6942,16 @@ tsconfig-paths@^3.14.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, "tslib@^2.4.1 || ^1.9.3", tslib@^2.5.0, tslib@^2.6.0: +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.5.0, tslib@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -7019,12 +7023,7 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@^4.5.4: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -typescript@~5.2.2: +typescript@^5.2.2, typescript@~5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== @@ -7049,19 +7048,24 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unfetch@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-5.0.0.tgz#8a5b6e5779ebe4dde0049f7d7a81d4a1af99d142" integrity sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg== -unhead@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.7.4.tgz#acf3e01b2a035ba6101cb34e41a72277025284b0" - integrity sha512-oOv+9aQS85DQUd0f1uJBtb2uG3SKwCURSTuUWp9WKKzANCb1TjW2dWp5TFmJH5ILF6urXi4uUQfjK+SawzBJAA== +unhead@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.8.3.tgz#d6a609d7e4ce5fcd5a7e161164e73ebf7daa97f1" + integrity sha512-2/5NJs7nY1MgCkUNuyevALM9nSgGp2loRv5QPhYyZXUPdF+F76CpKvkqATEOEJ/1yDzWjCaWrNh4u5lS6BEioA== dependencies: - "@unhead/dom" "1.7.4" - "@unhead/schema" "1.7.4" - "@unhead/shared" "1.7.4" + "@unhead/dom" "1.8.3" + "@unhead/schema" "1.8.3" + "@unhead/shared" "1.8.3" hookable "^5.5.3" unicode-canonical-property-names-ecmascript@^2.0.0: @@ -7100,9 +7104,9 @@ universalify@^0.2.0: integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== unpipe@~1.0.0: version "1.0.0" @@ -7188,9 +7192,9 @@ vite-node@0.34.6, vite-node@^0.34.1: vite "^3.0.0 || ^4.0.0 || ^5.0.0-0" vite-plugin-pwa@^0.16.4: - version "0.16.5" - resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.16.5.tgz#863ae3ffe0a7b1183da94e4b5cf6966878c30308" - integrity sha512-Ahol4dwhMP2UHPQXkllSlXbihOaDFnvBIDPmAxoSZ1EObBUJGP4CMRyCyAVkIHjd6/H+//vH0DM2ON+XxHr81g== + version "0.16.7" + resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.16.7.tgz#3dcacc342766ff3598472ac7d5e0782d14e2853e" + integrity sha512-4WMA5unuKlHs+koNoykeuCfTcqEGbiTRr8sVYUQMhc6tWxZpSRnv9Ojk4LKmqVhoPGHfBVCdGaMo8t9Qidkc1Q== dependencies: debug "^4.3.4" fast-glob "^3.3.1" @@ -7199,9 +7203,9 @@ vite-plugin-pwa@^0.16.4: workbox-window "^7.0.0" "vite@^3.0.0 || ^4.0.0 || ^5.0.0-0", "vite@^3.1.0 || ^4.0.0 || ^5.0.0-0", vite@^4.0.4: - version "4.4.11" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.11.tgz#babdb055b08c69cfc4c468072a2e6c9ca62102b0" - integrity sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A== + version "4.5.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" + integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== dependencies: esbuild "^0.18.10" postcss "^8.4.27" @@ -7239,10 +7243,10 @@ vitest@^0.34.1: vite-node "0.34.6" why-is-node-running "^2.2.2" -vue-component-type-helpers@1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-1.8.4.tgz#302d85fac912519cdf0dd2fb51402e5215d85628" - integrity sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ== +vue-component-type-helpers@^1.8.21: + version "1.8.22" + resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-1.8.22.tgz#24c1f324885e5652c7bcc5d9cbd76800b0af3809" + integrity sha512-LK3wJHs3vJxHG292C8cnsRusgyC5SEZDCzDCD01mdE/AoREFMl2tzLRuzwyuEsOIz13tqgBcnvysN3Lxsa14Fw== vue-demi@>=0.14.6, vue-demi@^0.14.6: version "0.14.6" @@ -7254,20 +7258,7 @@ vue-demi@^0.13.1: resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99" integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== -vue-eslint-parser@^8.0.1: - version "8.3.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz#5d31129a1b3dd89c0069ca0a1c88f970c360bd0d" - integrity sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g== - dependencies: - debug "^4.3.2" - eslint-scope "^7.0.0" - eslint-visitor-keys "^3.1.0" - espree "^9.0.0" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.5" - -vue-eslint-parser@^9.3.1: +vue-eslint-parser@^9.1.0, vue-eslint-parser@^9.3.1: version "9.3.2" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz#6f9638e55703f1c77875a19026347548d93fd499" integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== @@ -7292,12 +7283,12 @@ vue-i18n-extract@^2.0.4: js-yaml "^4.1.0" vue-i18n@9: - version "9.5.0" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.5.0.tgz#361a820f591f6d9689435a42763fd1dae224833b" - integrity sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg== + version "9.6.5" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.6.5.tgz#3a0bdc1e339ded633dc90aee640a7249efdfe3e5" + integrity sha512-dpUEjKHg7pEsaS7ZPPxp1CflaR7bGmsvZJEhnszHPKl9OTNyno5j/DvMtMSo41kpddq4felLA7GK2prjpnXVlw== dependencies: - "@intlify/core-base" "9.5.0" - "@intlify/shared" "9.5.0" + "@intlify/core-base" "9.6.5" + "@intlify/shared" "9.6.5" "@vue/devtools-api" "^6.5.0" vue-material-design-icons@^5.1.2: @@ -7345,15 +7336,15 @@ vue-use-route-query@^1.1.0: vue-demi "^0.13.1" vue@^3.2.25, vue@^3.2.37: - version "3.3.4" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6" - integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== + version "3.3.8" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc" + integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w== dependencies: - "@vue/compiler-dom" "3.3.4" - "@vue/compiler-sfc" "3.3.4" - "@vue/runtime-dom" "3.3.4" - "@vue/server-renderer" "3.3.4" - "@vue/shared" "3.3.4" + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-sfc" "3.3.8" + "@vue/runtime-dom" "3.3.8" + "@vue/server-renderer" "3.3.8" + "@vue/shared" "3.3.8" w3c-keyname@^2.2.0, w3c-keyname@^2.2.4: version "2.2.8" @@ -7425,13 +7416,13 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" @@ -7609,7 +7600,7 @@ workbox-window@7.0.0, workbox-window@^7.0.0: "@types/trusted-types" "^2.0.2" workbox-core "7.0.0" -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -7662,15 +7653,10 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== - -yaml@^2.1.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" - integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== +yaml@2.3.4, yaml@^2.1.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== yargs-parser@^21.1.1: version "21.1.1" @@ -7717,10 +7703,10 @@ zen-observable@^0.10.0: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.10.0.tgz#ee10eba75272897dbee5f152ab26bb5e0107f0c8" integrity sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw== -zhead@^2.1.1, zhead@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.1.3.tgz#77d97ec4657fc9b35872ac482613af0cc6b86b57" - integrity sha512-T6kZx8TYdLhuy2vURjPUj9EK9Dobnctu12CYw9ibu6Xj/UAqh2q2bQaA3vFrL4Rna5+CXYHYN3uJrUu6VulYzw== +zhead@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.2.4.tgz#87cd1e2c3d2f465fa9f43b8db23f9716dfe6bed7" + integrity sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag== zhyswan-vuedraggable@^4.1.3: version "4.1.3" From 32055122c36d8d32d8889333c08bee0566ce93ce Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Tue, 14 Nov 2023 15:35:37 +0100 Subject: [PATCH 07/18] ci: bump node version in CI Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d639430be..59c1016eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -70,7 +70,7 @@ lint-elixir: lint-front: - image: node:16 + image: node:20 stage: check before_script: - export EXITVALUE=0 @@ -82,7 +82,7 @@ lint-front: build-frontend: stage: build-js - image: node:16 + image: node:20 before_script: - apt update - apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant From 2e72f6faf4a1f6daa8b62e2413fb6f9ad1d15460 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Tue, 14 Nov 2023 17:24:42 +0100 Subject: [PATCH 08/18] build: switch from yarn to npm to manage js dependencies and move js contents to root yarn v1 is being deprecated and starts to have some issues Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- js/.browserslistrc => .browserslistrc | 0 .credo.exs | 2 +- .dockerignore | 4 +- js/.editorconfig => .editorconfig | 0 js/.eslintrc.js => .eslintrc.js | 0 .gitignore | 7 +- .gitlab-ci.yml | 38 +- .husky/pre-commit | 3 +- js/.prettierignore => .prettierignore | 0 js/.prettierrc.json => .prettierrc.json | 0 Dockerfile | 2 +- Makefile | 2 +- apollo.config.js | 2 +- config/dev.exs | 1 - config/e2e.exs | 2 +- docker/multiarch/Dockerfile | 7 +- docker/production/Dockerfile | 5 +- docker/tests/Dockerfile | 2 +- docs/dev.md | 2 +- js/env.d.ts => env.d.ts | 0 js/fragmentTypes.json => fragmentTypes.json | 0 js/get_union_json.ts => get_union_json.ts | 0 js/histoire.config.ts => histoire.config.ts | 0 js/.gitignore | 27 - js/tsconfig.json | 40 - js/yarn.lock | 7716 ---------- mix.exs | 2 +- package-lock.json | 11986 ++++++++++++++++ js/package.json => package.json | 7 +- ...aywright.config.ts => playwright.config.ts | 0 js/postcss.config.js => postcss.config.js | 0 {js/public => public}/favicon.ico | Bin .../img/categories/arts-small.webp | Bin .../img/categories/arts.webp | Bin .../img/categories/business-small.webp | Bin .../img/categories/business.webp | Bin .../img/categories/crafts-small.webp | Bin .../img/categories/crafts.webp | Bin .../img/categories/film_media-small.webp | Bin .../img/categories/film_media.webp | Bin .../img/categories/food_drink-small.webp | Bin .../img/categories/food_drink.webp | Bin .../img/categories/games-small.webp | Bin .../img/categories/games.webp | Bin .../img/categories/health-small.webp | Bin .../img/categories/health.webp | Bin .../img/categories/lgbtq-small.webp | Bin .../img/categories/lgbtq.webp | Bin .../categories/movements_politics-small.webp | Bin .../img/categories/movements_politics.webp | Bin .../img/categories/music-small.webp | Bin .../img/categories/music.webp | Bin .../categories/outdoors_adventure-small.webp | Bin .../img/categories/outdoors_adventure.webp | Bin .../img/categories/party-small.webp | Bin .../img/categories/party.webp | Bin .../img/categories/photography-small.webp | Bin .../img/categories/photography.webp | Bin .../spirituality_religion_beliefs-small.webp | Bin .../spirituality_religion_beliefs.webp | Bin .../img/categories/sports-small.webp | Bin .../img/categories/sports.webp | Bin .../img/categories/theatre-small.webp | Bin .../img/categories/theatre.webp | Bin .../img/fediverse_monochrome.svg | 0 .../img/icons/android-chrome-192x192.png | Bin .../img/icons/android-chrome-512x512.png | Bin .../icons/android-chrome-maskable-192x192.png | Bin .../icons/android-chrome-maskable-512x512.png | Bin .../img/icons/apple-touch-icon-120x120.png | Bin .../img/icons/apple-touch-icon-152x152.png | Bin .../img/icons/apple-touch-icon-180x180.png | Bin .../img/icons/apple-touch-icon-60x60.png | Bin .../img/icons/apple-touch-icon-76x76.png | Bin .../img/icons/apple-touch-icon.png | Bin .../img/icons/badge-128x128.png | Bin .../img/icons/favicon-16x16.png | Bin .../img/icons/favicon-32x32.png | Bin {js/public => public}/img/icons/favicon.svg | 0 .../img/icons/icon-144x144.png | Bin .../img/icons/icon-168x168.png | Bin .../img/icons/icon-256x256.png | Bin .../img/icons/icon-48x48.png | Bin .../img/icons/icon-72x72.png | Bin .../img/icons/icon-96x96.png | Bin .../img/icons/msapplication-icon-144x144.png | Bin .../img/icons/mstile-150x150.png | Bin .../img/icons/safari-pinned-tab.svg | 0 {js/public => public}/img/logo.svg | 0 .../img/mobilizon_default_card.png | Bin {js/public => public}/img/mobilizon_logo.png | Bin {js/public => public}/img/online-event.webp | Bin .../img/owncast_monochrome.svg | 0 .../img/peertube_monochrome.svg | 0 {js/public => public}/img/pics/error.webp | Bin .../img/pics/event_creation-1024w.webp | Bin .../img/pics/event_creation-480w.webp | Bin .../img/pics/event_creation.webp | Bin {js/public => public}/img/pics/footer_1.webp | Bin {js/public => public}/img/pics/footer_2.webp | Bin {js/public => public}/img/pics/footer_3.webp | Bin {js/public => public}/img/pics/footer_4.webp | Bin {js/public => public}/img/pics/footer_5.webp | Bin .../img/pics/group-1024w.webp | Bin .../img/pics/group-480w.webp | Bin {js/public => public}/img/pics/group.webp | Bin {js/public => public}/img/pics/homepage.webp | Bin .../img/pics/homepage_background-1024w.png | Bin .../img/pics/homepage_background.png | Bin .../img/pics/realisation.webp | Bin {js/public => public}/img/pics/rose.webp | Bin {js/public => public}/img/shape-1.svg | 0 {js/public => public}/img/shape-2.svg | 0 {js/public => public}/img/shape-3.svg | 0 .../img/sign_language_monochrome.svg | 0 {js/public => public}/img/undraw_mail_2.svg | 0 {js/public => public}/img/undraw_profile.svg | 0 {js/public => public}/robots.txt | 0 {js/scripts => scripts}/build/pictures.sh | 0 {js/src => src}/@types/dom.d.ts | 0 {js/src => src}/@types/v-tooltip/index.d.ts | 0 .../@types/vuedraggable/index.d.ts | 0 {js/src => src}/App.vue | 0 {js/src => src}/api/_entrypoint.ts | 0 .../apollo/absinthe-socket-link.ts | 0 .../apollo/absinthe-upload-socket-link.ts | 0 {js/src => src}/apollo/auth.ts | 0 {js/src => src}/apollo/error-link.ts | 0 {js/src => src}/apollo/link.ts | 0 {js/src => src}/apollo/memory.ts | 0 {js/src => src}/apollo/user.ts | 0 {js/src => src}/apollo/utils.ts | 0 .../assets/Circle-icons-calendar.svg | 0 {js/src => src}/assets/footer.png | Bin {js/src => src}/assets/oruga-tailwindcss.css | 0 {js/src => src}/assets/profile.svg | 0 {js/src => src}/assets/tailwind.css | 0 {js/src => src}/assets/texting.svg | 0 {js/src => src}/assets/undraw_events.svg | 0 .../About/InstanceContactLink.story.vue | 0 .../components/About/InstanceContactLink.vue | 0 .../components/Account/ActorAutoComplete.vue | 0 .../components/Account/ActorCard.story.vue | 0 .../components/Account/ActorCard.vue | 0 .../components/Account/ActorInline.story.vue | 0 .../components/Account/ActorInline.vue | 0 .../Account/PopoverActorCard.story.vue | 0 .../components/Account/PopoverActorCard.vue | 0 .../Account/ProfileOnboarding.story.vue | 0 .../components/Account/ProfileOnboarding.vue | 0 .../Activity/DiscussionActivityItem.vue | 0 .../components/Activity/EventActivityItem.vue | 0 .../components/Activity/GroupActivityItem.vue | 0 .../Activity/MemberActivityItem.vue | 0 .../components/Activity/PostActivityItem.vue | 0 .../Activity/ResourceActivityItem.vue | 0 .../Activity/SkeletonActivityItem.vue | 0 .../components/Activity/activity.scss | 0 .../components/Address/AddressInfo.story.vue | 0 .../components/Address/AddressInfo.vue | 0 .../Address/InlineAddress.story.vue | 0 .../components/Address/InlineAddress.vue | 0 .../Categories/CategoryCard.story.vue | 0 .../components/Categories/CategoryCard.vue | 0 .../components/Categories/constants.ts | 0 .../components/Comment/CommentTree.vue | 0 .../components/Comment/EventComment.story.vue | 0 .../components/Comment/EventComment.vue | 0 .../Conversations/ConversationListItem.vue | 0 .../Conversations/EventConversations.vue | 0 .../Conversations/NewConversation.vue | 0 .../Dashboard/LinkedNumberDashboardTile.vue | 0 .../Dashboard/NumberDashboardTile.vue | 0 .../Discussion/DiscussionComment.story.vue | 0 .../Discussion/DiscussionComment.vue | 0 .../Discussion/DiscussionListItem.story.vue | 0 .../Discussion/DiscussionListItem.vue | 0 {js/src => src}/components/Editor/Autodir.ts | 0 {js/src => src}/components/Editor/Image.ts | 0 {js/src => src}/components/Editor/Mention.ts | 0 .../components/Editor/MentionList.vue | 0 .../Editor/RichEditorKeyboardSubmit.ts | 0 {js/src => src}/components/Editor/style.scss | 0 {js/src => src}/components/ErrorComponent.vue | 0 .../Event/DateCalendarIcon.story.vue | 0 .../components/Event/DateCalendarIcon.vue | 0 .../components/Event/EventActionSection.vue | 0 .../components/Event/EventBanner.vue | 0 .../components/Event/EventCard.story.vue | 0 .../components/Event/EventCard.vue | 0 .../components/Event/EventFullDate.vue | 0 .../Event/EventListViewCard.story.vue | 0 .../components/Event/EventListViewCard.vue | 0 {js/src => src}/components/Event/EventMap.vue | 0 .../components/Event/EventMetadataBlock.vue | 0 .../components/Event/EventMetadataItem.vue | 0 .../components/Event/EventMetadataList.vue | 0 .../components/Event/EventMetadataSidebar.vue | 0 .../components/Event/EventMinimalistCard.vue | 0 .../Event/EventParticipationCard.vue | 0 .../Event/ExternalParticipationButton.vue | 0 .../Event/FullAddressAutoComplete.vue | 0 .../Event/GroupedMultiEventMinimalistCard.vue | 0 .../Integrations/EtherpadIntegration.vue | 0 .../Integrations/JitsiMeetIntegration.vue | 0 .../Integrations/PeerTubeIntegration.vue | 0 .../Event/Integrations/TwitchIntegration.vue | 0 .../Event/Integrations/YouTubeIntegration.vue | 0 .../components/Event/MultiCard.vue | 0 .../Event/MultiEventMinimalistCard.vue | 0 .../Event/OrganizerPicker.story.vue | 0 .../components/Event/OrganizerPicker.vue | 0 .../Event/OrganizerPickerWrapper.story.vue | 0 .../Event/OrganizerPickerWrapper.vue | 0 .../Event/ParticipationButton.story.vue | 0 .../components/Event/ParticipationButton.vue | 0 .../Event/RecentEventCardWrapper.vue | 0 .../Event/ShareEventModal.story.vue | 0 .../components/Event/ShareEventModal.vue | 0 .../Event/SkeletonDateCalendarIcon.vue | 0 .../Event/SkeletonEventResult.story.vue | 0 .../components/Event/SkeletonEventResult.vue | 0 .../Event/SkeletonEventResultList.vue | 0 .../components/Event/TagInput.story.vue | 0 {js/src => src}/components/Event/TagInput.vue | 0 .../components/Feedback/SentryFeedback.vue | 0 .../components/Group/GroupCard.story.vue | 0 .../components/Group/GroupCard.vue | 0 .../Group/GroupMemberCard.story.vue | 0 .../components/Group/GroupMemberCard.vue | 0 .../components/Group/GroupSection.vue | 0 .../components/Group/InvitationCard.vue | 0 .../components/Group/InvitationsList.vue | 0 .../components/Group/JoinGroupWithAccount.vue | 0 .../components/Group/MultiGroupCard.vue | 0 .../Group/Sections/DiscussionsSection.vue | 0 .../Group/Sections/EventsSection.vue | 0 .../Group/Sections/PostsSection.vue | 0 .../Group/Sections/ResourcesSection.vue | 0 .../components/Group/ShareGroupModal.vue | 0 .../components/Group/SkeletonGroupResult.vue | 0 .../Group/SkeletonGroupResultList.vue | 0 .../Home/CategoriesPreview.story.vue | 0 .../components/Home/CategoriesPreview.vue | 0 .../Home/MobilizonPresentation.story.vue | 0 .../components/Home/MobilizonPresentation.vue | 0 .../components/Home/SearchFields.story.vue | 0 .../components/Home/SearchFields.vue | 0 .../Home/UnloggedIntroduction.story.vue | 0 .../components/Home/UnloggedIntroduction.vue | 0 .../components/Image/BlurhashImg.vue | 0 .../components/Image/LazyImage.vue | 0 .../components/Image/LazyImageWrapper.vue | 0 {js/src => src}/components/LeafletMap.vue | 0 .../components/Local/CloseContent.vue | 0 .../components/Local/CloseEvents.vue | 0 .../components/Local/CloseGroups.vue | 0 .../components/Local/LastEvents.vue | 0 .../components/Local/MoreContent.vue | 0 .../components/Local/OnlineEvents.vue | 0 .../components/Map/VueBottomSheet.vue | 0 {js/src => src}/components/MobilizonLogo.vue | 0 {js/src => src}/components/NavBar.vue | 0 .../components/OAuth/AuthorizeApplication.vue | 0 {js/src => src}/components/OAuth/scopes.ts | 0 {js/src => src}/components/PageFooter.vue | 0 .../Participation/ConfirmParticipation.vue | 0 .../Participation/NewPrivateMessage.vue | 0 .../Participation/ParticipationSection.vue | 0 .../ParticipationWithAccount.vue | 0 .../ParticipationWithoutAccount.vue | 0 .../Participation/UnloggedParticipation.vue | 6 +- {js/src => src}/components/PictureUpload.vue | 0 .../components/Post/MultiPostListItem.vue | 0 .../components/Post/PostListItem.story.vue | 0 .../components/Post/PostListItem.vue | 0 .../components/Post/SharePostModal.story.vue | 0 .../components/Post/SharePostModal.vue | 0 .../components/Report/ReportCard.vue | 0 .../components/Report/ReportModal.vue | 0 .../components/Resource/DraggableList.vue | 0 .../components/Resource/FolderItem.vue | 0 .../components/Resource/ResourceDropdown.vue | 0 .../components/Resource/ResourceItem.vue | 0 .../components/Resource/ResourceSelector.vue | 0 {js/src => src}/components/Resource/utils.ts | 0 .../components/Search/EventMarkerMap.vue | 0 .../Search/filters/FilterSection.vue | 0 {js/src => src}/components/SearchField.vue | 0 .../Settings/NotificationsOnboarding.vue | 0 .../components/Settings/SettingMenuItem.vue | 0 .../Settings/SettingMenuSection.vue | 0 .../components/Settings/SettingsMenu.vue | 0 .../Settings/SettingsOnboarding.vue | 0 .../components/Share/DiasporaLogo.vue | 0 .../components/Share/MastodonLogo.vue | 0 .../components/Share/ShareModal.vue | 0 .../components/Share/TelegramLogo.vue | 0 {js/src => src}/components/TagElement.vue | 0 {js/src => src}/components/TextEditor.vue | 0 .../components/Todo/CompactTodo.vue | 0 {js/src => src}/components/Todo/FullTodo.vue | 0 .../components/User/AuthProvider.vue | 0 .../components/User/AuthProviders.story.vue | 0 .../components/User/AuthProviders.vue | 0 .../components/Utils/EmptyContent.vue | 0 .../Utils/HomepageRedirectComponent.vue | 0 .../components/Utils/NavBreadcrumbs.vue | 0 .../components/Utils/ObserverElement.vue | 0 .../components/Utils/RedirectWithAccount.vue | 0 .../components/core/CustomDialog.vue | 0 .../components/core/CustomSnackbar.vue | 0 .../components/core/LinkOrRouterLink.vue | 0 .../components/core/MaterialIcon.story.vue | 0 .../components/core/MaterialIcon.vue | 0 {js/src => src}/composition/activity.ts | 0 {js/src => src}/composition/apollo/actor.ts | 0 {js/src => src}/composition/apollo/address.ts | 0 {js/src => src}/composition/apollo/config.ts | 0 .../composition/apollo/discussions.ts | 0 {js/src => src}/composition/apollo/event.ts | 0 {js/src => src}/composition/apollo/group.ts | 0 {js/src => src}/composition/apollo/members.ts | 0 {js/src => src}/composition/apollo/report.ts | 0 .../composition/apollo/resources.ts | 0 {js/src => src}/composition/apollo/tags.ts | 0 {js/src => src}/composition/apollo/user.ts | 0 {js/src => src}/composition/config.ts | 0 {js/src => src}/composition/group.ts | 0 {js/src => src}/constants.ts | 0 {js/src => src}/filters/datetime.ts | 0 {js/src => src}/filters/index.ts | 0 {js/src => src}/filters/utils.ts | 0 {js/src => src}/graphql/actor.ts | 0 {js/src => src}/graphql/address.ts | 0 {js/src => src}/graphql/admin.ts | 0 {js/src => src}/graphql/application.ts | 0 {js/src => src}/graphql/auth.ts | 0 {js/src => src}/graphql/comment.ts | 0 {js/src => src}/graphql/config.ts | 0 {js/src => src}/graphql/conversations.ts | 0 {js/src => src}/graphql/discussion.ts | 0 {js/src => src}/graphql/event.ts | 0 {js/src => src}/graphql/event_options.ts | 0 {js/src => src}/graphql/feed_tokens.ts | 0 {js/src => src}/graphql/followers.ts | 0 {js/src => src}/graphql/fragmentTypes.json | 0 {js/src => src}/graphql/group.ts | 0 {js/src => src}/graphql/home.ts | 0 {js/src => src}/graphql/location.ts | 0 {js/src => src}/graphql/member.ts | 0 {js/src => src}/graphql/participant.ts | 0 {js/src => src}/graphql/post.ts | 0 {js/src => src}/graphql/report.ts | 0 {js/src => src}/graphql/resources.ts | 0 {js/src => src}/graphql/search.ts | 0 {js/src => src}/graphql/statistics.ts | 0 {js/src => src}/graphql/tags.ts | 0 {js/src => src}/graphql/todos.ts | 0 {js/src => src}/graphql/upload.ts | 0 {js/src => src}/graphql/user.ts | 0 {js/src => src}/graphql/webPush.ts | 0 {js/src => src}/histoire.setup.ts | 0 {js/src => src}/i18n/ar.json | 0 {js/src => src}/i18n/be.json | 0 {js/src => src}/i18n/bn.json | 0 {js/src => src}/i18n/ca.json | 0 {js/src => src}/i18n/cs.json | 0 {js/src => src}/i18n/cy.json | 0 {js/src => src}/i18n/da.json | 0 {js/src => src}/i18n/de.json | 0 {js/src => src}/i18n/en_US.json | 0 {js/src => src}/i18n/eo.json | 0 {js/src => src}/i18n/es.json | 0 {js/src => src}/i18n/eu.json | 0 {js/src => src}/i18n/fa.json | 0 {js/src => src}/i18n/fi.json | 0 {js/src => src}/i18n/fr_FR.json | 0 {js/src => src}/i18n/gd.json | 0 {js/src => src}/i18n/gl.json | 0 {js/src => src}/i18n/he.json | 0 {js/src => src}/i18n/hr.json | 0 {js/src => src}/i18n/hu.json | 0 {js/src => src}/i18n/id.json | 0 {js/src => src}/i18n/it.json | 0 {js/src => src}/i18n/ja.json | 0 {js/src => src}/i18n/kab.json | 0 {js/src => src}/i18n/kn.json | 0 {js/src => src}/i18n/langs.json | 0 {js/src => src}/i18n/nl.json | 0 {js/src => src}/i18n/nn.json | 0 {js/src => src}/i18n/oc.json | 0 {js/src => src}/i18n/pl.json | 0 {js/src => src}/i18n/pluralRules/gd.ts | 0 {js/src => src}/i18n/pluralRules/index.ts | 0 {js/src => src}/i18n/pt.json | 0 {js/src => src}/i18n/pt_BR.json | 0 {js/src => src}/i18n/ru.json | 0 {js/src => src}/i18n/sl.json | 0 {js/src => src}/i18n/sv.json | 0 {js/src => src}/i18n/tt.json | 0 {js/src => src}/i18n/zh_Hans.json | 0 {js/src => src}/i18n/zh_Hant.json | 0 {js/src => src}/main.ts | 0 {js/src => src}/oruga-config.ts | 0 {js/src => src}/plugins/dateFns.ts | 0 {js/src => src}/plugins/dialog.ts | 0 {js/src => src}/plugins/notifier.ts | 0 {js/src => src}/plugins/snackbar.ts | 0 {js/src => src}/registerServiceWorker.ts | 0 {js/src => src}/router/actor.ts | 0 {js/src => src}/router/conversation.ts | 0 {js/src => src}/router/discussion.ts | 0 {js/src => src}/router/error.ts | 0 {js/src => src}/router/event.ts | 0 {js/src => src}/router/groups.ts | 0 {js/src => src}/router/guards/auth-guard.ts | 0 .../router/guards/register-guard.ts | 0 {js/src => src}/router/index.ts | 0 {js/src => src}/router/name.ts | 0 {js/src => src}/router/settings.ts | 0 {js/src => src}/router/user.ts | 0 {js/src => src}/service-worker.ts | 0 .../services/AnonymousParticipationStorage.ts | 0 {js/src => src}/services/EventMetadata.ts | 0 {js/src => src}/services/push-subscription.ts | 0 {js/src => src}/services/statistics/index.ts | 0 {js/src => src}/services/statistics/matomo.ts | 0 .../services/statistics/plausible.ts | 0 {js/src => src}/services/statistics/sentry.ts | 0 {js/src => src}/shims-tsx.d.ts | 0 {js/src => src}/shims-vue.d.ts | 0 {js/src => src}/styles/_mixins.scss | 0 {js/src => src}/styles/vue-announcer.scss | 0 {js/src => src}/styles/vue-skip-to.scss | 0 {js/src => src}/types/activity.model.ts | 0 {js/src => src}/types/actor/actor.model.ts | 0 {js/src => src}/types/actor/follower.model.ts | 0 {js/src => src}/types/actor/group.model.ts | 0 {js/src => src}/types/actor/index.ts | 0 {js/src => src}/types/actor/member.model.ts | 0 {js/src => src}/types/actor/person.model.ts | 0 {js/src => src}/types/address.model.ts | 0 {js/src => src}/types/admin.model.ts | 0 .../types/analytics/sentry.model.ts | 0 {js/src => src}/types/apollo.ts | 0 {js/src => src}/types/application.model.ts | 0 {js/src => src}/types/comment.model.ts | 0 {js/src => src}/types/config.model.ts | 0 {js/src => src}/types/conversation.ts | 0 {js/src => src}/types/current-user.model.ts | 0 {js/src => src}/types/discussions.ts | 0 {js/src => src}/types/enums.ts | 0 {js/src => src}/types/errors.model.ts | 0 {js/src => src}/types/event-metadata.ts | 0 {js/src => src}/types/event-options.model.ts | 0 {js/src => src}/types/event.model.ts | 0 {js/src => src}/types/feedtoken.model.ts | 0 .../types/followedGroupEvent.model.ts | 0 {js/src => src}/types/instance.model.ts | 0 {js/src => src}/types/login.model.ts | 0 {js/src => src}/types/media.model.ts | 0 {js/src => src}/types/paginate.ts | 0 {js/src => src}/types/participant.model.ts | 0 {js/src => src}/types/picture.ts | 0 {js/src => src}/types/post.model.ts | 0 {js/src => src}/types/report.model.ts | 0 {js/src => src}/types/resource.ts | 0 {js/src => src}/types/search.model.ts | 0 {js/src => src}/types/statistics.model.ts | 0 {js/src => src}/types/stats.model.ts | 0 {js/src => src}/types/tag.model.ts | 0 {js/src => src}/types/todolist.ts | 0 {js/src => src}/types/todos.ts | 0 {js/src => src}/types/user-location.model.ts | 0 {js/src => src}/typings/absinthe.d.ts | 0 {js/src => src}/typings/intl.d.ts | 0 {js/src => src}/typings/matomo.d.ts | 0 {js/src => src}/utils/asyncForEach.ts | 0 {js/src => src}/utils/auth.ts | 0 {js/src => src}/utils/datetime.ts | 0 {js/src => src}/utils/graphics.ts | 0 {js/src => src}/utils/html.ts | 0 {js/src => src}/utils/i18n.ts | 0 {js/src => src}/utils/identity.ts | 0 {js/src => src}/utils/image.ts | 0 {js/src => src}/utils/listFormat.ts | 0 {js/src => src}/utils/location.ts | 0 {js/src => src}/utils/poiIcons.ts | 0 {js/src => src}/utils/share.ts | 0 {js/src => src}/utils/upload.ts | 0 {js/src => src}/utils/username.ts | 0 {js/src => src}/utils/validators.ts | 0 .../views/About/AboutInstanceView.vue | 0 {js/src => src}/views/About/GlossaryView.vue | 0 {js/src => src}/views/About/PrivacyView.vue | 0 {js/src => src}/views/About/RulesView.vue | 0 {js/src => src}/views/About/TermsView.vue | 0 {js/src => src}/views/AboutView.vue | 0 .../views/Account/IdentityPicker.vue | 0 .../views/Account/IdentityPickerWrapper.vue | 0 .../views/Account/RegisterView.vue | 0 .../views/Account/children/EditIdentity.vue | 0 .../views/Admin/AdminGroupProfile.vue | 0 {js/src => src}/views/Admin/AdminProfile.vue | 0 .../views/Admin/AdminUserProfile.vue | 0 {js/src => src}/views/Admin/DashboardView.vue | 0 {js/src => src}/views/Admin/GroupProfiles.vue | 0 {js/src => src}/views/Admin/InstanceView.vue | 0 {js/src => src}/views/Admin/InstancesView.vue | 2 +- {js/src => src}/views/Admin/ProfilesView.vue | 0 {js/src => src}/views/Admin/SettingsView.vue | 0 {js/src => src}/views/Admin/UsersView.vue | 0 {js/src => src}/views/CategoriesView.vue | 0 .../Conversations/ConversationListView.vue | 0 .../views/Conversations/ConversationView.vue | 0 .../views/Discussions/CreateView.vue | 0 .../views/Discussions/DiscussionView.vue | 0 .../views/Discussions/DiscussionsListView.vue | 0 {js/src => src}/views/ErrorView.vue | 0 {js/src => src}/views/Event/EditView.vue | 0 {js/src => src}/views/Event/EventView.vue | 0 {js/src => src}/views/Event/GroupEvents.vue | 0 {js/src => src}/views/Event/MyEventsView.vue | 0 .../views/Event/ParticipantsView.vue | 0 {js/src => src}/views/Group/CreateView.vue | 0 .../views/Group/GroupFollowers.vue | 0 {js/src => src}/views/Group/GroupMembers.vue | 0 {js/src => src}/views/Group/GroupSettings.vue | 0 {js/src => src}/views/Group/GroupView.vue | 0 {js/src => src}/views/Group/MyGroups.vue | 0 {js/src => src}/views/Group/SettingsView.vue | 0 {js/src => src}/views/Group/TimelineView.vue | 0 {js/src => src}/views/HomeView.vue | 6 +- {js/src => src}/views/InteractView.vue | 0 {js/src => src}/views/Moderation/LogsView.vue | 0 .../views/Moderation/ReportListView.vue | 0 .../views/Moderation/ReportView.vue | 0 {js/src => src}/views/OAuth/AuthorizeView.vue | 0 .../views/OAuth/DeviceActivationView.vue | 0 {js/src => src}/views/PageNotFound.vue | 0 {js/src => src}/views/Posts/EditView.vue | 0 {js/src => src}/views/Posts/ListView.vue | 0 {js/src => src}/views/Posts/PostView.vue | 0 .../views/Resources/ResourceFolder.vue | 0 {js/src => src}/views/SearchView.vue | 0 .../views/Settings/AccountSettings.vue | 0 {js/src => src}/views/Settings/AppsView.vue | 0 .../views/Settings/NotificationsView.vue | 0 .../views/Settings/PreferencesView.vue | 0 {js/src => src}/views/SettingsView.vue | 0 {js/src => src}/views/Todos/TodoList.vue | 0 {js/src => src}/views/Todos/TodoLists.vue | 0 {js/src => src}/views/Todos/TodoView.vue | 0 {js/src => src}/views/User/EmailValidate.vue | 0 {js/src => src}/views/User/LoginView.vue | 0 {js/src => src}/views/User/PasswordReset.vue | 0 .../views/User/ProviderValidation.vue | 0 {js/src => src}/views/User/RegisterView.vue | 0 .../views/User/ResendConfirmation.vue | 0 .../views/User/SendPasswordReset.vue | 0 .../views/User/SettingsOnboard.vue | 0 {js/src => src}/views/User/ValidateUser.vue | 0 {js/src => src}/vue-apollo.ts | 0 js/tailwind.config.js => tailwind.config.js | 0 {js/tests => tests}/e2e/login.spec.ts | 0 {js/tests => tests}/unit/.eslintrc.js | 0 {js/tests => tests}/unit/setup.ts | 0 {js/tests => tests}/unit/specs/common.ts | 0 .../components/Comment/CommentTree.spec.ts | 0 .../__snapshots__/CommentTree.spec.ts.snap | 0 .../components/Group/GroupSection.spec.ts | 0 .../__snapshots__/GroupSection.spec.ts.snap | 0 .../ParticipationSection.spec.ts | 1 - .../ParticipationWithoutAccount.spec.ts | 0 .../ParticipationWithoutAccount.spec.ts.snap | 0 .../components/Post/PostListItem.spec.ts | 0 .../__snapshots__/PostListItem.spec.ts.snap | 0 .../components/Report/ReportCard.spec.ts | 0 .../components/Report/ReportModal.spec.ts | 0 .../__snapshots__/ReportModal.spec.ts.snap | 0 .../components/User/PasswordReset.spec.ts | 0 .../__snapshots__/PasswordReset.spec.ts.snap | 0 .../unit/specs/components/User/login.spec.ts | 0 .../__snapshots__/navbar.spec.ts.snap | 0 .../unit/specs/components/navbar.spec.ts | 8 +- .../unit/specs/components/tag.spec.ts | 0 {js/tests => tests}/unit/specs/mocks/auth.ts | 0 .../unit/specs/mocks/config.ts | 0 {js/tests => tests}/unit/specs/mocks/event.ts | 0 .../unit/specs/mocks/matchMedia.ts | 0 {js/tests => tests}/unit/svgTransform.ts | 0 tsconfig.json | 39 +- js/vite.config.js => vite.config.js | 2 +- ...ct.config.js => vue-i18n-extract.config.js | 0 595 files changed, 12078 insertions(+), 7843 deletions(-) rename js/.browserslistrc => .browserslistrc (100%) rename js/.editorconfig => .editorconfig (100%) rename js/.eslintrc.js => .eslintrc.js (100%) rename js/.prettierignore => .prettierignore (100%) rename js/.prettierrc.json => .prettierrc.json (100%) rename js/env.d.ts => env.d.ts (100%) rename js/fragmentTypes.json => fragmentTypes.json (100%) rename js/get_union_json.ts => get_union_json.ts (100%) rename js/histoire.config.ts => histoire.config.ts (100%) delete mode 100644 js/.gitignore delete mode 100644 js/tsconfig.json delete mode 100644 js/yarn.lock create mode 100644 package-lock.json rename js/package.json => package.json (96%) rename js/playwright.config.ts => playwright.config.ts (100%) rename js/postcss.config.js => postcss.config.js (100%) rename {js/public => public}/favicon.ico (100%) rename {js/public => public}/img/categories/arts-small.webp (100%) rename {js/public => public}/img/categories/arts.webp (100%) rename {js/public => public}/img/categories/business-small.webp (100%) rename {js/public => public}/img/categories/business.webp (100%) rename {js/public => public}/img/categories/crafts-small.webp (100%) rename {js/public => public}/img/categories/crafts.webp (100%) rename {js/public => public}/img/categories/film_media-small.webp (100%) rename {js/public => public}/img/categories/film_media.webp (100%) rename {js/public => public}/img/categories/food_drink-small.webp (100%) rename {js/public => public}/img/categories/food_drink.webp (100%) rename {js/public => public}/img/categories/games-small.webp (100%) rename {js/public => public}/img/categories/games.webp (100%) rename {js/public => public}/img/categories/health-small.webp (100%) rename {js/public => public}/img/categories/health.webp (100%) rename {js/public => public}/img/categories/lgbtq-small.webp (100%) rename {js/public => public}/img/categories/lgbtq.webp (100%) rename {js/public => public}/img/categories/movements_politics-small.webp (100%) rename {js/public => public}/img/categories/movements_politics.webp (100%) rename {js/public => public}/img/categories/music-small.webp (100%) rename {js/public => public}/img/categories/music.webp (100%) rename {js/public => public}/img/categories/outdoors_adventure-small.webp (100%) rename {js/public => public}/img/categories/outdoors_adventure.webp (100%) rename {js/public => public}/img/categories/party-small.webp (100%) rename {js/public => public}/img/categories/party.webp (100%) rename {js/public => public}/img/categories/photography-small.webp (100%) rename {js/public => public}/img/categories/photography.webp (100%) rename {js/public => public}/img/categories/spirituality_religion_beliefs-small.webp (100%) rename {js/public => public}/img/categories/spirituality_religion_beliefs.webp (100%) rename {js/public => public}/img/categories/sports-small.webp (100%) rename {js/public => public}/img/categories/sports.webp (100%) rename {js/public => public}/img/categories/theatre-small.webp (100%) rename {js/public => public}/img/categories/theatre.webp (100%) rename {js/public => public}/img/fediverse_monochrome.svg (100%) rename {js/public => public}/img/icons/android-chrome-192x192.png (100%) rename {js/public => public}/img/icons/android-chrome-512x512.png (100%) rename {js/public => public}/img/icons/android-chrome-maskable-192x192.png (100%) rename {js/public => public}/img/icons/android-chrome-maskable-512x512.png (100%) rename {js/public => public}/img/icons/apple-touch-icon-120x120.png (100%) rename {js/public => public}/img/icons/apple-touch-icon-152x152.png (100%) rename {js/public => public}/img/icons/apple-touch-icon-180x180.png (100%) rename {js/public => public}/img/icons/apple-touch-icon-60x60.png (100%) rename {js/public => public}/img/icons/apple-touch-icon-76x76.png (100%) rename {js/public => public}/img/icons/apple-touch-icon.png (100%) rename {js/public => public}/img/icons/badge-128x128.png (100%) rename {js/public => public}/img/icons/favicon-16x16.png (100%) rename {js/public => public}/img/icons/favicon-32x32.png (100%) rename {js/public => public}/img/icons/favicon.svg (100%) rename {js/public => public}/img/icons/icon-144x144.png (100%) rename {js/public => public}/img/icons/icon-168x168.png (100%) rename {js/public => public}/img/icons/icon-256x256.png (100%) rename {js/public => public}/img/icons/icon-48x48.png (100%) rename {js/public => public}/img/icons/icon-72x72.png (100%) rename {js/public => public}/img/icons/icon-96x96.png (100%) rename {js/public => public}/img/icons/msapplication-icon-144x144.png (100%) rename {js/public => public}/img/icons/mstile-150x150.png (100%) rename {js/public => public}/img/icons/safari-pinned-tab.svg (100%) rename {js/public => public}/img/logo.svg (100%) rename {js/public => public}/img/mobilizon_default_card.png (100%) rename {js/public => public}/img/mobilizon_logo.png (100%) rename {js/public => public}/img/online-event.webp (100%) rename {js/public => public}/img/owncast_monochrome.svg (100%) rename {js/public => public}/img/peertube_monochrome.svg (100%) rename {js/public => public}/img/pics/error.webp (100%) rename {js/public => public}/img/pics/event_creation-1024w.webp (100%) rename {js/public => public}/img/pics/event_creation-480w.webp (100%) rename {js/public => public}/img/pics/event_creation.webp (100%) rename {js/public => public}/img/pics/footer_1.webp (100%) rename {js/public => public}/img/pics/footer_2.webp (100%) rename {js/public => public}/img/pics/footer_3.webp (100%) rename {js/public => public}/img/pics/footer_4.webp (100%) rename {js/public => public}/img/pics/footer_5.webp (100%) rename {js/public => public}/img/pics/group-1024w.webp (100%) rename {js/public => public}/img/pics/group-480w.webp (100%) rename {js/public => public}/img/pics/group.webp (100%) rename {js/public => public}/img/pics/homepage.webp (100%) rename {js/public => public}/img/pics/homepage_background-1024w.png (100%) rename {js/public => public}/img/pics/homepage_background.png (100%) rename {js/public => public}/img/pics/realisation.webp (100%) rename {js/public => public}/img/pics/rose.webp (100%) rename {js/public => public}/img/shape-1.svg (100%) rename {js/public => public}/img/shape-2.svg (100%) rename {js/public => public}/img/shape-3.svg (100%) rename {js/public => public}/img/sign_language_monochrome.svg (100%) rename {js/public => public}/img/undraw_mail_2.svg (100%) rename {js/public => public}/img/undraw_profile.svg (100%) rename {js/public => public}/robots.txt (100%) rename {js/scripts => scripts}/build/pictures.sh (100%) rename {js/src => src}/@types/dom.d.ts (100%) rename {js/src => src}/@types/v-tooltip/index.d.ts (100%) rename {js/src => src}/@types/vuedraggable/index.d.ts (100%) rename {js/src => src}/App.vue (100%) rename {js/src => src}/api/_entrypoint.ts (100%) rename {js/src => src}/apollo/absinthe-socket-link.ts (100%) rename {js/src => src}/apollo/absinthe-upload-socket-link.ts (100%) rename {js/src => src}/apollo/auth.ts (100%) rename {js/src => src}/apollo/error-link.ts (100%) rename {js/src => src}/apollo/link.ts (100%) rename {js/src => src}/apollo/memory.ts (100%) rename {js/src => src}/apollo/user.ts (100%) rename {js/src => src}/apollo/utils.ts (100%) rename {js/src => src}/assets/Circle-icons-calendar.svg (100%) rename {js/src => src}/assets/footer.png (100%) rename {js/src => src}/assets/oruga-tailwindcss.css (100%) rename {js/src => src}/assets/profile.svg (100%) rename {js/src => src}/assets/tailwind.css (100%) rename {js/src => src}/assets/texting.svg (100%) rename {js/src => src}/assets/undraw_events.svg (100%) rename {js/src => src}/components/About/InstanceContactLink.story.vue (100%) rename {js/src => src}/components/About/InstanceContactLink.vue (100%) rename {js/src => src}/components/Account/ActorAutoComplete.vue (100%) rename {js/src => src}/components/Account/ActorCard.story.vue (100%) rename {js/src => src}/components/Account/ActorCard.vue (100%) rename {js/src => src}/components/Account/ActorInline.story.vue (100%) rename {js/src => src}/components/Account/ActorInline.vue (100%) rename {js/src => src}/components/Account/PopoverActorCard.story.vue (100%) rename {js/src => src}/components/Account/PopoverActorCard.vue (100%) rename {js/src => src}/components/Account/ProfileOnboarding.story.vue (100%) rename {js/src => src}/components/Account/ProfileOnboarding.vue (100%) rename {js/src => src}/components/Activity/DiscussionActivityItem.vue (100%) rename {js/src => src}/components/Activity/EventActivityItem.vue (100%) rename {js/src => src}/components/Activity/GroupActivityItem.vue (100%) rename {js/src => src}/components/Activity/MemberActivityItem.vue (100%) rename {js/src => src}/components/Activity/PostActivityItem.vue (100%) rename {js/src => src}/components/Activity/ResourceActivityItem.vue (100%) rename {js/src => src}/components/Activity/SkeletonActivityItem.vue (100%) rename {js/src => src}/components/Activity/activity.scss (100%) rename {js/src => src}/components/Address/AddressInfo.story.vue (100%) rename {js/src => src}/components/Address/AddressInfo.vue (100%) rename {js/src => src}/components/Address/InlineAddress.story.vue (100%) rename {js/src => src}/components/Address/InlineAddress.vue (100%) rename {js/src => src}/components/Categories/CategoryCard.story.vue (100%) rename {js/src => src}/components/Categories/CategoryCard.vue (100%) rename {js/src => src}/components/Categories/constants.ts (100%) rename {js/src => src}/components/Comment/CommentTree.vue (100%) rename {js/src => src}/components/Comment/EventComment.story.vue (100%) rename {js/src => src}/components/Comment/EventComment.vue (100%) rename {js/src => src}/components/Conversations/ConversationListItem.vue (100%) rename {js/src => src}/components/Conversations/EventConversations.vue (100%) rename {js/src => src}/components/Conversations/NewConversation.vue (100%) rename {js/src => src}/components/Dashboard/LinkedNumberDashboardTile.vue (100%) rename {js/src => src}/components/Dashboard/NumberDashboardTile.vue (100%) rename {js/src => src}/components/Discussion/DiscussionComment.story.vue (100%) rename {js/src => src}/components/Discussion/DiscussionComment.vue (100%) rename {js/src => src}/components/Discussion/DiscussionListItem.story.vue (100%) rename {js/src => src}/components/Discussion/DiscussionListItem.vue (100%) rename {js/src => src}/components/Editor/Autodir.ts (100%) rename {js/src => src}/components/Editor/Image.ts (100%) rename {js/src => src}/components/Editor/Mention.ts (100%) rename {js/src => src}/components/Editor/MentionList.vue (100%) rename {js/src => src}/components/Editor/RichEditorKeyboardSubmit.ts (100%) rename {js/src => src}/components/Editor/style.scss (100%) rename {js/src => src}/components/ErrorComponent.vue (100%) rename {js/src => src}/components/Event/DateCalendarIcon.story.vue (100%) rename {js/src => src}/components/Event/DateCalendarIcon.vue (100%) rename {js/src => src}/components/Event/EventActionSection.vue (100%) rename {js/src => src}/components/Event/EventBanner.vue (100%) rename {js/src => src}/components/Event/EventCard.story.vue (100%) rename {js/src => src}/components/Event/EventCard.vue (100%) rename {js/src => src}/components/Event/EventFullDate.vue (100%) rename {js/src => src}/components/Event/EventListViewCard.story.vue (100%) rename {js/src => src}/components/Event/EventListViewCard.vue (100%) rename {js/src => src}/components/Event/EventMap.vue (100%) rename {js/src => src}/components/Event/EventMetadataBlock.vue (100%) rename {js/src => src}/components/Event/EventMetadataItem.vue (100%) rename {js/src => src}/components/Event/EventMetadataList.vue (100%) rename {js/src => src}/components/Event/EventMetadataSidebar.vue (100%) rename {js/src => src}/components/Event/EventMinimalistCard.vue (100%) rename {js/src => src}/components/Event/EventParticipationCard.vue (100%) rename {js/src => src}/components/Event/ExternalParticipationButton.vue (100%) rename {js/src => src}/components/Event/FullAddressAutoComplete.vue (100%) rename {js/src => src}/components/Event/GroupedMultiEventMinimalistCard.vue (100%) rename {js/src => src}/components/Event/Integrations/EtherpadIntegration.vue (100%) rename {js/src => src}/components/Event/Integrations/JitsiMeetIntegration.vue (100%) rename {js/src => src}/components/Event/Integrations/PeerTubeIntegration.vue (100%) rename {js/src => src}/components/Event/Integrations/TwitchIntegration.vue (100%) rename {js/src => src}/components/Event/Integrations/YouTubeIntegration.vue (100%) rename {js/src => src}/components/Event/MultiCard.vue (100%) rename {js/src => src}/components/Event/MultiEventMinimalistCard.vue (100%) rename {js/src => src}/components/Event/OrganizerPicker.story.vue (100%) rename {js/src => src}/components/Event/OrganizerPicker.vue (100%) rename {js/src => src}/components/Event/OrganizerPickerWrapper.story.vue (100%) rename {js/src => src}/components/Event/OrganizerPickerWrapper.vue (100%) rename {js/src => src}/components/Event/ParticipationButton.story.vue (100%) rename {js/src => src}/components/Event/ParticipationButton.vue (100%) rename {js/src => src}/components/Event/RecentEventCardWrapper.vue (100%) rename {js/src => src}/components/Event/ShareEventModal.story.vue (100%) rename {js/src => src}/components/Event/ShareEventModal.vue (100%) rename {js/src => src}/components/Event/SkeletonDateCalendarIcon.vue (100%) rename {js/src => src}/components/Event/SkeletonEventResult.story.vue (100%) rename {js/src => src}/components/Event/SkeletonEventResult.vue (100%) rename {js/src => src}/components/Event/SkeletonEventResultList.vue (100%) rename {js/src => src}/components/Event/TagInput.story.vue (100%) rename {js/src => src}/components/Event/TagInput.vue (100%) rename {js/src => src}/components/Feedback/SentryFeedback.vue (100%) rename {js/src => src}/components/Group/GroupCard.story.vue (100%) rename {js/src => src}/components/Group/GroupCard.vue (100%) rename {js/src => src}/components/Group/GroupMemberCard.story.vue (100%) rename {js/src => src}/components/Group/GroupMemberCard.vue (100%) rename {js/src => src}/components/Group/GroupSection.vue (100%) rename {js/src => src}/components/Group/InvitationCard.vue (100%) rename {js/src => src}/components/Group/InvitationsList.vue (100%) rename {js/src => src}/components/Group/JoinGroupWithAccount.vue (100%) rename {js/src => src}/components/Group/MultiGroupCard.vue (100%) rename {js/src => src}/components/Group/Sections/DiscussionsSection.vue (100%) rename {js/src => src}/components/Group/Sections/EventsSection.vue (100%) rename {js/src => src}/components/Group/Sections/PostsSection.vue (100%) rename {js/src => src}/components/Group/Sections/ResourcesSection.vue (100%) rename {js/src => src}/components/Group/ShareGroupModal.vue (100%) rename {js/src => src}/components/Group/SkeletonGroupResult.vue (100%) rename {js/src => src}/components/Group/SkeletonGroupResultList.vue (100%) rename {js/src => src}/components/Home/CategoriesPreview.story.vue (100%) rename {js/src => src}/components/Home/CategoriesPreview.vue (100%) rename {js/src => src}/components/Home/MobilizonPresentation.story.vue (100%) rename {js/src => src}/components/Home/MobilizonPresentation.vue (100%) rename {js/src => src}/components/Home/SearchFields.story.vue (100%) rename {js/src => src}/components/Home/SearchFields.vue (100%) rename {js/src => src}/components/Home/UnloggedIntroduction.story.vue (100%) rename {js/src => src}/components/Home/UnloggedIntroduction.vue (100%) rename {js/src => src}/components/Image/BlurhashImg.vue (100%) rename {js/src => src}/components/Image/LazyImage.vue (100%) rename {js/src => src}/components/Image/LazyImageWrapper.vue (100%) rename {js/src => src}/components/LeafletMap.vue (100%) rename {js/src => src}/components/Local/CloseContent.vue (100%) rename {js/src => src}/components/Local/CloseEvents.vue (100%) rename {js/src => src}/components/Local/CloseGroups.vue (100%) rename {js/src => src}/components/Local/LastEvents.vue (100%) rename {js/src => src}/components/Local/MoreContent.vue (100%) rename {js/src => src}/components/Local/OnlineEvents.vue (100%) rename {js/src => src}/components/Map/VueBottomSheet.vue (100%) rename {js/src => src}/components/MobilizonLogo.vue (100%) rename {js/src => src}/components/NavBar.vue (100%) rename {js/src => src}/components/OAuth/AuthorizeApplication.vue (100%) rename {js/src => src}/components/OAuth/scopes.ts (100%) rename {js/src => src}/components/PageFooter.vue (100%) rename {js/src => src}/components/Participation/ConfirmParticipation.vue (100%) rename {js/src => src}/components/Participation/NewPrivateMessage.vue (100%) rename {js/src => src}/components/Participation/ParticipationSection.vue (100%) rename {js/src => src}/components/Participation/ParticipationWithAccount.vue (100%) rename {js/src => src}/components/Participation/ParticipationWithoutAccount.vue (100%) rename {js/src => src}/components/Participation/UnloggedParticipation.vue (96%) rename {js/src => src}/components/PictureUpload.vue (100%) rename {js/src => src}/components/Post/MultiPostListItem.vue (100%) rename {js/src => src}/components/Post/PostListItem.story.vue (100%) rename {js/src => src}/components/Post/PostListItem.vue (100%) rename {js/src => src}/components/Post/SharePostModal.story.vue (100%) rename {js/src => src}/components/Post/SharePostModal.vue (100%) rename {js/src => src}/components/Report/ReportCard.vue (100%) rename {js/src => src}/components/Report/ReportModal.vue (100%) rename {js/src => src}/components/Resource/DraggableList.vue (100%) rename {js/src => src}/components/Resource/FolderItem.vue (100%) rename {js/src => src}/components/Resource/ResourceDropdown.vue (100%) rename {js/src => src}/components/Resource/ResourceItem.vue (100%) rename {js/src => src}/components/Resource/ResourceSelector.vue (100%) rename {js/src => src}/components/Resource/utils.ts (100%) rename {js/src => src}/components/Search/EventMarkerMap.vue (100%) rename {js/src => src}/components/Search/filters/FilterSection.vue (100%) rename {js/src => src}/components/SearchField.vue (100%) rename {js/src => src}/components/Settings/NotificationsOnboarding.vue (100%) rename {js/src => src}/components/Settings/SettingMenuItem.vue (100%) rename {js/src => src}/components/Settings/SettingMenuSection.vue (100%) rename {js/src => src}/components/Settings/SettingsMenu.vue (100%) rename {js/src => src}/components/Settings/SettingsOnboarding.vue (100%) rename {js/src => src}/components/Share/DiasporaLogo.vue (100%) rename {js/src => src}/components/Share/MastodonLogo.vue (100%) rename {js/src => src}/components/Share/ShareModal.vue (100%) rename {js/src => src}/components/Share/TelegramLogo.vue (100%) rename {js/src => src}/components/TagElement.vue (100%) rename {js/src => src}/components/TextEditor.vue (100%) rename {js/src => src}/components/Todo/CompactTodo.vue (100%) rename {js/src => src}/components/Todo/FullTodo.vue (100%) rename {js/src => src}/components/User/AuthProvider.vue (100%) rename {js/src => src}/components/User/AuthProviders.story.vue (100%) rename {js/src => src}/components/User/AuthProviders.vue (100%) rename {js/src => src}/components/Utils/EmptyContent.vue (100%) rename {js/src => src}/components/Utils/HomepageRedirectComponent.vue (100%) rename {js/src => src}/components/Utils/NavBreadcrumbs.vue (100%) rename {js/src => src}/components/Utils/ObserverElement.vue (100%) rename {js/src => src}/components/Utils/RedirectWithAccount.vue (100%) rename {js/src => src}/components/core/CustomDialog.vue (100%) rename {js/src => src}/components/core/CustomSnackbar.vue (100%) rename {js/src => src}/components/core/LinkOrRouterLink.vue (100%) rename {js/src => src}/components/core/MaterialIcon.story.vue (100%) rename {js/src => src}/components/core/MaterialIcon.vue (100%) rename {js/src => src}/composition/activity.ts (100%) rename {js/src => src}/composition/apollo/actor.ts (100%) rename {js/src => src}/composition/apollo/address.ts (100%) rename {js/src => src}/composition/apollo/config.ts (100%) rename {js/src => src}/composition/apollo/discussions.ts (100%) rename {js/src => src}/composition/apollo/event.ts (100%) rename {js/src => src}/composition/apollo/group.ts (100%) rename {js/src => src}/composition/apollo/members.ts (100%) rename {js/src => src}/composition/apollo/report.ts (100%) rename {js/src => src}/composition/apollo/resources.ts (100%) rename {js/src => src}/composition/apollo/tags.ts (100%) rename {js/src => src}/composition/apollo/user.ts (100%) rename {js/src => src}/composition/config.ts (100%) rename {js/src => src}/composition/group.ts (100%) rename {js/src => src}/constants.ts (100%) rename {js/src => src}/filters/datetime.ts (100%) rename {js/src => src}/filters/index.ts (100%) rename {js/src => src}/filters/utils.ts (100%) rename {js/src => src}/graphql/actor.ts (100%) rename {js/src => src}/graphql/address.ts (100%) rename {js/src => src}/graphql/admin.ts (100%) rename {js/src => src}/graphql/application.ts (100%) rename {js/src => src}/graphql/auth.ts (100%) rename {js/src => src}/graphql/comment.ts (100%) rename {js/src => src}/graphql/config.ts (100%) rename {js/src => src}/graphql/conversations.ts (100%) rename {js/src => src}/graphql/discussion.ts (100%) rename {js/src => src}/graphql/event.ts (100%) rename {js/src => src}/graphql/event_options.ts (100%) rename {js/src => src}/graphql/feed_tokens.ts (100%) rename {js/src => src}/graphql/followers.ts (100%) rename {js/src => src}/graphql/fragmentTypes.json (100%) rename {js/src => src}/graphql/group.ts (100%) rename {js/src => src}/graphql/home.ts (100%) rename {js/src => src}/graphql/location.ts (100%) rename {js/src => src}/graphql/member.ts (100%) rename {js/src => src}/graphql/participant.ts (100%) rename {js/src => src}/graphql/post.ts (100%) rename {js/src => src}/graphql/report.ts (100%) rename {js/src => src}/graphql/resources.ts (100%) rename {js/src => src}/graphql/search.ts (100%) rename {js/src => src}/graphql/statistics.ts (100%) rename {js/src => src}/graphql/tags.ts (100%) rename {js/src => src}/graphql/todos.ts (100%) rename {js/src => src}/graphql/upload.ts (100%) rename {js/src => src}/graphql/user.ts (100%) rename {js/src => src}/graphql/webPush.ts (100%) rename {js/src => src}/histoire.setup.ts (100%) rename {js/src => src}/i18n/ar.json (100%) rename {js/src => src}/i18n/be.json (100%) rename {js/src => src}/i18n/bn.json (100%) rename {js/src => src}/i18n/ca.json (100%) rename {js/src => src}/i18n/cs.json (100%) rename {js/src => src}/i18n/cy.json (100%) rename {js/src => src}/i18n/da.json (100%) rename {js/src => src}/i18n/de.json (100%) rename {js/src => src}/i18n/en_US.json (100%) rename {js/src => src}/i18n/eo.json (100%) rename {js/src => src}/i18n/es.json (100%) rename {js/src => src}/i18n/eu.json (100%) rename {js/src => src}/i18n/fa.json (100%) rename {js/src => src}/i18n/fi.json (100%) rename {js/src => src}/i18n/fr_FR.json (100%) rename {js/src => src}/i18n/gd.json (100%) rename {js/src => src}/i18n/gl.json (100%) rename {js/src => src}/i18n/he.json (100%) rename {js/src => src}/i18n/hr.json (100%) rename {js/src => src}/i18n/hu.json (100%) rename {js/src => src}/i18n/id.json (100%) rename {js/src => src}/i18n/it.json (100%) rename {js/src => src}/i18n/ja.json (100%) rename {js/src => src}/i18n/kab.json (100%) rename {js/src => src}/i18n/kn.json (100%) rename {js/src => src}/i18n/langs.json (100%) rename {js/src => src}/i18n/nl.json (100%) rename {js/src => src}/i18n/nn.json (100%) rename {js/src => src}/i18n/oc.json (100%) rename {js/src => src}/i18n/pl.json (100%) rename {js/src => src}/i18n/pluralRules/gd.ts (100%) rename {js/src => src}/i18n/pluralRules/index.ts (100%) rename {js/src => src}/i18n/pt.json (100%) rename {js/src => src}/i18n/pt_BR.json (100%) rename {js/src => src}/i18n/ru.json (100%) rename {js/src => src}/i18n/sl.json (100%) rename {js/src => src}/i18n/sv.json (100%) rename {js/src => src}/i18n/tt.json (100%) rename {js/src => src}/i18n/zh_Hans.json (100%) rename {js/src => src}/i18n/zh_Hant.json (100%) rename {js/src => src}/main.ts (100%) rename {js/src => src}/oruga-config.ts (100%) rename {js/src => src}/plugins/dateFns.ts (100%) rename {js/src => src}/plugins/dialog.ts (100%) rename {js/src => src}/plugins/notifier.ts (100%) rename {js/src => src}/plugins/snackbar.ts (100%) rename {js/src => src}/registerServiceWorker.ts (100%) rename {js/src => src}/router/actor.ts (100%) rename {js/src => src}/router/conversation.ts (100%) rename {js/src => src}/router/discussion.ts (100%) rename {js/src => src}/router/error.ts (100%) rename {js/src => src}/router/event.ts (100%) rename {js/src => src}/router/groups.ts (100%) rename {js/src => src}/router/guards/auth-guard.ts (100%) rename {js/src => src}/router/guards/register-guard.ts (100%) rename {js/src => src}/router/index.ts (100%) rename {js/src => src}/router/name.ts (100%) rename {js/src => src}/router/settings.ts (100%) rename {js/src => src}/router/user.ts (100%) rename {js/src => src}/service-worker.ts (100%) rename {js/src => src}/services/AnonymousParticipationStorage.ts (100%) rename {js/src => src}/services/EventMetadata.ts (100%) rename {js/src => src}/services/push-subscription.ts (100%) rename {js/src => src}/services/statistics/index.ts (100%) rename {js/src => src}/services/statistics/matomo.ts (100%) rename {js/src => src}/services/statistics/plausible.ts (100%) rename {js/src => src}/services/statistics/sentry.ts (100%) rename {js/src => src}/shims-tsx.d.ts (100%) rename {js/src => src}/shims-vue.d.ts (100%) rename {js/src => src}/styles/_mixins.scss (100%) rename {js/src => src}/styles/vue-announcer.scss (100%) rename {js/src => src}/styles/vue-skip-to.scss (100%) rename {js/src => src}/types/activity.model.ts (100%) rename {js/src => src}/types/actor/actor.model.ts (100%) rename {js/src => src}/types/actor/follower.model.ts (100%) rename {js/src => src}/types/actor/group.model.ts (100%) rename {js/src => src}/types/actor/index.ts (100%) rename {js/src => src}/types/actor/member.model.ts (100%) rename {js/src => src}/types/actor/person.model.ts (100%) rename {js/src => src}/types/address.model.ts (100%) rename {js/src => src}/types/admin.model.ts (100%) rename {js/src => src}/types/analytics/sentry.model.ts (100%) rename {js/src => src}/types/apollo.ts (100%) rename {js/src => src}/types/application.model.ts (100%) rename {js/src => src}/types/comment.model.ts (100%) rename {js/src => src}/types/config.model.ts (100%) rename {js/src => src}/types/conversation.ts (100%) rename {js/src => src}/types/current-user.model.ts (100%) rename {js/src => src}/types/discussions.ts (100%) rename {js/src => src}/types/enums.ts (100%) rename {js/src => src}/types/errors.model.ts (100%) rename {js/src => src}/types/event-metadata.ts (100%) rename {js/src => src}/types/event-options.model.ts (100%) rename {js/src => src}/types/event.model.ts (100%) rename {js/src => src}/types/feedtoken.model.ts (100%) rename {js/src => src}/types/followedGroupEvent.model.ts (100%) rename {js/src => src}/types/instance.model.ts (100%) rename {js/src => src}/types/login.model.ts (100%) rename {js/src => src}/types/media.model.ts (100%) rename {js/src => src}/types/paginate.ts (100%) rename {js/src => src}/types/participant.model.ts (100%) rename {js/src => src}/types/picture.ts (100%) rename {js/src => src}/types/post.model.ts (100%) rename {js/src => src}/types/report.model.ts (100%) rename {js/src => src}/types/resource.ts (100%) rename {js/src => src}/types/search.model.ts (100%) rename {js/src => src}/types/statistics.model.ts (100%) rename {js/src => src}/types/stats.model.ts (100%) rename {js/src => src}/types/tag.model.ts (100%) rename {js/src => src}/types/todolist.ts (100%) rename {js/src => src}/types/todos.ts (100%) rename {js/src => src}/types/user-location.model.ts (100%) rename {js/src => src}/typings/absinthe.d.ts (100%) rename {js/src => src}/typings/intl.d.ts (100%) rename {js/src => src}/typings/matomo.d.ts (100%) rename {js/src => src}/utils/asyncForEach.ts (100%) rename {js/src => src}/utils/auth.ts (100%) rename {js/src => src}/utils/datetime.ts (100%) rename {js/src => src}/utils/graphics.ts (100%) rename {js/src => src}/utils/html.ts (100%) rename {js/src => src}/utils/i18n.ts (100%) rename {js/src => src}/utils/identity.ts (100%) rename {js/src => src}/utils/image.ts (100%) rename {js/src => src}/utils/listFormat.ts (100%) rename {js/src => src}/utils/location.ts (100%) rename {js/src => src}/utils/poiIcons.ts (100%) rename {js/src => src}/utils/share.ts (100%) rename {js/src => src}/utils/upload.ts (100%) rename {js/src => src}/utils/username.ts (100%) rename {js/src => src}/utils/validators.ts (100%) rename {js/src => src}/views/About/AboutInstanceView.vue (100%) rename {js/src => src}/views/About/GlossaryView.vue (100%) rename {js/src => src}/views/About/PrivacyView.vue (100%) rename {js/src => src}/views/About/RulesView.vue (100%) rename {js/src => src}/views/About/TermsView.vue (100%) rename {js/src => src}/views/AboutView.vue (100%) rename {js/src => src}/views/Account/IdentityPicker.vue (100%) rename {js/src => src}/views/Account/IdentityPickerWrapper.vue (100%) rename {js/src => src}/views/Account/RegisterView.vue (100%) rename {js/src => src}/views/Account/children/EditIdentity.vue (100%) rename {js/src => src}/views/Admin/AdminGroupProfile.vue (100%) rename {js/src => src}/views/Admin/AdminProfile.vue (100%) rename {js/src => src}/views/Admin/AdminUserProfile.vue (100%) rename {js/src => src}/views/Admin/DashboardView.vue (100%) rename {js/src => src}/views/Admin/GroupProfiles.vue (100%) rename {js/src => src}/views/Admin/InstanceView.vue (100%) rename {js/src => src}/views/Admin/InstancesView.vue (99%) rename {js/src => src}/views/Admin/ProfilesView.vue (100%) rename {js/src => src}/views/Admin/SettingsView.vue (100%) rename {js/src => src}/views/Admin/UsersView.vue (100%) rename {js/src => src}/views/CategoriesView.vue (100%) rename {js/src => src}/views/Conversations/ConversationListView.vue (100%) rename {js/src => src}/views/Conversations/ConversationView.vue (100%) rename {js/src => src}/views/Discussions/CreateView.vue (100%) rename {js/src => src}/views/Discussions/DiscussionView.vue (100%) rename {js/src => src}/views/Discussions/DiscussionsListView.vue (100%) rename {js/src => src}/views/ErrorView.vue (100%) rename {js/src => src}/views/Event/EditView.vue (100%) rename {js/src => src}/views/Event/EventView.vue (100%) rename {js/src => src}/views/Event/GroupEvents.vue (100%) rename {js/src => src}/views/Event/MyEventsView.vue (100%) rename {js/src => src}/views/Event/ParticipantsView.vue (100%) rename {js/src => src}/views/Group/CreateView.vue (100%) rename {js/src => src}/views/Group/GroupFollowers.vue (100%) rename {js/src => src}/views/Group/GroupMembers.vue (100%) rename {js/src => src}/views/Group/GroupSettings.vue (100%) rename {js/src => src}/views/Group/GroupView.vue (100%) rename {js/src => src}/views/Group/MyGroups.vue (100%) rename {js/src => src}/views/Group/SettingsView.vue (100%) rename {js/src => src}/views/Group/TimelineView.vue (100%) rename {js/src => src}/views/HomeView.vue (99%) rename {js/src => src}/views/InteractView.vue (100%) rename {js/src => src}/views/Moderation/LogsView.vue (100%) rename {js/src => src}/views/Moderation/ReportListView.vue (100%) rename {js/src => src}/views/Moderation/ReportView.vue (100%) rename {js/src => src}/views/OAuth/AuthorizeView.vue (100%) rename {js/src => src}/views/OAuth/DeviceActivationView.vue (100%) rename {js/src => src}/views/PageNotFound.vue (100%) rename {js/src => src}/views/Posts/EditView.vue (100%) rename {js/src => src}/views/Posts/ListView.vue (100%) rename {js/src => src}/views/Posts/PostView.vue (100%) rename {js/src => src}/views/Resources/ResourceFolder.vue (100%) rename {js/src => src}/views/SearchView.vue (100%) rename {js/src => src}/views/Settings/AccountSettings.vue (100%) rename {js/src => src}/views/Settings/AppsView.vue (100%) rename {js/src => src}/views/Settings/NotificationsView.vue (100%) rename {js/src => src}/views/Settings/PreferencesView.vue (100%) rename {js/src => src}/views/SettingsView.vue (100%) rename {js/src => src}/views/Todos/TodoList.vue (100%) rename {js/src => src}/views/Todos/TodoLists.vue (100%) rename {js/src => src}/views/Todos/TodoView.vue (100%) rename {js/src => src}/views/User/EmailValidate.vue (100%) rename {js/src => src}/views/User/LoginView.vue (100%) rename {js/src => src}/views/User/PasswordReset.vue (100%) rename {js/src => src}/views/User/ProviderValidation.vue (100%) rename {js/src => src}/views/User/RegisterView.vue (100%) rename {js/src => src}/views/User/ResendConfirmation.vue (100%) rename {js/src => src}/views/User/SendPasswordReset.vue (100%) rename {js/src => src}/views/User/SettingsOnboard.vue (100%) rename {js/src => src}/views/User/ValidateUser.vue (100%) rename {js/src => src}/vue-apollo.ts (100%) rename js/tailwind.config.js => tailwind.config.js (100%) rename {js/tests => tests}/e2e/login.spec.ts (100%) rename {js/tests => tests}/unit/.eslintrc.js (100%) rename {js/tests => tests}/unit/setup.ts (100%) rename {js/tests => tests}/unit/specs/common.ts (100%) rename {js/tests => tests}/unit/specs/components/Comment/CommentTree.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap (100%) rename {js/tests => tests}/unit/specs/components/Group/GroupSection.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap (100%) rename {js/tests => tests}/unit/specs/components/Participation/ParticipationSection.spec.ts (98%) rename {js/tests => tests}/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap (100%) rename {js/tests => tests}/unit/specs/components/Post/PostListItem.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap (100%) rename {js/tests => tests}/unit/specs/components/Report/ReportCard.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/Report/ReportModal.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap (100%) rename {js/tests => tests}/unit/specs/components/User/PasswordReset.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap (100%) rename {js/tests => tests}/unit/specs/components/User/login.spec.ts (100%) rename {js/tests => tests}/unit/specs/components/__snapshots__/navbar.spec.ts.snap (100%) rename {js/tests => tests}/unit/specs/components/navbar.spec.ts (91%) rename {js/tests => tests}/unit/specs/components/tag.spec.ts (100%) rename {js/tests => tests}/unit/specs/mocks/auth.ts (100%) rename {js/tests => tests}/unit/specs/mocks/config.ts (100%) rename {js/tests => tests}/unit/specs/mocks/event.ts (100%) rename {js/tests => tests}/unit/specs/mocks/matchMedia.ts (100%) rename {js/tests => tests}/unit/svgTransform.ts (100%) rename js/vite.config.js => vite.config.js (97%) rename js/vue-i18n-extract.config.js => vue-i18n-extract.config.js (100%) diff --git a/js/.browserslistrc b/.browserslistrc similarity index 100% rename from js/.browserslistrc rename to .browserslistrc diff --git a/.credo.exs b/.credo.exs index bb63ed529..eb8b190a7 100644 --- a/.credo.exs +++ b/.credo.exs @@ -22,7 +22,7 @@ # In the latter case `**/*.{ex,exs}` will be used. # included: ["lib/", "src/", "test/"], - excluded: [~r"/_build/", ~r"/deps/", ~r"/js/"] + excluded: [~r"/_build/", ~r"/deps/", ~r"/src/"] }, # # If you create your own checks, you must specify the source files for diff --git a/.dockerignore b/.dockerignore index c1a60d799..d887b97bc 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,5 +15,5 @@ Makefile README.md SECURITY.md ssh_match_hostname -.js/package-lock.json -js/node_modules \ No newline at end of file +package-lock.json +node_modules \ No newline at end of file diff --git a/js/.editorconfig b/.editorconfig similarity index 100% rename from js/.editorconfig rename to .editorconfig diff --git a/js/.eslintrc.js b/.eslintrc.js similarity index 100% rename from js/.eslintrc.js rename to .eslintrc.js diff --git a/.gitignore b/.gitignore index 8f2fa3108..b04be4bae 100644 --- a/.gitignore +++ b/.gitignore @@ -46,7 +46,12 @@ release/ .weblate docker/production/.env test-junit-report.xml -js/junit.xml +junit.xml .env demo/ codeclimate.json + +node_modules +stats.html +/coverage +/playwright-report/ \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 59c1016eb..7c5d740f1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,7 +13,6 @@ stages: variables: MIX_ENV: "test" - YARN_CACHE_FOLDER: "js/.yarn" # DB Variables for Postgres / Postgis POSTGRES_DB: mobilizon_test POSTGRES_USER: postgres @@ -38,8 +37,8 @@ cache: paths: - deps/ - _build/ - - js/node_modules - - js/.yarn + - node_modules + - .npm # Installed dependencies are cached across the pipeline # So there is no need to reinstall them all the time @@ -47,7 +46,7 @@ cache: install: stage: install script: - - yarn --cwd "js" install --frozen-lockfile + - npm ci - mix deps.get - mix compile @@ -74,10 +73,10 @@ lint-front: stage: check before_script: - export EXITVALUE=0 - - yarn --cwd "js" install --frozen-lockfile + - npm ci script: - - yarn --cwd "js" run lint || export EXITVALUE=1 - - yarn --cwd "js" run prettier -c . || export EXITVALUE=1 + - npm run lint || export EXITVALUE=1 + - npm run prettier -c . || export EXITVALUE=1 - exit $EXITVALUE build-frontend: @@ -87,8 +86,8 @@ build-frontend: - apt update - apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant script: - - yarn --cwd "js" install --frozen-lockfile - - yarn --cwd "js" run build + - npm install --frozen-lockfile + - npm run build artifacts: expire_in: 5 days paths: @@ -118,7 +117,7 @@ deps: script: - export EXITVALUE=0 - mix hex.outdated || export EXITVALUE=1 - - yarn --cwd "js" outdated || export EXITVALUE=1 + - npm outdated || export EXITVALUE=1 - exit $EXITVALUE allow_failure: true needs: @@ -151,16 +150,16 @@ vitest: needs: - lint-front before_script: - - yarn --cwd "js" install --frozen-lockfile + - npm install --frozen-lockfile script: - - yarn --cwd "js" run coverage --reporter=default --reporter=junit --outputFile.junit=./junit.xml + - npm run coverage --reporter=default --reporter=junit --outputFile.junit=./junit.xml artifacts: when: always paths: - - js/coverage + - coverage reports: junit: - - js/junit.xml + - junit.xml expire_in: 30 days e2e: @@ -175,11 +174,10 @@ e2e: - mix ecto.create - mix ecto.migrate - mix run priv/repo/e2e.seed.exs - - cd js && yarn install && yarn run build && npx playwright install && cd ../ + - npm install && npm run build && npx playwright install - mix phx.digest script: - mix phx.server & - - cd js - npx wait-on http://localhost:4000 - npx playwright test --project $BROWSER parallel: @@ -188,8 +186,8 @@ e2e: artifacts: expire_in: 2 days paths: - - js/playwright-report/ - - js/test-results/ + - playwright-report/ + - test-results/ pages: stage: deploy @@ -198,8 +196,8 @@ pages: - mix deps.get - mix docs - mv doc public/backend - # #- yarn run --cwd "js" styleguide:build - # #- mv js/styleguide public/frontend + # #- npm run styleguide:build + # #- mv styleguide public/frontend rules: - if: '$CI_COMMIT_BRANCH == "main"' artifacts: diff --git a/.husky/pre-commit b/.husky/pre-commit index 5cf6aa7f8..1a7a1f3ea 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,3 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -cd js -yarn run lint-staged +npm run pre-commit diff --git a/js/.prettierignore b/.prettierignore similarity index 100% rename from js/.prettierignore rename to .prettierignore diff --git a/js/.prettierrc.json b/.prettierrc.json similarity index 100% rename from js/.prettierrc.json rename to .prettierrc.json diff --git a/Dockerfile b/Dockerfile index 8d6afe8ee..749a0f8f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM elixir:alpine -RUN apk add --no-cache inotify-tools postgresql-client yarn file make gcc libc-dev argon2 imagemagick cmake build-base libwebp-tools bash ncurses git python3 +RUN apk add --no-cache inotify-tools postgresql-client file make gcc libc-dev argon2 imagemagick cmake build-base libwebp-tools bash ncurses git python3 RUN mix local.hex --force && mix local.rebar --force diff --git a/Makefile b/Makefile index 1542c6179..7f2d40aba 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ init: setup: stop @bash docker/message.sh "Compiling everything" - docker-compose run --rm api bash -c 'mix deps.get; yarn --cwd "js"; yarn --cwd "js" build:pictures; mix ecto.create; mix ecto.migrate' + docker-compose run --rm api bash -c 'mix deps.get; npm ci; npm run build:pictures; mix ecto.create; mix ecto.migrate' migrate: docker-compose run --rm api mix ecto.migrate logs: diff --git a/apollo.config.js b/apollo.config.js index 23853968f..7f935c885 100644 --- a/apollo.config.js +++ b/apollo.config.js @@ -7,6 +7,6 @@ module.exports = { localSchemaFile: "./schema.graphql", }, // Files processed by the extension - includes: ["js/src/**/*.vue", "js/src/**/*.js"], + includes: ["src/**/*.vue", "src/**/*.js"], }, }; diff --git a/config/dev.exs b/config/dev.exs index ebecdb839..10f7ea0d1 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -16,7 +16,6 @@ config :mobilizon, Mobilizon.Web.Endpoint, watchers: [ node: [ "node_modules/.bin/vite", - cd: Path.expand("../js", __DIR__) ] ] diff --git a/config/e2e.exs b/config/e2e.exs index 7135ea44b..7d1636e18 100644 --- a/config/e2e.exs +++ b/config/e2e.exs @@ -16,7 +16,7 @@ config :mobilizon, Mobilizon.Web.Endpoint, check_origin: false, # Somehow this can't be merged properly with the dev config so we got this… watchers: [ - yarn: [cd: Path.expand("../js", __DIR__)] + npm: [] ] config :vite_phx, diff --git a/docker/multiarch/Dockerfile b/docker/multiarch/Dockerfile index 5c71643b2..5f751c582 100644 --- a/docker/multiarch/Dockerfile +++ b/docker/multiarch/Dockerfile @@ -18,9 +18,8 @@ ENV NODE_VERSION 18 RUN apt-get update -yq && apt-get install -yq build-essential cmake postgresql-client git curl gnupg unzip exiftool webp imagemagick gifsicle RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# # Install Node & yarn +# # Install Node # RUN curl -sL https://deb.nodesource.com/setup_16.x | bash && apt-get install nodejs -yq -# RUN npm install -g yarn # Install build tools RUN source /root/.bashrc && \ @@ -32,8 +31,8 @@ COPY ./ /mobilizon WORKDIR /mobilizon # # Build front-end -# RUN yarn --cwd "js" install --frozen-lockfile -# RUN yarn --cwd "js" run build +# RUN npm install +# RUN npm run build # Elixir release RUN source /root/.bashrc && \ diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index e5b036c22..ef7e83492 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -3,11 +3,10 @@ FROM node:18-alpine as assets RUN apk add --no-cache python3 build-base libwebp-tools bash imagemagick ncurses WORKDIR /build -COPY js . +COPY . . # Network timeout because it's slow when cross-compiling -RUN yarn install --network-timeout 100000 \ - && yarn run build +RUN npm install && npm run build # Then, build the application binary FROM elixir:1.15-alpine AS builder diff --git a/docker/tests/Dockerfile b/docker/tests/Dockerfile index 182e2351f..6288c41b1 100644 --- a/docker/tests/Dockerfile +++ b/docker/tests/Dockerfile @@ -4,7 +4,7 @@ LABEL maintainer="Thomas Citharel <tcit@tcit.fr>" ENV REFRESHED_AT=2023-08-17 RUN apt-get update -yq && apt-get install -yq build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 cmake exiftool python3-pip python3-setuptools RUN curl -sL https://deb.nodesource.com/setup_20.x | bash && apt-get install nodejs -yq -RUN npm install -g yarn wait-on +RUN npm install -g wait-on RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN mix local.hex --force && mix local.rebar --force RUN pip3 install -Iv weasyprint pyexcel_ods3 diff --git a/docs/dev.md b/docs/dev.md index 1fa63f020..26a8bc088 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -19,7 +19,7 @@ Mobilizon is an app that uses: * `config` backend compile-time and runtime configuration * `docker` 🐳 - * `js/src` Front-end + * `src` Front-end * `lib/federation` Handling all the federation stuff (sending and receving activities, converting activities, signatures, helpers…) * `lib/graphql/schema` The schema declarations for the GraphQL API * `lib/graphql/resolvers` The logic behind the GraphQL API diff --git a/js/env.d.ts b/env.d.ts similarity index 100% rename from js/env.d.ts rename to env.d.ts diff --git a/js/fragmentTypes.json b/fragmentTypes.json similarity index 100% rename from js/fragmentTypes.json rename to fragmentTypes.json diff --git a/js/get_union_json.ts b/get_union_json.ts similarity index 100% rename from js/get_union_json.ts rename to get_union_json.ts diff --git a/js/histoire.config.ts b/histoire.config.ts similarity index 100% rename from js/histoire.config.ts rename to histoire.config.ts diff --git a/js/.gitignore b/js/.gitignore deleted file mode 100644 index 11369d996..000000000 --- a/js/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -.DS_Store -node_modules -/dist - -/coverage -stats.html - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? -/test-results/ -/playwright-report/ -/playwright/.cache/ diff --git a/js/tsconfig.json b/js/tsconfig.json deleted file mode 100644 index a8bb8cbea..000000000 --- a/js/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "strict": true, - "jsx": "preserve", - "importHelpers": true, - "moduleResolution": "node", - "experimentalDecorators": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, - "isolatedModules": true, - "sourceMap": true, - "baseUrl": ".", - "types": ["webpack-env", "jest", "vite/client", "vite-plugin-pwa/vue"], - "typeRoots": ["./@types", "./node_modules/@types"], - "paths": { - "@/*": ["src/*"] - }, - "lib": [ - "esnext", - "dom", - "es2017.intl", - "dom.iterable", - "scripthost", - "webworker" - ] - }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - "src/**/*.vue", - "tests/**/*.ts", - "tests/**/*.tsx", - "env.d.ts" - ], - "exclude": ["node_modules"] -} diff --git a/js/yarn.lock b/js/yarn.lock deleted file mode 100644 index 8c8d86048..000000000 --- a/js/yarn.lock +++ /dev/null @@ -1,7716 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@akryum/tinypool@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@akryum/tinypool/-/tinypool-0.3.1.tgz#a14b3d51a400e7c0ab4c7e2b1c2e2fa0386aea87" - integrity sha512-nznEC1ZA/m3hQDEnrGQ4c5gkaa9pcaVnw4LFJyzBAaR7E3nfiAPEHS3otnSafpZouVnoKeITl5D+2LsnwlnK8g== - -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - -"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@apideck/better-ajv-errors@^0.3.1": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" - integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== - dependencies: - json-schema "^0.4.0" - jsonpointer "^5.0.0" - leven "^3.1.0" - -"@apollo/client@^3.0.0", "@apollo/client@^3.3.16", "@apollo/client@^3.8.7": - version "3.8.7" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.8.7.tgz#090b1518f513503b9a6a690ee3eaec49529822e1" - integrity sha512-DnQtFkQrCyxHTSa9gR84YRLmU/al6HeXcLZazVe+VxKBmx/Hj4rV8xWtzfWYX5ijartsqDR7SJgV037MATEecA== - dependencies: - "@graphql-typed-document-node/core" "^3.1.1" - "@wry/context" "^0.7.3" - "@wry/equality" "^0.5.6" - "@wry/trie" "^0.4.3" - graphql-tag "^2.12.6" - hoist-non-react-statics "^3.3.2" - optimism "^0.17.5" - prop-types "^15.7.2" - response-iterator "^0.2.6" - symbol-observable "^4.0.0" - ts-invariant "^0.10.3" - tslib "^2.3.0" - zen-observable-ts "^1.2.5" - -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.13": - version "7.22.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== - dependencies: - "@babel/highlight" "^7.22.13" - chalk "^2.4.2" - -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" - integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== - -"@babel/core@^7.11.1": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" - integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.2" - "@babel/parser" "^7.23.3" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.3" - "@babel/types" "^7.23.3" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.3.tgz#86e6e83d95903fbe7613f448613b8b319f330a8e" - integrity sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg== - dependencies: - "@babel/types" "^7.23.3" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" - integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.15" - browserslist "^4.21.9" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" - integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" - integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@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" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" - integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" - integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" - integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" - -"@babel/highlight@^7.22.13": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" - integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" - integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" - integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.23.3" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz#20c60d4639d18f7da8602548512e9d3a4c8d7098" - integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" - integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" - integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" - integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz#9df2627bad7f434ed13eef3e61b2b65cafd4885b" - integrity sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" - integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-block-scoped-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" - integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-block-scoping@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz#e99a3ff08f58edd28a8ed82481df76925a4ffca7" - integrity sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" - integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz#56f2371c7e5bf6ff964d84c5dc4d4db5536b5159" - integrity sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz#73380c632c095b03e8503c24fd38f95ad41ffacb" - integrity sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" - integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.15" - -"@babel/plugin-transform-destructuring@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" - integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" - integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" - integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz#82625924da9ed5fb11a428efb02e43bc9a3ab13e" - integrity sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" - integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz#dcd066d995f6ac6077e5a4ccb68322a01e23ac49" - integrity sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz#afe115ff0fbce735e02868d41489093c63e15559" - integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" - integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== - dependencies: - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz#489724ab7d3918a4329afb4172b2fd2cf3c8d245" - integrity sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" - integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz#3a406d6083feb9487083bca6d2334a3c9b6c4808" - integrity sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" - integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-amd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" - integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" - integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" - integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" - integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" - integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz#8a613d514b521b640344ed7c56afeff52f9413f8" - integrity sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz#2f8da42b75ba89e5cfcd677afd0856d52c0c2e68" - integrity sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz#509373753b5f7202fe1940e92fd075bd7874955f" - integrity sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog== - dependencies: - "@babel/compat-data" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.23.3" - -"@babel/plugin-transform-object-super@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" - integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - -"@babel/plugin-transform-optional-catch-binding@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz#362c0b545ee9e5b0fa9d9e6fe77acf9d4c480027" - integrity sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz#92fc83f54aa3adc34288933fa27e54c13113f4be" - integrity sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" - integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" - integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz#5cd34a2ce6f2d008cc8f91d8dcc29e2c41466da6" - integrity sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" - integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-regenerator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" - integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" - integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-shorthand-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" - integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-spread@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" - integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" - integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-template-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" - integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" - integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-escapes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" - integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" - integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" - integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" - integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.11.0": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.3.tgz#d299e0140a7650684b95c62be2db0ef8c975143e" - integrity sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q== - dependencies: - "@babel/compat-data" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.23.3" - "@babel/plugin-syntax-import-attributes" "^7.23.3" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.3" - "@babel/plugin-transform-async-to-generator" "^7.23.3" - "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.3" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.3" - "@babel/plugin-transform-classes" "^7.23.3" - "@babel/plugin-transform-computed-properties" "^7.23.3" - "@babel/plugin-transform-destructuring" "^7.23.3" - "@babel/plugin-transform-dotall-regex" "^7.23.3" - "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.3" - "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.3" - "@babel/plugin-transform-for-of" "^7.23.3" - "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.3" - "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.3" - "@babel/plugin-transform-member-expression-literals" "^7.23.3" - "@babel/plugin-transform-modules-amd" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.3" - "@babel/plugin-transform-modules-umd" "^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.3" - "@babel/plugin-transform-numeric-separator" "^7.23.3" - "@babel/plugin-transform-object-rest-spread" "^7.23.3" - "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.3" - "@babel/plugin-transform-optional-chaining" "^7.23.3" - "@babel/plugin-transform-parameters" "^7.23.3" - "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.3" - "@babel/plugin-transform-property-literals" "^7.23.3" - "@babel/plugin-transform-regenerator" "^7.23.3" - "@babel/plugin-transform-reserved-words" "^7.23.3" - "@babel/plugin-transform-shorthand-properties" "^7.23.3" - "@babel/plugin-transform-spread" "^7.23.3" - "@babel/plugin-transform-sticky-regex" "^7.23.3" - "@babel/plugin-transform-template-literals" "^7.23.3" - "@babel/plugin-transform-typeof-symbol" "^7.23.3" - "@babel/plugin-transform-unicode-escapes" "^7.23.3" - "@babel/plugin-transform-unicode-property-regex" "^7.23.3" - "@babel/plugin-transform-unicode-regex" "^7.23.3" - "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" - integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== - dependencies: - regenerator-runtime "^0.12.0" - -"@babel/runtime@^7.11.2", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.8.4": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" - integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.3" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.3" - "@babel/types" "^7.23.3" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.4.4": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" - integrity sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@codemirror/commands@^6.2.4": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.3.0.tgz#cb7ad6ddc1e8af3a3c352135bd0348e6950b4e9d" - integrity sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.2.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.1.0" - -"@codemirror/lang-json@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz#0a0be701a5619c4b0f8991f9b5e95fe33f462330" - integrity sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ== - dependencies: - "@codemirror/language" "^6.0.0" - "@lezer/json" "^1.0.0" - -"@codemirror/language@^6.0.0", "@codemirror/language@^6.8.0": - version "6.9.2" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.9.2.tgz#1fba6e0eab995afda683d4e6c556365a982b5258" - integrity sha512-QGTQXSpAKDIzaSE96zNK1UfIUhPgkT1CLjh1N5qVzZuxgsEOhz5RqaN8QCIdyOQklGLx3MgHd9YrE3X3+Pl1ow== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/common" "^1.1.0" - "@lezer/highlight" "^1.0.0" - "@lezer/lr" "^1.0.0" - style-mod "^4.0.0" - -"@codemirror/lint@^6.4.0": - version "6.4.2" - resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.4.2.tgz#c13be5320bde9707efdc94e8bcd3c698abae0b92" - integrity sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - crelt "^1.0.5" - -"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0", "@codemirror/state@^6.2.1": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.3.1.tgz#acabbbaeedcbfd31680704aba22102a75104f434" - integrity sha512-88e4HhMtKJyw6fKprGaN/yZfiaoGYOi2nM45YCUC6R/kex9sxFWBDGatS1vk4lMgnWmdIIB9tk8Gj1LmL8YfvA== - -"@codemirror/theme-one-dark@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz#fcef9f9cfc17a07836cb7da17c9f6d7231064df8" - integrity sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.0.0" - "@lezer/highlight" "^1.0.0" - -"@codemirror/view@^6.0.0", "@codemirror/view@^6.16.0": - version "6.22.0" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.22.0.tgz#5a5214a04f149ecf54c4803b7fec9bdac56d0d74" - integrity sha512-6zLj4YIoIpfTGKrDMTbeZRpa8ih4EymMCKmddEDcJWrCdp/N1D46B38YEz4creTb4T177AVS9EyXkLeC/HL2jA== - dependencies: - "@codemirror/state" "^6.1.4" - style-mod "^4.1.0" - w3c-keyname "^2.2.4" - -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== - -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== - -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== - -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== - -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== - -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== - -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== - -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== - -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== - -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== - -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== - -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== - -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== - -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== - -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== - -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== - -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== - -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== - -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== - -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== - -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== - -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" - integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" - integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== - -"@floating-ui/core@^1.1.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" - integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== - dependencies: - "@floating-ui/utils" "^0.1.3" - -"@floating-ui/dom@~1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.1.1.tgz#66aa747e15894910869bf9144fc54fc7d6e9f975" - integrity sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw== - dependencies: - "@floating-ui/core" "^1.1.0" - -"@floating-ui/utils@^0.1.3": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" - integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== - -"@framasoft/socket-apollo-link@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@framasoft/socket-apollo-link/-/socket-apollo-link-1.0.1.tgz#a25285a041cd50154f6a955585b6432781719e4c" - integrity sha512-j2RHnVcPQx1iTWqBnRcjFPwY4lfED/X+/irKmsQahJUg3aMZUhiyX1+CwN14jTYc++oF8UVXbsn8knETCKkm8w== - dependencies: - "@apollo/client" "^3.8.7" - "@babel/runtime" "^7.23.2" - "@framasoft/socket" ">=1.0.0" - core-js "^3.33.2" - flow-static-land "^0.2.8" - graphql "^16.8.1" - zen-observable "^0.10.0" - -"@framasoft/socket@>=1.0.0", "@framasoft/socket@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@framasoft/socket/-/socket-1.0.3.tgz#99184acbb9da7d5824f83139f9e01f27c2161d71" - integrity sha512-84vWRlHqEBSAawJWh5du/GxIQX3fuqedh9fAETqm8o1SJ8/2APzDBibpjHBA4q2hrqhwOBHdBxKykU/bEJ++EQ== - dependencies: - "@babel/runtime" "^7.23.2" - "@jumpn/utils-array" "0.3.4" - "@jumpn/utils-composite" "0.7.0" - "@jumpn/utils-graphql" "0.6.0" - core-js "^3.33.2" - zen-observable "^0.10.0" - -"@graphql-typed-document-node/core@^3.1.1": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" - integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== - -"@histoire/app@^0.17.5": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@histoire/app/-/app-0.17.5.tgz#2fb379581a07e58b52e203063fa14bc868bcba98" - integrity sha512-R3mn28OqBLAKzNuTuMpRFiBdRMrMGsn9rOgJZUC/Km1aj1KpRpg5ETzeWRMtqR3ZAWrlT3Z3pzvGAesPNoXHDw== - dependencies: - "@histoire/controls" "^0.17.4" - "@histoire/shared" "^0.17.5" - "@histoire/vendors" "^0.17.4" - "@types/flexsearch" "^0.7.3" - flexsearch "0.7.21" - shiki-es "^0.2.0" - -"@histoire/controls@^0.17.4": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@histoire/controls/-/controls-0.17.4.tgz#fa9acf54430d5161e6fef55963fa35506c4ca436" - integrity sha512-eHon0NF7NpvQt1azE83laK+rX2elCm5wp45Oijv1viBwD+1KfXuxlU1xQoFqeNHPyD2F2c3NYLuKUOW/tzTKDw== - dependencies: - "@codemirror/commands" "^6.2.4" - "@codemirror/lang-json" "^6.0.1" - "@codemirror/language" "^6.8.0" - "@codemirror/lint" "^6.4.0" - "@codemirror/state" "^6.2.1" - "@codemirror/theme-one-dark" "^6.1.2" - "@codemirror/view" "^6.16.0" - "@histoire/shared" "^0.17.4" - "@histoire/vendors" "^0.17.4" - -"@histoire/plugin-vue@^0.17.1": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@histoire/plugin-vue/-/plugin-vue-0.17.5.tgz#cefdec440b3f14169d7a07da9b82d219cb872c9c" - integrity sha512-xP/zQ+N0E83IUaoZgchAKtKJg1OQahih7tEcYgwhrmBxMw9F8TG0TyeGleJYLTbYXcy7THwIANZGfEPdQBuyuA== - dependencies: - "@histoire/controls" "^0.17.4" - "@histoire/shared" "^0.17.5" - "@histoire/vendors" "^0.17.4" - change-case "^4.1.2" - globby "^13.2.2" - launch-editor "^2.6.0" - pathe "^0.2.0" - -"@histoire/shared@^0.17.4", "@histoire/shared@^0.17.5": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@histoire/shared/-/shared-0.17.5.tgz#b1fc16e6b7576b4df2fe98c7f5b011ebc3cadbed" - integrity sha512-sxdbRhYd5puUjM30Je6HpAyU2pCBpltopsZBF+4DhB+GKCWi3unhnwFHC2wCMcsYA+/J/YmYJqI3mVXQJCzmqg== - dependencies: - "@histoire/vendors" "^0.17.4" - "@types/fs-extra" "^9.0.13" - "@types/markdown-it" "^12.2.3" - chokidar "^3.5.3" - pathe "^0.2.0" - picocolors "^1.0.0" - -"@histoire/vendors@^0.17.4": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@histoire/vendors/-/vendors-0.17.4.tgz#33e91f89a4417773ba8ac437a95917893dc13208" - integrity sha512-Tz9bGp3onic5cc1x+5NErS+Y19NxNEAPpYKab7UnPbx8iEsWqNGsbgZAAEL8CJKhOX/DiKfD7NUEQMC4AW/Kbg== - -"@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== - dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== - -"@intlify/core-base@9.6.5": - version "9.6.5" - resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.6.5.tgz#af92cae122fb99e882b3d7f1433f682065a3e164" - integrity sha512-LzbGXiZkMWPIHnHI0g6q554S87Cmh2mmCmjytK/3pDQfjI84l+dgGoeQuKj02q7EbULRuUUgYVZVqAwEUawXGg== - dependencies: - "@intlify/message-compiler" "9.6.5" - "@intlify/shared" "9.6.5" - -"@intlify/message-compiler@9.6.5": - version "9.6.5" - resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.6.5.tgz#3a33882497417c63b23b012731d60a485c8e5558" - integrity sha512-WeJ499thIj0p7JaIO1V3JaJbqdqfBykS5R8fElFs5hNeotHtPAMBs4IiA+8/KGFkAbjJusgFefCq6ajP7F7+4Q== - dependencies: - "@intlify/shared" "9.6.5" - source-map-js "^1.0.2" - -"@intlify/shared@9.6.5": - version "9.6.5" - resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.6.5.tgz#a81f384d804e99ceac55bb061c344f156bd96590" - integrity sha512-gD7Ey47Xi4h/t6P+S04ymMSoA3wVRxGqjxuIMglwRO8POki9h164Epu2N8wk/GHXM/hR6ZGcsx2HArCCENjqSQ== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jumpn/utils-array@0.3.4": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jumpn/utils-array/-/utils-array-0.3.4.tgz#fb4310120108f659dab54075ef93abc56137de5e" - integrity sha512-ExRwf0b0NMyMn6HLStMeqEEtmblV0BKVZ4YT3FhEJ5ErZSPN4Vv6xYUJQGNG0b7QGZJIN2KetxEoOm4MYmXygw== - dependencies: - babel-polyfill "6.26.0" - babel-runtime "6.26.0" - flow-static-land "0.2.7" - -"@jumpn/utils-composite@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@jumpn/utils-composite/-/utils-composite-0.7.0.tgz#1979db00dd9465ebc33826adab17f1dd48e6fd0c" - integrity sha512-kamRVYJLNvjMrnKKeu2RSFQHLUO/IYFo05gLI7GQcCk063mJzsjCCfRycCievIBI+5Sg8C7A5gwRYxkBA5jY8w== - dependencies: - "@jumpn/utils-array" "0.3.4" - babel-polyfill "6.26.0" - babel-runtime "6.26.0" - fast-deep-equal "1.0.0" - flow-static-land "0.2.8" - -"@jumpn/utils-graphql@0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@jumpn/utils-graphql/-/utils-graphql-0.6.0.tgz#9afd384c14e3f4caf68fa3ebeb3270218b18e931" - integrity sha512-I5OSEh8Ed4FdLIcUTYzWdpO9noQOoWptdgF8yOZ0xhDD7h7E9IgPYxfy36qbC6v9xlpGTwQMu3Wn8ulkinG/MQ== - dependencies: - "@babel/runtime" "7.2.0" - core-js "2.6.0" - graphql "14.0.2" - -"@lezer/common@^1.0.0", "@lezer/common@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.1.1.tgz#4a06a0e1b9214d7eb2ea4a9354d47a63044cee49" - integrity sha512-aAPB9YbvZHqAW+bIwiuuTDGB4DG0sYNRObGLxud8cW7osw1ZQxfDuTZ8KQiqfZ0QJGcR34CvpTMDXEyo/+Htgg== - -"@lezer/highlight@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.0.tgz#e5898c3644208b4b589084089dceeea2966f7780" - integrity sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA== - dependencies: - "@lezer/common" "^1.0.0" - -"@lezer/json@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@lezer/json/-/json-1.0.1.tgz#3bf5641f3d1408ec31a5f9b29e4e96c6e3a232e6" - integrity sha512-nkVC27qiEZEjySbi6gQRuMwa2sDu2PtfjSgz0A4QF81QyRGm3kb2YRzLcOPcTEtmcwvrX/cej7mlhbwViA4WJw== - dependencies: - "@lezer/highlight" "^1.0.0" - "@lezer/lr" "^1.0.0" - -"@lezer/lr@^1.0.0": - version "1.3.14" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.14.tgz#59d4a3b25698bdac0ef182fa6eadab445fc4f29a" - integrity sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug== - dependencies: - "@lezer/common" "^1.0.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@one-ini/wasm@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" - integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== - -"@oruga-ui/oruga-next@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@oruga-ui/oruga-next/-/oruga-next-0.7.0.tgz#3d454cf648182d25a99a21c7101506f8f585d13a" - integrity sha512-T2KnNhGzgqv/Xzu4Efx3wnYahANcP6Z7Yc8DHOFIOLrM+ZDdTS9OjL3gofBVDrDBRg1DQv6EvsSsNkwMR88LpA== - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/utils@^2.3.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" - integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== - dependencies: - cross-spawn "^7.0.3" - fast-glob "^3.3.0" - is-glob "^4.0.3" - open "^9.1.0" - picocolors "^1.0.0" - tslib "^2.6.0" - -"@playwright/test@^1.25.1": - version "1.39.0" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.39.0.tgz#d10ba8e38e44104499e25001945f07faa9fa91cd" - integrity sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ== - dependencies: - playwright "1.39.0" - -"@polka/url@^1.0.0-next.20": - version "1.0.0-next.23" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c" - integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== - -"@popperjs/core@^2.9.0": - version "2.11.8" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" - integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== - -"@remirror/core-constants@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a" - integrity sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ== - -"@remirror/core-helpers@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@remirror/core-helpers/-/core-helpers-3.0.0.tgz#3a35c2346bc23ebc3cee585b7840b5567755c5f1" - integrity sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A== - dependencies: - "@remirror/core-constants" "^2.0.2" - "@remirror/types" "^1.0.1" - "@types/object.omit" "^3.0.0" - "@types/object.pick" "^1.3.2" - "@types/throttle-debounce" "^2.1.0" - case-anything "^2.1.13" - dash-get "^1.0.2" - deepmerge "^4.3.1" - fast-deep-equal "^3.1.3" - make-error "^1.3.6" - object.omit "^3.0.0" - object.pick "^1.3.0" - throttle-debounce "^3.0.1" - -"@remirror/types@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@remirror/types/-/types-1.0.1.tgz#768502497a0fbbc23338a1586b893f729310cf70" - integrity sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA== - dependencies: - type-fest "^2.19.0" - -"@rollup/plugin-babel@^5.2.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-node-resolve@^11.2.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/plugin-replace@^2.4.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rushstack/eslint-patch@^1.1.4": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" - integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== - -"@sentry-internal/tracing@7.80.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.80.1.tgz#b0e993265aa75743787d84e6c0655ed17e4bac0f" - integrity sha512-5gZ4LPIj2vpQl2/dHBM4uXMi9OI5E0VlOhJQt0foiuN6JJeiOjdpJFcfVqJk69wrc0deVENTtgKKktxqMwVeWQ== - dependencies: - "@sentry/core" "7.80.1" - "@sentry/types" "7.80.1" - "@sentry/utils" "7.80.1" - -"@sentry/browser@7.80.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.80.1.tgz#3e63a122846a4d5dec04237b97ae064b80546da4" - integrity sha512-1dPR6vPJ9vOTzgXff9HGheb178XeEv5hyjBNhCO1f6rjCgnVj99XGNZIgO1Ee1ALJbqlfPWaeV+uSWbbcmgJMA== - dependencies: - "@sentry-internal/tracing" "7.80.1" - "@sentry/core" "7.80.1" - "@sentry/replay" "7.80.1" - "@sentry/types" "7.80.1" - "@sentry/utils" "7.80.1" - -"@sentry/core@7.80.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.80.1.tgz#ccb85e15495bf0c8b142ca1713408c64e38c9f4c" - integrity sha512-3Yh+O9Q86MxwIuJFYtuSSoUCpdx99P1xDAqL0FIPTJ+ekaVMiUJq9NmyaNh9uN2myPSmxvEXW6q3z37zta9ZHg== - dependencies: - "@sentry/types" "7.80.1" - "@sentry/utils" "7.80.1" - -"@sentry/replay@7.80.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.80.1.tgz#1f47d3e52bfd0ad531f3032ae1eda8528c947c44" - integrity sha512-yjpftIyybQeWD2i0Nd7C96tZwjNbSMRW515EL9jwlNxYbQtGtMs0HavP9Y7uQvQrzwSHY0Wp+ooe9PMuvzqbHw== - dependencies: - "@sentry-internal/tracing" "7.80.1" - "@sentry/core" "7.80.1" - "@sentry/types" "7.80.1" - "@sentry/utils" "7.80.1" - -"@sentry/tracing@^7.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.80.1.tgz#2c85758ff45f70086f14eef136cacaf8ffabb230" - integrity sha512-sFkcxCBtLNVa3EyeCafZqhJHZ714f2+ryPWTBckAmxAsON4yjh/YLs2X1FJ2n6Rnv16TP6gWGt4SnhFT03WStA== - dependencies: - "@sentry-internal/tracing" "7.80.1" - -"@sentry/types@7.80.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.80.1.tgz#dc720d6f2da0b510d586814451a04a2cdd2f4a9d" - integrity sha512-CVu4uPVTOI3U9kYiOdA085R7jX5H1oVODbs9y+A8opJ0dtJTMueCXgZyE8oXQ0NjGVs6HEeaLkOuiV0mj8X3yw== - -"@sentry/utils@7.80.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.80.1.tgz#1c719f41b4d2c818363551fc40776a274b71efff" - integrity sha512-bfFm2e/nEn+b9++QwjNEYCbS7EqmteT8uf0XUs7PljusSimIqqxDtK1pfD9zjynPgC8kW/fVBKv0pe2LufomeA== - dependencies: - "@sentry/types" "7.80.1" - -"@sentry/vue@^7.1": - version "7.80.1" - resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-7.80.1.tgz#b3e22c7702940a7a84b11d955f09c02308a37c71" - integrity sha512-6X9LM1rrJg31jJQ+9LnCCbzDNbD7RaGwfXHAiAtV2aH1ya40YKNK/DjYNzTVMXiXNiJJyjeeFTkLwBt7OFk2tg== - dependencies: - "@sentry/browser" "7.80.1" - "@sentry/core" "7.80.1" - "@sentry/types" "7.80.1" - "@sentry/utils" "7.80.1" - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@surma/rollup-plugin-off-main-thread@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" - integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== - dependencies: - ejs "^3.1.6" - json5 "^2.2.0" - magic-string "^0.25.0" - string.prototype.matchall "^4.0.6" - -"@tailwindcss/forms@^0.5.2": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.7.tgz#db5421f062a757b5f828bc9286ba626c6685e821" - integrity sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw== - dependencies: - mini-svg-data-uri "^1.2.3" - -"@tailwindcss/typography@^0.5.4": - version "0.5.10" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.10.tgz#2abde4c6d5c797ab49cf47610830a301de4c1e0a" - integrity sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw== - dependencies: - lodash.castarray "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.merge "^4.6.2" - postcss-selector-parser "6.0.10" - -"@tiptap/core@^2.0.0-beta.41": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.12.tgz#904fdf147e91b5e60561c76e7563c1b5a32f54ab" - integrity sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ== - -"@tiptap/extension-blockquote@^2.0.0-beta.25": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.12.tgz#97b43419606acf9bfd93b9f482a1827dcac8c3e9" - integrity sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg== - -"@tiptap/extension-bold@^2.0.0-beta.24": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.12.tgz#5dbf41105fc0fbde8adbff629312187fbebc39b0" - integrity sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg== - -"@tiptap/extension-bubble-menu@^2.0.0-beta.9", "@tiptap/extension-bubble-menu@^2.1.12": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.12.tgz#4103a21a6433e58690c8f742ece39fad78dc26eb" - integrity sha512-gAGi21EQ4wvLmT7klgariAc2Hf+cIjaNU2NWze3ut6Ku9gUo5ZLqj1t9SKHmNf4d5JG63O8GxpErqpA7lHlRtw== - dependencies: - tippy.js "^6.3.7" - -"@tiptap/extension-bullet-list@^2.0.0-beta.23": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.12.tgz#7c905a577ce30ef2cb335870a23f9d24fd26f6aa" - integrity sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ== - -"@tiptap/extension-document@^2.0.0-beta.15": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.12.tgz#e19e4716dfad60cbeb6abaf2f362fed759963529" - integrity sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw== - -"@tiptap/extension-dropcursor@^2.0.0-beta.25": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.12.tgz#9da0c275291c9d47497d3db41b4d70d96366b4ff" - integrity sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A== - -"@tiptap/extension-floating-menu@^2.1.12": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.12.tgz#68a658b2b9bdd3a0fc1afc5165231838061a8fde" - integrity sha512-uo0ydCJNg6AWwLT6cMUJYVChfvw2PY9ZfvKRhh9YJlGfM02jS4RUG/bJBts6R37f+a5FsOvAVwg8EvqPlNND1A== - dependencies: - tippy.js "^6.3.7" - -"@tiptap/extension-gapcursor@^2.0.0-beta.33": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.12.tgz#63844c3abd1a38af915839cf0c097b6d2e5a86fe" - integrity sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ== - -"@tiptap/extension-heading@^2.0.0-beta.23": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.12.tgz#05ae4684d6f29ae611495ab114038e14a5d1dff6" - integrity sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w== - -"@tiptap/extension-history@^2.0.0-beta.21": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.12.tgz#03bcb9422e8ea2b82dc45207d1a1b0bc0241b055" - integrity sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg== - -"@tiptap/extension-image@^2.0.0-beta.6": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.1.12.tgz#ab035db82f0961b1d906c4d426bf68be563fdcd3" - integrity sha512-VCgOTeNLuoR89WoCESLverpdZpPamOd7IprQbDIeG14sUySt7RHNgf2AEfyTYJEHij12rduvAwFzerPldVAIJg== - -"@tiptap/extension-italic@^2.0.0-beta.24": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.12.tgz#e99480eb77f8b4e5444fc236add8a831d5aa2343" - integrity sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A== - -"@tiptap/extension-link@^2.0.0-beta.8": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.12.tgz#a18f83a0b54342e6274ff9e5a5907ef7f15aa723" - integrity sha512-Sti5hhlkCqi5vzdQjU/gbmr8kb578p+u0J4kWS+SSz3BknNThEm/7Id67qdjBTOQbwuN07lHjDaabJL0hSkzGQ== - dependencies: - linkifyjs "^4.1.0" - -"@tiptap/extension-list-item@^2.0.0-beta.19": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.12.tgz#3eb28dc998490a98f14765783770b3cf6587d39e" - integrity sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg== - -"@tiptap/extension-mention@^2.0.0-beta.42": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.1.12.tgz#a395e7757b45630ec3047f14b0ba2dde8e1c9c93" - integrity sha512-Nc8wFlyPp+/48IpOFPk2O3hYsF465wizcM3aihMvZM96Ahic7dvv9yVptyOfoOwgpExl2FIn1QPjRDXF60VAUg== - -"@tiptap/extension-ordered-list@^2.0.0-beta.24": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.12.tgz#f41a45bc66b4d19e379d4833f303f2e0cd6b9d60" - integrity sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA== - -"@tiptap/extension-paragraph@^2.0.0-beta.22": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.12.tgz#922447b2aa1c7184787d351ceec593a74d24ed03" - integrity sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw== - -"@tiptap/extension-placeholder@^2.0.0-beta.199": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.1.12.tgz#f6267a563d17a5ae8a04da32231eac8d8868519e" - integrity sha512-K52o7B1zkP4vaVy3z4ZwHn+tQy6KlXtedj1skLg+796ImwH2GYS5z6MFOTfKzBO2hLncUzLco/s0C5PLCD6SDw== - -"@tiptap/extension-strike@^2.0.0-beta.26": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.12.tgz#2b049aedf2985e9c9e3c3f1cc0b203a574c85bd8" - integrity sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g== - -"@tiptap/extension-text@^2.0.0-beta.15": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.12.tgz#466e3244bdd9b2db2304c0c9a1d51ce59f5327d0" - integrity sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg== - -"@tiptap/extension-underline@^2.0.0-beta.7": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.1.12.tgz#abd59c4b6c8434dbadb4ff9bff23eefcc6bc095e" - integrity sha512-NwwdhFT8gDD0VUNLQx85yFBhP9a8qg8GPuxlGzAP/lPTV8Ubh3vSeQ5N9k2ZF/vHlEvnugzeVCbmYn7wf8vn1g== - -"@tiptap/pm@^2.0.0-beta.220": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.12.tgz#88a4b19be0eabb13d42ddd540c19ba1bbe74b322" - integrity sha512-Q3MXXQABG4CZBesSp82yV84uhJh/W0Gag6KPm2HRWPimSFELM09Z9/5WK9RItAYE0aLhe4Krnyiczn9AAa1tQQ== - dependencies: - prosemirror-changeset "^2.2.0" - prosemirror-collab "^1.3.0" - prosemirror-commands "^1.3.1" - prosemirror-dropcursor "^1.5.0" - prosemirror-gapcursor "^1.3.1" - prosemirror-history "^1.3.0" - prosemirror-inputrules "^1.2.0" - prosemirror-keymap "^1.2.0" - prosemirror-markdown "^1.10.1" - prosemirror-menu "^1.2.1" - prosemirror-model "^1.18.1" - prosemirror-schema-basic "^1.2.0" - prosemirror-schema-list "^1.2.2" - prosemirror-state "^1.4.1" - prosemirror-tables "^1.3.0" - prosemirror-trailing-node "^2.0.2" - prosemirror-transform "^1.7.0" - prosemirror-view "^1.28.2" - -"@tiptap/suggestion@^2.0.0-beta.195": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.1.12.tgz#a13782d1e625ec03b3f61b6839ecc95b6b685d3f" - integrity sha512-rhlLWwVkOodBGRMK0mAmE34l2a+BqM2Y7q1ViuQRBhs/6sZ8d83O4hARHKVwqT5stY4i1l7d7PoemV3uAGI6+g== - -"@tiptap/vue-3@^2.0.0-beta.96": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.1.12.tgz#20f4d829f6c2487ca82c5a4750f6faa718a12aac" - integrity sha512-yAcfmWw/9jtIUbhb0uGQVI9NoPYgHRasX2sAGWnm9Al+0aJktgmQ3mLCifXfXfjyEbeMF0p2L6Ul8tO7eho7aQ== - dependencies: - "@tiptap/extension-bubble-menu" "^2.1.12" - "@tiptap/extension-floating-menu" "^2.1.12" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@types/chai-subset@^1.3.3": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.5.tgz#3fc044451f26985f45625230a7f22284808b0a9a" - integrity sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A== - dependencies: - "@types/chai" "*" - -"@types/chai@*", "@types/chai@^4.3.5": - version "4.3.10" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.10.tgz#2ad2959d1767edee5b0e4efb1a0cd2b500747317" - integrity sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/flexsearch@^0.7.3": - version "0.7.6" - resolved "https://registry.yarnpkg.com/@types/flexsearch/-/flexsearch-0.7.6.tgz#240c11d16825c56833ec0c66eb1de3ea0e162a49" - integrity sha512-H5IXcRn96/gaDmo+rDl2aJuIJsob8dgOXDqf8K0t8rWZd1AFNaaspmRsElESiU+EWE33qfbFPgI0OC/B1g9FCA== - -"@types/fs-extra@^9.0.13": - version "9.0.13" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" - integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== - dependencies: - "@types/node" "*" - -"@types/geojson@*": - version "7946.0.13" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.13.tgz#e6e77ea9ecf36564980a861e24e62a095988775e" - integrity sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ== - -"@types/hammerjs@^2.0.41": - version "2.0.44" - resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.44.tgz#d90637ee049c4cf44cd8fa0072afca2124f947be" - integrity sha512-pdGBkAh4ggfXAkiwgmTdROJe3mwvLWJYm6JiaAwCtskAU0Weh+JQyyMTbhvxjxD2n8sr8PrxVwyDzmpnK4pUrQ== - -"@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/json-schema@^7.0.12": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/leaflet.locatecontrol@^0.74": - version "0.74.4" - resolved "https://registry.yarnpkg.com/@types/leaflet.locatecontrol/-/leaflet.locatecontrol-0.74.4.tgz#15cb1f3a5c49956da9dadeea7e65b0e53193ff09" - integrity sha512-JNS2WYI80KrR980DXjQyHnzFoNEy0Vjtt6f8gJvit6RBgRqsQw83rH0ZTtLCwpFHIKrjF/jvIPv/3Fhv4F4SUg== - dependencies: - "@types/leaflet" "*" - -"@types/leaflet.markercluster@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/leaflet.markercluster/-/leaflet.markercluster-1.5.4.tgz#2ab43417cf3f6a42d0f1baf4e1c8f659cf1dc3a1" - integrity sha512-tfMP8J62+wfsVLDLGh5Zh1JZxijCaBmVsMAX78MkLPwvPitmZZtSin5aWOVRhZrCS+pEOZwNzexbfWXlY+7yjg== - dependencies: - "@types/leaflet" "*" - -"@types/leaflet@*", "@types/leaflet@^1.5.2": - version "1.9.8" - resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.8.tgz#32162a8eaf305c63267e99470b9603b5883e63e8" - integrity sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg== - dependencies: - "@types/geojson" "*" - -"@types/linkify-it@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8" - integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== - -"@types/lodash@^4.14.141": - version "4.14.201" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.201.tgz#76f47cb63124e806824b6c18463daf3e1d480239" - integrity sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ== - -"@types/markdown-it@^12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" - integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== - dependencies: - "@types/linkify-it" "*" - "@types/mdurl" "*" - -"@types/mdurl@*": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.5.tgz#3e0d2db570e9fb6ccb2dc8fde0be1d79ac810d39" - integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== - -"@types/ngeohash@^0.6.2": - version "0.6.7" - resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.7.tgz#f6634461fb275fda82bd61812e9a74d2029c8c8d" - integrity sha512-lnUfLArRbLUMG/8dvzDXXZt7VzMh3TQfTGBmKmq3+K+/x7tNjFwTNc//LbgPKQHpZxhG5ATemxbBLJI+Jx2Zag== - -"@types/node@*": - version "20.9.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298" - integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw== - dependencies: - undici-types "~5.26.4" - -"@types/object.omit@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/object.omit/-/object.omit-3.0.3.tgz#cc52b1d9774c1619b5c6fc50229d087f01eabd68" - integrity sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew== - -"@types/object.pick@^1.3.2": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.4.tgz#1a38b6e69a35f36ec2dcc8b9f5ffd555c1c4d7fc" - integrity sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA== - -"@types/phoenix@^1.5.2": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.4.tgz#cceac93a827555473ad38057d1df7d06eef1ed71" - integrity sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/sanitize-html@^2.5.0": - version "2.9.4" - resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.9.4.tgz#bfc2df463ec35904fecc57b29ba080e53732a140" - integrity sha512-Ym4hjmAFxF/eux7nW2yDPAj2o9RYh0vP/9V5ECoHtgJ/O9nPGslUd20CMn6WatRMlFVfjMTg3lMcWq8YyO6QnA== - dependencies: - htmlparser2 "^8.0.0" - -"@types/semver@^7.5.0": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" - integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== - -"@types/throttle-debounce@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776" - integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ== - -"@types/trusted-types@^2.0.2": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.6.tgz#d12451beaeb9c3838f12024580dc500b7e88b0ad" - integrity sha512-HYtNooPvUY9WAVRBr4u+4Qa9fYD1ze2IUlAD3HoA6oehn1taGwBx3Oa52U4mTslTS+GAExKpaFu39Y5xUEwfjg== - -"@types/web-bluetooth@^0.0.20": - version "0.0.20" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" - integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== - -"@typescript-eslint/eslint-plugin@^6.7.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz#52aae65174ff526576351f9ccd41cea01001463f" - integrity sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.11.0" - "@typescript-eslint/type-utils" "6.11.0" - "@typescript-eslint/utils" "6.11.0" - "@typescript-eslint/visitor-keys" "6.11.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.7.0", "@typescript-eslint/parser@^6.7.5": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.11.0.tgz#9640d9595d905f3be4f278bf515130e6129b202e" - integrity sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ== - dependencies: - "@typescript-eslint/scope-manager" "6.11.0" - "@typescript-eslint/types" "6.11.0" - "@typescript-eslint/typescript-estree" "6.11.0" - "@typescript-eslint/visitor-keys" "6.11.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz#621f603537c89f4d105733d949aa4d55eee5cea8" - integrity sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A== - dependencies: - "@typescript-eslint/types" "6.11.0" - "@typescript-eslint/visitor-keys" "6.11.0" - -"@typescript-eslint/type-utils@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz#d0b8b1ab6c26b974dbf91de1ebc5b11fea24e0d1" - integrity sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA== - dependencies: - "@typescript-eslint/typescript-estree" "6.11.0" - "@typescript-eslint/utils" "6.11.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.11.0.tgz#8ad3aa000cbf4bdc4dcceed96e9b577f15e0bf53" - integrity sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA== - -"@typescript-eslint/typescript-estree@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz#7b52c12a623bf7f8ec7f8a79901b9f98eb5c7990" - integrity sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ== - dependencies: - "@typescript-eslint/types" "6.11.0" - "@typescript-eslint/visitor-keys" "6.11.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.11.0.tgz#11374f59ef4cea50857b1303477c08aafa2ca604" - integrity sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.11.0" - "@typescript-eslint/types" "6.11.0" - "@typescript-eslint/typescript-estree" "6.11.0" - semver "^7.5.4" - -"@typescript-eslint/visitor-keys@6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz#d991538788923f92ec40d44389e7075b359f3458" - integrity sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ== - dependencies: - "@typescript-eslint/types" "6.11.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@unhead/dom@1.8.3", "@unhead/dom@^1.3.1": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.8.3.tgz#af0cc0cb182c5e6b9059d204e7003d5fbd1f7577" - integrity sha512-rPj9PiRTDf+Qy7tSK/UCGxwKfsOOQ+YniANxQy9v2AhWsDy2amW7kbfgR9fVaSlOFdpsyuh2wLCbMcyj9Wn0Jw== - dependencies: - "@unhead/schema" "1.8.3" - "@unhead/shared" "1.8.3" - -"@unhead/schema@1.8.3", "@unhead/schema@^1.3.1": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@unhead/schema/-/schema-1.8.3.tgz#dca988e9adcb1ce817bb4b7bf00258823e8f52af" - integrity sha512-3XbcJzdlyLr/RV2TKaygI21YorlU6XPgHn/MoWjQvH4PYiHkH8PtTGg8Je6k3gvcUURSiDfucFKaGEYdJXAVqQ== - dependencies: - hookable "^5.5.3" - zhead "^2.2.4" - -"@unhead/shared@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@unhead/shared/-/shared-1.8.3.tgz#a216d158e28e61ba035b4359feea30fc4fa24f80" - integrity sha512-E1knEiAO0iENLzZd+LjWA4mUp8JRaSxo5V0vMjSENyf5hSVB/SxAVjDPmTIelLY7KrP5mJrNMen2ZmQrr/AZJw== - dependencies: - "@unhead/schema" "1.8.3" - -"@unhead/ssr@^1.3.1": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@unhead/ssr/-/ssr-1.8.3.tgz#85c4e485ca7326706eb6b59c082c5c5a9e091ee4" - integrity sha512-GSTkUCL4qymGkPU8BXiV74Epj0yyXJgmfTSJ3EqalpQTYyJHl910Mq2oDWk7Xyl5lHBrz2Bn0lzNXfSkS7Ao0Q== - dependencies: - "@unhead/schema" "1.8.3" - "@unhead/shared" "1.8.3" - -"@unhead/vue@^1.3.1": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-1.8.3.tgz#409ccc5a0f72b1f38db4e5d6ea358bb66b126b9e" - integrity sha512-sj/1VosMreUQXd68rn5jDLdpgFVdN0mKrjW/8eZMWbomZkzbzs7FxyRUApd584xNjFVdtyWrTepmrNSKmEwKgg== - dependencies: - "@unhead/schema" "1.8.3" - "@unhead/shared" "1.8.3" - hookable "^5.5.3" - unhead "1.8.3" - -"@vitejs/plugin-vue@^4.0.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.1.tgz#5050895fb8b2258d2f228110849df4a8a94b9038" - integrity sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA== - -"@vitest/coverage-v8@^0.34.1": - version "0.34.6" - resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz#931d9223fa738474e00c08f52b84e0f39cedb6d1" - integrity sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw== - dependencies: - "@ampproject/remapping" "^2.2.1" - "@bcoe/v8-coverage" "^0.2.3" - istanbul-lib-coverage "^3.2.0" - istanbul-lib-report "^3.0.1" - istanbul-lib-source-maps "^4.0.1" - istanbul-reports "^3.1.5" - magic-string "^0.30.1" - picocolors "^1.0.0" - std-env "^3.3.3" - test-exclude "^6.0.0" - v8-to-istanbul "^9.1.0" - -"@vitest/expect@0.34.6": - version "0.34.6" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.34.6.tgz#608a7b7a9aa3de0919db99b4cc087340a03ea77e" - integrity sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw== - dependencies: - "@vitest/spy" "0.34.6" - "@vitest/utils" "0.34.6" - chai "^4.3.10" - -"@vitest/runner@0.34.6": - version "0.34.6" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.34.6.tgz#6f43ca241fc96b2edf230db58bcde5b974b8dcaf" - integrity sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ== - dependencies: - "@vitest/utils" "0.34.6" - p-limit "^4.0.0" - pathe "^1.1.1" - -"@vitest/snapshot@0.34.6": - version "0.34.6" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.34.6.tgz#b4528cf683b60a3e8071cacbcb97d18b9d5e1d8b" - integrity sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w== - dependencies: - magic-string "^0.30.1" - pathe "^1.1.1" - pretty-format "^29.5.0" - -"@vitest/spy@0.34.6": - version "0.34.6" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.34.6.tgz#b5e8642a84aad12896c915bce9b3cc8cdaf821df" - integrity sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ== - dependencies: - tinyspy "^2.1.1" - -"@vitest/ui@^0.34.1": - version "0.34.6" - resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-0.34.6.tgz#86a9d58d1514aaea6a4b27ddd3c430646afca488" - integrity sha512-/fxnCwGC0Txmr3tF3BwAbo3v6U2SkBTGR9UB8zo0Ztlx0BTOXHucE0gDHY7SjwEktCOHatiGmli9kZD6gYSoWQ== - dependencies: - "@vitest/utils" "0.34.6" - fast-glob "^3.3.0" - fflate "^0.8.0" - flatted "^3.2.7" - pathe "^1.1.1" - picocolors "^1.0.0" - sirv "^2.0.3" - -"@vitest/utils@0.34.6": - version "0.34.6" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.34.6.tgz#38a0a7eedddb8e7291af09a2409cb8a189516968" - integrity sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A== - dependencies: - diff-sequences "^29.4.3" - loupe "^2.3.6" - pretty-format "^29.5.0" - -"@vue-a11y/announcer@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@vue-a11y/announcer/-/announcer-2.1.0.tgz#ed725e90b91870c76285840e0aaa637cfafbf27f" - integrity sha512-7V1osiJQxZPBA+2duF2nZugwgbIba/yvKLsHWvGIBJGY0VZhR4vYyFH3VFyFH2Yi46tHEVBN+X+a0uQaJMhCsQ== - -"@vue-a11y/skip-to@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@vue-a11y/skip-to/-/skip-to-2.1.2.tgz#a50f5b97605f5054ca7a7e222bdc721405e38f38" - integrity sha512-oKx0YE/nfWSBI48RKHoRsUmpY0//rDPBZTGk1LxhkkUsXPwzuMlJBFrWGIswdd+3DiIE5OyiDaM45ZldYjtDIA== - -"@vue-leaflet/vue-leaflet@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@vue-leaflet/vue-leaflet/-/vue-leaflet-0.10.1.tgz#17330515629d500ac113009a49f8cf98d140e8cc" - integrity sha512-RNEDk8TbnwrJl8ujdbKgZRFygLCxd0aBcWLQ05q/pGv4+d0jamE3KXQgQBqGAteE1mbQsk3xoNcqqUgaIGfWVg== - dependencies: - vue "^3.2.25" - -"@vue/apollo-composable@^4.0.0-beta.9": - version "4.0.0-beta.11" - resolved "https://registry.yarnpkg.com/@vue/apollo-composable/-/apollo-composable-4.0.0-beta.11.tgz#17af7ec824f521e306ea0c12ac3d94e743621903" - integrity sha512-ZtztRDrQe2sTn31h+teBfYw81AePfxlBssTaZVk2jOagdZgTfZigR7aJjO98FxwvGnB80ElWHKubvqYwNf8heg== - dependencies: - throttle-debounce "^5.0.0" - ts-essentials "^9.4.0" - vue-demi "^0.14.6" - -"@vue/compiler-core@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313" - integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g== - dependencies: - "@babel/parser" "^7.23.0" - "@vue/shared" "3.3.8" - estree-walker "^2.0.2" - source-map-js "^1.0.2" - -"@vue/compiler-dom@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b" - integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ== - dependencies: - "@vue/compiler-core" "3.3.8" - "@vue/shared" "3.3.8" - -"@vue/compiler-sfc@3.3.8", "@vue/compiler-sfc@^3.2.37": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1" - integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA== - dependencies: - "@babel/parser" "^7.23.0" - "@vue/compiler-core" "3.3.8" - "@vue/compiler-dom" "3.3.8" - "@vue/compiler-ssr" "3.3.8" - "@vue/reactivity-transform" "3.3.8" - "@vue/shared" "3.3.8" - estree-walker "^2.0.2" - magic-string "^0.30.5" - postcss "^8.4.31" - source-map-js "^1.0.2" - -"@vue/compiler-ssr@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce" - integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w== - dependencies: - "@vue/compiler-dom" "3.3.8" - "@vue/shared" "3.3.8" - -"@vue/devtools-api@^6.5.0": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" - integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== - -"@vue/eslint-config-prettier@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz#de5cb77ed483b43683d17a788808a0fa4e7bd07e" - integrity sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg== - dependencies: - eslint-config-prettier "^8.8.0" - eslint-plugin-prettier "^5.0.0" - -"@vue/eslint-config-typescript@^12.0.0": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz#0ce22d97af5e4155f3f2e7b21a48cfde8a6f3365" - integrity sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg== - dependencies: - "@typescript-eslint/eslint-plugin" "^6.7.0" - "@typescript-eslint/parser" "^6.7.0" - vue-eslint-parser "^9.3.1" - -"@vue/reactivity-transform@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2" - integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw== - dependencies: - "@babel/parser" "^7.23.0" - "@vue/compiler-core" "3.3.8" - "@vue/shared" "3.3.8" - estree-walker "^2.0.2" - magic-string "^0.30.5" - -"@vue/reactivity@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d" - integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw== - dependencies: - "@vue/shared" "3.3.8" - -"@vue/runtime-core@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb" - integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw== - dependencies: - "@vue/reactivity" "3.3.8" - "@vue/shared" "3.3.8" - -"@vue/runtime-dom@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4" - integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA== - dependencies: - "@vue/runtime-core" "3.3.8" - "@vue/shared" "3.3.8" - csstype "^3.1.2" - -"@vue/server-renderer@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2" - integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg== - dependencies: - "@vue/compiler-ssr" "3.3.8" - "@vue/shared" "3.3.8" - -"@vue/shared@3.3.8": - version "3.3.8" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d" - integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw== - -"@vue/test-utils@^2.0.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.2.tgz#43ce99c4e2eab0adbf1220257dc9974bc5ae38a7" - integrity sha512-07lLjpG1o9tEBoWQfVOFhDT7+WFCdDeECoeSdzOuVgIi6nxb2JDLGNNOV6+3crPpyg/jMlIocj96UROcgomiGg== - dependencies: - js-beautify "^1.14.9" - vue-component-type-helpers "^1.8.21" - -"@vueuse/core@^10.0.2": - version "10.6.1" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.6.1.tgz#5b16d8238054c6983b6cb7cd77a78035f098dd89" - integrity sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q== - dependencies: - "@types/web-bluetooth" "^0.0.20" - "@vueuse/metadata" "10.6.1" - "@vueuse/shared" "10.6.1" - vue-demi ">=0.14.6" - -"@vueuse/head@^1.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vueuse/head/-/head-1.3.1.tgz#2baa11a8fd4f3f763474792c4ff91c818bf83051" - integrity sha512-XCcHGfDzkGlHS7KIPJVYN//L7jpfASLsN7MUE19ndHVQLnPIDxqFLDl7IROsY81PKzawVAUe4OYVWcGixseWxA== - dependencies: - "@unhead/dom" "^1.3.1" - "@unhead/schema" "^1.3.1" - "@unhead/ssr" "^1.3.1" - "@unhead/vue" "^1.3.1" - -"@vueuse/metadata@10.6.1": - version "10.6.1" - resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.6.1.tgz#100faa0ced3c0ab4c014fb8e66e781e85e4eb88d" - integrity sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw== - -"@vueuse/router@^10.0.2": - version "10.6.1" - resolved "https://registry.yarnpkg.com/@vueuse/router/-/router-10.6.1.tgz#34fccd572d4d679338415ec4b9ba4ce081615c1f" - integrity sha512-9EMf30SownmxYKC3h36tl8uALSBGFkz3Dc2n+lQgJuyOYPIO/VotzDdkBxuEoHYKaCWw2JQa/S1q+t8NR26PvQ== - dependencies: - "@vueuse/shared" "10.6.1" - vue-demi ">=0.14.6" - -"@vueuse/shared@10.6.1": - version "10.6.1" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.6.1.tgz#1d9fc1e3f9083e45b59a693fc372bc50ad62a9e4" - integrity sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q== - dependencies: - vue-demi ">=0.14.6" - -"@wry/context@^0.7.0", "@wry/context@^0.7.3": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" - integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== - dependencies: - tslib "^2.3.0" - -"@wry/equality@^0.5.6": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" - integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== - dependencies: - tslib "^2.3.0" - -"@wry/trie@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" - integrity sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w== - dependencies: - tslib "^2.3.0" - -abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - -acorn-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" - integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== - dependencies: - acorn "^8.1.0" - acorn-walk "^8.0.2" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.0.2, acorn-walk@^8.2.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" - integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== - -acorn@^8.1.0, acorn@^8.10.0, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" - integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.6.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-escapes@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6" - integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== - dependencies: - type-fest "^1.0.2" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.0.0, ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apollo-absinthe-upload-link@^1.5.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/apollo-absinthe-upload-link/-/apollo-absinthe-upload-link-1.7.0.tgz#74e76ef510cd6bbf24809f764220280c9e5179e9" - integrity sha512-Dt5R6OkN2xigCaN1WHjpgyf5M5Tx5wFJMF4zA4J72Bjd990ImXhoCT/Gs2Cl8S0lXchpP2BndJSJN7MrSJz2CA== - dependencies: - "@apollo/client" "^3.0.0" - graphql "^15.0.0" - rxjs "~6.2.2" - -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-includes@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -async-queue-chain@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/async-queue-chain/-/async-queue-chain-1.1.0.tgz#c159f02ff4995e0d8061d3b371aa95dea72ac950" - integrity sha512-O/qRg8ptgcy7h7QzBMZ0OltUioYYr69/sxpH/ReTK991s3G8pMZFQS2fe8NQpjpKK7nUS/yO+4jCJKaA8KeaeA== - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -autoprefixer@^10: - version "10.4.16" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" - integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== - dependencies: - browserslist "^4.21.10" - caniuse-lite "^1.0.30001538" - fraction.js "^4.3.6" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -babel-plugin-polyfill-corejs2@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" - integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.3" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" - integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.33.1" - -babel-plugin-polyfill-regenerator@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" - integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - -babel-polyfill@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ== - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-runtime@6.26.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -bezier-easing@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/bezier-easing/-/bezier-easing-2.1.0.tgz#c04dfe8b926d6ecaca1813d69ff179b7c2025d86" - integrity sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig== - -big-integer@^1.6.44: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -birpc@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/birpc/-/birpc-0.1.1.tgz#10b243ffe5a21ccaf4cbaf5a09a6f0cc035c4312" - integrity sha512-B64AGL4ug2IS2jvV/zjTYDD1L+2gOJTT7Rv+VaK7KVQtQOo/xZbCDsh7g727ipckmU+QJYRqo5RcifVr0Kgcmg== - -blurhash@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-2.0.5.tgz#efde729fc14a2f03571a6aa91b49cba80d1abe4b" - integrity sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -bplist-parser@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" - integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== - dependencies: - big-integer "^1.6.44" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.21.10, browserslist@^4.21.9, browserslist@^4.22.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" - integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== - dependencies: - caniuse-lite "^1.0.30001541" - electron-to-chromium "^1.4.535" - node-releases "^2.0.13" - update-browserslist-db "^1.0.13" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -builtin-modules@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -bundle-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" - integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== - dependencies: - run-applescript "^5.0.0" - -cac@^6.7.12, cac@^6.7.14: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001562" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001562.tgz#9d16c5fd7e9c592c4cd5e304bc0f75b0008b2759" - integrity sha512-kfte3Hym//51EdX4239i+Rmp20EsLIYGdPkERegTgU19hQWCRhsRFGKHTliUlsry53tv17K7n077Kqa0WJU4ng== - -capital-case@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" - integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -case-anything@^2.1.13: - version "2.1.13" - resolved "https://registry.yarnpkg.com/case-anything/-/case-anything-2.1.13.tgz#0cdc16278cb29a7fcdeb072400da3f342ba329e9" - integrity sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng== - -chai@^4.3.10: - version "4.3.10" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.10.tgz#d784cec635e3b7e2ffb66446a63b4e33bd390384" - integrity sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.0.8" - -chalk@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -change-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" - integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== - dependencies: - camel-case "^4.1.2" - capital-case "^1.0.4" - constant-case "^3.0.4" - dot-case "^3.0.4" - header-case "^2.0.4" - no-case "^3.0.4" - param-case "^3.0.4" - pascal-case "^3.1.2" - path-case "^3.0.4" - sentence-case "^3.0.4" - snake-case "^3.0.4" - tslib "^2.0.3" - -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -cli-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== - dependencies: - restore-cursor "^4.0.0" - -cli-truncate@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" - integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== - dependencies: - slice-ansi "^5.0.0" - string-width "^5.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.20: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" - integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== - -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-tags@^1.4.0, common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -config-chain@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -connect@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -constant-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" - integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case "^2.0.2" - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.33.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" - integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== - dependencies: - browserslist "^4.22.1" - -core-js@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.0.tgz#1e30793e9ee5782b307e37ffa22da0eacddd84d4" - integrity sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw== - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.33.2: - version "3.33.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.2.tgz#312bbf6996a3a517c04c99b9909cdd27138d1ceb" - integrity sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ== - -crelt@^1.0.0, crelt@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" - integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -cssstyle@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a" - integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== - dependencies: - rrweb-cssom "^0.6.0" - -csstype@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -dash-get@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/dash-get/-/dash-get-1.0.2.tgz#4c9e9ad5ef04c4bf9d3c9a451f6f7997298dcc7c" - integrity sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ== - -data-urls@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - -data-urls@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4" - integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^12.0.0" - -date-fns-tz@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-2.0.0.tgz#1b14c386cb8bc16fc56fe333d4fc34ae1d1099d5" - integrity sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ== - -date-fns@^2.16.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decimal.js@^10.4.2, decimal.js@^10.4.3: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== - dependencies: - type-detect "^4.0.0" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2, deepmerge@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -default-browser-id@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" - integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== - dependencies: - bplist-parser "^0.2.0" - untildify "^4.0.0" - -default-browser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" - integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== - dependencies: - bundle-name "^3.0.0" - default-browser-id "^3.0.0" - execa "^7.1.1" - titleize "^3.0.0" - -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -defu@^6.1.2: - version "6.1.3" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.3.tgz#6d7f56bc61668e844f9f593ace66fd67ef1205fd" - integrity sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -diacritics@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" - integrity sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA== - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -diff-sequences@^29.4.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dlv@^1.1.0, dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-object@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-2.1.4.tgz#c6c54e9fca510b4d0ea4d65acf33726963843b5f" - integrity sha512-7FXnyyCLFawNYJ+NhkqyP9Wd2yzuo+7n9pGiYpkmXCTYa8Ci2U0eUNDVg5OuO5Pm6aFXI2SWN8/N/w7SJWu1WA== - dependencies: - commander "^4.0.0" - glob "^7.1.5" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -editorconfig@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3" - integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q== - dependencies: - "@one-ini/wasm" "0.1.1" - commander "^10.0.0" - minimatch "9.0.1" - semver "^7.5.3" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.6: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.535: - version "1.4.582" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.582.tgz#4908215182266793499ac57d80e2680d7dd9b3db" - integrity sha512-89o0MGoocwYbzqUUjc+VNpeOFSOK9nIdC5wY4N+PVUarUK0MtjyTjks75AZS2bW4Kl8MdewdFsWaH0jLy+JNoA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -entities@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.12" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" - -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild@^0.18.10: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== - optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== - -eslint-config-prettier@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" - integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@^2.20.2: - version "2.29.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" - integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.14.2" - -eslint-plugin-prettier@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" - integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.5" - -eslint-plugin-vue@^9.3.0: - version "9.18.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz#73cf29df7450ce5913296465f8d1dc545344920c" - integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - natural-compare "^1.4.0" - nth-check "^2.1.1" - postcss-selector-parser "^6.0.13" - semver "^7.5.4" - vue-eslint-parser "^9.3.1" - xml-name-validator "^4.0.0" - -eslint-scope@^7.1.1, eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.21.0, eslint@^8.7.0: - version "8.53.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" - integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.3" - "@eslint/js" "8.53.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0, esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -execa@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" - integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -fast-deep-equal@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" - integrity sha512-46+Jxk9Yj/nQY+3a1KTnpbBTemcAbPySTKya8iM9D7EsiONpSWbvzesalcCJ6tmJrCUITT2fmAQfNHFG+OHM6Q== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -fflate@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.1.tgz#1ed92270674d2ad3c73f077cd0acf26486dae6c9" - integrity sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.7, flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -flexsearch@0.7.21: - version "0.7.21" - resolved "https://registry.yarnpkg.com/flexsearch/-/flexsearch-0.7.21.tgz#0f5ede3f2aae67ddc351efbe3b24b69d29e9d48b" - integrity sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg== - -floating-vue@^2.0.0-beta.24: - version "2.0.0-beta.24" - resolved "https://registry.yarnpkg.com/floating-vue/-/floating-vue-2.0.0-beta.24.tgz#ad4775c55581f8a3c219cf614d8e24a6ae4846e0" - integrity sha512-URSzP6YXaF4u1oZ9XGL8Sn8puuM7ivp5jkOUrpy5Q1mfo9BfGppJOn+ierTmsSUfJEeHBae8KT7r5DeI3vQIEw== - dependencies: - "@floating-ui/dom" "~1.1.1" - vue-resize "^2.0.0-alpha.1" - -flow-static-land@0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/flow-static-land/-/flow-static-land-0.2.7.tgz#937f9dcb2780889a609155e5d1a55a993bc2ffb3" - integrity sha512-SmGgln4qcqLAysXM5BF8EQS+clj0TUf9+KlZUJgwuzNHvwbput+opz3CMyee9sDuLf4J/3sJbYGjdNsd2jSurA== - -flow-static-land@0.2.8, flow-static-land@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/flow-static-land/-/flow-static-land-0.2.8.tgz#49617e531396928bae6eb5d8ba32e7071637e5b9" - integrity sha512-pOZFExu2rbscCgcEo7nL7FNhBubMi18dn1Un4lm8LOmQkYhgsHLsrBGMWmuJXRWcYMrOC7I/bPsiqqVjdD3K1g== - -flush-promises@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flush-promises/-/flush-promises-1.0.2.tgz#4948fd58f15281fed79cbafc86293d5bb09b2ced" - integrity sha512-G0sYfLQERwKz4+4iOZYQEZVpOt9zQrlItIxQAAYAWpfby3gbHrx0osCHz5RLl/XoXevXk0xoN4hDFky/VV9TrA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fraction.js@^4.3.6: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^10.3.3: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^7.1.3, glob@^7.1.4, glob@^7.1.5, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.1: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.23.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" - integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^13.2.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -graphql-tag@^2.10.3, graphql-tag@^2.12.6: - version "2.12.6" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" - -graphql@14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.0.2.tgz#7dded337a4c3fd2d075692323384034b357f5650" - integrity sha512-gUC4YYsaiSJT1h40krG3J+USGlwhzNTXSb4IOZljn9ag5Tj+RkoXrWp+Kh7WyE3t1NCfab5kzCuxBIvOMERMXw== - dependencies: - iterall "^1.2.2" - -graphql@^15.0.0: - version "15.8.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" - integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== - -graphql@^16.8.1: - version "16.8.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" - integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== - -gray-matter@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - -hammerjs@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" - integrity sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -header-case@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" - integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== - dependencies: - capital-case "^1.0.4" - tslib "^2.0.3" - -histoire@^0.17.0: - version "0.17.5" - resolved "https://registry.yarnpkg.com/histoire/-/histoire-0.17.5.tgz#9cb48ec6104eb774e1970d308c1248ebb4eece45" - integrity sha512-1Zr/oQbqpsW8K7X/4UHKR2ycdatOvBsVk3oSJ4IyughtmdfyvAvi6YOch38NEbEElqObB446ZrWzESadLorekQ== - dependencies: - "@akryum/tinypool" "^0.3.1" - "@histoire/app" "^0.17.5" - "@histoire/controls" "^0.17.4" - "@histoire/shared" "^0.17.5" - "@histoire/vendors" "^0.17.4" - "@types/flexsearch" "^0.7.3" - "@types/markdown-it" "^12.2.3" - birpc "^0.1.1" - change-case "^4.1.2" - chokidar "^3.5.3" - connect "^3.7.0" - defu "^6.1.2" - diacritics "^1.3.0" - flexsearch "0.7.21" - fs-extra "^10.1.0" - globby "^13.2.2" - gray-matter "^4.0.3" - jiti "^1.19.1" - jsdom "^20.0.3" - markdown-it "^12.3.2" - markdown-it-anchor "^8.6.7" - markdown-it-attrs "^4.1.6" - markdown-it-emoji "^2.0.2" - micromatch "^4.0.5" - mrmime "^1.0.1" - pathe "^1.1.1" - picocolors "^1.0.0" - sade "^1.8.1" - shiki-es "^0.2.0" - sirv "^2.0.3" - vite-node "^0.34.1" - -hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hookable@^5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" - integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== - -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - dependencies: - whatwg-encoding "^2.0.0" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -htmlparser2@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" - integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== - -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - -iconv-lite@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -idb@^7.0.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -immutable@^4.0.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" - integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - dependencies: - get-intrinsic "^1.2.2" - hasown "^2.0.0" - side-channel "^1.0.4" - -intersection-observer@^0.12.0: - version "0.12.2" - resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.2.tgz#4a45349cc0cd91916682b1f44c28d7ec737dc375" - integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg== - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-extendable@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-fullwidth-code-point@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" - integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterall@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" - integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jake@^10.8.5: - version "10.8.7" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" - integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jiti@^1.19.1: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - -js-beautify@^1.14.9: - version "1.14.11" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.11.tgz#57b17e009549ac845bdc58eddf8e1862e311314e" - integrity sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw== - dependencies: - config-chain "^1.1.13" - editorconfig "^1.0.3" - glob "^10.3.3" - nopt "^7.2.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsdom@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" - integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== - dependencies: - abab "^2.0.6" - acorn "^8.8.1" - acorn-globals "^7.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.2" - decimal.js "^10.4.2" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.2" - parse5 "^7.1.1" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^4.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - ws "^8.11.0" - xml-name-validator "^4.0.0" - -jsdom@^22.0.0: - version "22.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-22.1.0.tgz#0fca6d1a37fbeb7f4aac93d1090d782c56b611c8" - integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw== - dependencies: - abab "^2.0.6" - cssstyle "^3.0.0" - data-urls "^4.0.0" - decimal.js "^10.4.3" - domexception "^4.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.4" - parse5 "^7.1.2" - rrweb-cssom "^0.6.0" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^4.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^12.0.1" - ws "^8.13.0" - xml-name-validator "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.0, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-parser@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonpointer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -jwt-decode@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" - integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" - -leaflet.locatecontrol@^0.79: - version "0.79.0" - resolved "https://registry.yarnpkg.com/leaflet.locatecontrol/-/leaflet.locatecontrol-0.79.0.tgz#0236b87c699a49f9ddb2f289941fbc0d3c3f8b62" - integrity sha512-h64QIHFkypYdr90lkSfjKvPvvk8/b8UnP3m9WuoWdp5p2AaCWC0T1NVwyuj4rd5U4fBW3tQt4ppmZ2LceHMIDg== - -leaflet.markercluster@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz#9cdb52a4eab92671832e1ef9899669e80efc4056" - integrity sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA== - -leaflet@^1.4.0: - version "1.9.4" - resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.9.4.tgz#23fae724e282fa25745aff82ca4d394748db7d8d" - integrity sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@2.1.0, lilconfig@^2.0.5, lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== - dependencies: - uc.micro "^1.0.1" - -linkify-it@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" - integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== - dependencies: - uc.micro "^1.0.1" - -linkifyjs@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.2.tgz#48fadb05ddf5a5f7065510a385a500ca1ac4e65e" - integrity sha512-1elJrH8MwUgr77Rgmx4JgB/nBgISYVoGossH6pAfCeHG+07TblTn6RWKx0MKozEMJU6NCFYHRih9M8ZtV3YZ+Q== - -lint-staged@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.1.0.tgz#c0f8e4d96ac3c09beac5c76d08524d6000c207b4" - integrity sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw== - dependencies: - chalk "5.3.0" - commander "11.1.0" - debug "4.3.4" - execa "8.0.1" - lilconfig "2.1.0" - listr2 "7.0.2" - micromatch "4.0.5" - pidtree "0.6.0" - string-argv "0.3.2" - yaml "2.3.4" - -listr2@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-7.0.2.tgz#3aa3e1549dfaf3c57ab5eeaba754da3b87f33063" - integrity sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g== - dependencies: - cli-truncate "^3.1.0" - colorette "^2.0.20" - eventemitter3 "^5.0.1" - log-update "^5.0.1" - rfdc "^1.3.0" - wrap-ansi "^8.1.0" - -local-pkg@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" - integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.castarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" - integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.merge@^4.6.0, lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -lodash@^4.17.11, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-update@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-5.0.1.tgz#9e928bf70cb183c1f0c9e91d9e6b7115d597ce09" - integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw== - dependencies: - ansi-escapes "^5.0.0" - cli-cursor "^4.0.0" - slice-ansi "^5.0.0" - strip-ansi "^7.0.1" - wrap-ansi "^8.0.1" - -loglevel-colored-level-prefix@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" - integrity sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA== - dependencies: - chalk "^1.1.3" - loglevel "^1.4.1" - -loglevel@^1.4.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4" - integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== - -loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.2.tgz#34504678cc3266b09b8dfd6fab4e1515258271b7" - integrity sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg== - dependencies: - semver "^7.3.5" - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -magic-string@^0.30.1, magic-string@^0.30.5: - version "0.30.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" - integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@^1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -markdown-it-anchor@^8.6.7: - version "8.6.7" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634" - integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== - -markdown-it-attrs@^4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz#2bc331c7649d8c6396a0613c2bba1093f3e64da9" - integrity sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA== - -markdown-it-emoji@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz#cd42421c2fda1537d9cc12b9923f5c8aeb9029c8" - integrity sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ== - -markdown-it@^12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -markdown-it@^13.0.1: - version "13.0.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536" - integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w== - dependencies: - argparse "^2.0.1" - entities "~3.0.1" - linkify-it "^4.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -mini-svg-data-uri@^1.2.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" - integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== - -minimatch@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" - integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -mlly@^1.2.0, mlly@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" - integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== - dependencies: - acorn "^8.10.0" - pathe "^1.1.1" - pkg-types "^1.0.3" - ufo "^1.3.0" - -mock-apollo-client@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/mock-apollo-client/-/mock-apollo-client-1.2.1.tgz#e3bfdc3ff73b1fea28fa7e91ec82e43ba8cbfa39" - integrity sha512-QYQ6Hxo+t7hard1bcHHbsHxlNQYTQsaMNsm2Psh/NbwLMi2R4tGzplJKt97MUWuARHMq3GHB4PTLj/gxej4Caw== - -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -mrmime@^1.0.0, mrmime@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" - integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanoid@^3.3.6: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -ngeohash@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/ngeohash/-/ngeohash-0.6.3.tgz#10b1e80be5488262ec95c56cf2dbb6c45fbdf245" - integrity sha512-kltF0cOxgx1AbmVzKxYZaoB0aj7mOxZeHaerEtQV0YaqnkXNq26WWqMmJ6lTqShYxVRWZ/mwvvTrNeOwdslWiw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== - -nopt@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" - integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA== - dependencies: - abbrev "^2.0.0" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== - dependencies: - path-key "^4.0.0" - -nth-check@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nwsapi@^2.2.2, nwsapi@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" - integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== - -object-assign@^4.0.1, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.13.1, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - -object.omit@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af" - integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ== - dependencies: - is-extendable "^1.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -open@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" - integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== - dependencies: - default-browser "^4.0.0" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^2.2.0" - -optimism@^0.17.5: - version "0.17.5" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.17.5.tgz#a4c78b3ad12c58623abedbebb4f2f2c19b8e8816" - integrity sha512-TEcp8ZwK1RczmvMnvktxHSF2tKgMWjJ71xEFGX5ApLh67VsMSTy1ZUlipJw8W+KaqgOmQ+4pqwkeivY89j+4Vw== - dependencies: - "@wry/context" "^0.7.0" - "@wry/trie" "^0.4.3" - tslib "^2.3.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -orderedmap@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2" - integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g== - -p-debounce@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-debounce/-/p-debounce-4.0.0.tgz#348e3f44489baa9435cc7d807f17b3bb2fb16b24" - integrity sha512-4Ispi9I9qYGO4lueiLDhe4q4iK5ERK8reLsuzH6BPaXn53EGaua8H66PXIFGrW897hwjXp+pVLrm/DLxN0RF0A== - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-srcset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" - integrity sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q== - -parse5@^7.1.1, parse5@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" - integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathe@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339" - integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw== - -pathe@^1.1.0, pathe@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" - integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -phoenix@^1.6: - version "1.7.10" - resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.7.10.tgz#e7951219e3128c6f9d1fe8e551180097623c6498" - integrity sha512-akfr/QvLPFRB8sORyc8FQFY/YoGwjWhka/YRcu45sKlBOZHvA80EkLYBUsYlW63UicxgrXABZdrjDkv54LTE+g== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pidtree@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" - integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-types@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" - integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== - dependencies: - jsonc-parser "^3.2.0" - mlly "^1.2.0" - pathe "^1.1.0" - -plausible-tracker@^0.3.4: - version "0.3.8" - resolved "https://registry.yarnpkg.com/plausible-tracker/-/plausible-tracker-0.3.8.tgz#9b8b322cc41e0e1d6473869ef234deea365a5a40" - integrity sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg== - -playwright-core@1.39.0: - version "1.39.0" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.39.0.tgz#efeaea754af4fb170d11845b8da30b2323287c63" - integrity sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw== - -playwright@1.39.0: - version "1.39.0" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.39.0.tgz#184c81cd6478f8da28bcd9e60e94fcebf566e077" - integrity sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw== - dependencies: - playwright-core "1.39.0" - optionalDependencies: - fsevents "2.3.2" - -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" - integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== - dependencies: - lilconfig "^2.0.5" - yaml "^2.1.1" - -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" - -postcss-selector-parser@6.0.10: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13: - version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" - integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8, postcss@^8.3.11, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.31: - version "8.4.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" - integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-eslint@^16.1.2: - version "16.1.2" - resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-16.1.2.tgz#86364fea13dd063f3df715b922678dd8a0fd4be1" - integrity sha512-mGFGZQbAh11FSnwW3H1zngzQYR2QMmHO8vdfgnAuzOFhnDeUZHYtwpqQvOMOMT0k818Dr1X+J4a/sVE0r34RKQ== - dependencies: - "@typescript-eslint/parser" "^6.7.5" - common-tags "^1.4.0" - dlv "^1.1.0" - eslint "^8.7.0" - indent-string "^4.0.0" - lodash.merge "^4.6.0" - loglevel-colored-level-prefix "^1.0.0" - prettier "^3.0.1" - pretty-format "^29.7.0" - require-relative "^0.8.7" - typescript "^5.2.2" - vue-eslint-parser "^9.1.0" - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^3.0.0, prettier@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" - integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== - -pretty-bytes@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-bytes@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b" - integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== - -pretty-format@^29.5.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -prop-types@^15.7.2: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -prosemirror-changeset@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz#dae94b63aec618fac7bb9061648e6e2a79988383" - integrity sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ== - dependencies: - prosemirror-transform "^1.0.0" - -prosemirror-collab@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz#0e8c91e76e009b53457eb3b3051fb68dad029a33" - integrity sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ== - dependencies: - prosemirror-state "^1.0.0" - -prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz#e94aeea52286f658cd984270de9b4c3fff580852" - integrity sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ== - dependencies: - prosemirror-model "^1.0.0" - prosemirror-state "^1.0.0" - prosemirror-transform "^1.0.0" - -prosemirror-dropcursor@^1.5.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz#49b9fb2f583e0d0f4021ff87db825faa2be2832d" - integrity sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw== - dependencies: - prosemirror-state "^1.0.0" - prosemirror-transform "^1.1.0" - prosemirror-view "^1.1.0" - -prosemirror-gapcursor@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz#5fa336b83789c6199a7341c9493587e249215cb4" - integrity sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ== - dependencies: - prosemirror-keymap "^1.0.0" - prosemirror-model "^1.0.0" - prosemirror-state "^1.0.0" - prosemirror-view "^1.0.0" - -prosemirror-history@^1.0.0, prosemirror-history@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.3.2.tgz#ce6ad7ab9db83e761aee716f3040d74738311b15" - integrity sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g== - dependencies: - prosemirror-state "^1.2.2" - prosemirror-transform "^1.0.0" - prosemirror-view "^1.31.0" - rope-sequence "^1.3.0" - -prosemirror-inputrules@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.2.1.tgz#8faf3d78c16150aedac71d326a3e3947417ce557" - integrity sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ== - dependencies: - prosemirror-state "^1.0.0" - prosemirror-transform "^1.0.0" - -prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz#14a54763a29c7b2704f561088ccf3384d14eb77e" - integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ== - dependencies: - prosemirror-state "^1.0.0" - w3c-keyname "^2.2.0" - -prosemirror-markdown@^1.10.1: - version "1.11.2" - resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.11.2.tgz#f6e529e669d11fa3eec859e93c0d2c91788d6c80" - integrity sha512-Eu5g4WPiCdqDTGhdSsG9N6ZjACQRYrsAkrF9KYfdMaCmjIApH75aVncsWYOJvEk2i1B3i8jZppv3J/tnuHGiUQ== - dependencies: - markdown-it "^13.0.1" - prosemirror-model "^1.0.0" - -prosemirror-menu@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz#3cfdc7c06d10f9fbd1bce29082c498bd11a0a79a" - integrity sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA== - dependencies: - crelt "^1.0.0" - prosemirror-commands "^1.0.0" - prosemirror-history "^1.0.0" - prosemirror-state "^1.0.0" - -prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.8.1: - version "1.19.3" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.3.tgz#f0d55285487fefd962d0ac695f716f4ec6705006" - integrity sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ== - dependencies: - orderedmap "^2.0.0" - -prosemirror-schema-basic@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7" - integrity sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw== - dependencies: - prosemirror-model "^1.19.0" - -prosemirror-schema-list@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz#05374702cf35a3ba5e7ec31079e355a488d52519" - integrity sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A== - dependencies: - prosemirror-model "^1.0.0" - prosemirror-state "^1.0.0" - prosemirror-transform "^1.7.3" - -prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080" - integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q== - dependencies: - prosemirror-model "^1.0.0" - prosemirror-transform "^1.0.0" - prosemirror-view "^1.27.0" - -prosemirror-tables@^1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.3.4.tgz#0b7cc16d49f90c5b834c9f29291c545478ce9ab0" - integrity sha512-z6uLSQ1BLC3rgbGwZmpfb+xkdvD7W/UOsURDfognZFYaTtc0gsk7u/t71Yijp2eLflVpffMk6X0u0+u+MMDvIw== - dependencies: - prosemirror-keymap "^1.1.2" - prosemirror-model "^1.8.1" - prosemirror-state "^1.3.1" - prosemirror-transform "^1.2.1" - prosemirror-view "^1.13.3" - -prosemirror-trailing-node@^2.0.2: - version "2.0.7" - resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz#ba782a7929f18bcae650b1c7082a2d10443eab19" - integrity sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q== - dependencies: - "@remirror/core-constants" "^2.0.2" - "@remirror/core-helpers" "^3.0.0" - escape-string-regexp "^4.0.0" - -prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.0, prosemirror-transform@^1.7.3: - version "1.8.0" - resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz#a47c64a3c373c1bd0ff46e95be3210c8dda0cd11" - integrity sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A== - dependencies: - prosemirror-model "^1.0.0" - -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0: - version "1.32.4" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.32.4.tgz#c8f24bab3bcc8b57bcfb62490fc468180559f51b" - integrity sha512-WoT+ZYePp0WQvp5coABAysheZg9WttW3TSEUNgsfDQXmVOJlnjkbFbXicKPvWFLiC0ZjKt1ykbyoVKqhVnCiSQ== - dependencies: - prosemirror-model "^1.16.0" - prosemirror-state "^1.0.0" - prosemirror-transform "^1.1.0" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== - -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -register-service-worker@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/register-service-worker/-/register-service-worker-1.7.2.tgz#6516983e1ef790a98c4225af1216bc80941a4bd2" - integrity sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A== - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-relative@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" - integrity sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -response-iterator@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" - integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== - -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup-plugin-terser@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-plugin-visualizer@^5.7.1: - version "5.9.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz#f1aa2d9b1be8ebd6869223c742324897464d8891" - integrity sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A== - dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" - -rollup@^2.43.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== - optionalDependencies: - fsevents "~2.3.2" - -rollup@^3.27.1: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== - optionalDependencies: - fsevents "~2.3.2" - -rope-sequence@^1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.4.tgz#df85711aaecd32f1e756f76e43a415171235d425" - integrity sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ== - -rrweb-cssom@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" - integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== - -run-applescript@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" - integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== - dependencies: - execa "^5.0.0" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@~6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9" - integrity sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ== - dependencies: - tslib "^1.9.0" - -sade@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - -safe-array-concat@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sanitize-html@^2.5.3: - version "2.11.0" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.11.0.tgz#9a6434ee8fcaeddc740d8ae7cd5dd71d3981f8f6" - integrity sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA== - dependencies: - deepmerge "^4.2.2" - escape-string-regexp "^4.0.0" - htmlparser2 "^8.0.0" - is-plain-object "^5.0.0" - parse-srcset "^1.0.2" - postcss "^8.3.11" - -sass@^1.34.1: - version "1.69.5" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde" - integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" - integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.5, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -sentence-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" - integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -set-function-length@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== - dependencies: - define-data-property "^1.1.1" - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -set-function-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -shiki-es@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/shiki-es/-/shiki-es-0.2.0.tgz#ae5bced62dca0ba46ee81149e68d428565a3e6fb" - integrity sha512-RbRMD+IuJJseSZljDdne9ThrUYrwBwJR04FvN4VXpfsU3MNID5VJGHLAD5je/HGThCyEKNgH+nEkSFEWKD7C3Q== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -siginfo@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" - integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== - -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sirv@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446" - integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA== - dependencies: - "@polka/url" "^1.0.0-next.20" - mrmime "^1.0.0" - totalist "^3.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" - integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== - dependencies: - ansi-styles "^6.0.0" - is-fullwidth-code-point "^4.0.0" - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -sortablejs@1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8" - integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w== - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -source-map@^0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stackback@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" - integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -std-env@^3.3.3: - version "3.5.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.5.0.tgz#83010c9e29bd99bf6f605df87c19012d82d63b97" - integrity sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA== - -string-argv@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" - integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.6: - version "4.0.10" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimend@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" - integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" - integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-literal@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07" - integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg== - dependencies: - acorn "^8.10.0" - -style-mod@^4.0.0, style-mod@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.0.tgz#a313a14f4ae8bb4d52878c0053c4327fb787ec09" - integrity sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA== - -sucrase@^3.32.0: - version "3.34.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" - integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "7.1.6" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -symbol-observable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -synckit@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" - integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== - dependencies: - "@pkgr/utils" "^2.3.1" - tslib "^2.5.0" - -tailwindcss@^3: - version "3.3.5" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8" - integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.3.0" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.19.1" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -tempy@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" - integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== - dependencies: - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terser@^5.0.0: - version "5.24.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" - integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -throttle-debounce@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" - integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== - -throttle-debounce@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" - integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== - -tinybench@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.5.1.tgz#3408f6552125e53a5a48adee31261686fd71587e" - integrity sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg== - -tinypool@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.7.0.tgz#88053cc99b4a594382af23190c609d93fddf8021" - integrity sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww== - -tinyspy@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.0.tgz#9dc04b072746520b432f77ea2c2d17933de5d6ce" - integrity sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg== - -tippy.js@^6.2.3, tippy.js@^6.3.7: - version "6.3.7" - resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" - integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== - dependencies: - "@popperjs/core" "^2.9.0" - -titleize@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" - integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - -tough-cookie@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - punycode "^2.1.1" - -tr46@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" - integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== - dependencies: - punycode "^2.3.0" - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -ts-essentials@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.4.1.tgz#6a6b6f81c2138008a5eef216e9fa468d8d9e2ab4" - integrity sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ== - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -ts-invariant@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" - integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== - dependencies: - tslib "^2.1.0" - -tsconfig-paths@^3.14.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.5.0, tslib@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@^4.0.0, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type-fest@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typescript@^5.2.2, typescript@~5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -ufo@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.1.tgz#e085842f4627c41d4c1b60ebea1f75cdab4ce86b" - integrity sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -unfetch@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-5.0.0.tgz#8a5b6e5779ebe4dde0049f7d7a81d4a1af99d142" - integrity sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg== - -unhead@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/unhead/-/unhead-1.8.3.tgz#d6a609d7e4ce5fcd5a7e161164e73ebf7daa97f1" - integrity sha512-2/5NJs7nY1MgCkUNuyevALM9nSgGp2loRv5QPhYyZXUPdF+F76CpKvkqATEOEJ/1yDzWjCaWrNh4u5lS6BEioA== - dependencies: - "@unhead/dom" "1.8.3" - "@unhead/schema" "1.8.3" - "@unhead/shared" "1.8.3" - hookable "^5.5.3" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -upath@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -upper-case-first@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" - integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== - dependencies: - tslib "^2.0.3" - -upper-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" - integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== - dependencies: - tslib "^2.0.3" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -v8-to-istanbul@^9.1.0: - version "9.1.3" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" - integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -vite-node@0.34.6, vite-node@^0.34.1: - version "0.34.6" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.34.6.tgz#34d19795de1498562bf21541a58edcd106328a17" - integrity sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA== - dependencies: - cac "^6.7.14" - debug "^4.3.4" - mlly "^1.4.0" - pathe "^1.1.1" - picocolors "^1.0.0" - vite "^3.0.0 || ^4.0.0 || ^5.0.0-0" - -vite-plugin-pwa@^0.16.4: - version "0.16.7" - resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.16.7.tgz#3dcacc342766ff3598472ac7d5e0782d14e2853e" - integrity sha512-4WMA5unuKlHs+koNoykeuCfTcqEGbiTRr8sVYUQMhc6tWxZpSRnv9Ojk4LKmqVhoPGHfBVCdGaMo8t9Qidkc1Q== - dependencies: - debug "^4.3.4" - fast-glob "^3.3.1" - pretty-bytes "^6.1.1" - workbox-build "^7.0.0" - workbox-window "^7.0.0" - -"vite@^3.0.0 || ^4.0.0 || ^5.0.0-0", "vite@^3.1.0 || ^4.0.0 || ^5.0.0-0", vite@^4.0.4: - version "4.5.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26" - integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== - dependencies: - esbuild "^0.18.10" - postcss "^8.4.27" - rollup "^3.27.1" - optionalDependencies: - fsevents "~2.3.2" - -vitest@^0.34.1: - version "0.34.6" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.34.6.tgz#44880feeeef493c04b7f795ed268f24a543250d7" - integrity sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q== - dependencies: - "@types/chai" "^4.3.5" - "@types/chai-subset" "^1.3.3" - "@types/node" "*" - "@vitest/expect" "0.34.6" - "@vitest/runner" "0.34.6" - "@vitest/snapshot" "0.34.6" - "@vitest/spy" "0.34.6" - "@vitest/utils" "0.34.6" - acorn "^8.9.0" - acorn-walk "^8.2.0" - cac "^6.7.14" - chai "^4.3.10" - debug "^4.3.4" - local-pkg "^0.4.3" - magic-string "^0.30.1" - pathe "^1.1.1" - picocolors "^1.0.0" - std-env "^3.3.3" - strip-literal "^1.0.1" - tinybench "^2.5.0" - tinypool "^0.7.0" - vite "^3.1.0 || ^4.0.0 || ^5.0.0-0" - vite-node "0.34.6" - why-is-node-running "^2.2.2" - -vue-component-type-helpers@^1.8.21: - version "1.8.22" - resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-1.8.22.tgz#24c1f324885e5652c7bcc5d9cbd76800b0af3809" - integrity sha512-LK3wJHs3vJxHG292C8cnsRusgyC5SEZDCzDCD01mdE/AoREFMl2tzLRuzwyuEsOIz13tqgBcnvysN3Lxsa14Fw== - -vue-demi@>=0.14.6, vue-demi@^0.14.6: - version "0.14.6" - resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" - integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== - -vue-demi@^0.13.1: - version "0.13.11" - resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99" - integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== - -vue-eslint-parser@^9.1.0, vue-eslint-parser@^9.3.1: - version "9.3.2" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz#6f9638e55703f1c77875a19026347548d93fd499" - integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== - dependencies: - debug "^4.3.4" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.6" - -vue-i18n-extract@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/vue-i18n-extract/-/vue-i18n-extract-2.0.7.tgz#95798037c2ae57f4ec5fd9d2267d2559bc94e5e8" - integrity sha512-i1NW5R58S720iQ1BEk+6ILo3hT6UA8mtYNNolSH4rt9345qvXdvA6GHy2+jHozdDAKHwlu9VvS/+vIMKs1UYQw== - dependencies: - cac "^6.7.12" - dot-object "^2.1.4" - glob "^8.0.1" - is-valid-glob "^1.0.0" - js-yaml "^4.1.0" - -vue-i18n@9: - version "9.6.5" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.6.5.tgz#3a0bdc1e339ded633dc90aee640a7249efdfe3e5" - integrity sha512-dpUEjKHg7pEsaS7ZPPxp1CflaR7bGmsvZJEhnszHPKl9OTNyno5j/DvMtMSo41kpddq4felLA7GK2prjpnXVlw== - dependencies: - "@intlify/core-base" "9.6.5" - "@intlify/shared" "9.6.5" - "@vue/devtools-api" "^6.5.0" - -vue-material-design-icons@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/vue-material-design-icons/-/vue-material-design-icons-5.2.0.tgz#4e0cf50a68cb6900e8bd2550acbb44fad99bbd8e" - integrity sha512-fcdcJHQ9fQw2CAytuLAzWSELcxH138sCdMItVhvmO7Lu9afIgojB/UCWv7XHt/lURsnq/n6O+muM4AQgw8yfig== - -vue-matomo@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vue-matomo/-/vue-matomo-4.2.0.tgz#d65e369e4ead1d95ef790bef3627512cac3d25e9" - integrity sha512-m5hCw7LH3wPDcERaF4sp/ojR9sEx7Rl8TpOyH/4jjQxMF2DuY/q5pO+i9o5Dx+BXLSa9+IQ0qhAbWYRyESQXmA== - -vue-plausible@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/vue-plausible/-/vue-plausible-1.3.2.tgz#c797ee03a7c8849dc847e706c5250aa10908dd0f" - integrity sha512-7hdLrDjw0+qjdM9hxowOirQSHPCljWwd8scW0tRFHyXAQSE/yBWrJ3EPuEiZlJUoth9ac0KLbHM+wSSkWHttiA== - dependencies: - plausible-tracker "^0.3.4" - -vue-resize@^2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz#43eeb79e74febe932b9b20c5c57e0ebc14e2df3a" - integrity sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg== - -vue-router@4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a" - integrity sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw== - dependencies: - "@vue/devtools-api" "^6.5.0" - -vue-scrollto@^2.17.1: - version "2.20.0" - resolved "https://registry.yarnpkg.com/vue-scrollto/-/vue-scrollto-2.20.0.tgz#3ba52239a62710c97003d12d4393f1f3393cd5cc" - integrity sha512-7i+AGKJTThZnMEkhIPgrZjyAX+fXV7/rGdg+CV283uZZwCxwiMXaBLTmIc5RTA4uwGnT+E6eJle3mXQfM2OD3A== - dependencies: - bezier-easing "2.1.0" - -vue-use-route-query@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/vue-use-route-query/-/vue-use-route-query-1.3.0.tgz#eee49dbb7b41c2ed4110fba66b10b336cc88444e" - integrity sha512-YPH01jiXltINNlWnR6DiVpRGsY6OrsmwJpxhSCVg9nVfVRgU6xw2cLhq3F7W6MPrRuxukjgwC5l2WZ0kR822mQ== - dependencies: - async-queue-chain "^1.1.0" - vue-demi "^0.13.1" - -vue@^3.2.25, vue@^3.2.37: - version "3.3.8" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc" - integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w== - dependencies: - "@vue/compiler-dom" "3.3.8" - "@vue/compiler-sfc" "3.3.8" - "@vue/runtime-dom" "3.3.8" - "@vue/server-renderer" "3.3.8" - "@vue/shared" "3.3.8" - -w3c-keyname@^2.2.0, w3c-keyname@^2.2.4: - version "2.2.8" - resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" - integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== - -w3c-xmlserializer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" - integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== - dependencies: - xml-name-validator "^4.0.0" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -whatwg-url@^12.0.0, whatwg-url@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-12.0.1.tgz#fd7bcc71192e7c3a2a97b9a8d6b094853ed8773c" - integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== - dependencies: - tr46 "^4.1.1" - webidl-conversions "^7.0.0" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.11, which-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -why-is-node-running@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" - integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== - dependencies: - siginfo "^2.0.0" - stackback "0.0.2" - -workbox-background-sync@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz#2b84b96ca35fec976e3bd2794b70e4acec46b3a5" - integrity sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA== - dependencies: - idb "^7.0.1" - workbox-core "7.0.0" - -workbox-broadcast-update@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz#7f611ca1a94ba8ac0aa40fa171c9713e0f937d22" - integrity sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ== - dependencies: - workbox-core "7.0.0" - -workbox-build@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-7.0.0.tgz#02ab5ef2991b3369b8b9395703f08912212769b4" - integrity sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg== - dependencies: - "@apideck/better-ajv-errors" "^0.3.1" - "@babel/core" "^7.11.1" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.2" - "@rollup/plugin-babel" "^5.2.0" - "@rollup/plugin-node-resolve" "^11.2.1" - "@rollup/plugin-replace" "^2.4.1" - "@surma/rollup-plugin-off-main-thread" "^2.2.3" - ajv "^8.6.0" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^9.0.1" - glob "^7.1.6" - lodash "^4.17.20" - pretty-bytes "^5.3.0" - rollup "^2.43.1" - rollup-plugin-terser "^7.0.0" - source-map "^0.8.0-beta.0" - stringify-object "^3.3.0" - strip-comments "^2.0.1" - tempy "^0.6.0" - upath "^1.2.0" - workbox-background-sync "7.0.0" - workbox-broadcast-update "7.0.0" - workbox-cacheable-response "7.0.0" - workbox-core "7.0.0" - workbox-expiration "7.0.0" - workbox-google-analytics "7.0.0" - workbox-navigation-preload "7.0.0" - workbox-precaching "7.0.0" - workbox-range-requests "7.0.0" - workbox-recipes "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" - workbox-streams "7.0.0" - workbox-sw "7.0.0" - workbox-window "7.0.0" - -workbox-cacheable-response@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz#ee27c036728189eed69d25a135013053277482d2" - integrity sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g== - dependencies: - workbox-core "7.0.0" - -workbox-core@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-7.0.0.tgz#dec114ec923cc2adc967dd9be1b8a0bed50a3545" - integrity sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ== - -workbox-expiration@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-7.0.0.tgz#3d90bcf2a7577241de950f89784f6546b66c2baa" - integrity sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ== - dependencies: - idb "^7.0.1" - workbox-core "7.0.0" - -workbox-google-analytics@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz#603b2c4244af1e85de0fb26287d4e17d3293452a" - integrity sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg== - dependencies: - workbox-background-sync "7.0.0" - workbox-core "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" - -workbox-navigation-preload@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz#4913878dbbd97057181d57baa18d2bbdde085c6c" - integrity sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA== - dependencies: - workbox-core "7.0.0" - -workbox-precaching@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-7.0.0.tgz#3979ba8033aadf3144b70e9fe631d870d5fbaa03" - integrity sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA== - dependencies: - workbox-core "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" - -workbox-range-requests@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz#97511901e043df27c1aa422adcc999a7751f52ed" - integrity sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ== - dependencies: - workbox-core "7.0.0" - -workbox-recipes@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-7.0.0.tgz#1a6a01c8c2dfe5a41eef0fed3fe517e8a45c6514" - integrity sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww== - dependencies: - workbox-cacheable-response "7.0.0" - workbox-core "7.0.0" - workbox-expiration "7.0.0" - workbox-precaching "7.0.0" - workbox-routing "7.0.0" - workbox-strategies "7.0.0" - -workbox-routing@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-7.0.0.tgz#6668438a06554f60645aedc77244a4fe3a91e302" - integrity sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA== - dependencies: - workbox-core "7.0.0" - -workbox-strategies@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-7.0.0.tgz#dcba32b3f3074476019049cc490fe1a60ea73382" - integrity sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA== - dependencies: - workbox-core "7.0.0" - -workbox-streams@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-7.0.0.tgz#36722aecd04785f88b6f709e541c094fc658c0f9" - integrity sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ== - dependencies: - workbox-core "7.0.0" - workbox-routing "7.0.0" - -workbox-sw@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-7.0.0.tgz#7350126411e3de1409f7ec243df8d06bb5b08b86" - integrity sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA== - -workbox-window@7.0.0, workbox-window@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-7.0.0.tgz#a683ab33c896e4f16786794eac7978fc98a25d08" - integrity sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA== - dependencies: - "@types/trusted-types" "^2.0.2" - workbox-core "7.0.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@^8.11.0, ws@^8.13.0: - version "8.14.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" - integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@2.3.4, yaml@^2.1.1: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.5.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - -zen-observable-ts@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" - integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== - dependencies: - zen-observable "0.8.15" - -zen-observable@0.8.15: - version "0.8.15" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - -zen-observable@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.10.0.tgz#ee10eba75272897dbee5f152ab26bb5e0107f0c8" - integrity sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw== - -zhead@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.2.4.tgz#87cd1e2c3d2f465fa9f43b8db23f9716dfe6bed7" - integrity sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag== - -zhyswan-vuedraggable@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/zhyswan-vuedraggable/-/zhyswan-vuedraggable-4.1.3.tgz#0304bbf5c676f355e6052919c531802976492993" - integrity sha512-q4Mp52tQIvTAWG0CKxLCVLyG/3RnIskDxoJvfjDZ2kM8yTcMkY80VTc8rd3q9KwqJ0UVtjEGLufb23sjDp0peQ== - dependencies: - sortablejs "1.14.0" diff --git a/mix.exs b/mix.exs index 170246f9c..cf3ddeeb2 100644 --- a/mix.exs +++ b/mix.exs @@ -268,7 +268,7 @@ defmodule Mobilizon.Mixfile do "deps.get", "ecto.create --quiet", "ecto.migrate", - "cmd cd js && yarn install && cd ../", + "cmd npm ci", "phx.server" ] ] diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..06382a8c9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11986 @@ +{ + "name": "mobilizon", + "version": "3.2.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "mobilizon", + "version": "3.2.0", + "dependencies": { + "@apollo/client": "^3.3.16", + "@framasoft/socket": "^1.0.0", + "@framasoft/socket-apollo-link": "^1.0.0", + "@oruga-ui/oruga-next": "^0.7.0", + "@sentry/tracing": "^7.1", + "@sentry/vue": "^7.1", + "@tiptap/core": "^2.0.0-beta.41", + "@tiptap/extension-blockquote": "^2.0.0-beta.25", + "@tiptap/extension-bold": "^2.0.0-beta.24", + "@tiptap/extension-bubble-menu": "^2.0.0-beta.9", + "@tiptap/extension-bullet-list": "^2.0.0-beta.23", + "@tiptap/extension-document": "^2.0.0-beta.15", + "@tiptap/extension-dropcursor": "^2.0.0-beta.25", + "@tiptap/extension-gapcursor": "^2.0.0-beta.33", + "@tiptap/extension-heading": "^2.0.0-beta.23", + "@tiptap/extension-history": "^2.0.0-beta.21", + "@tiptap/extension-image": "^2.0.0-beta.6", + "@tiptap/extension-italic": "^2.0.0-beta.24", + "@tiptap/extension-link": "^2.0.0-beta.8", + "@tiptap/extension-list-item": "^2.0.0-beta.19", + "@tiptap/extension-mention": "^2.0.0-beta.42", + "@tiptap/extension-ordered-list": "^2.0.0-beta.24", + "@tiptap/extension-paragraph": "^2.0.0-beta.22", + "@tiptap/extension-placeholder": "^2.0.0-beta.199", + "@tiptap/extension-strike": "^2.0.0-beta.26", + "@tiptap/extension-text": "^2.0.0-beta.15", + "@tiptap/extension-underline": "^2.0.0-beta.7", + "@tiptap/pm": "^2.0.0-beta.220", + "@tiptap/suggestion": "^2.0.0-beta.195", + "@tiptap/vue-3": "^2.0.0-beta.96", + "@vue-a11y/announcer": "^2.1.0", + "@vue-a11y/skip-to": "^2.1.2", + "@vue-leaflet/vue-leaflet": "^0.10.1", + "@vue/apollo-composable": "^4.0.0-beta.9", + "@vue/compiler-sfc": "^3.2.37", + "@vueuse/core": "^10.0.2", + "@vueuse/head": "^1.0", + "@vueuse/router": "^10.0.2", + "apollo-absinthe-upload-link": "^1.5.0", + "autoprefixer": "^10", + "blurhash": "^2.0.0", + "date-fns": "^2.16.0", + "date-fns-tz": "^2.0.0", + "floating-vue": "^2.0.0-beta.24", + "graphql": "^16.8.1", + "graphql-tag": "^2.10.3", + "hammerjs": "^2.0.8", + "intersection-observer": "^0.12.0", + "jwt-decode": "^4.0.0", + "leaflet": "^1.4.0", + "leaflet.locatecontrol": "^0.79", + "leaflet.markercluster": "^1.5.3", + "lodash": "^4.17.11", + "ngeohash": "^0.6.3", + "p-debounce": "^4.0.0", + "phoenix": "^1.6", + "postcss": "^8", + "register-service-worker": "^1.7.2", + "sanitize-html": "^2.5.3", + "tailwindcss": "^3", + "tippy.js": "^6.2.3", + "unfetch": "^5.0.0", + "vue": "^3.2.37", + "vue-i18n": "9", + "vue-material-design-icons": "^5.1.2", + "vue-matomo": "^4.1.0", + "vue-plausible": "^1.3.1", + "vue-router": "4", + "vue-scrollto": "^2.17.1", + "vue-use-route-query": "^1.1.0", + "zhyswan-vuedraggable": "^4.1.3" + }, + "devDependencies": { + "@histoire/plugin-vue": "^0.17.1", + "@playwright/test": "^1.25.1", + "@rushstack/eslint-patch": "^1.1.4", + "@tailwindcss/forms": "^0.5.2", + "@tailwindcss/typography": "^0.5.4", + "@types/hammerjs": "^2.0.41", + "@types/leaflet": "^1.5.2", + "@types/leaflet.locatecontrol": "^0.74", + "@types/leaflet.markercluster": "^1.5.1", + "@types/lodash": "^4.14.141", + "@types/ngeohash": "^0.6.2", + "@types/phoenix": "^1.5.2", + "@types/sanitize-html": "^2.5.0", + "@vitejs/plugin-vue": "^4.0.0", + "@vitest/coverage-v8": "^0.34.1", + "@vitest/ui": "^0.34.1", + "@vue/eslint-config-prettier": "^8.0.0", + "@vue/eslint-config-typescript": "^12.0.0", + "@vue/test-utils": "^2.0.2", + "eslint": "^8.21.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-vue": "^9.3.0", + "flush-promises": "^1.0.2", + "histoire": "^0.17.0", + "husky": "^8.0.3", + "jsdom": "^22.0.0", + "lint-staged": "^15.1.0", + "mock-apollo-client": "^1.1.0", + "prettier": "^3.0.0", + "prettier-eslint": "^16.1.2", + "rollup-plugin-visualizer": "^5.7.1", + "sass": "^1.34.1", + "typescript": "~5.2.2", + "vite": "^4.0.4", + "vite-plugin-pwa": "^0.16.4", + "vitest": "^0.34.1", + "vue-i18n-extract": "^2.0.4" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@akryum/tinypool": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@apollo/client": { + "version": "3.8.7", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/context": "^0.7.3", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.4.3", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.17.5", + "prop-types": "^15.7.2", + "response-iterator": "^0.2.6", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-ws": "^5.5.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.3", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.3", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.3", + "@babel/plugin-transform-classes": "^7.23.3", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.3", + "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.3", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", + "@babel/plugin-transform-numeric-separator": "^7.23.3", + "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.3", + "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.23.2", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@codemirror/commands": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.2.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-json": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.9.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.1.4", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.53.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.1.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "license": "MIT" + }, + "node_modules/@framasoft/socket": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@jumpn/utils-array": "0.3.4", + "@jumpn/utils-composite": "0.7.0", + "@jumpn/utils-graphql": "0.6.0", + "core-js": "^3.33.2", + "zen-observable": "^0.10.0" + }, + "peerDependencies": { + "phoenix": "^1.7.10" + } + }, + "node_modules/@framasoft/socket-apollo-link": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@apollo/client": "^3.8.7", + "@babel/runtime": "^7.23.2", + "@framasoft/socket": ">=1.0.0", + "core-js": "^3.33.2", + "flow-static-land": "^0.2.8", + "graphql": "^16.8.1", + "zen-observable": "^0.10.0" + } + }, + "node_modules/@framasoft/socket-apollo-link/node_modules/core-js": { + "version": "3.33.2", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/@framasoft/socket/node_modules/core-js": { + "version": "3.33.2", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@histoire/app": { + "version": "0.17.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@histoire/controls": "^0.17.4", + "@histoire/shared": "^0.17.5", + "@histoire/vendors": "^0.17.4", + "@types/flexsearch": "^0.7.3", + "flexsearch": "0.7.21", + "shiki-es": "^0.2.0" + } + }, + "node_modules/@histoire/controls": { + "version": "0.17.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/commands": "^6.2.4", + "@codemirror/lang-json": "^6.0.1", + "@codemirror/language": "^6.8.0", + "@codemirror/lint": "^6.4.0", + "@codemirror/state": "^6.2.1", + "@codemirror/theme-one-dark": "^6.1.2", + "@codemirror/view": "^6.16.0", + "@histoire/shared": "^0.17.4", + "@histoire/vendors": "^0.17.4" + } + }, + "node_modules/@histoire/plugin-vue": { + "version": "0.17.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@histoire/controls": "^0.17.4", + "@histoire/shared": "^0.17.5", + "@histoire/vendors": "^0.17.4", + "change-case": "^4.1.2", + "globby": "^13.2.2", + "launch-editor": "^2.6.0", + "pathe": "^0.2.0" + }, + "peerDependencies": { + "histoire": "^0.17.5", + "vue": "^3.2.47" + } + }, + "node_modules/@histoire/plugin-vue/node_modules/pathe": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@histoire/shared": { + "version": "0.17.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@histoire/vendors": "^0.17.4", + "@types/fs-extra": "^9.0.13", + "@types/markdown-it": "^12.2.3", + "chokidar": "^3.5.3", + "pathe": "^0.2.0", + "picocolors": "^1.0.0" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/@histoire/shared/node_modules/pathe": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@histoire/vendors": { + "version": "0.17.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@intlify/core-base": { + "version": "9.6.5", + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "9.6.5", + "@intlify/shared": "9.6.5" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.6.5", + "license": "MIT", + "dependencies": { + "@intlify/shared": "9.6.5", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/shared": { + "version": "9.6.5", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jumpn/utils-array": { + "version": "0.3.4", + "license": "MIT", + "dependencies": { + "babel-polyfill": "6.26.0", + "babel-runtime": "6.26.0", + "flow-static-land": "0.2.7" + } + }, + "node_modules/@jumpn/utils-array/node_modules/flow-static-land": { + "version": "0.2.7", + "license": "MIT" + }, + "node_modules/@jumpn/utils-composite": { + "version": "0.7.0", + "license": "MIT", + "dependencies": { + "@jumpn/utils-array": "0.3.4", + "babel-polyfill": "6.26.0", + "babel-runtime": "6.26.0", + "fast-deep-equal": "1.0.0", + "flow-static-land": "0.2.8" + } + }, + "node_modules/@jumpn/utils-composite/node_modules/fast-deep-equal": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@jumpn/utils-graphql": { + "version": "0.6.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "7.2.0", + "core-js": "2.6.0", + "graphql": "14.0.2" + } + }, + "node_modules/@jumpn/utils-graphql/node_modules/@babel/runtime": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.12.0" + } + }, + "node_modules/@jumpn/utils-graphql/node_modules/core-js": { + "version": "2.6.0", + "license": "MIT" + }, + "node_modules/@jumpn/utils-graphql/node_modules/graphql": { + "version": "14.0.2", + "license": "MIT", + "dependencies": { + "iterall": "^1.2.2" + }, + "engines": { + "node": ">= 6.x" + } + }, + "node_modules/@jumpn/utils-graphql/node_modules/regenerator-runtime": { + "version": "0.12.1", + "license": "MIT" + }, + "node_modules/@lezer/common": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/json": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.3.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@oruga-ui/oruga-next": { + "version": "0.7.0", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/define-lazy-prop": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/open": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@playwright/test": { + "version": "1.39.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.23", + "dev": true, + "license": "MIT" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@remirror/core-constants": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/@remirror/core-helpers": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "^2.0.2", + "@remirror/types": "^1.0.1", + "@types/object.omit": "^3.0.0", + "@types/object.pick": "^1.3.2", + "@types/throttle-debounce": "^2.1.0", + "case-anything": "^2.1.13", + "dash-get": "^1.0.2", + "deepmerge": "^4.3.1", + "fast-deep-equal": "^3.1.3", + "make-error": "^1.3.6", + "object.omit": "^3.0.0", + "object.pick": "^1.3.0", + "throttle-debounce": "^3.0.1" + } + }, + "node_modules/@remirror/core-helpers/node_modules/throttle-debounce": { + "version": "3.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@remirror/types": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@remirror/types/node_modules/type-fest": { + "version": "2.19.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.5.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@sentry-internal/tracing": { + "version": "7.80.1", + "license": "MIT", + "dependencies": { + "@sentry/core": "7.80.1", + "@sentry/types": "7.80.1", + "@sentry/utils": "7.80.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/browser": { + "version": "7.80.1", + "license": "MIT", + "dependencies": { + "@sentry-internal/tracing": "7.80.1", + "@sentry/core": "7.80.1", + "@sentry/replay": "7.80.1", + "@sentry/types": "7.80.1", + "@sentry/utils": "7.80.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/core": { + "version": "7.80.1", + "license": "MIT", + "dependencies": { + "@sentry/types": "7.80.1", + "@sentry/utils": "7.80.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/replay": { + "version": "7.80.1", + "license": "MIT", + "dependencies": { + "@sentry-internal/tracing": "7.80.1", + "@sentry/core": "7.80.1", + "@sentry/types": "7.80.1", + "@sentry/utils": "7.80.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry/tracing": { + "version": "7.80.1", + "license": "MIT", + "dependencies": { + "@sentry-internal/tracing": "7.80.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/types": { + "version": "7.80.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.80.1", + "license": "MIT", + "dependencies": { + "@sentry/types": "7.80.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/vue": { + "version": "7.80.1", + "license": "MIT", + "dependencies": { + "@sentry/browser": "7.80.1", + "@sentry/core": "7.80.1", + "@sentry/types": "7.80.1", + "@sentry/utils": "7.80.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "vue": "2.x || 3.x" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": { + "version": "0.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.7", + "dev": true, + "license": "MIT", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@tiptap/core": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "2.1.12", + "license": "MIT", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "2.1.12", + "license": "MIT", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-image": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-link": { + "version": "2.1.12", + "license": "MIT", + "dependencies": { + "linkifyjs": "^4.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-mention": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0", + "@tiptap/suggestion": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-placeholder": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-underline": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.1.12", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.2.0", + "prosemirror-collab": "^1.3.0", + "prosemirror-commands": "^1.3.1", + "prosemirror-dropcursor": "^1.5.0", + "prosemirror-gapcursor": "^1.3.1", + "prosemirror-history": "^1.3.0", + "prosemirror-inputrules": "^1.2.0", + "prosemirror-keymap": "^1.2.0", + "prosemirror-markdown": "^1.10.1", + "prosemirror-menu": "^1.2.1", + "prosemirror-model": "^1.18.1", + "prosemirror-schema-basic": "^1.2.0", + "prosemirror-schema-list": "^1.2.2", + "prosemirror-state": "^1.4.1", + "prosemirror-tables": "^1.3.0", + "prosemirror-trailing-node": "^2.0.2", + "prosemirror-transform": "^1.7.0", + "prosemirror-view": "^1.28.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/suggestion": { + "version": "2.1.12", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/vue-3": { + "version": "2.1.12", + "license": "MIT", + "dependencies": { + "@tiptap/extension-bubble-menu": "^2.1.12", + "@tiptap/extension-floating-menu": "^2.1.12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/chai": { + "version": "4.3.10", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai-subset": { + "version": "1.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/flexsearch": { + "version": "0.7.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.13", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/hammerjs": { + "version": "2.0.44", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/leaflet": { + "version": "1.9.8", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/leaflet.locatecontrol": { + "version": "0.74.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/leaflet": "*" + } + }, + "node_modules/@types/leaflet.markercluster": { + "version": "1.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/leaflet": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.14.201", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ngeohash": { + "version": "0.6.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/object.omit": { + "version": "3.0.3", + "license": "MIT" + }, + "node_modules/@types/object.pick": { + "version": "1.3.4", + "license": "MIT" + }, + "node_modules/@types/phoenix": { + "version": "1.6.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/sanitize-html": { + "version": "2.9.4", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^8.0.0" + } + }, + "node_modules/@types/semver": { + "version": "7.5.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/throttle-debounce": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.11.0", + "@typescript-eslint/type-utils": "6.11.0", + "@typescript-eslint/utils": "6.11.0", + "@typescript-eslint/visitor-keys": "6.11.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.11.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.11.0", + "@typescript-eslint/types": "6.11.0", + "@typescript-eslint/typescript-estree": "6.11.0", + "@typescript-eslint/visitor-keys": "6.11.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.11.0", + "@typescript-eslint/visitor-keys": "6.11.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.11.0", + "@typescript-eslint/utils": "6.11.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.11.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.11.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.11.0", + "@typescript-eslint/visitor-keys": "6.11.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.11.0", + "@typescript-eslint/types": "6.11.0", + "@typescript-eslint/typescript-estree": "6.11.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.11.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@unhead/dom": { + "version": "1.8.3", + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.8.3", + "@unhead/shared": "1.8.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/schema": { + "version": "1.8.3", + "license": "MIT", + "dependencies": { + "hookable": "^5.5.3", + "zhead": "^2.2.4" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/shared": { + "version": "1.8.3", + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.8.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/ssr": { + "version": "1.8.3", + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.8.3", + "@unhead/shared": "1.8.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/vue": { + "version": "1.8.3", + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.8.3", + "@unhead/shared": "1.8.3", + "hookable": "^5.5.3", + "unhead": "1.8.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=2.7 || >=3" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitest/coverage-v8": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.5", + "magic-string": "^0.30.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.32.0 <1" + } + }, + "node_modules/@vitest/expect": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "0.34.6", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^2.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/ui": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "0.34.6", + "fast-glob": "^3.3.0", + "fflate": "^0.8.0", + "flatted": "^3.2.7", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "sirv": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.30.1 <1" + } + }, + "node_modules/@vitest/utils": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vue-a11y/announcer": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/@vue-a11y/skip-to": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/@vue-leaflet/vue-leaflet": { + "version": "0.10.1", + "license": "MIT", + "dependencies": { + "vue": "^3.2.25" + }, + "peerDependencies": { + "@types/leaflet": "^1.5.7", + "leaflet": "^1.6.0" + }, + "peerDependenciesMeta": { + "@types/leaflet": { + "optional": true + } + } + }, + "node_modules/@vue/apollo-composable": { + "version": "4.0.0-beta.11", + "license": "MIT", + "dependencies": { + "throttle-debounce": "^5.0.0", + "ts-essentials": "^9.4.0", + "vue-demi": "^0.14.6" + }, + "peerDependencies": { + "@apollo/client": "^3.4.13", + "@vue/composition-api": "^1.0.0", + "graphql": ">=15", + "vue": "^2.6.0 || ^3.1.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.23.0", + "@vue/shared": "3.3.8", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.3.8", + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.8", + "@vue/compiler-dom": "3.3.8", + "@vue/compiler-ssr": "3.3.8", + "@vue/reactivity-transform": "3.3.8", + "@vue/shared": "3.3.8", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.3.8", + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "license": "MIT" + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/eslint-config-prettier/node_modules/eslint-config-prettier": { + "version": "8.10.0", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "12.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "vue-eslint-parser": "^9.3.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.8", + "@vue/shared": "3.3.8", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.3.8", + "@vue/shared": "3.3.8" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@vue/runtime-core": "3.3.8", + "@vue/shared": "3.3.8", + "csstype": "^3.1.2" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.3.8", + "@vue/shared": "3.3.8" + }, + "peerDependencies": { + "vue": "3.3.8" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.8", + "license": "MIT" + }, + "node_modules/@vue/test-utils": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^1.8.21" + }, + "peerDependencies": { + "@vue/server-renderer": "^3.0.1", + "vue": "^3.0.1" + }, + "peerDependenciesMeta": { + "@vue/server-renderer": { + "optional": true + } + } + }, + "node_modules/@vueuse/core": { + "version": "10.6.1", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.6.1", + "@vueuse/shared": "10.6.1", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/head": { + "version": "1.3.1", + "license": "MIT", + "dependencies": { + "@unhead/dom": "^1.3.1", + "@unhead/schema": "^1.3.1", + "@unhead/ssr": "^1.3.1", + "@unhead/vue": "^1.3.1" + }, + "peerDependencies": { + "vue": ">=2.7 || >=3" + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.6.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/router": { + "version": "10.6.1", + "license": "MIT", + "dependencies": { + "@vueuse/shared": "10.6.1", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue-router": ">=4.0.0-rc.1" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.6.1", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@wry/context": { + "version": "0.7.4", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/trie": { + "version": "0.4.3", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "1.4.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apollo-absinthe-upload-link": { + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "@apollo/client": "^3.0.0", + "graphql": "^15.0.0", + "rxjs": "~6.2.2" + }, + "peerDependencies": { + "rxjs": ">=6.0.0" + } + }, + "node_modules/apollo-absinthe-upload-link/node_modules/graphql": { + "version": "15.8.0", + "license": "MIT", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/async": { + "version": "3.2.5", + "dev": true, + "license": "MIT" + }, + "node_modules/async-queue-chain": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-polyfill": { + "version": "6.26.0", + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + } + }, + "node_modules/babel-polyfill/node_modules/regenerator-runtime": { + "version": "0.10.5", + "license": "MIT" + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/bezier-easing": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.51", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/birpc": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/blurhash": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.1", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001562", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/capital-case": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/case-anything": { + "version": "2.1.13", + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/chai": { + "version": "4.3.10", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/change-case": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/constant-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "2.6.12", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.33.2", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.22.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "license": "MIT" + }, + "node_modules/dash-get": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "12.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-fns-tz": { + "version": "2.0.0", + "license": "MIT", + "peerDependencies": { + "date-fns": ">=2.0.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/default-browser/node_modules/is-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/mimic-fn": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/onetime": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defu": { + "version": "6.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diacritics": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "license": "Apache-2.0" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-object": { + "version": "2.1.4", + "dev": true, + "dependencies": { + "commander": "^4.0.0", + "glob": "^7.1.5" + }, + "bin": { + "dot-object": "bin/dot-object" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.9", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.582", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "8.53.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/is-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.15.0", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.8.1", + "dev": true, + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "dev": true, + "license": "ISC" + }, + "node_modules/flexsearch": { + "version": "0.7.21", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/floating-vue": { + "version": "2.0.0-beta.24", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "~1.1.1", + "vue-resize": "^2.0.0-alpha.1" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.0", + "vue": "^3.2.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/flow-static-land": { + "version": "0.2.8", + "license": "MIT" + }, + "node_modules/flush-promises": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/for-each": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.8.1", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/hammerjs": { + "version": "2.0.8", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/header-case": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/histoire": { + "version": "0.17.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@akryum/tinypool": "^0.3.1", + "@histoire/app": "^0.17.5", + "@histoire/controls": "^0.17.4", + "@histoire/shared": "^0.17.5", + "@histoire/vendors": "^0.17.4", + "@types/flexsearch": "^0.7.3", + "@types/markdown-it": "^12.2.3", + "birpc": "^0.1.1", + "change-case": "^4.1.2", + "chokidar": "^3.5.3", + "connect": "^3.7.0", + "defu": "^6.1.2", + "diacritics": "^1.3.0", + "flexsearch": "0.7.21", + "fs-extra": "^10.1.0", + "globby": "^13.2.2", + "gray-matter": "^4.0.3", + "jiti": "^1.19.1", + "jsdom": "^20.0.3", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.6.7", + "markdown-it-attrs": "^4.1.6", + "markdown-it-emoji": "^2.0.2", + "micromatch": "^4.0.5", + "mrmime": "^1.0.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "sade": "^1.8.1", + "shiki-es": "^0.2.0", + "sirv": "^2.0.3", + "vite-node": "^0.34.1" + }, + "bin": { + "histoire": "bin.mjs" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/histoire/node_modules/cssstyle": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/histoire/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/histoire/node_modules/data-urls": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/histoire/node_modules/jsdom": { + "version": "20.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "dev": true, + "license": "MIT", + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/ignore": { + "version": "5.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/intersection-observer": { + "version": "0.12.2", + "license": "Apache-2.0" + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterall": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-beautify": { + "version": "1.14.11", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.3", + "glob": "^10.3.3", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "22.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", + "domexception": "^4.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "12.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leaflet": { + "version": "1.9.4", + "license": "BSD-2-Clause" + }, + "node_modules/leaflet.locatecontrol": { + "version": "0.79.0", + "license": "MIT" + }, + "node_modules/leaflet.markercluster": { + "version": "1.5.3", + "license": "MIT", + "peerDependencies": { + "leaflet": "^1.3.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/linkifyjs": { + "version": "4.1.2", + "license": "MIT" + }, + "node_modules/lint-staged": { + "version": "15.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "5.3.0", + "commander": "11.1.0", + "debug": "4.3.4", + "execa": "8.0.1", + "lilconfig": "2.1.0", + "listr2": "7.0.2", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.4" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/listr2": { + "version": "7.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/loglevel": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-colored-level-prefix": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "license": "ISC" + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "dev": true, + "license": "Unlicense", + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/markdown-it-attrs": { + "version": "4.1.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "markdown-it": ">= 9.0.0" + } + }, + "node_modules/markdown-it-emoji": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mlly": { + "version": "1.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, + "node_modules/mock-apollo-client": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@apollo/client": "^3.0.0" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ngeohash": { + "version": "0.6.3", + "license": "MIT", + "engines": { + "node": ">=v0.2.0" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "license": "MIT" + }, + "node_modules/nopt": { + "version": "7.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.omit": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "is-extendable": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit/node_modules/is-extendable": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit/node_modules/is-plain-object": { + "version": "2.0.4", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optimism": { + "version": "0.17.5", + "license": "MIT", + "dependencies": { + "@wry/context": "^0.7.0", + "@wry/trie": "^0.4.3", + "tslib": "^2.3.0" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "license": "MIT" + }, + "node_modules/p-debounce": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/phoenix": { + "version": "1.7.10", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/plausible-tracker": { + "version": "0.3.8", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/playwright": { + "version": "1.39.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.39.0", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-eslint": { + "version": "16.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/parser": "^6.7.5", + "common-tags": "^1.4.0", + "dlv": "^1.1.0", + "eslint": "^8.7.0", + "indent-string": "^4.0.0", + "lodash.merge": "^4.6.0", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^3.0.1", + "pretty-format": "^29.7.0", + "require-relative": "^0.8.7", + "typescript": "^5.2.2", + "vue-eslint-parser": "^9.1.0" + }, + "engines": { + "node": ">=16.10.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-bytes": { + "version": "6.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prosemirror-changeset": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.5.2", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.1", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.2", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.11.2", + "license": "MIT", + "dependencies": { + "markdown-it": "^13.0.1", + "prosemirror-model": "^1.0.0" + } + }, + "node_modules/prosemirror-markdown/node_modules/entities": { + "version": "3.0.1", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/prosemirror-markdown/node_modules/linkify-it": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/prosemirror-markdown/node_modules/markdown-it": { + "version": "13.0.2", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.4", + "license": "MIT", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.19.3", + "license": "MIT", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.2", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.19.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.1.2", + "prosemirror-model": "^1.8.1", + "prosemirror-state": "^1.3.1", + "prosemirror-transform": "^1.2.1", + "prosemirror-view": "^1.13.3" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "^2.0.2", + "@remirror/core-helpers": "^3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.19.0", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.31.2" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.8.0", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.32.4", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.16.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/psl": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/register-service-worker": { + "version": "1.7.2", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-relative": { + "version": "0.8.7", + "dev": true, + "license": "MIT" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/response-iterator": { + "version": "0.2.6", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.9.2", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/source-map": { + "version": "0.7.4", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "license": "MIT" + }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.2.2", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/sade": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/sanitize-html": { + "version": "2.11.0", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^8.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/sass": { + "version": "1.69.5", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shiki-es": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sortablejs": { + "version": "1.14.0", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "dev": true, + "license": "MIT" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stackback": { + "version": "0.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/std-env": { + "version": "3.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/string-argv": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/style-mod": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.34.0", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/synckit": { + "version": "0.8.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.5", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.24.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throttle-debounce": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=12.22" + } + }, + "node_modules/tinybench": { + "version": "2.5.1", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "0.7.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/titleize": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-essentials": { + "version": "9.4.1", + "license": "MIT", + "peerDependencies": { + "typescript": ">=4.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "license": "Apache-2.0" + }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "dev": true, + "license": "MIT" + }, + "node_modules/unfetch": { + "version": "5.0.0", + "license": "MIT", + "workspaces": [ + "./packages/isomorphic-unfetch" + ] + }, + "node_modules/unhead": { + "version": "1.8.3", + "license": "MIT", + "dependencies": { + "@unhead/dom": "1.8.3", + "@unhead/schema": "1.8.3", + "@unhead/shared": "1.8.3", + "hookable": "^5.5.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vite": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-pwa": { + "version": "0.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "pretty-bytes": "^6.1.1", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" + } + }, + "node_modules/vite/node_modules/rollup": { + "version": "3.29.4", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vitest": { + "version": "0.34.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.8", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.3.8", + "@vue/compiler-sfc": "3.3.8", + "@vue/runtime-dom": "3.3.8", + "@vue/server-renderer": "3.3.8", + "@vue/shared": "3.3.8" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-component-type-helpers": { + "version": "1.8.22", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-demi": { + "version": "0.14.6", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.6.5", + "license": "MIT", + "dependencies": { + "@intlify/core-base": "9.6.5", + "@intlify/shared": "9.6.5", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-i18n-extract": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.12", + "dot-object": "^2.1.4", + "glob": "^8.0.1", + "is-valid-glob": "^1.0.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "vue-i18n-extract": "bin/vue-i18n-extract.js" + } + }, + "node_modules/vue-i18n-extract/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vue-i18n-extract/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-material-design-icons": { + "version": "5.2.0", + "license": "MIT" + }, + "node_modules/vue-matomo": { + "version": "4.2.0", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/vue-plausible": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "plausible-tracker": "^0.3.4" + } + }, + "node_modules/vue-resize": { + "version": "2.0.0-alpha.1", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-scrollto": { + "version": "2.20.0", + "license": "MIT", + "dependencies": { + "bezier-easing": "2.1.0" + } + }, + "node_modules/vue-use-route-query": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "async-queue-chain": "^1.1.0", + "vue-demi": "^0.13.1" + }, + "peerDependencies": { + "@vue/composition-api": "^1.1.0", + "vue": "^2.6.10 || ^3.2.0", + "vue-router": "^3.0.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-use-route-query/node_modules/vue-demi": { + "version": "0.13.11", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "license": "MIT" + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/workbox-background-sync": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-build": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.0.0", + "workbox-broadcast-update": "7.0.0", + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-google-analytics": "7.0.0", + "workbox-navigation-preload": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-range-requests": "7.0.0", + "workbox-recipes": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0", + "workbox-streams": "7.0.0", + "workbox-sw": "7.0.0", + "workbox-window": "7.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-core": { + "version": "7.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "7.0.0", + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-precaching": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-recipes": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" + } + }, + "node_modules/workbox-routing": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-strategies": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-streams": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0" + } + }, + "node_modules/workbox-sw": { + "version": "7.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-window": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.14.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.3.4", + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zen-observable": { + "version": "0.10.0", + "license": "MIT" + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "license": "MIT", + "dependencies": { + "zen-observable": "0.8.15" + } + }, + "node_modules/zen-observable-ts/node_modules/zen-observable": { + "version": "0.8.15", + "license": "MIT" + }, + "node_modules/zhead": { + "version": "2.2.4", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/zhyswan-vuedraggable": { + "version": "4.1.3", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + } + } +} diff --git a/js/package.json b/package.json similarity index 96% rename from js/package.json rename to package.json index a7a316241..15504382f 100644 --- a/js/package.json +++ b/package.json @@ -5,9 +5,9 @@ "scripts": { "dev": "vite", "preview": "vite preview", - "build": "yarn run build:assets && yarn run build:pictures", + "build": "npm run build:assets && npm run build:pictures", "lint": "eslint --ext .ts,.vue --ignore-path .gitignore --fix src", - "format": "prettier . --write", + "format": "prettier . --write", "build:assets": "vite build", "build:pictures": "bash ./scripts/build/pictures.sh", "story:dev": "histoire dev", @@ -15,7 +15,8 @@ "story:preview": "histoire preview", "test": "vitest", "coverage": "vitest run --coverage", - "prepare": "cd ../ && husky install" + "prepare": "husky install", + "pre-commit": "lint-staged" }, "lint-staged": { "**/*.{js,ts,vue}": [ diff --git a/js/playwright.config.ts b/playwright.config.ts similarity index 100% rename from js/playwright.config.ts rename to playwright.config.ts diff --git a/js/postcss.config.js b/postcss.config.js similarity index 100% rename from js/postcss.config.js rename to postcss.config.js diff --git a/js/public/favicon.ico b/public/favicon.ico similarity index 100% rename from js/public/favicon.ico rename to public/favicon.ico diff --git a/js/public/img/categories/arts-small.webp b/public/img/categories/arts-small.webp similarity index 100% rename from js/public/img/categories/arts-small.webp rename to public/img/categories/arts-small.webp diff --git a/js/public/img/categories/arts.webp b/public/img/categories/arts.webp similarity index 100% rename from js/public/img/categories/arts.webp rename to public/img/categories/arts.webp diff --git a/js/public/img/categories/business-small.webp b/public/img/categories/business-small.webp similarity index 100% rename from js/public/img/categories/business-small.webp rename to public/img/categories/business-small.webp diff --git a/js/public/img/categories/business.webp b/public/img/categories/business.webp similarity index 100% rename from js/public/img/categories/business.webp rename to public/img/categories/business.webp diff --git a/js/public/img/categories/crafts-small.webp b/public/img/categories/crafts-small.webp similarity index 100% rename from js/public/img/categories/crafts-small.webp rename to public/img/categories/crafts-small.webp diff --git a/js/public/img/categories/crafts.webp b/public/img/categories/crafts.webp similarity index 100% rename from js/public/img/categories/crafts.webp rename to public/img/categories/crafts.webp diff --git a/js/public/img/categories/film_media-small.webp b/public/img/categories/film_media-small.webp similarity index 100% rename from js/public/img/categories/film_media-small.webp rename to public/img/categories/film_media-small.webp diff --git a/js/public/img/categories/film_media.webp b/public/img/categories/film_media.webp similarity index 100% rename from js/public/img/categories/film_media.webp rename to public/img/categories/film_media.webp diff --git a/js/public/img/categories/food_drink-small.webp b/public/img/categories/food_drink-small.webp similarity index 100% rename from js/public/img/categories/food_drink-small.webp rename to public/img/categories/food_drink-small.webp diff --git a/js/public/img/categories/food_drink.webp b/public/img/categories/food_drink.webp similarity index 100% rename from js/public/img/categories/food_drink.webp rename to public/img/categories/food_drink.webp diff --git a/js/public/img/categories/games-small.webp b/public/img/categories/games-small.webp similarity index 100% rename from js/public/img/categories/games-small.webp rename to public/img/categories/games-small.webp diff --git a/js/public/img/categories/games.webp b/public/img/categories/games.webp similarity index 100% rename from js/public/img/categories/games.webp rename to public/img/categories/games.webp diff --git a/js/public/img/categories/health-small.webp b/public/img/categories/health-small.webp similarity index 100% rename from js/public/img/categories/health-small.webp rename to public/img/categories/health-small.webp diff --git a/js/public/img/categories/health.webp b/public/img/categories/health.webp similarity index 100% rename from js/public/img/categories/health.webp rename to public/img/categories/health.webp diff --git a/js/public/img/categories/lgbtq-small.webp b/public/img/categories/lgbtq-small.webp similarity index 100% rename from js/public/img/categories/lgbtq-small.webp rename to public/img/categories/lgbtq-small.webp diff --git a/js/public/img/categories/lgbtq.webp b/public/img/categories/lgbtq.webp similarity index 100% rename from js/public/img/categories/lgbtq.webp rename to public/img/categories/lgbtq.webp diff --git a/js/public/img/categories/movements_politics-small.webp b/public/img/categories/movements_politics-small.webp similarity index 100% rename from js/public/img/categories/movements_politics-small.webp rename to public/img/categories/movements_politics-small.webp diff --git a/js/public/img/categories/movements_politics.webp b/public/img/categories/movements_politics.webp similarity index 100% rename from js/public/img/categories/movements_politics.webp rename to public/img/categories/movements_politics.webp diff --git a/js/public/img/categories/music-small.webp b/public/img/categories/music-small.webp similarity index 100% rename from js/public/img/categories/music-small.webp rename to public/img/categories/music-small.webp diff --git a/js/public/img/categories/music.webp b/public/img/categories/music.webp similarity index 100% rename from js/public/img/categories/music.webp rename to public/img/categories/music.webp diff --git a/js/public/img/categories/outdoors_adventure-small.webp b/public/img/categories/outdoors_adventure-small.webp similarity index 100% rename from js/public/img/categories/outdoors_adventure-small.webp rename to public/img/categories/outdoors_adventure-small.webp diff --git a/js/public/img/categories/outdoors_adventure.webp b/public/img/categories/outdoors_adventure.webp similarity index 100% rename from js/public/img/categories/outdoors_adventure.webp rename to public/img/categories/outdoors_adventure.webp diff --git a/js/public/img/categories/party-small.webp b/public/img/categories/party-small.webp similarity index 100% rename from js/public/img/categories/party-small.webp rename to public/img/categories/party-small.webp diff --git a/js/public/img/categories/party.webp b/public/img/categories/party.webp similarity index 100% rename from js/public/img/categories/party.webp rename to public/img/categories/party.webp diff --git a/js/public/img/categories/photography-small.webp b/public/img/categories/photography-small.webp similarity index 100% rename from js/public/img/categories/photography-small.webp rename to public/img/categories/photography-small.webp diff --git a/js/public/img/categories/photography.webp b/public/img/categories/photography.webp similarity index 100% rename from js/public/img/categories/photography.webp rename to public/img/categories/photography.webp diff --git a/js/public/img/categories/spirituality_religion_beliefs-small.webp b/public/img/categories/spirituality_religion_beliefs-small.webp similarity index 100% rename from js/public/img/categories/spirituality_religion_beliefs-small.webp rename to public/img/categories/spirituality_religion_beliefs-small.webp diff --git a/js/public/img/categories/spirituality_religion_beliefs.webp b/public/img/categories/spirituality_religion_beliefs.webp similarity index 100% rename from js/public/img/categories/spirituality_religion_beliefs.webp rename to public/img/categories/spirituality_religion_beliefs.webp diff --git a/js/public/img/categories/sports-small.webp b/public/img/categories/sports-small.webp similarity index 100% rename from js/public/img/categories/sports-small.webp rename to public/img/categories/sports-small.webp diff --git a/js/public/img/categories/sports.webp b/public/img/categories/sports.webp similarity index 100% rename from js/public/img/categories/sports.webp rename to public/img/categories/sports.webp diff --git a/js/public/img/categories/theatre-small.webp b/public/img/categories/theatre-small.webp similarity index 100% rename from js/public/img/categories/theatre-small.webp rename to public/img/categories/theatre-small.webp diff --git a/js/public/img/categories/theatre.webp b/public/img/categories/theatre.webp similarity index 100% rename from js/public/img/categories/theatre.webp rename to public/img/categories/theatre.webp diff --git a/js/public/img/fediverse_monochrome.svg b/public/img/fediverse_monochrome.svg similarity index 100% rename from js/public/img/fediverse_monochrome.svg rename to public/img/fediverse_monochrome.svg diff --git a/js/public/img/icons/android-chrome-192x192.png b/public/img/icons/android-chrome-192x192.png similarity index 100% rename from js/public/img/icons/android-chrome-192x192.png rename to public/img/icons/android-chrome-192x192.png diff --git a/js/public/img/icons/android-chrome-512x512.png b/public/img/icons/android-chrome-512x512.png similarity index 100% rename from js/public/img/icons/android-chrome-512x512.png rename to public/img/icons/android-chrome-512x512.png diff --git a/js/public/img/icons/android-chrome-maskable-192x192.png b/public/img/icons/android-chrome-maskable-192x192.png similarity index 100% rename from js/public/img/icons/android-chrome-maskable-192x192.png rename to public/img/icons/android-chrome-maskable-192x192.png diff --git a/js/public/img/icons/android-chrome-maskable-512x512.png b/public/img/icons/android-chrome-maskable-512x512.png similarity index 100% rename from js/public/img/icons/android-chrome-maskable-512x512.png rename to public/img/icons/android-chrome-maskable-512x512.png diff --git a/js/public/img/icons/apple-touch-icon-120x120.png b/public/img/icons/apple-touch-icon-120x120.png similarity index 100% rename from js/public/img/icons/apple-touch-icon-120x120.png rename to public/img/icons/apple-touch-icon-120x120.png diff --git a/js/public/img/icons/apple-touch-icon-152x152.png b/public/img/icons/apple-touch-icon-152x152.png similarity index 100% rename from js/public/img/icons/apple-touch-icon-152x152.png rename to public/img/icons/apple-touch-icon-152x152.png diff --git a/js/public/img/icons/apple-touch-icon-180x180.png b/public/img/icons/apple-touch-icon-180x180.png similarity index 100% rename from js/public/img/icons/apple-touch-icon-180x180.png rename to public/img/icons/apple-touch-icon-180x180.png diff --git a/js/public/img/icons/apple-touch-icon-60x60.png b/public/img/icons/apple-touch-icon-60x60.png similarity index 100% rename from js/public/img/icons/apple-touch-icon-60x60.png rename to public/img/icons/apple-touch-icon-60x60.png diff --git a/js/public/img/icons/apple-touch-icon-76x76.png b/public/img/icons/apple-touch-icon-76x76.png similarity index 100% rename from js/public/img/icons/apple-touch-icon-76x76.png rename to public/img/icons/apple-touch-icon-76x76.png diff --git a/js/public/img/icons/apple-touch-icon.png b/public/img/icons/apple-touch-icon.png similarity index 100% rename from js/public/img/icons/apple-touch-icon.png rename to public/img/icons/apple-touch-icon.png diff --git a/js/public/img/icons/badge-128x128.png b/public/img/icons/badge-128x128.png similarity index 100% rename from js/public/img/icons/badge-128x128.png rename to public/img/icons/badge-128x128.png diff --git a/js/public/img/icons/favicon-16x16.png b/public/img/icons/favicon-16x16.png similarity index 100% rename from js/public/img/icons/favicon-16x16.png rename to public/img/icons/favicon-16x16.png diff --git a/js/public/img/icons/favicon-32x32.png b/public/img/icons/favicon-32x32.png similarity index 100% rename from js/public/img/icons/favicon-32x32.png rename to public/img/icons/favicon-32x32.png diff --git a/js/public/img/icons/favicon.svg b/public/img/icons/favicon.svg similarity index 100% rename from js/public/img/icons/favicon.svg rename to public/img/icons/favicon.svg diff --git a/js/public/img/icons/icon-144x144.png b/public/img/icons/icon-144x144.png similarity index 100% rename from js/public/img/icons/icon-144x144.png rename to public/img/icons/icon-144x144.png diff --git a/js/public/img/icons/icon-168x168.png b/public/img/icons/icon-168x168.png similarity index 100% rename from js/public/img/icons/icon-168x168.png rename to public/img/icons/icon-168x168.png diff --git a/js/public/img/icons/icon-256x256.png b/public/img/icons/icon-256x256.png similarity index 100% rename from js/public/img/icons/icon-256x256.png rename to public/img/icons/icon-256x256.png diff --git a/js/public/img/icons/icon-48x48.png b/public/img/icons/icon-48x48.png similarity index 100% rename from js/public/img/icons/icon-48x48.png rename to public/img/icons/icon-48x48.png diff --git a/js/public/img/icons/icon-72x72.png b/public/img/icons/icon-72x72.png similarity index 100% rename from js/public/img/icons/icon-72x72.png rename to public/img/icons/icon-72x72.png diff --git a/js/public/img/icons/icon-96x96.png b/public/img/icons/icon-96x96.png similarity index 100% rename from js/public/img/icons/icon-96x96.png rename to public/img/icons/icon-96x96.png diff --git a/js/public/img/icons/msapplication-icon-144x144.png b/public/img/icons/msapplication-icon-144x144.png similarity index 100% rename from js/public/img/icons/msapplication-icon-144x144.png rename to public/img/icons/msapplication-icon-144x144.png diff --git a/js/public/img/icons/mstile-150x150.png b/public/img/icons/mstile-150x150.png similarity index 100% rename from js/public/img/icons/mstile-150x150.png rename to public/img/icons/mstile-150x150.png diff --git a/js/public/img/icons/safari-pinned-tab.svg b/public/img/icons/safari-pinned-tab.svg similarity index 100% rename from js/public/img/icons/safari-pinned-tab.svg rename to public/img/icons/safari-pinned-tab.svg diff --git a/js/public/img/logo.svg b/public/img/logo.svg similarity index 100% rename from js/public/img/logo.svg rename to public/img/logo.svg diff --git a/js/public/img/mobilizon_default_card.png b/public/img/mobilizon_default_card.png similarity index 100% rename from js/public/img/mobilizon_default_card.png rename to public/img/mobilizon_default_card.png diff --git a/js/public/img/mobilizon_logo.png b/public/img/mobilizon_logo.png similarity index 100% rename from js/public/img/mobilizon_logo.png rename to public/img/mobilizon_logo.png diff --git a/js/public/img/online-event.webp b/public/img/online-event.webp similarity index 100% rename from js/public/img/online-event.webp rename to public/img/online-event.webp diff --git a/js/public/img/owncast_monochrome.svg b/public/img/owncast_monochrome.svg similarity index 100% rename from js/public/img/owncast_monochrome.svg rename to public/img/owncast_monochrome.svg diff --git a/js/public/img/peertube_monochrome.svg b/public/img/peertube_monochrome.svg similarity index 100% rename from js/public/img/peertube_monochrome.svg rename to public/img/peertube_monochrome.svg diff --git a/js/public/img/pics/error.webp b/public/img/pics/error.webp similarity index 100% rename from js/public/img/pics/error.webp rename to public/img/pics/error.webp diff --git a/js/public/img/pics/event_creation-1024w.webp b/public/img/pics/event_creation-1024w.webp similarity index 100% rename from js/public/img/pics/event_creation-1024w.webp rename to public/img/pics/event_creation-1024w.webp diff --git a/js/public/img/pics/event_creation-480w.webp b/public/img/pics/event_creation-480w.webp similarity index 100% rename from js/public/img/pics/event_creation-480w.webp rename to public/img/pics/event_creation-480w.webp diff --git a/js/public/img/pics/event_creation.webp b/public/img/pics/event_creation.webp similarity index 100% rename from js/public/img/pics/event_creation.webp rename to public/img/pics/event_creation.webp diff --git a/js/public/img/pics/footer_1.webp b/public/img/pics/footer_1.webp similarity index 100% rename from js/public/img/pics/footer_1.webp rename to public/img/pics/footer_1.webp diff --git a/js/public/img/pics/footer_2.webp b/public/img/pics/footer_2.webp similarity index 100% rename from js/public/img/pics/footer_2.webp rename to public/img/pics/footer_2.webp diff --git a/js/public/img/pics/footer_3.webp b/public/img/pics/footer_3.webp similarity index 100% rename from js/public/img/pics/footer_3.webp rename to public/img/pics/footer_3.webp diff --git a/js/public/img/pics/footer_4.webp b/public/img/pics/footer_4.webp similarity index 100% rename from js/public/img/pics/footer_4.webp rename to public/img/pics/footer_4.webp diff --git a/js/public/img/pics/footer_5.webp b/public/img/pics/footer_5.webp similarity index 100% rename from js/public/img/pics/footer_5.webp rename to public/img/pics/footer_5.webp diff --git a/js/public/img/pics/group-1024w.webp b/public/img/pics/group-1024w.webp similarity index 100% rename from js/public/img/pics/group-1024w.webp rename to public/img/pics/group-1024w.webp diff --git a/js/public/img/pics/group-480w.webp b/public/img/pics/group-480w.webp similarity index 100% rename from js/public/img/pics/group-480w.webp rename to public/img/pics/group-480w.webp diff --git a/js/public/img/pics/group.webp b/public/img/pics/group.webp similarity index 100% rename from js/public/img/pics/group.webp rename to public/img/pics/group.webp diff --git a/js/public/img/pics/homepage.webp b/public/img/pics/homepage.webp similarity index 100% rename from js/public/img/pics/homepage.webp rename to public/img/pics/homepage.webp diff --git a/js/public/img/pics/homepage_background-1024w.png b/public/img/pics/homepage_background-1024w.png similarity index 100% rename from js/public/img/pics/homepage_background-1024w.png rename to public/img/pics/homepage_background-1024w.png diff --git a/js/public/img/pics/homepage_background.png b/public/img/pics/homepage_background.png similarity index 100% rename from js/public/img/pics/homepage_background.png rename to public/img/pics/homepage_background.png diff --git a/js/public/img/pics/realisation.webp b/public/img/pics/realisation.webp similarity index 100% rename from js/public/img/pics/realisation.webp rename to public/img/pics/realisation.webp diff --git a/js/public/img/pics/rose.webp b/public/img/pics/rose.webp similarity index 100% rename from js/public/img/pics/rose.webp rename to public/img/pics/rose.webp diff --git a/js/public/img/shape-1.svg b/public/img/shape-1.svg similarity index 100% rename from js/public/img/shape-1.svg rename to public/img/shape-1.svg diff --git a/js/public/img/shape-2.svg b/public/img/shape-2.svg similarity index 100% rename from js/public/img/shape-2.svg rename to public/img/shape-2.svg diff --git a/js/public/img/shape-3.svg b/public/img/shape-3.svg similarity index 100% rename from js/public/img/shape-3.svg rename to public/img/shape-3.svg diff --git a/js/public/img/sign_language_monochrome.svg b/public/img/sign_language_monochrome.svg similarity index 100% rename from js/public/img/sign_language_monochrome.svg rename to public/img/sign_language_monochrome.svg diff --git a/js/public/img/undraw_mail_2.svg b/public/img/undraw_mail_2.svg similarity index 100% rename from js/public/img/undraw_mail_2.svg rename to public/img/undraw_mail_2.svg diff --git a/js/public/img/undraw_profile.svg b/public/img/undraw_profile.svg similarity index 100% rename from js/public/img/undraw_profile.svg rename to public/img/undraw_profile.svg diff --git a/js/public/robots.txt b/public/robots.txt similarity index 100% rename from js/public/robots.txt rename to public/robots.txt diff --git a/js/scripts/build/pictures.sh b/scripts/build/pictures.sh similarity index 100% rename from js/scripts/build/pictures.sh rename to scripts/build/pictures.sh diff --git a/js/src/@types/dom.d.ts b/src/@types/dom.d.ts similarity index 100% rename from js/src/@types/dom.d.ts rename to src/@types/dom.d.ts diff --git a/js/src/@types/v-tooltip/index.d.ts b/src/@types/v-tooltip/index.d.ts similarity index 100% rename from js/src/@types/v-tooltip/index.d.ts rename to src/@types/v-tooltip/index.d.ts diff --git a/js/src/@types/vuedraggable/index.d.ts b/src/@types/vuedraggable/index.d.ts similarity index 100% rename from js/src/@types/vuedraggable/index.d.ts rename to src/@types/vuedraggable/index.d.ts diff --git a/js/src/App.vue b/src/App.vue similarity index 100% rename from js/src/App.vue rename to src/App.vue diff --git a/js/src/api/_entrypoint.ts b/src/api/_entrypoint.ts similarity index 100% rename from js/src/api/_entrypoint.ts rename to src/api/_entrypoint.ts diff --git a/js/src/apollo/absinthe-socket-link.ts b/src/apollo/absinthe-socket-link.ts similarity index 100% rename from js/src/apollo/absinthe-socket-link.ts rename to src/apollo/absinthe-socket-link.ts diff --git a/js/src/apollo/absinthe-upload-socket-link.ts b/src/apollo/absinthe-upload-socket-link.ts similarity index 100% rename from js/src/apollo/absinthe-upload-socket-link.ts rename to src/apollo/absinthe-upload-socket-link.ts diff --git a/js/src/apollo/auth.ts b/src/apollo/auth.ts similarity index 100% rename from js/src/apollo/auth.ts rename to src/apollo/auth.ts diff --git a/js/src/apollo/error-link.ts b/src/apollo/error-link.ts similarity index 100% rename from js/src/apollo/error-link.ts rename to src/apollo/error-link.ts diff --git a/js/src/apollo/link.ts b/src/apollo/link.ts similarity index 100% rename from js/src/apollo/link.ts rename to src/apollo/link.ts diff --git a/js/src/apollo/memory.ts b/src/apollo/memory.ts similarity index 100% rename from js/src/apollo/memory.ts rename to src/apollo/memory.ts diff --git a/js/src/apollo/user.ts b/src/apollo/user.ts similarity index 100% rename from js/src/apollo/user.ts rename to src/apollo/user.ts diff --git a/js/src/apollo/utils.ts b/src/apollo/utils.ts similarity index 100% rename from js/src/apollo/utils.ts rename to src/apollo/utils.ts diff --git a/js/src/assets/Circle-icons-calendar.svg b/src/assets/Circle-icons-calendar.svg similarity index 100% rename from js/src/assets/Circle-icons-calendar.svg rename to src/assets/Circle-icons-calendar.svg diff --git a/js/src/assets/footer.png b/src/assets/footer.png similarity index 100% rename from js/src/assets/footer.png rename to src/assets/footer.png diff --git a/js/src/assets/oruga-tailwindcss.css b/src/assets/oruga-tailwindcss.css similarity index 100% rename from js/src/assets/oruga-tailwindcss.css rename to src/assets/oruga-tailwindcss.css diff --git a/js/src/assets/profile.svg b/src/assets/profile.svg similarity index 100% rename from js/src/assets/profile.svg rename to src/assets/profile.svg diff --git a/js/src/assets/tailwind.css b/src/assets/tailwind.css similarity index 100% rename from js/src/assets/tailwind.css rename to src/assets/tailwind.css diff --git a/js/src/assets/texting.svg b/src/assets/texting.svg similarity index 100% rename from js/src/assets/texting.svg rename to src/assets/texting.svg diff --git a/js/src/assets/undraw_events.svg b/src/assets/undraw_events.svg similarity index 100% rename from js/src/assets/undraw_events.svg rename to src/assets/undraw_events.svg diff --git a/js/src/components/About/InstanceContactLink.story.vue b/src/components/About/InstanceContactLink.story.vue similarity index 100% rename from js/src/components/About/InstanceContactLink.story.vue rename to src/components/About/InstanceContactLink.story.vue diff --git a/js/src/components/About/InstanceContactLink.vue b/src/components/About/InstanceContactLink.vue similarity index 100% rename from js/src/components/About/InstanceContactLink.vue rename to src/components/About/InstanceContactLink.vue diff --git a/js/src/components/Account/ActorAutoComplete.vue b/src/components/Account/ActorAutoComplete.vue similarity index 100% rename from js/src/components/Account/ActorAutoComplete.vue rename to src/components/Account/ActorAutoComplete.vue diff --git a/js/src/components/Account/ActorCard.story.vue b/src/components/Account/ActorCard.story.vue similarity index 100% rename from js/src/components/Account/ActorCard.story.vue rename to src/components/Account/ActorCard.story.vue diff --git a/js/src/components/Account/ActorCard.vue b/src/components/Account/ActorCard.vue similarity index 100% rename from js/src/components/Account/ActorCard.vue rename to src/components/Account/ActorCard.vue diff --git a/js/src/components/Account/ActorInline.story.vue b/src/components/Account/ActorInline.story.vue similarity index 100% rename from js/src/components/Account/ActorInline.story.vue rename to src/components/Account/ActorInline.story.vue diff --git a/js/src/components/Account/ActorInline.vue b/src/components/Account/ActorInline.vue similarity index 100% rename from js/src/components/Account/ActorInline.vue rename to src/components/Account/ActorInline.vue diff --git a/js/src/components/Account/PopoverActorCard.story.vue b/src/components/Account/PopoverActorCard.story.vue similarity index 100% rename from js/src/components/Account/PopoverActorCard.story.vue rename to src/components/Account/PopoverActorCard.story.vue diff --git a/js/src/components/Account/PopoverActorCard.vue b/src/components/Account/PopoverActorCard.vue similarity index 100% rename from js/src/components/Account/PopoverActorCard.vue rename to src/components/Account/PopoverActorCard.vue diff --git a/js/src/components/Account/ProfileOnboarding.story.vue b/src/components/Account/ProfileOnboarding.story.vue similarity index 100% rename from js/src/components/Account/ProfileOnboarding.story.vue rename to src/components/Account/ProfileOnboarding.story.vue diff --git a/js/src/components/Account/ProfileOnboarding.vue b/src/components/Account/ProfileOnboarding.vue similarity index 100% rename from js/src/components/Account/ProfileOnboarding.vue rename to src/components/Account/ProfileOnboarding.vue diff --git a/js/src/components/Activity/DiscussionActivityItem.vue b/src/components/Activity/DiscussionActivityItem.vue similarity index 100% rename from js/src/components/Activity/DiscussionActivityItem.vue rename to src/components/Activity/DiscussionActivityItem.vue diff --git a/js/src/components/Activity/EventActivityItem.vue b/src/components/Activity/EventActivityItem.vue similarity index 100% rename from js/src/components/Activity/EventActivityItem.vue rename to src/components/Activity/EventActivityItem.vue diff --git a/js/src/components/Activity/GroupActivityItem.vue b/src/components/Activity/GroupActivityItem.vue similarity index 100% rename from js/src/components/Activity/GroupActivityItem.vue rename to src/components/Activity/GroupActivityItem.vue diff --git a/js/src/components/Activity/MemberActivityItem.vue b/src/components/Activity/MemberActivityItem.vue similarity index 100% rename from js/src/components/Activity/MemberActivityItem.vue rename to src/components/Activity/MemberActivityItem.vue diff --git a/js/src/components/Activity/PostActivityItem.vue b/src/components/Activity/PostActivityItem.vue similarity index 100% rename from js/src/components/Activity/PostActivityItem.vue rename to src/components/Activity/PostActivityItem.vue diff --git a/js/src/components/Activity/ResourceActivityItem.vue b/src/components/Activity/ResourceActivityItem.vue similarity index 100% rename from js/src/components/Activity/ResourceActivityItem.vue rename to src/components/Activity/ResourceActivityItem.vue diff --git a/js/src/components/Activity/SkeletonActivityItem.vue b/src/components/Activity/SkeletonActivityItem.vue similarity index 100% rename from js/src/components/Activity/SkeletonActivityItem.vue rename to src/components/Activity/SkeletonActivityItem.vue diff --git a/js/src/components/Activity/activity.scss b/src/components/Activity/activity.scss similarity index 100% rename from js/src/components/Activity/activity.scss rename to src/components/Activity/activity.scss diff --git a/js/src/components/Address/AddressInfo.story.vue b/src/components/Address/AddressInfo.story.vue similarity index 100% rename from js/src/components/Address/AddressInfo.story.vue rename to src/components/Address/AddressInfo.story.vue diff --git a/js/src/components/Address/AddressInfo.vue b/src/components/Address/AddressInfo.vue similarity index 100% rename from js/src/components/Address/AddressInfo.vue rename to src/components/Address/AddressInfo.vue diff --git a/js/src/components/Address/InlineAddress.story.vue b/src/components/Address/InlineAddress.story.vue similarity index 100% rename from js/src/components/Address/InlineAddress.story.vue rename to src/components/Address/InlineAddress.story.vue diff --git a/js/src/components/Address/InlineAddress.vue b/src/components/Address/InlineAddress.vue similarity index 100% rename from js/src/components/Address/InlineAddress.vue rename to src/components/Address/InlineAddress.vue diff --git a/js/src/components/Categories/CategoryCard.story.vue b/src/components/Categories/CategoryCard.story.vue similarity index 100% rename from js/src/components/Categories/CategoryCard.story.vue rename to src/components/Categories/CategoryCard.story.vue diff --git a/js/src/components/Categories/CategoryCard.vue b/src/components/Categories/CategoryCard.vue similarity index 100% rename from js/src/components/Categories/CategoryCard.vue rename to src/components/Categories/CategoryCard.vue diff --git a/js/src/components/Categories/constants.ts b/src/components/Categories/constants.ts similarity index 100% rename from js/src/components/Categories/constants.ts rename to src/components/Categories/constants.ts diff --git a/js/src/components/Comment/CommentTree.vue b/src/components/Comment/CommentTree.vue similarity index 100% rename from js/src/components/Comment/CommentTree.vue rename to src/components/Comment/CommentTree.vue diff --git a/js/src/components/Comment/EventComment.story.vue b/src/components/Comment/EventComment.story.vue similarity index 100% rename from js/src/components/Comment/EventComment.story.vue rename to src/components/Comment/EventComment.story.vue diff --git a/js/src/components/Comment/EventComment.vue b/src/components/Comment/EventComment.vue similarity index 100% rename from js/src/components/Comment/EventComment.vue rename to src/components/Comment/EventComment.vue diff --git a/js/src/components/Conversations/ConversationListItem.vue b/src/components/Conversations/ConversationListItem.vue similarity index 100% rename from js/src/components/Conversations/ConversationListItem.vue rename to src/components/Conversations/ConversationListItem.vue diff --git a/js/src/components/Conversations/EventConversations.vue b/src/components/Conversations/EventConversations.vue similarity index 100% rename from js/src/components/Conversations/EventConversations.vue rename to src/components/Conversations/EventConversations.vue diff --git a/js/src/components/Conversations/NewConversation.vue b/src/components/Conversations/NewConversation.vue similarity index 100% rename from js/src/components/Conversations/NewConversation.vue rename to src/components/Conversations/NewConversation.vue diff --git a/js/src/components/Dashboard/LinkedNumberDashboardTile.vue b/src/components/Dashboard/LinkedNumberDashboardTile.vue similarity index 100% rename from js/src/components/Dashboard/LinkedNumberDashboardTile.vue rename to src/components/Dashboard/LinkedNumberDashboardTile.vue diff --git a/js/src/components/Dashboard/NumberDashboardTile.vue b/src/components/Dashboard/NumberDashboardTile.vue similarity index 100% rename from js/src/components/Dashboard/NumberDashboardTile.vue rename to src/components/Dashboard/NumberDashboardTile.vue diff --git a/js/src/components/Discussion/DiscussionComment.story.vue b/src/components/Discussion/DiscussionComment.story.vue similarity index 100% rename from js/src/components/Discussion/DiscussionComment.story.vue rename to src/components/Discussion/DiscussionComment.story.vue diff --git a/js/src/components/Discussion/DiscussionComment.vue b/src/components/Discussion/DiscussionComment.vue similarity index 100% rename from js/src/components/Discussion/DiscussionComment.vue rename to src/components/Discussion/DiscussionComment.vue diff --git a/js/src/components/Discussion/DiscussionListItem.story.vue b/src/components/Discussion/DiscussionListItem.story.vue similarity index 100% rename from js/src/components/Discussion/DiscussionListItem.story.vue rename to src/components/Discussion/DiscussionListItem.story.vue diff --git a/js/src/components/Discussion/DiscussionListItem.vue b/src/components/Discussion/DiscussionListItem.vue similarity index 100% rename from js/src/components/Discussion/DiscussionListItem.vue rename to src/components/Discussion/DiscussionListItem.vue diff --git a/js/src/components/Editor/Autodir.ts b/src/components/Editor/Autodir.ts similarity index 100% rename from js/src/components/Editor/Autodir.ts rename to src/components/Editor/Autodir.ts diff --git a/js/src/components/Editor/Image.ts b/src/components/Editor/Image.ts similarity index 100% rename from js/src/components/Editor/Image.ts rename to src/components/Editor/Image.ts diff --git a/js/src/components/Editor/Mention.ts b/src/components/Editor/Mention.ts similarity index 100% rename from js/src/components/Editor/Mention.ts rename to src/components/Editor/Mention.ts diff --git a/js/src/components/Editor/MentionList.vue b/src/components/Editor/MentionList.vue similarity index 100% rename from js/src/components/Editor/MentionList.vue rename to src/components/Editor/MentionList.vue diff --git a/js/src/components/Editor/RichEditorKeyboardSubmit.ts b/src/components/Editor/RichEditorKeyboardSubmit.ts similarity index 100% rename from js/src/components/Editor/RichEditorKeyboardSubmit.ts rename to src/components/Editor/RichEditorKeyboardSubmit.ts diff --git a/js/src/components/Editor/style.scss b/src/components/Editor/style.scss similarity index 100% rename from js/src/components/Editor/style.scss rename to src/components/Editor/style.scss diff --git a/js/src/components/ErrorComponent.vue b/src/components/ErrorComponent.vue similarity index 100% rename from js/src/components/ErrorComponent.vue rename to src/components/ErrorComponent.vue diff --git a/js/src/components/Event/DateCalendarIcon.story.vue b/src/components/Event/DateCalendarIcon.story.vue similarity index 100% rename from js/src/components/Event/DateCalendarIcon.story.vue rename to src/components/Event/DateCalendarIcon.story.vue diff --git a/js/src/components/Event/DateCalendarIcon.vue b/src/components/Event/DateCalendarIcon.vue similarity index 100% rename from js/src/components/Event/DateCalendarIcon.vue rename to src/components/Event/DateCalendarIcon.vue diff --git a/js/src/components/Event/EventActionSection.vue b/src/components/Event/EventActionSection.vue similarity index 100% rename from js/src/components/Event/EventActionSection.vue rename to src/components/Event/EventActionSection.vue diff --git a/js/src/components/Event/EventBanner.vue b/src/components/Event/EventBanner.vue similarity index 100% rename from js/src/components/Event/EventBanner.vue rename to src/components/Event/EventBanner.vue diff --git a/js/src/components/Event/EventCard.story.vue b/src/components/Event/EventCard.story.vue similarity index 100% rename from js/src/components/Event/EventCard.story.vue rename to src/components/Event/EventCard.story.vue diff --git a/js/src/components/Event/EventCard.vue b/src/components/Event/EventCard.vue similarity index 100% rename from js/src/components/Event/EventCard.vue rename to src/components/Event/EventCard.vue diff --git a/js/src/components/Event/EventFullDate.vue b/src/components/Event/EventFullDate.vue similarity index 100% rename from js/src/components/Event/EventFullDate.vue rename to src/components/Event/EventFullDate.vue diff --git a/js/src/components/Event/EventListViewCard.story.vue b/src/components/Event/EventListViewCard.story.vue similarity index 100% rename from js/src/components/Event/EventListViewCard.story.vue rename to src/components/Event/EventListViewCard.story.vue diff --git a/js/src/components/Event/EventListViewCard.vue b/src/components/Event/EventListViewCard.vue similarity index 100% rename from js/src/components/Event/EventListViewCard.vue rename to src/components/Event/EventListViewCard.vue diff --git a/js/src/components/Event/EventMap.vue b/src/components/Event/EventMap.vue similarity index 100% rename from js/src/components/Event/EventMap.vue rename to src/components/Event/EventMap.vue diff --git a/js/src/components/Event/EventMetadataBlock.vue b/src/components/Event/EventMetadataBlock.vue similarity index 100% rename from js/src/components/Event/EventMetadataBlock.vue rename to src/components/Event/EventMetadataBlock.vue diff --git a/js/src/components/Event/EventMetadataItem.vue b/src/components/Event/EventMetadataItem.vue similarity index 100% rename from js/src/components/Event/EventMetadataItem.vue rename to src/components/Event/EventMetadataItem.vue diff --git a/js/src/components/Event/EventMetadataList.vue b/src/components/Event/EventMetadataList.vue similarity index 100% rename from js/src/components/Event/EventMetadataList.vue rename to src/components/Event/EventMetadataList.vue diff --git a/js/src/components/Event/EventMetadataSidebar.vue b/src/components/Event/EventMetadataSidebar.vue similarity index 100% rename from js/src/components/Event/EventMetadataSidebar.vue rename to src/components/Event/EventMetadataSidebar.vue diff --git a/js/src/components/Event/EventMinimalistCard.vue b/src/components/Event/EventMinimalistCard.vue similarity index 100% rename from js/src/components/Event/EventMinimalistCard.vue rename to src/components/Event/EventMinimalistCard.vue diff --git a/js/src/components/Event/EventParticipationCard.vue b/src/components/Event/EventParticipationCard.vue similarity index 100% rename from js/src/components/Event/EventParticipationCard.vue rename to src/components/Event/EventParticipationCard.vue diff --git a/js/src/components/Event/ExternalParticipationButton.vue b/src/components/Event/ExternalParticipationButton.vue similarity index 100% rename from js/src/components/Event/ExternalParticipationButton.vue rename to src/components/Event/ExternalParticipationButton.vue diff --git a/js/src/components/Event/FullAddressAutoComplete.vue b/src/components/Event/FullAddressAutoComplete.vue similarity index 100% rename from js/src/components/Event/FullAddressAutoComplete.vue rename to src/components/Event/FullAddressAutoComplete.vue diff --git a/js/src/components/Event/GroupedMultiEventMinimalistCard.vue b/src/components/Event/GroupedMultiEventMinimalistCard.vue similarity index 100% rename from js/src/components/Event/GroupedMultiEventMinimalistCard.vue rename to src/components/Event/GroupedMultiEventMinimalistCard.vue diff --git a/js/src/components/Event/Integrations/EtherpadIntegration.vue b/src/components/Event/Integrations/EtherpadIntegration.vue similarity index 100% rename from js/src/components/Event/Integrations/EtherpadIntegration.vue rename to src/components/Event/Integrations/EtherpadIntegration.vue diff --git a/js/src/components/Event/Integrations/JitsiMeetIntegration.vue b/src/components/Event/Integrations/JitsiMeetIntegration.vue similarity index 100% rename from js/src/components/Event/Integrations/JitsiMeetIntegration.vue rename to src/components/Event/Integrations/JitsiMeetIntegration.vue diff --git a/js/src/components/Event/Integrations/PeerTubeIntegration.vue b/src/components/Event/Integrations/PeerTubeIntegration.vue similarity index 100% rename from js/src/components/Event/Integrations/PeerTubeIntegration.vue rename to src/components/Event/Integrations/PeerTubeIntegration.vue diff --git a/js/src/components/Event/Integrations/TwitchIntegration.vue b/src/components/Event/Integrations/TwitchIntegration.vue similarity index 100% rename from js/src/components/Event/Integrations/TwitchIntegration.vue rename to src/components/Event/Integrations/TwitchIntegration.vue diff --git a/js/src/components/Event/Integrations/YouTubeIntegration.vue b/src/components/Event/Integrations/YouTubeIntegration.vue similarity index 100% rename from js/src/components/Event/Integrations/YouTubeIntegration.vue rename to src/components/Event/Integrations/YouTubeIntegration.vue diff --git a/js/src/components/Event/MultiCard.vue b/src/components/Event/MultiCard.vue similarity index 100% rename from js/src/components/Event/MultiCard.vue rename to src/components/Event/MultiCard.vue diff --git a/js/src/components/Event/MultiEventMinimalistCard.vue b/src/components/Event/MultiEventMinimalistCard.vue similarity index 100% rename from js/src/components/Event/MultiEventMinimalistCard.vue rename to src/components/Event/MultiEventMinimalistCard.vue diff --git a/js/src/components/Event/OrganizerPicker.story.vue b/src/components/Event/OrganizerPicker.story.vue similarity index 100% rename from js/src/components/Event/OrganizerPicker.story.vue rename to src/components/Event/OrganizerPicker.story.vue diff --git a/js/src/components/Event/OrganizerPicker.vue b/src/components/Event/OrganizerPicker.vue similarity index 100% rename from js/src/components/Event/OrganizerPicker.vue rename to src/components/Event/OrganizerPicker.vue diff --git a/js/src/components/Event/OrganizerPickerWrapper.story.vue b/src/components/Event/OrganizerPickerWrapper.story.vue similarity index 100% rename from js/src/components/Event/OrganizerPickerWrapper.story.vue rename to src/components/Event/OrganizerPickerWrapper.story.vue diff --git a/js/src/components/Event/OrganizerPickerWrapper.vue b/src/components/Event/OrganizerPickerWrapper.vue similarity index 100% rename from js/src/components/Event/OrganizerPickerWrapper.vue rename to src/components/Event/OrganizerPickerWrapper.vue diff --git a/js/src/components/Event/ParticipationButton.story.vue b/src/components/Event/ParticipationButton.story.vue similarity index 100% rename from js/src/components/Event/ParticipationButton.story.vue rename to src/components/Event/ParticipationButton.story.vue diff --git a/js/src/components/Event/ParticipationButton.vue b/src/components/Event/ParticipationButton.vue similarity index 100% rename from js/src/components/Event/ParticipationButton.vue rename to src/components/Event/ParticipationButton.vue diff --git a/js/src/components/Event/RecentEventCardWrapper.vue b/src/components/Event/RecentEventCardWrapper.vue similarity index 100% rename from js/src/components/Event/RecentEventCardWrapper.vue rename to src/components/Event/RecentEventCardWrapper.vue diff --git a/js/src/components/Event/ShareEventModal.story.vue b/src/components/Event/ShareEventModal.story.vue similarity index 100% rename from js/src/components/Event/ShareEventModal.story.vue rename to src/components/Event/ShareEventModal.story.vue diff --git a/js/src/components/Event/ShareEventModal.vue b/src/components/Event/ShareEventModal.vue similarity index 100% rename from js/src/components/Event/ShareEventModal.vue rename to src/components/Event/ShareEventModal.vue diff --git a/js/src/components/Event/SkeletonDateCalendarIcon.vue b/src/components/Event/SkeletonDateCalendarIcon.vue similarity index 100% rename from js/src/components/Event/SkeletonDateCalendarIcon.vue rename to src/components/Event/SkeletonDateCalendarIcon.vue diff --git a/js/src/components/Event/SkeletonEventResult.story.vue b/src/components/Event/SkeletonEventResult.story.vue similarity index 100% rename from js/src/components/Event/SkeletonEventResult.story.vue rename to src/components/Event/SkeletonEventResult.story.vue diff --git a/js/src/components/Event/SkeletonEventResult.vue b/src/components/Event/SkeletonEventResult.vue similarity index 100% rename from js/src/components/Event/SkeletonEventResult.vue rename to src/components/Event/SkeletonEventResult.vue diff --git a/js/src/components/Event/SkeletonEventResultList.vue b/src/components/Event/SkeletonEventResultList.vue similarity index 100% rename from js/src/components/Event/SkeletonEventResultList.vue rename to src/components/Event/SkeletonEventResultList.vue diff --git a/js/src/components/Event/TagInput.story.vue b/src/components/Event/TagInput.story.vue similarity index 100% rename from js/src/components/Event/TagInput.story.vue rename to src/components/Event/TagInput.story.vue diff --git a/js/src/components/Event/TagInput.vue b/src/components/Event/TagInput.vue similarity index 100% rename from js/src/components/Event/TagInput.vue rename to src/components/Event/TagInput.vue diff --git a/js/src/components/Feedback/SentryFeedback.vue b/src/components/Feedback/SentryFeedback.vue similarity index 100% rename from js/src/components/Feedback/SentryFeedback.vue rename to src/components/Feedback/SentryFeedback.vue diff --git a/js/src/components/Group/GroupCard.story.vue b/src/components/Group/GroupCard.story.vue similarity index 100% rename from js/src/components/Group/GroupCard.story.vue rename to src/components/Group/GroupCard.story.vue diff --git a/js/src/components/Group/GroupCard.vue b/src/components/Group/GroupCard.vue similarity index 100% rename from js/src/components/Group/GroupCard.vue rename to src/components/Group/GroupCard.vue diff --git a/js/src/components/Group/GroupMemberCard.story.vue b/src/components/Group/GroupMemberCard.story.vue similarity index 100% rename from js/src/components/Group/GroupMemberCard.story.vue rename to src/components/Group/GroupMemberCard.story.vue diff --git a/js/src/components/Group/GroupMemberCard.vue b/src/components/Group/GroupMemberCard.vue similarity index 100% rename from js/src/components/Group/GroupMemberCard.vue rename to src/components/Group/GroupMemberCard.vue diff --git a/js/src/components/Group/GroupSection.vue b/src/components/Group/GroupSection.vue similarity index 100% rename from js/src/components/Group/GroupSection.vue rename to src/components/Group/GroupSection.vue diff --git a/js/src/components/Group/InvitationCard.vue b/src/components/Group/InvitationCard.vue similarity index 100% rename from js/src/components/Group/InvitationCard.vue rename to src/components/Group/InvitationCard.vue diff --git a/js/src/components/Group/InvitationsList.vue b/src/components/Group/InvitationsList.vue similarity index 100% rename from js/src/components/Group/InvitationsList.vue rename to src/components/Group/InvitationsList.vue diff --git a/js/src/components/Group/JoinGroupWithAccount.vue b/src/components/Group/JoinGroupWithAccount.vue similarity index 100% rename from js/src/components/Group/JoinGroupWithAccount.vue rename to src/components/Group/JoinGroupWithAccount.vue diff --git a/js/src/components/Group/MultiGroupCard.vue b/src/components/Group/MultiGroupCard.vue similarity index 100% rename from js/src/components/Group/MultiGroupCard.vue rename to src/components/Group/MultiGroupCard.vue diff --git a/js/src/components/Group/Sections/DiscussionsSection.vue b/src/components/Group/Sections/DiscussionsSection.vue similarity index 100% rename from js/src/components/Group/Sections/DiscussionsSection.vue rename to src/components/Group/Sections/DiscussionsSection.vue diff --git a/js/src/components/Group/Sections/EventsSection.vue b/src/components/Group/Sections/EventsSection.vue similarity index 100% rename from js/src/components/Group/Sections/EventsSection.vue rename to src/components/Group/Sections/EventsSection.vue diff --git a/js/src/components/Group/Sections/PostsSection.vue b/src/components/Group/Sections/PostsSection.vue similarity index 100% rename from js/src/components/Group/Sections/PostsSection.vue rename to src/components/Group/Sections/PostsSection.vue diff --git a/js/src/components/Group/Sections/ResourcesSection.vue b/src/components/Group/Sections/ResourcesSection.vue similarity index 100% rename from js/src/components/Group/Sections/ResourcesSection.vue rename to src/components/Group/Sections/ResourcesSection.vue diff --git a/js/src/components/Group/ShareGroupModal.vue b/src/components/Group/ShareGroupModal.vue similarity index 100% rename from js/src/components/Group/ShareGroupModal.vue rename to src/components/Group/ShareGroupModal.vue diff --git a/js/src/components/Group/SkeletonGroupResult.vue b/src/components/Group/SkeletonGroupResult.vue similarity index 100% rename from js/src/components/Group/SkeletonGroupResult.vue rename to src/components/Group/SkeletonGroupResult.vue diff --git a/js/src/components/Group/SkeletonGroupResultList.vue b/src/components/Group/SkeletonGroupResultList.vue similarity index 100% rename from js/src/components/Group/SkeletonGroupResultList.vue rename to src/components/Group/SkeletonGroupResultList.vue diff --git a/js/src/components/Home/CategoriesPreview.story.vue b/src/components/Home/CategoriesPreview.story.vue similarity index 100% rename from js/src/components/Home/CategoriesPreview.story.vue rename to src/components/Home/CategoriesPreview.story.vue diff --git a/js/src/components/Home/CategoriesPreview.vue b/src/components/Home/CategoriesPreview.vue similarity index 100% rename from js/src/components/Home/CategoriesPreview.vue rename to src/components/Home/CategoriesPreview.vue diff --git a/js/src/components/Home/MobilizonPresentation.story.vue b/src/components/Home/MobilizonPresentation.story.vue similarity index 100% rename from js/src/components/Home/MobilizonPresentation.story.vue rename to src/components/Home/MobilizonPresentation.story.vue diff --git a/js/src/components/Home/MobilizonPresentation.vue b/src/components/Home/MobilizonPresentation.vue similarity index 100% rename from js/src/components/Home/MobilizonPresentation.vue rename to src/components/Home/MobilizonPresentation.vue diff --git a/js/src/components/Home/SearchFields.story.vue b/src/components/Home/SearchFields.story.vue similarity index 100% rename from js/src/components/Home/SearchFields.story.vue rename to src/components/Home/SearchFields.story.vue diff --git a/js/src/components/Home/SearchFields.vue b/src/components/Home/SearchFields.vue similarity index 100% rename from js/src/components/Home/SearchFields.vue rename to src/components/Home/SearchFields.vue diff --git a/js/src/components/Home/UnloggedIntroduction.story.vue b/src/components/Home/UnloggedIntroduction.story.vue similarity index 100% rename from js/src/components/Home/UnloggedIntroduction.story.vue rename to src/components/Home/UnloggedIntroduction.story.vue diff --git a/js/src/components/Home/UnloggedIntroduction.vue b/src/components/Home/UnloggedIntroduction.vue similarity index 100% rename from js/src/components/Home/UnloggedIntroduction.vue rename to src/components/Home/UnloggedIntroduction.vue diff --git a/js/src/components/Image/BlurhashImg.vue b/src/components/Image/BlurhashImg.vue similarity index 100% rename from js/src/components/Image/BlurhashImg.vue rename to src/components/Image/BlurhashImg.vue diff --git a/js/src/components/Image/LazyImage.vue b/src/components/Image/LazyImage.vue similarity index 100% rename from js/src/components/Image/LazyImage.vue rename to src/components/Image/LazyImage.vue diff --git a/js/src/components/Image/LazyImageWrapper.vue b/src/components/Image/LazyImageWrapper.vue similarity index 100% rename from js/src/components/Image/LazyImageWrapper.vue rename to src/components/Image/LazyImageWrapper.vue diff --git a/js/src/components/LeafletMap.vue b/src/components/LeafletMap.vue similarity index 100% rename from js/src/components/LeafletMap.vue rename to src/components/LeafletMap.vue diff --git a/js/src/components/Local/CloseContent.vue b/src/components/Local/CloseContent.vue similarity index 100% rename from js/src/components/Local/CloseContent.vue rename to src/components/Local/CloseContent.vue diff --git a/js/src/components/Local/CloseEvents.vue b/src/components/Local/CloseEvents.vue similarity index 100% rename from js/src/components/Local/CloseEvents.vue rename to src/components/Local/CloseEvents.vue diff --git a/js/src/components/Local/CloseGroups.vue b/src/components/Local/CloseGroups.vue similarity index 100% rename from js/src/components/Local/CloseGroups.vue rename to src/components/Local/CloseGroups.vue diff --git a/js/src/components/Local/LastEvents.vue b/src/components/Local/LastEvents.vue similarity index 100% rename from js/src/components/Local/LastEvents.vue rename to src/components/Local/LastEvents.vue diff --git a/js/src/components/Local/MoreContent.vue b/src/components/Local/MoreContent.vue similarity index 100% rename from js/src/components/Local/MoreContent.vue rename to src/components/Local/MoreContent.vue diff --git a/js/src/components/Local/OnlineEvents.vue b/src/components/Local/OnlineEvents.vue similarity index 100% rename from js/src/components/Local/OnlineEvents.vue rename to src/components/Local/OnlineEvents.vue diff --git a/js/src/components/Map/VueBottomSheet.vue b/src/components/Map/VueBottomSheet.vue similarity index 100% rename from js/src/components/Map/VueBottomSheet.vue rename to src/components/Map/VueBottomSheet.vue diff --git a/js/src/components/MobilizonLogo.vue b/src/components/MobilizonLogo.vue similarity index 100% rename from js/src/components/MobilizonLogo.vue rename to src/components/MobilizonLogo.vue diff --git a/js/src/components/NavBar.vue b/src/components/NavBar.vue similarity index 100% rename from js/src/components/NavBar.vue rename to src/components/NavBar.vue diff --git a/js/src/components/OAuth/AuthorizeApplication.vue b/src/components/OAuth/AuthorizeApplication.vue similarity index 100% rename from js/src/components/OAuth/AuthorizeApplication.vue rename to src/components/OAuth/AuthorizeApplication.vue diff --git a/js/src/components/OAuth/scopes.ts b/src/components/OAuth/scopes.ts similarity index 100% rename from js/src/components/OAuth/scopes.ts rename to src/components/OAuth/scopes.ts diff --git a/js/src/components/PageFooter.vue b/src/components/PageFooter.vue similarity index 100% rename from js/src/components/PageFooter.vue rename to src/components/PageFooter.vue diff --git a/js/src/components/Participation/ConfirmParticipation.vue b/src/components/Participation/ConfirmParticipation.vue similarity index 100% rename from js/src/components/Participation/ConfirmParticipation.vue rename to src/components/Participation/ConfirmParticipation.vue diff --git a/js/src/components/Participation/NewPrivateMessage.vue b/src/components/Participation/NewPrivateMessage.vue similarity index 100% rename from js/src/components/Participation/NewPrivateMessage.vue rename to src/components/Participation/NewPrivateMessage.vue diff --git a/js/src/components/Participation/ParticipationSection.vue b/src/components/Participation/ParticipationSection.vue similarity index 100% rename from js/src/components/Participation/ParticipationSection.vue rename to src/components/Participation/ParticipationSection.vue diff --git a/js/src/components/Participation/ParticipationWithAccount.vue b/src/components/Participation/ParticipationWithAccount.vue similarity index 100% rename from js/src/components/Participation/ParticipationWithAccount.vue rename to src/components/Participation/ParticipationWithAccount.vue diff --git a/js/src/components/Participation/ParticipationWithoutAccount.vue b/src/components/Participation/ParticipationWithoutAccount.vue similarity index 100% rename from js/src/components/Participation/ParticipationWithoutAccount.vue rename to src/components/Participation/ParticipationWithoutAccount.vue diff --git a/js/src/components/Participation/UnloggedParticipation.vue b/src/components/Participation/UnloggedParticipation.vue similarity index 96% rename from js/src/components/Participation/UnloggedParticipation.vue rename to src/components/Participation/UnloggedParticipation.vue index 8be6313a6..b73cf14ee 100644 --- a/js/src/components/Participation/UnloggedParticipation.vue +++ b/src/components/Participation/UnloggedParticipation.vue @@ -9,7 +9,7 @@ <router-link :to="{ name: RouteName.EVENT_PARTICIPATE_WITH_ACCOUNT }"> <figure class="flex justify-center my-2"> <img - src="/img/undraw_profile.svg" + src="../../../public/img/undraw_profile.svg" alt="Profile illustration" width="128" height="128" @@ -55,7 +55,7 @@ <img width="128" height="128" - src="/img/undraw_mail_2.svg" + src="../../../public/img/undraw_mail_2.svg" alt="Privacy illustration" /> </figure> @@ -66,7 +66,7 @@ <a :href="`${event.url}/participate/without-account`" v-else> <figure class="flex justify-center my-2"> <img - src="/img/undraw_mail_2.svg" + src="../../../public/img/undraw_mail_2.svg" width="128" height="128" alt="Privacy illustration" diff --git a/js/src/components/PictureUpload.vue b/src/components/PictureUpload.vue similarity index 100% rename from js/src/components/PictureUpload.vue rename to src/components/PictureUpload.vue diff --git a/js/src/components/Post/MultiPostListItem.vue b/src/components/Post/MultiPostListItem.vue similarity index 100% rename from js/src/components/Post/MultiPostListItem.vue rename to src/components/Post/MultiPostListItem.vue diff --git a/js/src/components/Post/PostListItem.story.vue b/src/components/Post/PostListItem.story.vue similarity index 100% rename from js/src/components/Post/PostListItem.story.vue rename to src/components/Post/PostListItem.story.vue diff --git a/js/src/components/Post/PostListItem.vue b/src/components/Post/PostListItem.vue similarity index 100% rename from js/src/components/Post/PostListItem.vue rename to src/components/Post/PostListItem.vue diff --git a/js/src/components/Post/SharePostModal.story.vue b/src/components/Post/SharePostModal.story.vue similarity index 100% rename from js/src/components/Post/SharePostModal.story.vue rename to src/components/Post/SharePostModal.story.vue diff --git a/js/src/components/Post/SharePostModal.vue b/src/components/Post/SharePostModal.vue similarity index 100% rename from js/src/components/Post/SharePostModal.vue rename to src/components/Post/SharePostModal.vue diff --git a/js/src/components/Report/ReportCard.vue b/src/components/Report/ReportCard.vue similarity index 100% rename from js/src/components/Report/ReportCard.vue rename to src/components/Report/ReportCard.vue diff --git a/js/src/components/Report/ReportModal.vue b/src/components/Report/ReportModal.vue similarity index 100% rename from js/src/components/Report/ReportModal.vue rename to src/components/Report/ReportModal.vue diff --git a/js/src/components/Resource/DraggableList.vue b/src/components/Resource/DraggableList.vue similarity index 100% rename from js/src/components/Resource/DraggableList.vue rename to src/components/Resource/DraggableList.vue diff --git a/js/src/components/Resource/FolderItem.vue b/src/components/Resource/FolderItem.vue similarity index 100% rename from js/src/components/Resource/FolderItem.vue rename to src/components/Resource/FolderItem.vue diff --git a/js/src/components/Resource/ResourceDropdown.vue b/src/components/Resource/ResourceDropdown.vue similarity index 100% rename from js/src/components/Resource/ResourceDropdown.vue rename to src/components/Resource/ResourceDropdown.vue diff --git a/js/src/components/Resource/ResourceItem.vue b/src/components/Resource/ResourceItem.vue similarity index 100% rename from js/src/components/Resource/ResourceItem.vue rename to src/components/Resource/ResourceItem.vue diff --git a/js/src/components/Resource/ResourceSelector.vue b/src/components/Resource/ResourceSelector.vue similarity index 100% rename from js/src/components/Resource/ResourceSelector.vue rename to src/components/Resource/ResourceSelector.vue diff --git a/js/src/components/Resource/utils.ts b/src/components/Resource/utils.ts similarity index 100% rename from js/src/components/Resource/utils.ts rename to src/components/Resource/utils.ts diff --git a/js/src/components/Search/EventMarkerMap.vue b/src/components/Search/EventMarkerMap.vue similarity index 100% rename from js/src/components/Search/EventMarkerMap.vue rename to src/components/Search/EventMarkerMap.vue diff --git a/js/src/components/Search/filters/FilterSection.vue b/src/components/Search/filters/FilterSection.vue similarity index 100% rename from js/src/components/Search/filters/FilterSection.vue rename to src/components/Search/filters/FilterSection.vue diff --git a/js/src/components/SearchField.vue b/src/components/SearchField.vue similarity index 100% rename from js/src/components/SearchField.vue rename to src/components/SearchField.vue diff --git a/js/src/components/Settings/NotificationsOnboarding.vue b/src/components/Settings/NotificationsOnboarding.vue similarity index 100% rename from js/src/components/Settings/NotificationsOnboarding.vue rename to src/components/Settings/NotificationsOnboarding.vue diff --git a/js/src/components/Settings/SettingMenuItem.vue b/src/components/Settings/SettingMenuItem.vue similarity index 100% rename from js/src/components/Settings/SettingMenuItem.vue rename to src/components/Settings/SettingMenuItem.vue diff --git a/js/src/components/Settings/SettingMenuSection.vue b/src/components/Settings/SettingMenuSection.vue similarity index 100% rename from js/src/components/Settings/SettingMenuSection.vue rename to src/components/Settings/SettingMenuSection.vue diff --git a/js/src/components/Settings/SettingsMenu.vue b/src/components/Settings/SettingsMenu.vue similarity index 100% rename from js/src/components/Settings/SettingsMenu.vue rename to src/components/Settings/SettingsMenu.vue diff --git a/js/src/components/Settings/SettingsOnboarding.vue b/src/components/Settings/SettingsOnboarding.vue similarity index 100% rename from js/src/components/Settings/SettingsOnboarding.vue rename to src/components/Settings/SettingsOnboarding.vue diff --git a/js/src/components/Share/DiasporaLogo.vue b/src/components/Share/DiasporaLogo.vue similarity index 100% rename from js/src/components/Share/DiasporaLogo.vue rename to src/components/Share/DiasporaLogo.vue diff --git a/js/src/components/Share/MastodonLogo.vue b/src/components/Share/MastodonLogo.vue similarity index 100% rename from js/src/components/Share/MastodonLogo.vue rename to src/components/Share/MastodonLogo.vue diff --git a/js/src/components/Share/ShareModal.vue b/src/components/Share/ShareModal.vue similarity index 100% rename from js/src/components/Share/ShareModal.vue rename to src/components/Share/ShareModal.vue diff --git a/js/src/components/Share/TelegramLogo.vue b/src/components/Share/TelegramLogo.vue similarity index 100% rename from js/src/components/Share/TelegramLogo.vue rename to src/components/Share/TelegramLogo.vue diff --git a/js/src/components/TagElement.vue b/src/components/TagElement.vue similarity index 100% rename from js/src/components/TagElement.vue rename to src/components/TagElement.vue diff --git a/js/src/components/TextEditor.vue b/src/components/TextEditor.vue similarity index 100% rename from js/src/components/TextEditor.vue rename to src/components/TextEditor.vue diff --git a/js/src/components/Todo/CompactTodo.vue b/src/components/Todo/CompactTodo.vue similarity index 100% rename from js/src/components/Todo/CompactTodo.vue rename to src/components/Todo/CompactTodo.vue diff --git a/js/src/components/Todo/FullTodo.vue b/src/components/Todo/FullTodo.vue similarity index 100% rename from js/src/components/Todo/FullTodo.vue rename to src/components/Todo/FullTodo.vue diff --git a/js/src/components/User/AuthProvider.vue b/src/components/User/AuthProvider.vue similarity index 100% rename from js/src/components/User/AuthProvider.vue rename to src/components/User/AuthProvider.vue diff --git a/js/src/components/User/AuthProviders.story.vue b/src/components/User/AuthProviders.story.vue similarity index 100% rename from js/src/components/User/AuthProviders.story.vue rename to src/components/User/AuthProviders.story.vue diff --git a/js/src/components/User/AuthProviders.vue b/src/components/User/AuthProviders.vue similarity index 100% rename from js/src/components/User/AuthProviders.vue rename to src/components/User/AuthProviders.vue diff --git a/js/src/components/Utils/EmptyContent.vue b/src/components/Utils/EmptyContent.vue similarity index 100% rename from js/src/components/Utils/EmptyContent.vue rename to src/components/Utils/EmptyContent.vue diff --git a/js/src/components/Utils/HomepageRedirectComponent.vue b/src/components/Utils/HomepageRedirectComponent.vue similarity index 100% rename from js/src/components/Utils/HomepageRedirectComponent.vue rename to src/components/Utils/HomepageRedirectComponent.vue diff --git a/js/src/components/Utils/NavBreadcrumbs.vue b/src/components/Utils/NavBreadcrumbs.vue similarity index 100% rename from js/src/components/Utils/NavBreadcrumbs.vue rename to src/components/Utils/NavBreadcrumbs.vue diff --git a/js/src/components/Utils/ObserverElement.vue b/src/components/Utils/ObserverElement.vue similarity index 100% rename from js/src/components/Utils/ObserverElement.vue rename to src/components/Utils/ObserverElement.vue diff --git a/js/src/components/Utils/RedirectWithAccount.vue b/src/components/Utils/RedirectWithAccount.vue similarity index 100% rename from js/src/components/Utils/RedirectWithAccount.vue rename to src/components/Utils/RedirectWithAccount.vue diff --git a/js/src/components/core/CustomDialog.vue b/src/components/core/CustomDialog.vue similarity index 100% rename from js/src/components/core/CustomDialog.vue rename to src/components/core/CustomDialog.vue diff --git a/js/src/components/core/CustomSnackbar.vue b/src/components/core/CustomSnackbar.vue similarity index 100% rename from js/src/components/core/CustomSnackbar.vue rename to src/components/core/CustomSnackbar.vue diff --git a/js/src/components/core/LinkOrRouterLink.vue b/src/components/core/LinkOrRouterLink.vue similarity index 100% rename from js/src/components/core/LinkOrRouterLink.vue rename to src/components/core/LinkOrRouterLink.vue diff --git a/js/src/components/core/MaterialIcon.story.vue b/src/components/core/MaterialIcon.story.vue similarity index 100% rename from js/src/components/core/MaterialIcon.story.vue rename to src/components/core/MaterialIcon.story.vue diff --git a/js/src/components/core/MaterialIcon.vue b/src/components/core/MaterialIcon.vue similarity index 100% rename from js/src/components/core/MaterialIcon.vue rename to src/components/core/MaterialIcon.vue diff --git a/js/src/composition/activity.ts b/src/composition/activity.ts similarity index 100% rename from js/src/composition/activity.ts rename to src/composition/activity.ts diff --git a/js/src/composition/apollo/actor.ts b/src/composition/apollo/actor.ts similarity index 100% rename from js/src/composition/apollo/actor.ts rename to src/composition/apollo/actor.ts diff --git a/js/src/composition/apollo/address.ts b/src/composition/apollo/address.ts similarity index 100% rename from js/src/composition/apollo/address.ts rename to src/composition/apollo/address.ts diff --git a/js/src/composition/apollo/config.ts b/src/composition/apollo/config.ts similarity index 100% rename from js/src/composition/apollo/config.ts rename to src/composition/apollo/config.ts diff --git a/js/src/composition/apollo/discussions.ts b/src/composition/apollo/discussions.ts similarity index 100% rename from js/src/composition/apollo/discussions.ts rename to src/composition/apollo/discussions.ts diff --git a/js/src/composition/apollo/event.ts b/src/composition/apollo/event.ts similarity index 100% rename from js/src/composition/apollo/event.ts rename to src/composition/apollo/event.ts diff --git a/js/src/composition/apollo/group.ts b/src/composition/apollo/group.ts similarity index 100% rename from js/src/composition/apollo/group.ts rename to src/composition/apollo/group.ts diff --git a/js/src/composition/apollo/members.ts b/src/composition/apollo/members.ts similarity index 100% rename from js/src/composition/apollo/members.ts rename to src/composition/apollo/members.ts diff --git a/js/src/composition/apollo/report.ts b/src/composition/apollo/report.ts similarity index 100% rename from js/src/composition/apollo/report.ts rename to src/composition/apollo/report.ts diff --git a/js/src/composition/apollo/resources.ts b/src/composition/apollo/resources.ts similarity index 100% rename from js/src/composition/apollo/resources.ts rename to src/composition/apollo/resources.ts diff --git a/js/src/composition/apollo/tags.ts b/src/composition/apollo/tags.ts similarity index 100% rename from js/src/composition/apollo/tags.ts rename to src/composition/apollo/tags.ts diff --git a/js/src/composition/apollo/user.ts b/src/composition/apollo/user.ts similarity index 100% rename from js/src/composition/apollo/user.ts rename to src/composition/apollo/user.ts diff --git a/js/src/composition/config.ts b/src/composition/config.ts similarity index 100% rename from js/src/composition/config.ts rename to src/composition/config.ts diff --git a/js/src/composition/group.ts b/src/composition/group.ts similarity index 100% rename from js/src/composition/group.ts rename to src/composition/group.ts diff --git a/js/src/constants.ts b/src/constants.ts similarity index 100% rename from js/src/constants.ts rename to src/constants.ts diff --git a/js/src/filters/datetime.ts b/src/filters/datetime.ts similarity index 100% rename from js/src/filters/datetime.ts rename to src/filters/datetime.ts diff --git a/js/src/filters/index.ts b/src/filters/index.ts similarity index 100% rename from js/src/filters/index.ts rename to src/filters/index.ts diff --git a/js/src/filters/utils.ts b/src/filters/utils.ts similarity index 100% rename from js/src/filters/utils.ts rename to src/filters/utils.ts diff --git a/js/src/graphql/actor.ts b/src/graphql/actor.ts similarity index 100% rename from js/src/graphql/actor.ts rename to src/graphql/actor.ts diff --git a/js/src/graphql/address.ts b/src/graphql/address.ts similarity index 100% rename from js/src/graphql/address.ts rename to src/graphql/address.ts diff --git a/js/src/graphql/admin.ts b/src/graphql/admin.ts similarity index 100% rename from js/src/graphql/admin.ts rename to src/graphql/admin.ts diff --git a/js/src/graphql/application.ts b/src/graphql/application.ts similarity index 100% rename from js/src/graphql/application.ts rename to src/graphql/application.ts diff --git a/js/src/graphql/auth.ts b/src/graphql/auth.ts similarity index 100% rename from js/src/graphql/auth.ts rename to src/graphql/auth.ts diff --git a/js/src/graphql/comment.ts b/src/graphql/comment.ts similarity index 100% rename from js/src/graphql/comment.ts rename to src/graphql/comment.ts diff --git a/js/src/graphql/config.ts b/src/graphql/config.ts similarity index 100% rename from js/src/graphql/config.ts rename to src/graphql/config.ts diff --git a/js/src/graphql/conversations.ts b/src/graphql/conversations.ts similarity index 100% rename from js/src/graphql/conversations.ts rename to src/graphql/conversations.ts diff --git a/js/src/graphql/discussion.ts b/src/graphql/discussion.ts similarity index 100% rename from js/src/graphql/discussion.ts rename to src/graphql/discussion.ts diff --git a/js/src/graphql/event.ts b/src/graphql/event.ts similarity index 100% rename from js/src/graphql/event.ts rename to src/graphql/event.ts diff --git a/js/src/graphql/event_options.ts b/src/graphql/event_options.ts similarity index 100% rename from js/src/graphql/event_options.ts rename to src/graphql/event_options.ts diff --git a/js/src/graphql/feed_tokens.ts b/src/graphql/feed_tokens.ts similarity index 100% rename from js/src/graphql/feed_tokens.ts rename to src/graphql/feed_tokens.ts diff --git a/js/src/graphql/followers.ts b/src/graphql/followers.ts similarity index 100% rename from js/src/graphql/followers.ts rename to src/graphql/followers.ts diff --git a/js/src/graphql/fragmentTypes.json b/src/graphql/fragmentTypes.json similarity index 100% rename from js/src/graphql/fragmentTypes.json rename to src/graphql/fragmentTypes.json diff --git a/js/src/graphql/group.ts b/src/graphql/group.ts similarity index 100% rename from js/src/graphql/group.ts rename to src/graphql/group.ts diff --git a/js/src/graphql/home.ts b/src/graphql/home.ts similarity index 100% rename from js/src/graphql/home.ts rename to src/graphql/home.ts diff --git a/js/src/graphql/location.ts b/src/graphql/location.ts similarity index 100% rename from js/src/graphql/location.ts rename to src/graphql/location.ts diff --git a/js/src/graphql/member.ts b/src/graphql/member.ts similarity index 100% rename from js/src/graphql/member.ts rename to src/graphql/member.ts diff --git a/js/src/graphql/participant.ts b/src/graphql/participant.ts similarity index 100% rename from js/src/graphql/participant.ts rename to src/graphql/participant.ts diff --git a/js/src/graphql/post.ts b/src/graphql/post.ts similarity index 100% rename from js/src/graphql/post.ts rename to src/graphql/post.ts diff --git a/js/src/graphql/report.ts b/src/graphql/report.ts similarity index 100% rename from js/src/graphql/report.ts rename to src/graphql/report.ts diff --git a/js/src/graphql/resources.ts b/src/graphql/resources.ts similarity index 100% rename from js/src/graphql/resources.ts rename to src/graphql/resources.ts diff --git a/js/src/graphql/search.ts b/src/graphql/search.ts similarity index 100% rename from js/src/graphql/search.ts rename to src/graphql/search.ts diff --git a/js/src/graphql/statistics.ts b/src/graphql/statistics.ts similarity index 100% rename from js/src/graphql/statistics.ts rename to src/graphql/statistics.ts diff --git a/js/src/graphql/tags.ts b/src/graphql/tags.ts similarity index 100% rename from js/src/graphql/tags.ts rename to src/graphql/tags.ts diff --git a/js/src/graphql/todos.ts b/src/graphql/todos.ts similarity index 100% rename from js/src/graphql/todos.ts rename to src/graphql/todos.ts diff --git a/js/src/graphql/upload.ts b/src/graphql/upload.ts similarity index 100% rename from js/src/graphql/upload.ts rename to src/graphql/upload.ts diff --git a/js/src/graphql/user.ts b/src/graphql/user.ts similarity index 100% rename from js/src/graphql/user.ts rename to src/graphql/user.ts diff --git a/js/src/graphql/webPush.ts b/src/graphql/webPush.ts similarity index 100% rename from js/src/graphql/webPush.ts rename to src/graphql/webPush.ts diff --git a/js/src/histoire.setup.ts b/src/histoire.setup.ts similarity index 100% rename from js/src/histoire.setup.ts rename to src/histoire.setup.ts diff --git a/js/src/i18n/ar.json b/src/i18n/ar.json similarity index 100% rename from js/src/i18n/ar.json rename to src/i18n/ar.json diff --git a/js/src/i18n/be.json b/src/i18n/be.json similarity index 100% rename from js/src/i18n/be.json rename to src/i18n/be.json diff --git a/js/src/i18n/bn.json b/src/i18n/bn.json similarity index 100% rename from js/src/i18n/bn.json rename to src/i18n/bn.json diff --git a/js/src/i18n/ca.json b/src/i18n/ca.json similarity index 100% rename from js/src/i18n/ca.json rename to src/i18n/ca.json diff --git a/js/src/i18n/cs.json b/src/i18n/cs.json similarity index 100% rename from js/src/i18n/cs.json rename to src/i18n/cs.json diff --git a/js/src/i18n/cy.json b/src/i18n/cy.json similarity index 100% rename from js/src/i18n/cy.json rename to src/i18n/cy.json diff --git a/js/src/i18n/da.json b/src/i18n/da.json similarity index 100% rename from js/src/i18n/da.json rename to src/i18n/da.json diff --git a/js/src/i18n/de.json b/src/i18n/de.json similarity index 100% rename from js/src/i18n/de.json rename to src/i18n/de.json diff --git a/js/src/i18n/en_US.json b/src/i18n/en_US.json similarity index 100% rename from js/src/i18n/en_US.json rename to src/i18n/en_US.json diff --git a/js/src/i18n/eo.json b/src/i18n/eo.json similarity index 100% rename from js/src/i18n/eo.json rename to src/i18n/eo.json diff --git a/js/src/i18n/es.json b/src/i18n/es.json similarity index 100% rename from js/src/i18n/es.json rename to src/i18n/es.json diff --git a/js/src/i18n/eu.json b/src/i18n/eu.json similarity index 100% rename from js/src/i18n/eu.json rename to src/i18n/eu.json diff --git a/js/src/i18n/fa.json b/src/i18n/fa.json similarity index 100% rename from js/src/i18n/fa.json rename to src/i18n/fa.json diff --git a/js/src/i18n/fi.json b/src/i18n/fi.json similarity index 100% rename from js/src/i18n/fi.json rename to src/i18n/fi.json diff --git a/js/src/i18n/fr_FR.json b/src/i18n/fr_FR.json similarity index 100% rename from js/src/i18n/fr_FR.json rename to src/i18n/fr_FR.json diff --git a/js/src/i18n/gd.json b/src/i18n/gd.json similarity index 100% rename from js/src/i18n/gd.json rename to src/i18n/gd.json diff --git a/js/src/i18n/gl.json b/src/i18n/gl.json similarity index 100% rename from js/src/i18n/gl.json rename to src/i18n/gl.json diff --git a/js/src/i18n/he.json b/src/i18n/he.json similarity index 100% rename from js/src/i18n/he.json rename to src/i18n/he.json diff --git a/js/src/i18n/hr.json b/src/i18n/hr.json similarity index 100% rename from js/src/i18n/hr.json rename to src/i18n/hr.json diff --git a/js/src/i18n/hu.json b/src/i18n/hu.json similarity index 100% rename from js/src/i18n/hu.json rename to src/i18n/hu.json diff --git a/js/src/i18n/id.json b/src/i18n/id.json similarity index 100% rename from js/src/i18n/id.json rename to src/i18n/id.json diff --git a/js/src/i18n/it.json b/src/i18n/it.json similarity index 100% rename from js/src/i18n/it.json rename to src/i18n/it.json diff --git a/js/src/i18n/ja.json b/src/i18n/ja.json similarity index 100% rename from js/src/i18n/ja.json rename to src/i18n/ja.json diff --git a/js/src/i18n/kab.json b/src/i18n/kab.json similarity index 100% rename from js/src/i18n/kab.json rename to src/i18n/kab.json diff --git a/js/src/i18n/kn.json b/src/i18n/kn.json similarity index 100% rename from js/src/i18n/kn.json rename to src/i18n/kn.json diff --git a/js/src/i18n/langs.json b/src/i18n/langs.json similarity index 100% rename from js/src/i18n/langs.json rename to src/i18n/langs.json diff --git a/js/src/i18n/nl.json b/src/i18n/nl.json similarity index 100% rename from js/src/i18n/nl.json rename to src/i18n/nl.json diff --git a/js/src/i18n/nn.json b/src/i18n/nn.json similarity index 100% rename from js/src/i18n/nn.json rename to src/i18n/nn.json diff --git a/js/src/i18n/oc.json b/src/i18n/oc.json similarity index 100% rename from js/src/i18n/oc.json rename to src/i18n/oc.json diff --git a/js/src/i18n/pl.json b/src/i18n/pl.json similarity index 100% rename from js/src/i18n/pl.json rename to src/i18n/pl.json diff --git a/js/src/i18n/pluralRules/gd.ts b/src/i18n/pluralRules/gd.ts similarity index 100% rename from js/src/i18n/pluralRules/gd.ts rename to src/i18n/pluralRules/gd.ts diff --git a/js/src/i18n/pluralRules/index.ts b/src/i18n/pluralRules/index.ts similarity index 100% rename from js/src/i18n/pluralRules/index.ts rename to src/i18n/pluralRules/index.ts diff --git a/js/src/i18n/pt.json b/src/i18n/pt.json similarity index 100% rename from js/src/i18n/pt.json rename to src/i18n/pt.json diff --git a/js/src/i18n/pt_BR.json b/src/i18n/pt_BR.json similarity index 100% rename from js/src/i18n/pt_BR.json rename to src/i18n/pt_BR.json diff --git a/js/src/i18n/ru.json b/src/i18n/ru.json similarity index 100% rename from js/src/i18n/ru.json rename to src/i18n/ru.json diff --git a/js/src/i18n/sl.json b/src/i18n/sl.json similarity index 100% rename from js/src/i18n/sl.json rename to src/i18n/sl.json diff --git a/js/src/i18n/sv.json b/src/i18n/sv.json similarity index 100% rename from js/src/i18n/sv.json rename to src/i18n/sv.json diff --git a/js/src/i18n/tt.json b/src/i18n/tt.json similarity index 100% rename from js/src/i18n/tt.json rename to src/i18n/tt.json diff --git a/js/src/i18n/zh_Hans.json b/src/i18n/zh_Hans.json similarity index 100% rename from js/src/i18n/zh_Hans.json rename to src/i18n/zh_Hans.json diff --git a/js/src/i18n/zh_Hant.json b/src/i18n/zh_Hant.json similarity index 100% rename from js/src/i18n/zh_Hant.json rename to src/i18n/zh_Hant.json diff --git a/js/src/main.ts b/src/main.ts similarity index 100% rename from js/src/main.ts rename to src/main.ts diff --git a/js/src/oruga-config.ts b/src/oruga-config.ts similarity index 100% rename from js/src/oruga-config.ts rename to src/oruga-config.ts diff --git a/js/src/plugins/dateFns.ts b/src/plugins/dateFns.ts similarity index 100% rename from js/src/plugins/dateFns.ts rename to src/plugins/dateFns.ts diff --git a/js/src/plugins/dialog.ts b/src/plugins/dialog.ts similarity index 100% rename from js/src/plugins/dialog.ts rename to src/plugins/dialog.ts diff --git a/js/src/plugins/notifier.ts b/src/plugins/notifier.ts similarity index 100% rename from js/src/plugins/notifier.ts rename to src/plugins/notifier.ts diff --git a/js/src/plugins/snackbar.ts b/src/plugins/snackbar.ts similarity index 100% rename from js/src/plugins/snackbar.ts rename to src/plugins/snackbar.ts diff --git a/js/src/registerServiceWorker.ts b/src/registerServiceWorker.ts similarity index 100% rename from js/src/registerServiceWorker.ts rename to src/registerServiceWorker.ts diff --git a/js/src/router/actor.ts b/src/router/actor.ts similarity index 100% rename from js/src/router/actor.ts rename to src/router/actor.ts diff --git a/js/src/router/conversation.ts b/src/router/conversation.ts similarity index 100% rename from js/src/router/conversation.ts rename to src/router/conversation.ts diff --git a/js/src/router/discussion.ts b/src/router/discussion.ts similarity index 100% rename from js/src/router/discussion.ts rename to src/router/discussion.ts diff --git a/js/src/router/error.ts b/src/router/error.ts similarity index 100% rename from js/src/router/error.ts rename to src/router/error.ts diff --git a/js/src/router/event.ts b/src/router/event.ts similarity index 100% rename from js/src/router/event.ts rename to src/router/event.ts diff --git a/js/src/router/groups.ts b/src/router/groups.ts similarity index 100% rename from js/src/router/groups.ts rename to src/router/groups.ts diff --git a/js/src/router/guards/auth-guard.ts b/src/router/guards/auth-guard.ts similarity index 100% rename from js/src/router/guards/auth-guard.ts rename to src/router/guards/auth-guard.ts diff --git a/js/src/router/guards/register-guard.ts b/src/router/guards/register-guard.ts similarity index 100% rename from js/src/router/guards/register-guard.ts rename to src/router/guards/register-guard.ts diff --git a/js/src/router/index.ts b/src/router/index.ts similarity index 100% rename from js/src/router/index.ts rename to src/router/index.ts diff --git a/js/src/router/name.ts b/src/router/name.ts similarity index 100% rename from js/src/router/name.ts rename to src/router/name.ts diff --git a/js/src/router/settings.ts b/src/router/settings.ts similarity index 100% rename from js/src/router/settings.ts rename to src/router/settings.ts diff --git a/js/src/router/user.ts b/src/router/user.ts similarity index 100% rename from js/src/router/user.ts rename to src/router/user.ts diff --git a/js/src/service-worker.ts b/src/service-worker.ts similarity index 100% rename from js/src/service-worker.ts rename to src/service-worker.ts diff --git a/js/src/services/AnonymousParticipationStorage.ts b/src/services/AnonymousParticipationStorage.ts similarity index 100% rename from js/src/services/AnonymousParticipationStorage.ts rename to src/services/AnonymousParticipationStorage.ts diff --git a/js/src/services/EventMetadata.ts b/src/services/EventMetadata.ts similarity index 100% rename from js/src/services/EventMetadata.ts rename to src/services/EventMetadata.ts diff --git a/js/src/services/push-subscription.ts b/src/services/push-subscription.ts similarity index 100% rename from js/src/services/push-subscription.ts rename to src/services/push-subscription.ts diff --git a/js/src/services/statistics/index.ts b/src/services/statistics/index.ts similarity index 100% rename from js/src/services/statistics/index.ts rename to src/services/statistics/index.ts diff --git a/js/src/services/statistics/matomo.ts b/src/services/statistics/matomo.ts similarity index 100% rename from js/src/services/statistics/matomo.ts rename to src/services/statistics/matomo.ts diff --git a/js/src/services/statistics/plausible.ts b/src/services/statistics/plausible.ts similarity index 100% rename from js/src/services/statistics/plausible.ts rename to src/services/statistics/plausible.ts diff --git a/js/src/services/statistics/sentry.ts b/src/services/statistics/sentry.ts similarity index 100% rename from js/src/services/statistics/sentry.ts rename to src/services/statistics/sentry.ts diff --git a/js/src/shims-tsx.d.ts b/src/shims-tsx.d.ts similarity index 100% rename from js/src/shims-tsx.d.ts rename to src/shims-tsx.d.ts diff --git a/js/src/shims-vue.d.ts b/src/shims-vue.d.ts similarity index 100% rename from js/src/shims-vue.d.ts rename to src/shims-vue.d.ts diff --git a/js/src/styles/_mixins.scss b/src/styles/_mixins.scss similarity index 100% rename from js/src/styles/_mixins.scss rename to src/styles/_mixins.scss diff --git a/js/src/styles/vue-announcer.scss b/src/styles/vue-announcer.scss similarity index 100% rename from js/src/styles/vue-announcer.scss rename to src/styles/vue-announcer.scss diff --git a/js/src/styles/vue-skip-to.scss b/src/styles/vue-skip-to.scss similarity index 100% rename from js/src/styles/vue-skip-to.scss rename to src/styles/vue-skip-to.scss diff --git a/js/src/types/activity.model.ts b/src/types/activity.model.ts similarity index 100% rename from js/src/types/activity.model.ts rename to src/types/activity.model.ts diff --git a/js/src/types/actor/actor.model.ts b/src/types/actor/actor.model.ts similarity index 100% rename from js/src/types/actor/actor.model.ts rename to src/types/actor/actor.model.ts diff --git a/js/src/types/actor/follower.model.ts b/src/types/actor/follower.model.ts similarity index 100% rename from js/src/types/actor/follower.model.ts rename to src/types/actor/follower.model.ts diff --git a/js/src/types/actor/group.model.ts b/src/types/actor/group.model.ts similarity index 100% rename from js/src/types/actor/group.model.ts rename to src/types/actor/group.model.ts diff --git a/js/src/types/actor/index.ts b/src/types/actor/index.ts similarity index 100% rename from js/src/types/actor/index.ts rename to src/types/actor/index.ts diff --git a/js/src/types/actor/member.model.ts b/src/types/actor/member.model.ts similarity index 100% rename from js/src/types/actor/member.model.ts rename to src/types/actor/member.model.ts diff --git a/js/src/types/actor/person.model.ts b/src/types/actor/person.model.ts similarity index 100% rename from js/src/types/actor/person.model.ts rename to src/types/actor/person.model.ts diff --git a/js/src/types/address.model.ts b/src/types/address.model.ts similarity index 100% rename from js/src/types/address.model.ts rename to src/types/address.model.ts diff --git a/js/src/types/admin.model.ts b/src/types/admin.model.ts similarity index 100% rename from js/src/types/admin.model.ts rename to src/types/admin.model.ts diff --git a/js/src/types/analytics/sentry.model.ts b/src/types/analytics/sentry.model.ts similarity index 100% rename from js/src/types/analytics/sentry.model.ts rename to src/types/analytics/sentry.model.ts diff --git a/js/src/types/apollo.ts b/src/types/apollo.ts similarity index 100% rename from js/src/types/apollo.ts rename to src/types/apollo.ts diff --git a/js/src/types/application.model.ts b/src/types/application.model.ts similarity index 100% rename from js/src/types/application.model.ts rename to src/types/application.model.ts diff --git a/js/src/types/comment.model.ts b/src/types/comment.model.ts similarity index 100% rename from js/src/types/comment.model.ts rename to src/types/comment.model.ts diff --git a/js/src/types/config.model.ts b/src/types/config.model.ts similarity index 100% rename from js/src/types/config.model.ts rename to src/types/config.model.ts diff --git a/js/src/types/conversation.ts b/src/types/conversation.ts similarity index 100% rename from js/src/types/conversation.ts rename to src/types/conversation.ts diff --git a/js/src/types/current-user.model.ts b/src/types/current-user.model.ts similarity index 100% rename from js/src/types/current-user.model.ts rename to src/types/current-user.model.ts diff --git a/js/src/types/discussions.ts b/src/types/discussions.ts similarity index 100% rename from js/src/types/discussions.ts rename to src/types/discussions.ts diff --git a/js/src/types/enums.ts b/src/types/enums.ts similarity index 100% rename from js/src/types/enums.ts rename to src/types/enums.ts diff --git a/js/src/types/errors.model.ts b/src/types/errors.model.ts similarity index 100% rename from js/src/types/errors.model.ts rename to src/types/errors.model.ts diff --git a/js/src/types/event-metadata.ts b/src/types/event-metadata.ts similarity index 100% rename from js/src/types/event-metadata.ts rename to src/types/event-metadata.ts diff --git a/js/src/types/event-options.model.ts b/src/types/event-options.model.ts similarity index 100% rename from js/src/types/event-options.model.ts rename to src/types/event-options.model.ts diff --git a/js/src/types/event.model.ts b/src/types/event.model.ts similarity index 100% rename from js/src/types/event.model.ts rename to src/types/event.model.ts diff --git a/js/src/types/feedtoken.model.ts b/src/types/feedtoken.model.ts similarity index 100% rename from js/src/types/feedtoken.model.ts rename to src/types/feedtoken.model.ts diff --git a/js/src/types/followedGroupEvent.model.ts b/src/types/followedGroupEvent.model.ts similarity index 100% rename from js/src/types/followedGroupEvent.model.ts rename to src/types/followedGroupEvent.model.ts diff --git a/js/src/types/instance.model.ts b/src/types/instance.model.ts similarity index 100% rename from js/src/types/instance.model.ts rename to src/types/instance.model.ts diff --git a/js/src/types/login.model.ts b/src/types/login.model.ts similarity index 100% rename from js/src/types/login.model.ts rename to src/types/login.model.ts diff --git a/js/src/types/media.model.ts b/src/types/media.model.ts similarity index 100% rename from js/src/types/media.model.ts rename to src/types/media.model.ts diff --git a/js/src/types/paginate.ts b/src/types/paginate.ts similarity index 100% rename from js/src/types/paginate.ts rename to src/types/paginate.ts diff --git a/js/src/types/participant.model.ts b/src/types/participant.model.ts similarity index 100% rename from js/src/types/participant.model.ts rename to src/types/participant.model.ts diff --git a/js/src/types/picture.ts b/src/types/picture.ts similarity index 100% rename from js/src/types/picture.ts rename to src/types/picture.ts diff --git a/js/src/types/post.model.ts b/src/types/post.model.ts similarity index 100% rename from js/src/types/post.model.ts rename to src/types/post.model.ts diff --git a/js/src/types/report.model.ts b/src/types/report.model.ts similarity index 100% rename from js/src/types/report.model.ts rename to src/types/report.model.ts diff --git a/js/src/types/resource.ts b/src/types/resource.ts similarity index 100% rename from js/src/types/resource.ts rename to src/types/resource.ts diff --git a/js/src/types/search.model.ts b/src/types/search.model.ts similarity index 100% rename from js/src/types/search.model.ts rename to src/types/search.model.ts diff --git a/js/src/types/statistics.model.ts b/src/types/statistics.model.ts similarity index 100% rename from js/src/types/statistics.model.ts rename to src/types/statistics.model.ts diff --git a/js/src/types/stats.model.ts b/src/types/stats.model.ts similarity index 100% rename from js/src/types/stats.model.ts rename to src/types/stats.model.ts diff --git a/js/src/types/tag.model.ts b/src/types/tag.model.ts similarity index 100% rename from js/src/types/tag.model.ts rename to src/types/tag.model.ts diff --git a/js/src/types/todolist.ts b/src/types/todolist.ts similarity index 100% rename from js/src/types/todolist.ts rename to src/types/todolist.ts diff --git a/js/src/types/todos.ts b/src/types/todos.ts similarity index 100% rename from js/src/types/todos.ts rename to src/types/todos.ts diff --git a/js/src/types/user-location.model.ts b/src/types/user-location.model.ts similarity index 100% rename from js/src/types/user-location.model.ts rename to src/types/user-location.model.ts diff --git a/js/src/typings/absinthe.d.ts b/src/typings/absinthe.d.ts similarity index 100% rename from js/src/typings/absinthe.d.ts rename to src/typings/absinthe.d.ts diff --git a/js/src/typings/intl.d.ts b/src/typings/intl.d.ts similarity index 100% rename from js/src/typings/intl.d.ts rename to src/typings/intl.d.ts diff --git a/js/src/typings/matomo.d.ts b/src/typings/matomo.d.ts similarity index 100% rename from js/src/typings/matomo.d.ts rename to src/typings/matomo.d.ts diff --git a/js/src/utils/asyncForEach.ts b/src/utils/asyncForEach.ts similarity index 100% rename from js/src/utils/asyncForEach.ts rename to src/utils/asyncForEach.ts diff --git a/js/src/utils/auth.ts b/src/utils/auth.ts similarity index 100% rename from js/src/utils/auth.ts rename to src/utils/auth.ts diff --git a/js/src/utils/datetime.ts b/src/utils/datetime.ts similarity index 100% rename from js/src/utils/datetime.ts rename to src/utils/datetime.ts diff --git a/js/src/utils/graphics.ts b/src/utils/graphics.ts similarity index 100% rename from js/src/utils/graphics.ts rename to src/utils/graphics.ts diff --git a/js/src/utils/html.ts b/src/utils/html.ts similarity index 100% rename from js/src/utils/html.ts rename to src/utils/html.ts diff --git a/js/src/utils/i18n.ts b/src/utils/i18n.ts similarity index 100% rename from js/src/utils/i18n.ts rename to src/utils/i18n.ts diff --git a/js/src/utils/identity.ts b/src/utils/identity.ts similarity index 100% rename from js/src/utils/identity.ts rename to src/utils/identity.ts diff --git a/js/src/utils/image.ts b/src/utils/image.ts similarity index 100% rename from js/src/utils/image.ts rename to src/utils/image.ts diff --git a/js/src/utils/listFormat.ts b/src/utils/listFormat.ts similarity index 100% rename from js/src/utils/listFormat.ts rename to src/utils/listFormat.ts diff --git a/js/src/utils/location.ts b/src/utils/location.ts similarity index 100% rename from js/src/utils/location.ts rename to src/utils/location.ts diff --git a/js/src/utils/poiIcons.ts b/src/utils/poiIcons.ts similarity index 100% rename from js/src/utils/poiIcons.ts rename to src/utils/poiIcons.ts diff --git a/js/src/utils/share.ts b/src/utils/share.ts similarity index 100% rename from js/src/utils/share.ts rename to src/utils/share.ts diff --git a/js/src/utils/upload.ts b/src/utils/upload.ts similarity index 100% rename from js/src/utils/upload.ts rename to src/utils/upload.ts diff --git a/js/src/utils/username.ts b/src/utils/username.ts similarity index 100% rename from js/src/utils/username.ts rename to src/utils/username.ts diff --git a/js/src/utils/validators.ts b/src/utils/validators.ts similarity index 100% rename from js/src/utils/validators.ts rename to src/utils/validators.ts diff --git a/js/src/views/About/AboutInstanceView.vue b/src/views/About/AboutInstanceView.vue similarity index 100% rename from js/src/views/About/AboutInstanceView.vue rename to src/views/About/AboutInstanceView.vue diff --git a/js/src/views/About/GlossaryView.vue b/src/views/About/GlossaryView.vue similarity index 100% rename from js/src/views/About/GlossaryView.vue rename to src/views/About/GlossaryView.vue diff --git a/js/src/views/About/PrivacyView.vue b/src/views/About/PrivacyView.vue similarity index 100% rename from js/src/views/About/PrivacyView.vue rename to src/views/About/PrivacyView.vue diff --git a/js/src/views/About/RulesView.vue b/src/views/About/RulesView.vue similarity index 100% rename from js/src/views/About/RulesView.vue rename to src/views/About/RulesView.vue diff --git a/js/src/views/About/TermsView.vue b/src/views/About/TermsView.vue similarity index 100% rename from js/src/views/About/TermsView.vue rename to src/views/About/TermsView.vue diff --git a/js/src/views/AboutView.vue b/src/views/AboutView.vue similarity index 100% rename from js/src/views/AboutView.vue rename to src/views/AboutView.vue diff --git a/js/src/views/Account/IdentityPicker.vue b/src/views/Account/IdentityPicker.vue similarity index 100% rename from js/src/views/Account/IdentityPicker.vue rename to src/views/Account/IdentityPicker.vue diff --git a/js/src/views/Account/IdentityPickerWrapper.vue b/src/views/Account/IdentityPickerWrapper.vue similarity index 100% rename from js/src/views/Account/IdentityPickerWrapper.vue rename to src/views/Account/IdentityPickerWrapper.vue diff --git a/js/src/views/Account/RegisterView.vue b/src/views/Account/RegisterView.vue similarity index 100% rename from js/src/views/Account/RegisterView.vue rename to src/views/Account/RegisterView.vue diff --git a/js/src/views/Account/children/EditIdentity.vue b/src/views/Account/children/EditIdentity.vue similarity index 100% rename from js/src/views/Account/children/EditIdentity.vue rename to src/views/Account/children/EditIdentity.vue diff --git a/js/src/views/Admin/AdminGroupProfile.vue b/src/views/Admin/AdminGroupProfile.vue similarity index 100% rename from js/src/views/Admin/AdminGroupProfile.vue rename to src/views/Admin/AdminGroupProfile.vue diff --git a/js/src/views/Admin/AdminProfile.vue b/src/views/Admin/AdminProfile.vue similarity index 100% rename from js/src/views/Admin/AdminProfile.vue rename to src/views/Admin/AdminProfile.vue diff --git a/js/src/views/Admin/AdminUserProfile.vue b/src/views/Admin/AdminUserProfile.vue similarity index 100% rename from js/src/views/Admin/AdminUserProfile.vue rename to src/views/Admin/AdminUserProfile.vue diff --git a/js/src/views/Admin/DashboardView.vue b/src/views/Admin/DashboardView.vue similarity index 100% rename from js/src/views/Admin/DashboardView.vue rename to src/views/Admin/DashboardView.vue diff --git a/js/src/views/Admin/GroupProfiles.vue b/src/views/Admin/GroupProfiles.vue similarity index 100% rename from js/src/views/Admin/GroupProfiles.vue rename to src/views/Admin/GroupProfiles.vue diff --git a/js/src/views/Admin/InstanceView.vue b/src/views/Admin/InstanceView.vue similarity index 100% rename from js/src/views/Admin/InstanceView.vue rename to src/views/Admin/InstanceView.vue diff --git a/js/src/views/Admin/InstancesView.vue b/src/views/Admin/InstancesView.vue similarity index 99% rename from js/src/views/Admin/InstancesView.vue rename to src/views/Admin/InstancesView.vue index 3dad71a07..a62f09cea 100644 --- a/js/src/views/Admin/InstancesView.vue +++ b/src/views/Admin/InstancesView.vue @@ -80,7 +80,7 @@ <img class="w-12" v-if="instance.hasRelay" - src="/img/logo.svg" + src="../../../public/img/logo.svg" alt="" /> <CloudQuestion v-else :size="36" /> diff --git a/js/src/views/Admin/ProfilesView.vue b/src/views/Admin/ProfilesView.vue similarity index 100% rename from js/src/views/Admin/ProfilesView.vue rename to src/views/Admin/ProfilesView.vue diff --git a/js/src/views/Admin/SettingsView.vue b/src/views/Admin/SettingsView.vue similarity index 100% rename from js/src/views/Admin/SettingsView.vue rename to src/views/Admin/SettingsView.vue diff --git a/js/src/views/Admin/UsersView.vue b/src/views/Admin/UsersView.vue similarity index 100% rename from js/src/views/Admin/UsersView.vue rename to src/views/Admin/UsersView.vue diff --git a/js/src/views/CategoriesView.vue b/src/views/CategoriesView.vue similarity index 100% rename from js/src/views/CategoriesView.vue rename to src/views/CategoriesView.vue diff --git a/js/src/views/Conversations/ConversationListView.vue b/src/views/Conversations/ConversationListView.vue similarity index 100% rename from js/src/views/Conversations/ConversationListView.vue rename to src/views/Conversations/ConversationListView.vue diff --git a/js/src/views/Conversations/ConversationView.vue b/src/views/Conversations/ConversationView.vue similarity index 100% rename from js/src/views/Conversations/ConversationView.vue rename to src/views/Conversations/ConversationView.vue diff --git a/js/src/views/Discussions/CreateView.vue b/src/views/Discussions/CreateView.vue similarity index 100% rename from js/src/views/Discussions/CreateView.vue rename to src/views/Discussions/CreateView.vue diff --git a/js/src/views/Discussions/DiscussionView.vue b/src/views/Discussions/DiscussionView.vue similarity index 100% rename from js/src/views/Discussions/DiscussionView.vue rename to src/views/Discussions/DiscussionView.vue diff --git a/js/src/views/Discussions/DiscussionsListView.vue b/src/views/Discussions/DiscussionsListView.vue similarity index 100% rename from js/src/views/Discussions/DiscussionsListView.vue rename to src/views/Discussions/DiscussionsListView.vue diff --git a/js/src/views/ErrorView.vue b/src/views/ErrorView.vue similarity index 100% rename from js/src/views/ErrorView.vue rename to src/views/ErrorView.vue diff --git a/js/src/views/Event/EditView.vue b/src/views/Event/EditView.vue similarity index 100% rename from js/src/views/Event/EditView.vue rename to src/views/Event/EditView.vue diff --git a/js/src/views/Event/EventView.vue b/src/views/Event/EventView.vue similarity index 100% rename from js/src/views/Event/EventView.vue rename to src/views/Event/EventView.vue diff --git a/js/src/views/Event/GroupEvents.vue b/src/views/Event/GroupEvents.vue similarity index 100% rename from js/src/views/Event/GroupEvents.vue rename to src/views/Event/GroupEvents.vue diff --git a/js/src/views/Event/MyEventsView.vue b/src/views/Event/MyEventsView.vue similarity index 100% rename from js/src/views/Event/MyEventsView.vue rename to src/views/Event/MyEventsView.vue diff --git a/js/src/views/Event/ParticipantsView.vue b/src/views/Event/ParticipantsView.vue similarity index 100% rename from js/src/views/Event/ParticipantsView.vue rename to src/views/Event/ParticipantsView.vue diff --git a/js/src/views/Group/CreateView.vue b/src/views/Group/CreateView.vue similarity index 100% rename from js/src/views/Group/CreateView.vue rename to src/views/Group/CreateView.vue diff --git a/js/src/views/Group/GroupFollowers.vue b/src/views/Group/GroupFollowers.vue similarity index 100% rename from js/src/views/Group/GroupFollowers.vue rename to src/views/Group/GroupFollowers.vue diff --git a/js/src/views/Group/GroupMembers.vue b/src/views/Group/GroupMembers.vue similarity index 100% rename from js/src/views/Group/GroupMembers.vue rename to src/views/Group/GroupMembers.vue diff --git a/js/src/views/Group/GroupSettings.vue b/src/views/Group/GroupSettings.vue similarity index 100% rename from js/src/views/Group/GroupSettings.vue rename to src/views/Group/GroupSettings.vue diff --git a/js/src/views/Group/GroupView.vue b/src/views/Group/GroupView.vue similarity index 100% rename from js/src/views/Group/GroupView.vue rename to src/views/Group/GroupView.vue diff --git a/js/src/views/Group/MyGroups.vue b/src/views/Group/MyGroups.vue similarity index 100% rename from js/src/views/Group/MyGroups.vue rename to src/views/Group/MyGroups.vue diff --git a/js/src/views/Group/SettingsView.vue b/src/views/Group/SettingsView.vue similarity index 100% rename from js/src/views/Group/SettingsView.vue rename to src/views/Group/SettingsView.vue diff --git a/js/src/views/Group/TimelineView.vue b/src/views/Group/TimelineView.vue similarity index 100% rename from js/src/views/Group/TimelineView.vue rename to src/views/Group/TimelineView.vue diff --git a/js/src/views/HomeView.vue b/src/views/HomeView.vue similarity index 99% rename from js/src/views/HomeView.vue rename to src/views/HomeView.vue index 15cacd6f3..e1f435275 100644 --- a/js/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -5,19 +5,19 @@ <div class="-z-10 overflow-hidden"> <img alt="" - src="/img/shape-1.svg" + src="../../public/img/shape-1.svg" class="-z-10 absolute left-[2%] top-36" width="300" /> <img alt="" - src="/img/shape-2.svg" + src="../../public/img/shape-2.svg" class="-z-10 absolute left-[50%] top-[5%] -translate-x-2/4 opacity-60" width="800" /> <img alt="" - src="/img/shape-3.svg" + src="../../public/img/shape-3.svg" class="-z-10 absolute top-0 right-36" width="200" /> diff --git a/js/src/views/InteractView.vue b/src/views/InteractView.vue similarity index 100% rename from js/src/views/InteractView.vue rename to src/views/InteractView.vue diff --git a/js/src/views/Moderation/LogsView.vue b/src/views/Moderation/LogsView.vue similarity index 100% rename from js/src/views/Moderation/LogsView.vue rename to src/views/Moderation/LogsView.vue diff --git a/js/src/views/Moderation/ReportListView.vue b/src/views/Moderation/ReportListView.vue similarity index 100% rename from js/src/views/Moderation/ReportListView.vue rename to src/views/Moderation/ReportListView.vue diff --git a/js/src/views/Moderation/ReportView.vue b/src/views/Moderation/ReportView.vue similarity index 100% rename from js/src/views/Moderation/ReportView.vue rename to src/views/Moderation/ReportView.vue diff --git a/js/src/views/OAuth/AuthorizeView.vue b/src/views/OAuth/AuthorizeView.vue similarity index 100% rename from js/src/views/OAuth/AuthorizeView.vue rename to src/views/OAuth/AuthorizeView.vue diff --git a/js/src/views/OAuth/DeviceActivationView.vue b/src/views/OAuth/DeviceActivationView.vue similarity index 100% rename from js/src/views/OAuth/DeviceActivationView.vue rename to src/views/OAuth/DeviceActivationView.vue diff --git a/js/src/views/PageNotFound.vue b/src/views/PageNotFound.vue similarity index 100% rename from js/src/views/PageNotFound.vue rename to src/views/PageNotFound.vue diff --git a/js/src/views/Posts/EditView.vue b/src/views/Posts/EditView.vue similarity index 100% rename from js/src/views/Posts/EditView.vue rename to src/views/Posts/EditView.vue diff --git a/js/src/views/Posts/ListView.vue b/src/views/Posts/ListView.vue similarity index 100% rename from js/src/views/Posts/ListView.vue rename to src/views/Posts/ListView.vue diff --git a/js/src/views/Posts/PostView.vue b/src/views/Posts/PostView.vue similarity index 100% rename from js/src/views/Posts/PostView.vue rename to src/views/Posts/PostView.vue diff --git a/js/src/views/Resources/ResourceFolder.vue b/src/views/Resources/ResourceFolder.vue similarity index 100% rename from js/src/views/Resources/ResourceFolder.vue rename to src/views/Resources/ResourceFolder.vue diff --git a/js/src/views/SearchView.vue b/src/views/SearchView.vue similarity index 100% rename from js/src/views/SearchView.vue rename to src/views/SearchView.vue diff --git a/js/src/views/Settings/AccountSettings.vue b/src/views/Settings/AccountSettings.vue similarity index 100% rename from js/src/views/Settings/AccountSettings.vue rename to src/views/Settings/AccountSettings.vue diff --git a/js/src/views/Settings/AppsView.vue b/src/views/Settings/AppsView.vue similarity index 100% rename from js/src/views/Settings/AppsView.vue rename to src/views/Settings/AppsView.vue diff --git a/js/src/views/Settings/NotificationsView.vue b/src/views/Settings/NotificationsView.vue similarity index 100% rename from js/src/views/Settings/NotificationsView.vue rename to src/views/Settings/NotificationsView.vue diff --git a/js/src/views/Settings/PreferencesView.vue b/src/views/Settings/PreferencesView.vue similarity index 100% rename from js/src/views/Settings/PreferencesView.vue rename to src/views/Settings/PreferencesView.vue diff --git a/js/src/views/SettingsView.vue b/src/views/SettingsView.vue similarity index 100% rename from js/src/views/SettingsView.vue rename to src/views/SettingsView.vue diff --git a/js/src/views/Todos/TodoList.vue b/src/views/Todos/TodoList.vue similarity index 100% rename from js/src/views/Todos/TodoList.vue rename to src/views/Todos/TodoList.vue diff --git a/js/src/views/Todos/TodoLists.vue b/src/views/Todos/TodoLists.vue similarity index 100% rename from js/src/views/Todos/TodoLists.vue rename to src/views/Todos/TodoLists.vue diff --git a/js/src/views/Todos/TodoView.vue b/src/views/Todos/TodoView.vue similarity index 100% rename from js/src/views/Todos/TodoView.vue rename to src/views/Todos/TodoView.vue diff --git a/js/src/views/User/EmailValidate.vue b/src/views/User/EmailValidate.vue similarity index 100% rename from js/src/views/User/EmailValidate.vue rename to src/views/User/EmailValidate.vue diff --git a/js/src/views/User/LoginView.vue b/src/views/User/LoginView.vue similarity index 100% rename from js/src/views/User/LoginView.vue rename to src/views/User/LoginView.vue diff --git a/js/src/views/User/PasswordReset.vue b/src/views/User/PasswordReset.vue similarity index 100% rename from js/src/views/User/PasswordReset.vue rename to src/views/User/PasswordReset.vue diff --git a/js/src/views/User/ProviderValidation.vue b/src/views/User/ProviderValidation.vue similarity index 100% rename from js/src/views/User/ProviderValidation.vue rename to src/views/User/ProviderValidation.vue diff --git a/js/src/views/User/RegisterView.vue b/src/views/User/RegisterView.vue similarity index 100% rename from js/src/views/User/RegisterView.vue rename to src/views/User/RegisterView.vue diff --git a/js/src/views/User/ResendConfirmation.vue b/src/views/User/ResendConfirmation.vue similarity index 100% rename from js/src/views/User/ResendConfirmation.vue rename to src/views/User/ResendConfirmation.vue diff --git a/js/src/views/User/SendPasswordReset.vue b/src/views/User/SendPasswordReset.vue similarity index 100% rename from js/src/views/User/SendPasswordReset.vue rename to src/views/User/SendPasswordReset.vue diff --git a/js/src/views/User/SettingsOnboard.vue b/src/views/User/SettingsOnboard.vue similarity index 100% rename from js/src/views/User/SettingsOnboard.vue rename to src/views/User/SettingsOnboard.vue diff --git a/js/src/views/User/ValidateUser.vue b/src/views/User/ValidateUser.vue similarity index 100% rename from js/src/views/User/ValidateUser.vue rename to src/views/User/ValidateUser.vue diff --git a/js/src/vue-apollo.ts b/src/vue-apollo.ts similarity index 100% rename from js/src/vue-apollo.ts rename to src/vue-apollo.ts diff --git a/js/tailwind.config.js b/tailwind.config.js similarity index 100% rename from js/tailwind.config.js rename to tailwind.config.js diff --git a/js/tests/e2e/login.spec.ts b/tests/e2e/login.spec.ts similarity index 100% rename from js/tests/e2e/login.spec.ts rename to tests/e2e/login.spec.ts diff --git a/js/tests/unit/.eslintrc.js b/tests/unit/.eslintrc.js similarity index 100% rename from js/tests/unit/.eslintrc.js rename to tests/unit/.eslintrc.js diff --git a/js/tests/unit/setup.ts b/tests/unit/setup.ts similarity index 100% rename from js/tests/unit/setup.ts rename to tests/unit/setup.ts diff --git a/js/tests/unit/specs/common.ts b/tests/unit/specs/common.ts similarity index 100% rename from js/tests/unit/specs/common.ts rename to tests/unit/specs/common.ts diff --git a/js/tests/unit/specs/components/Comment/CommentTree.spec.ts b/tests/unit/specs/components/Comment/CommentTree.spec.ts similarity index 100% rename from js/tests/unit/specs/components/Comment/CommentTree.spec.ts rename to tests/unit/specs/components/Comment/CommentTree.spec.ts diff --git a/js/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap b/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap similarity index 100% rename from js/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap rename to tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap diff --git a/js/tests/unit/specs/components/Group/GroupSection.spec.ts b/tests/unit/specs/components/Group/GroupSection.spec.ts similarity index 100% rename from js/tests/unit/specs/components/Group/GroupSection.spec.ts rename to tests/unit/specs/components/Group/GroupSection.spec.ts diff --git a/js/tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap b/tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap similarity index 100% rename from js/tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap rename to tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap diff --git a/js/tests/unit/specs/components/Participation/ParticipationSection.spec.ts b/tests/unit/specs/components/Participation/ParticipationSection.spec.ts similarity index 98% rename from js/tests/unit/specs/components/Participation/ParticipationSection.spec.ts rename to tests/unit/specs/components/Participation/ParticipationSection.spec.ts index 9588aaf6f..42abfd719 100644 --- a/js/tests/unit/specs/components/Participation/ParticipationSection.spec.ts +++ b/tests/unit/specs/components/Participation/ParticipationSection.spec.ts @@ -3,7 +3,6 @@ import ParticipationSection from "@/components/Participation/ParticipationSectio import { createRouter, createWebHistory, Router } from "vue-router"; import { routes } from "@/router"; import { CommentModeration, EventJoinOptions } from "@/types/enums"; -import { InMemoryCache } from "@apollo/client/cache"; import { beforeEach, describe, expect, it } from "vitest"; import Oruga from "@oruga-ui/oruga-next"; import FloatingVue from "floating-vue"; diff --git a/js/tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts b/tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts similarity index 100% rename from js/tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts rename to tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts diff --git a/js/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap b/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap similarity index 100% rename from js/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap rename to tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap diff --git a/js/tests/unit/specs/components/Post/PostListItem.spec.ts b/tests/unit/specs/components/Post/PostListItem.spec.ts similarity index 100% rename from js/tests/unit/specs/components/Post/PostListItem.spec.ts rename to tests/unit/specs/components/Post/PostListItem.spec.ts diff --git a/js/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap b/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap similarity index 100% rename from js/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap rename to tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap diff --git a/js/tests/unit/specs/components/Report/ReportCard.spec.ts b/tests/unit/specs/components/Report/ReportCard.spec.ts similarity index 100% rename from js/tests/unit/specs/components/Report/ReportCard.spec.ts rename to tests/unit/specs/components/Report/ReportCard.spec.ts diff --git a/js/tests/unit/specs/components/Report/ReportModal.spec.ts b/tests/unit/specs/components/Report/ReportModal.spec.ts similarity index 100% rename from js/tests/unit/specs/components/Report/ReportModal.spec.ts rename to tests/unit/specs/components/Report/ReportModal.spec.ts diff --git a/js/tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap b/tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap similarity index 100% rename from js/tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap rename to tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap diff --git a/js/tests/unit/specs/components/User/PasswordReset.spec.ts b/tests/unit/specs/components/User/PasswordReset.spec.ts similarity index 100% rename from js/tests/unit/specs/components/User/PasswordReset.spec.ts rename to tests/unit/specs/components/User/PasswordReset.spec.ts diff --git a/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap b/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap similarity index 100% rename from js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap rename to tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap diff --git a/js/tests/unit/specs/components/User/login.spec.ts b/tests/unit/specs/components/User/login.spec.ts similarity index 100% rename from js/tests/unit/specs/components/User/login.spec.ts rename to tests/unit/specs/components/User/login.spec.ts diff --git a/js/tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap b/tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap similarity index 100% rename from js/tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap rename to tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap diff --git a/js/tests/unit/specs/components/navbar.spec.ts b/tests/unit/specs/components/navbar.spec.ts similarity index 91% rename from js/tests/unit/specs/components/navbar.spec.ts rename to tests/unit/specs/components/navbar.spec.ts index c2457ae95..13b06166c 100644 --- a/js/tests/unit/specs/components/navbar.spec.ts +++ b/tests/unit/specs/components/navbar.spec.ts @@ -6,11 +6,7 @@ const useRouterMock = vi.fn(() => ({ import { shallowMount, VueWrapper } from "@vue/test-utils"; import NavBar from "@/components/NavBar.vue"; -import { - createMockClient, - MockApolloClient, - RequestHandler, -} from "mock-apollo-client"; +import { createMockClient, MockApolloClient } from "mock-apollo-client"; import buildCurrentUserResolver from "@/apollo/user"; import { InMemoryCache } from "@apollo/client/cache"; import { describe, it, vi, expect, afterEach } from "vitest"; @@ -24,7 +20,7 @@ describe("App component", () => { let wrapper: VueWrapper; let mockClient: MockApolloClient | null; - const createComponent = (handlers = {}) => { + const createComponent = () => { const cache = new InMemoryCache({ addTypename: false }); mockClient = createMockClient({ diff --git a/js/tests/unit/specs/components/tag.spec.ts b/tests/unit/specs/components/tag.spec.ts similarity index 100% rename from js/tests/unit/specs/components/tag.spec.ts rename to tests/unit/specs/components/tag.spec.ts diff --git a/js/tests/unit/specs/mocks/auth.ts b/tests/unit/specs/mocks/auth.ts similarity index 100% rename from js/tests/unit/specs/mocks/auth.ts rename to tests/unit/specs/mocks/auth.ts diff --git a/js/tests/unit/specs/mocks/config.ts b/tests/unit/specs/mocks/config.ts similarity index 100% rename from js/tests/unit/specs/mocks/config.ts rename to tests/unit/specs/mocks/config.ts diff --git a/js/tests/unit/specs/mocks/event.ts b/tests/unit/specs/mocks/event.ts similarity index 100% rename from js/tests/unit/specs/mocks/event.ts rename to tests/unit/specs/mocks/event.ts diff --git a/js/tests/unit/specs/mocks/matchMedia.ts b/tests/unit/specs/mocks/matchMedia.ts similarity index 100% rename from js/tests/unit/specs/mocks/matchMedia.ts rename to tests/unit/specs/mocks/matchMedia.ts diff --git a/js/tests/unit/svgTransform.ts b/tests/unit/svgTransform.ts similarity index 100% rename from js/tests/unit/svgTransform.ts rename to tests/unit/svgTransform.ts diff --git a/tsconfig.json b/tsconfig.json index 5a682fccc..a8bb8cbea 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,40 @@ { - "extends": "./js/tsconfig.json" + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "importHelpers": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "isolatedModules": true, + "sourceMap": true, + "baseUrl": ".", + "types": ["webpack-env", "jest", "vite/client", "vite-plugin-pwa/vue"], + "typeRoots": ["./@types", "./node_modules/@types"], + "paths": { + "@/*": ["src/*"] + }, + "lib": [ + "esnext", + "dom", + "es2017.intl", + "dom.iterable", + "scripthost", + "webworker" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx", + "env.d.ts" + ], + "exclude": ["node_modules"] } diff --git a/js/vite.config.js b/vite.config.js similarity index 97% rename from js/vite.config.js rename to vite.config.js index 7250205a9..56cb0cca7 100644 --- a/js/vite.config.js +++ b/vite.config.js @@ -62,7 +62,7 @@ export default defineConfig(({ command }) => { ], build: { manifest: true, - outDir: path.resolve(__dirname, "../priv/static"), + outDir: path.resolve(__dirname, "priv/static"), emptyOutDir: true, sourcemap: true, rollupOptions: { diff --git a/js/vue-i18n-extract.config.js b/vue-i18n-extract.config.js similarity index 100% rename from js/vue-i18n-extract.config.js rename to vue-i18n-extract.config.js From bfbc299f37e36a430b18d5dc2c78f79a3f90af6e Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Tue, 14 Nov 2023 18:59:28 +0100 Subject: [PATCH 09/18] test: fix histoire configuration Nearly Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .gitignore | 4 +- histoire.config.ts | 1 + src/components/Comment/EventComment.story.vue | 29 ++++++++---- .../Event/OrganizerPicker.story.vue | 6 +-- .../Event/OrganizerPickerWrapper.story.vue | 6 +-- .../Event/ParticipationButton.story.vue | 18 ++++---- src/components/Home/SearchFields.story.vue | 6 +-- vite.config.js | 45 ++++++++++++------- 8 files changed, 71 insertions(+), 44 deletions(-) diff --git a/.gitignore b/.gitignore index b04be4bae..b97d7ba2f 100644 --- a/.gitignore +++ b/.gitignore @@ -54,4 +54,6 @@ codeclimate.json node_modules stats.html /coverage -/playwright-report/ \ No newline at end of file +/playwright-report/ +.histoire + diff --git a/histoire.config.ts b/histoire.config.ts index 349d77575..8cd1c1719 100644 --- a/histoire.config.ts +++ b/histoire.config.ts @@ -8,6 +8,7 @@ export default defineConfig({ plugins: [HstVue()], setupFile: path.resolve(__dirname, "./src/histoire.setup.ts"), viteNodeInlineDeps: [/date-fns/], + // viteIgnorePlugins: ['vite-plugin-pwa', 'vite-plugin-pwa:build', 'vite-plugin-pwa:info'], tree: { groups: [ { diff --git a/src/components/Comment/EventComment.story.vue b/src/components/Comment/EventComment.story.vue index b8a125449..b0baf3295 100644 --- a/src/components/Comment/EventComment.story.vue +++ b/src/components/Comment/EventComment.story.vue @@ -5,9 +5,9 @@ :comment="comment" :event="event" :currentActor="baseActor" - @create-comment="hstEvent('Create comment', $event)" - @delete-comment="hstEvent('Delete comment', $event)" - @report-comment="hstEvent('Report comment', $event)" + @create-comment="logEvent('Create comment', $event)" + @delete-comment="logEvent('Delete comment', $event)" + @report-comment="logEvent('Report comment', $event)" /> </Variant> <Variant title="Announcement"> @@ -15,9 +15,9 @@ :comment="{ ...comment, isAnnouncement: true }" :event="event" :currentActor="baseActor" - @create-comment="hstEvent('Create comment', $event)" - @delete-comment="hstEvent('Delete comment', $event)" - @report-comment="hstEvent('Report comment', $event)" + @create-comment="logEvent('Create comment', $event)" + @delete-comment="logEvent('Delete comment', $event)" + @report-comment="logEvent('Report comment', $event)" /> </Variant> </Story> @@ -37,10 +37,23 @@ import { reactive } from "vue"; import Comment from "./EventComment.vue"; import FloatingVue from "floating-vue"; import "floating-vue/dist/style.css"; -import { hstEvent } from "histoire/client"; +import { logEvent } from "histoire/client"; +import { createMemoryHistory, createRouter } from "vue-router"; function setupApp({ app }) { app.use(FloatingVue); + app.use( + createRouter({ + history: createMemoryHistory(), + routes: [ + { + path: "/event/:uuid", + name: "Event", + component: { render: () => null }, + }, + ], + }) + ); } const baseActorAvatar = { @@ -64,7 +77,7 @@ const baseActor: IPerson = { }; const baseEvent: IEvent = { - uuid: "", + uuid: "an-uuid", title: "A very interesting event", description: "Things happen", beginsOn: new Date().toISOString(), diff --git a/src/components/Event/OrganizerPicker.story.vue b/src/components/Event/OrganizerPicker.story.vue index 0a84c8fc8..a58dcd68d 100644 --- a/src/components/Event/OrganizerPicker.story.vue +++ b/src/components/Event/OrganizerPicker.story.vue @@ -7,8 +7,8 @@ v-model:actor-filter="actorFilter" :groupMemberships="[]" :current-actor="currentActor" - @update:actor-filter="hstEvent('Actor Filter updated', $event)" - @update:model-value="hstEvent('Selected actor updated', $event)" + @update:actor-filter="logEvent('Actor Filter updated', $event)" + @update:model-value="logEvent('Selected actor updated', $event)" /> </Variant> </Story> @@ -18,7 +18,7 @@ import OrganizerPicker from "./OrganizerPicker.vue"; import { createMemoryHistory, createRouter } from "vue-router"; import { reactive, ref } from "vue"; import { ActorType } from "@/types/enums"; -import { hstEvent } from "histoire/client"; +import { logEvent } from "histoire/client"; const currentActor = reactive({ id: "59", diff --git a/src/components/Event/OrganizerPickerWrapper.story.vue b/src/components/Event/OrganizerPickerWrapper.story.vue index 73299baf9..0906588d0 100644 --- a/src/components/Event/OrganizerPickerWrapper.story.vue +++ b/src/components/Event/OrganizerPickerWrapper.story.vue @@ -3,8 +3,8 @@ <Variant> <OrganizerPickerWrapper v-model="actor" - @update:model-value="hstEvent('Value', $event)" - @update:contacts="hstEvent('Contacts', $event)" + @update:model-value="logEvent('Value', $event)" + @update:contacts="logEvent('Contacts', $event)" /> </Variant> </Story> @@ -19,7 +19,7 @@ import { PERSON_GROUP_MEMBERSHIPS } from "@/graphql/actor"; import { createMemoryHistory, createRouter } from "vue-router"; import { IDENTITIES } from "@/graphql/actor"; import { reactive } from "vue"; -import { hstEvent } from "histoire/client"; +import { logEvent } from "histoire/client"; const actor = reactive({ id: "5", diff --git a/src/components/Event/ParticipationButton.story.vue b/src/components/Event/ParticipationButton.story.vue index e1e16b511..594a3353d 100644 --- a/src/components/Event/ParticipationButton.story.vue +++ b/src/components/Event/ParticipationButton.story.vue @@ -14,9 +14,9 @@ :current-actor="currentActor" :participation="undefined" :identities="identities" - @join-event="hstEvent('Join event', $event)" - @join-modal="hstEvent('Join modal', $event)" - @confirm-leave="hstEvent('Confirm leave', $event)" + @join-event="logEvent('Join event', $event)" + @join-modal="logEvent('Join modal', $event)" + @confirm-leave="logEvent('Confirm leave', $event)" /> </Variant> <Variant title="Basic with confirmation"> @@ -26,9 +26,9 @@ :participation="undefined" :identities="identities" @join-event-with-confirmation=" - hstEvent('Join Event with confirmation', $event) + logEvent('Join Event with confirmation', $event) " - @join-modal="hstEvent('Join modal', $event)" + @join-modal="logEvent('Join modal', $event)" /> </Variant> <Variant title="Participating"> @@ -37,7 +37,7 @@ :current-actor="currentActor" :participation="participation" :identities="identities" - @confirm-leave="hstEvent('Confirm leave', $event)" + @confirm-leave="logEvent('Confirm leave', $event)" /> </Variant> <Variant title="Pending approval"> @@ -49,7 +49,7 @@ role: ParticipantRole.NOT_APPROVED, }" :identities="identities" - @confirm-leave="hstEvent('Confirm leave', $event)" + @confirm-leave="logEvent('Confirm leave', $event)" /> </Variant> <Variant title="Rejected"> @@ -61,7 +61,7 @@ role: ParticipantRole.REJECTED, }" :identities="identities" - @confirm-leave="hstEvent('Confirm leave', $event)" + @confirm-leave="logEvent('Confirm leave', $event)" /> </Variant> </Story> @@ -72,7 +72,7 @@ import { IPerson } from "@/types/actor"; import { EventJoinOptions, ParticipantRole } from "@/types/enums"; import { IEvent } from "@/types/event.model"; import ParticipationButton from "./ParticipationButton.vue"; -import { hstEvent } from "histoire/client"; +import { logEvent } from "histoire/client"; import { IParticipant } from "@/types/participant.model"; const emptyCurrentActor: IPerson = {}; diff --git a/src/components/Home/SearchFields.story.vue b/src/components/Home/SearchFields.story.vue index 93aa1da51..fd3f8112e 100644 --- a/src/components/Home/SearchFields.story.vue +++ b/src/components/Home/SearchFields.story.vue @@ -4,8 +4,8 @@ <SearchFields :search="''" :location="{}" - @update:location="hstEvent('update location', $event)" - @update:search="hstEvent('update search', $event)" + @update:location="logEvent('update location', $event)" + @update:search="logEvent('update search', $event)" /> </Variant> </Story> @@ -14,7 +14,7 @@ import { apolloClient } from "@/vue-apollo"; import { DefaultApolloClient } from "@vue/apollo-composable"; import SearchFields from "./SearchFields.vue"; -import { hstEvent } from "histoire/client"; +import { logEvent } from "histoire/client"; function setupApp({ app }) { app.provide(DefaultApolloClient, apolloClient); diff --git a/vite.config.js b/vite.config.js index 56cb0cca7..e20c7d603 100644 --- a/vite.config.js +++ b/vite.config.js @@ -15,9 +15,12 @@ export default defineConfig(({ command }) => { process.stdin.resume(); } - return { - plugins: [ - vue(), + const isStory = Boolean(process.env.HISTOIRE); + + const plugins = [vue(), visualizer()]; + + if (!isStory) { + plugins.push( VitePWA({ registerType: "autoUpdate", strategies: "injectManifest", @@ -57,21 +60,29 @@ export default defineConfig(({ command }) => { }, ], }, - }), - visualizer(), - ], - build: { - manifest: true, - outDir: path.resolve(__dirname, "priv/static"), - emptyOutDir: true, - sourcemap: true, - rollupOptions: { - // overwrite default .html entry - input: { - main: "src/main.ts", - }, + }) + ); + } + + const build = { + manifest: true, + outDir: path.resolve(__dirname, "priv/static"), + emptyOutDir: true, + sourcemap: true, + }; + + if (!isStory) { + // overwrite default .html entry + build.rollupOptions = { + input: { + main: "src/main.ts", }, - }, + }; + } + + return { + plugins, + build, resolve: { alias: { "@": path.resolve(__dirname, "./src"), From 105d3b58142dc996ff80dbb4672583280c7ba648 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 15 Nov 2023 12:29:39 +0100 Subject: [PATCH 10/18] test: fix front-end tests Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .gitlab-ci.yml | 2 +- config/dev.exs | 2 +- package-lock.json | 13 +- package.json | 3 +- src/components/Comment/CommentTree.vue | 55 +++--- src/components/Comment/EventComment.vue | 2 +- src/components/Report/ReportCard.vue | 2 +- src/router/index.ts | 4 +- src/views/User/LoginView.vue | 11 +- tests/unit/setup.ts | 9 +- .../components/Comment/CommentTree.spec.ts | 7 +- .../__snapshots__/CommentTree.spec.ts.snap | 56 +++--- .../__snapshots__/GroupSection.spec.ts.snap | 2 +- .../ParticipationWithoutAccount.spec.ts.snap | 6 +- .../__snapshots__/PostListItem.spec.ts.snap | 33 ++-- .../components/Report/ReportCard.spec.ts | 8 +- .../__snapshots__/ReportModal.spec.ts.snap | 16 +- .../components/User/PasswordReset.spec.ts | 37 ++-- .../__snapshots__/PasswordReset.spec.ts.snap | 4 +- .../unit/specs/components/User/login.spec.ts | 72 +++---- .../__snapshots__/navbar.spec.ts.snap | 182 +----------------- tests/unit/specs/mocks/config.ts | 1 + tests/unit/specs/mocks/event.ts | 5 +- vite.config.js | 2 +- 24 files changed, 185 insertions(+), 349 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7c5d740f1..3b2532ecd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -76,7 +76,7 @@ lint-front: - npm ci script: - npm run lint || export EXITVALUE=1 - - npm run prettier -c . || export EXITVALUE=1 + - npx prettier -c . || export EXITVALUE=1 - exit $EXITVALUE build-frontend: diff --git a/config/dev.exs b/config/dev.exs index 10f7ea0d1..1d3f99eef 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -15,7 +15,7 @@ config :mobilizon, Mobilizon.Web.Endpoint, check_origin: false, watchers: [ node: [ - "node_modules/.bin/vite", + "node_modules/.bin/vite" ] ] diff --git a/package-lock.json b/package-lock.json index 06382a8c9..e0fd30599 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,7 +119,8 @@ "vite": "^4.0.4", "vite-plugin-pwa": "^0.16.4", "vitest": "^0.34.1", - "vue-i18n-extract": "^2.0.4" + "vue-i18n-extract": "^2.0.4", + "vue-router-mock": "^1.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -11332,6 +11333,16 @@ "vue": "^3.2.0" } }, + "node_modules/vue-router-mock": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vue-router-mock/-/vue-router-mock-1.0.0.tgz", + "integrity": "sha512-j65lh+jhEuEM7sWAz/eenNsEV0VrRXFreNxtIGgLApZkM2h7orImvHSLJ3LhbUa2sJnTtjuy8otSrvoTsdGVYw==", + "dev": true, + "peerDependencies": { + "vue": "^3.2.23", + "vue-router": "^4.0.12" + } + }, "node_modules/vue-scrollto": { "version": "2.20.0", "license": "MIT", diff --git a/package.json b/package.json index 15504382f..3e9963f0d 100644 --- a/package.json +++ b/package.json @@ -136,6 +136,7 @@ "vite": "^4.0.4", "vite-plugin-pwa": "^0.16.4", "vitest": "^0.34.1", - "vue-i18n-extract": "^2.0.4" + "vue-i18n-extract": "^2.0.4", + "vue-router-mock": "^1.0.0" } } diff --git a/src/components/Comment/CommentTree.vue b/src/components/Comment/CommentTree.vue index c2383779f..116909d5a 100644 --- a/src/components/Comment/CommentTree.vue +++ b/src/components/Comment/CommentTree.vue @@ -61,7 +61,11 @@ <transition-group key="list" name="comment-list" - v-if="filteredOrderedComments.length && currentActor" + v-if=" + filteredOrderedComments && + filteredOrderedComments.length && + currentActor + " class="comment-list" tag="ul" > @@ -110,29 +114,30 @@ import { AbsintheGraphQLError } from "@/types/errors.model"; import { useI18n } from "vue-i18n"; import { Notifier } from "@/plugins/notifier"; +const props = defineProps<{ + event: IEvent; + newComment?: IComment; +}>(); + +const event = computed(() => props.event); +const newCommentProps = computed(() => props.newComment); + const { currentActor } = useCurrentActorClient(); const { result: commentsResult, loading: commentsLoading } = useQuery<{ event: Pick<IEvent, "id" | "uuid" | "comments">; }>( COMMENTS_THREADS_WITH_REPLIES, - () => ({ eventUUID: props.event?.uuid }), - () => ({ enabled: props.event?.uuid !== undefined }) + () => ({ eventUUID: event.value?.uuid }), + () => ({ enabled: event.value?.uuid !== undefined }) ); const comments = computed(() => commentsResult.value?.event.comments ?? []); -const props = defineProps<{ - event: IEvent; - newComment?: IComment; -}>(); - const Editor = defineAsyncComponent( () => import("@/components/TextEditor.vue") ); -const newCommentProps = computed(() => props.newComment); - const newCommentValue = ref<IComment>(new CommentModel(newCommentProps.value)); const emptyCommentError = ref(false); @@ -170,18 +175,18 @@ const { ) => { if (data == null) return; // comments are attached to the event, so we can pass it to replies later - const newCommentLocal = { ...data.createComment, event: props.event }; + const newCommentLocal = { ...data.createComment, event: event.value }; // we load all existing threads const commentThreadsData = store.readQuery<{ event: IEvent }>({ query: COMMENTS_THREADS_WITH_REPLIES, variables: { - eventUUID: props.event?.uuid, + eventUUID: event.value?.uuid, }, }); if (!commentThreadsData) return; - const { event } = commentThreadsData; - const oldComments = [...event.comments]; + const { event: cachedEvent } = commentThreadsData; + const oldComments = [...cachedEvent.comments]; // if it's no a root comment, we first need to find // existing replies and add the new reply to it @@ -206,12 +211,12 @@ const { query: COMMENTS_THREADS_WITH_REPLIES, data: { event: { - ...event, + ...cachedEvent, comments: oldComments, }, }, variables: { - eventUUID: props.event?.uuid, + eventUUID: event.value?.uuid, }, }); }, @@ -239,10 +244,10 @@ const createCommentForEvent = (comment: IComment) => { if (emptyCommentError.value) return; if (!comment.actor) return; - if (!props.event?.id) return; + if (!event.value?.id) return; createCommentForEventMutation({ - eventId: props.event?.id, + eventId: event.value?.id, text: comment.text, inReplyToCommentId: comment.inReplyToComment?.id, isAnnouncement: comment.isAnnouncement, @@ -266,12 +271,12 @@ const { mutate: deleteComment, onError: deleteCommentMutationError } = const commentsData = store.readQuery<{ event: IEvent }>({ query: COMMENTS_THREADS_WITH_REPLIES, variables: { - eventUUID: props.event?.uuid, + eventUUID: event.value?.uuid, }, }); if (!commentsData) return; - const { event } = commentsData; - let updatedComments: IComment[] = [...event.comments]; + const { event: cachedEvent } = commentsData; + let updatedComments: IComment[] = [...cachedEvent.comments]; if (variables?.originCommentId) { // we have deleted a reply to a thread @@ -309,11 +314,11 @@ const { mutate: deleteComment, onError: deleteCommentMutationError } = store.writeQuery({ query: COMMENTS_THREADS_WITH_REPLIES, variables: { - eventUUID: props.event?.uuid, + eventUUID: event.value?.uuid, }, data: { event: { - ...event, + ...cachedEvent, comments: updatedComments, }, }, @@ -359,14 +364,14 @@ const filteredOrderedComments = computed((): IComment[] => { const isEventOrganiser = computed((): boolean => { const organizerId = - props.event?.organizerActor?.id || props.event?.attributedTo?.id; + event.value?.organizerActor?.id || event.value?.attributedTo?.id; return organizerId !== undefined && currentActor.value?.id === organizerId; }); const areCommentsClosed = computed((): boolean => { return ( currentActor.value?.id !== undefined && - props.event?.options.commentModeration !== CommentModeration.CLOSED + event.value?.options.commentModeration !== CommentModeration.CLOSED ); }); diff --git a/src/components/Comment/EventComment.vue b/src/components/Comment/EventComment.vue index 64d87c765..672daa30f 100644 --- a/src/components/Comment/EventComment.vue +++ b/src/components/Comment/EventComment.vue @@ -250,7 +250,7 @@ const props = withDefaults( event: IEvent; currentActor: IPerson; rootComment?: boolean; - readOnly: boolean; + readOnly?: boolean; }>(), { rootComment: true, readOnly: false } ); diff --git a/src/components/Report/ReportCard.vue b/src/components/Report/ReportCard.vue index 18c6bca2f..4166acd6f 100644 --- a/src/components/Report/ReportCard.vue +++ b/src/components/Report/ReportCard.vue @@ -36,7 +36,7 @@ </div> <div class="p-2"> - <div class=""> + <div class="reported_by"> <span v-if="report.reporter?.type === ActorType.APPLICATION"> {{ t("Reported by someone on {domain}", { diff --git a/src/router/index.ts b/src/router/index.ts index 5d036f479..fb0723563 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -189,7 +189,7 @@ routes.push({ redirect: { name: RouteName.PAGE_NOT_FOUND }, }); -export const router = createRouter({ +const router = createRouter({ scrollBehavior, history: createWebHistory("/"), routes, @@ -216,3 +216,5 @@ router.onError((error, to) => { window.location.href = to.fullPath; } }); + +export { router }; diff --git a/src/views/User/LoginView.vue b/src/views/User/LoginView.vue index 2f0a68e02..94888fe49 100644 --- a/src/views/User/LoginView.vue +++ b/src/views/User/LoginView.vue @@ -142,6 +142,7 @@ import RouteName from "@/router/name"; import { LoginError, LoginErrorCode } from "@/types/enums"; import { useCurrentUserClient } from "@/composition/apollo/user"; import { useHead } from "@vueuse/head"; +import { enumTransformer, useRouteQuery } from "vue-use-route-query"; const { t } = useI18n({ useScope: "global" }); const router = useRouter(); @@ -174,9 +175,8 @@ const credentials = reactive({ typeof route.query.password === "string" ? route.query.password : "", }); -const redirect = ref<string | undefined>(""); - -const errorCode = ref<LoginErrorCode | null>(null); +const redirect = useRouteQuery("redirect", ""); +const errorCode = useRouteQuery("code", null, enumTransformer(LoginErrorCode)); const { onDone: onLoginMutationDone, @@ -195,6 +195,7 @@ onLoginMutationDone(async (result) => { await setupClientUserAndActors(data.login); if (redirect.value) { + console.debug("We have a redirect", redirect.value); router.push(redirect.value); return; } @@ -293,10 +294,6 @@ const currentProvider = computed(() => { }); onMounted(() => { - const query = route?.query; - errorCode.value = query?.code as LoginErrorCode; - redirect.value = query?.redirect as string | undefined; - // Already-logged-in and accessing /login if (currentUser.value?.isLoggedIn) { console.debug( diff --git a/tests/unit/setup.ts b/tests/unit/setup.ts index 05ec937b1..ae673823b 100644 --- a/tests/unit/setup.ts +++ b/tests/unit/setup.ts @@ -1,14 +1,7 @@ import "./specs/mocks/matchMedia"; import { config } from "@vue/test-utils"; import { createHead } from "@vueuse/head"; -import { createI18n } from "vue-i18n"; -import en_US from "@/i18n/en_US.json"; - -const i18n = createI18n({ - legacy: false, - messages: { en_US }, - locale: "en_US", -}); +import { i18n } from "@/utils/i18n"; const head = createHead(); diff --git a/tests/unit/specs/components/Comment/CommentTree.spec.ts b/tests/unit/specs/components/Comment/CommentTree.spec.ts index 2b07cf7d5..7b47282b8 100644 --- a/tests/unit/specs/components/Comment/CommentTree.spec.ts +++ b/tests/unit/specs/components/Comment/CommentTree.spec.ts @@ -119,7 +119,7 @@ describe("CommentTree", () => { await flushPromises(); expect(wrapper.find("p.text-center").exists()).toBe(false); - expect(wrapper.findAllComponents("comment-stub").length).toBe(2); + expect(wrapper.findAllComponents("event-comment-stub").length).toBe(2); expect(wrapper.html()).toMatchSnapshot(); }); @@ -130,6 +130,9 @@ describe("CommentTree", () => { newComment: { text: newCommentForEventMock.text, isAnnouncement: false, + insertedAt: "2021-12-03T13:02:00Z", + updatedAt: "2021-12-03T13:02:00Z", + publishedAt: "2021-12-03T13:02:00Z", }, } ); @@ -137,7 +140,7 @@ describe("CommentTree", () => { await flushPromises(); expect(wrapper.find("form").isVisible()).toBe(true); - expect(wrapper.findAllComponents("comment-stub").length).toBe(2); + expect(wrapper.findAllComponents("event-comment-stub").length).toBe(2); wrapper.getComponent({ ref: "commenteditor" }); wrapper.find("form").trigger("submit"); diff --git a/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap b/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap index 7636fdb19..06bb38137 100644 --- a/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap +++ b/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap @@ -1,31 +1,31 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`CommentTree > renders a comment tree with comments 1`] = ` "<div data-v-5d0380ab=\\"\\"> - <form class=\\"\\" data-v-5d0380ab=\\"\\"> + <form data-v-5d0380ab=\\"\\" class=\\"mt-2\\"> <!--v-if--> - <article class=\\"flex flex-wrap items-start gap-2\\" data-v-5d0380ab=\\"\\"> - <figure class=\\"\\" data-v-5d0380ab=\\"\\"> - <identity-picker-wrapper-stub modelvalue=\\"[object Object]\\" inline=\\"false\\" masked=\\"false\\" data-v-5d0380ab=\\"\\"></identity-picker-wrapper-stub> + <article data-v-5d0380ab=\\"\\" class=\\"flex flex-wrap items-start gap-2\\"> + <figure data-v-5d0380ab=\\"\\" class=\\"\\"> + <identity-picker-wrapper-stub data-v-5d0380ab=\\"\\" modelvalue=\\"[object Object]\\" inline=\\"false\\" masked=\\"false\\"></identity-picker-wrapper-stub> </figure> - <div class=\\"flex-1\\" data-v-5d0380ab=\\"\\"> - <div class=\\"flex flex-col gap-2\\" data-v-5d0380ab=\\"\\"> - <div class=\\"editor-wrapper\\" data-v-5d0380ab=\\"\\"> - <editor-stub currentactor=\\"[object Object]\\" mode=\\"comment\\" modelvalue=\\"\\" aria-label=\\"Comment body\\" data-v-5d0380ab=\\"\\"></editor-stub> + <div data-v-5d0380ab=\\"\\" class=\\"flex-1\\"> + <div data-v-5d0380ab=\\"\\" class=\\"flex flex-col gap-2\\"> + <div data-v-5d0380ab=\\"\\" class=\\"editor-wrapper\\"> + <editor-stub data-v-5d0380ab=\\"\\" currentactor=\\"[object Object]\\" mode=\\"comment\\" modelvalue=\\"\\" aria-label=\\"Comment body\\" placeholder=\\"Write a new comment\\"></editor-stub> <!--v-if--> </div> <!--v-if--> </div> </div> - <div class=\\"\\" data-v-5d0380ab=\\"\\"> - <o-button-stub variant=\\"primary\\" iconleft=\\"send\\" rounded=\\"false\\" outlined=\\"false\\" expanded=\\"false\\" inverted=\\"false\\" nativetype=\\"submit\\" tag=\\"button\\" disabled=\\"false\\" iconboth=\\"false\\" data-v-5d0380ab=\\"\\"></o-button-stub> + <div data-v-5d0380ab=\\"\\" class=\\"\\"> + <o-button-stub data-v-5d0380ab=\\"\\" variant=\\"primary\\" iconleft=\\"send\\" rounded=\\"false\\" outlined=\\"false\\" loading=\\"false\\" expanded=\\"false\\" inverted=\\"false\\" nativetype=\\"submit\\" tag=\\"button\\" disabled=\\"false\\" iconboth=\\"false\\"></o-button-stub> </div> </article> </form> - <transition-group-stub data-v-5d0380ab=\\"\\"> - <transition-group-stub data-v-5d0380ab=\\"\\"> - <comment-stub comment=\\"[object Object]\\" event=\\"[object Object]\\" currentactor=\\"[object Object]\\" rootcomment=\\"true\\" class=\\"root-comment\\" data-v-5d0380ab=\\"\\"></comment-stub> - <comment-stub comment=\\"[object Object]\\" event=\\"[object Object]\\" currentactor=\\"[object Object]\\" rootcomment=\\"true\\" class=\\"root-comment\\" data-v-5d0380ab=\\"\\"></comment-stub> + <transition-group-stub data-v-5d0380ab=\\"\\" tag=\\"div\\" name=\\"comment-empty-list\\" appear=\\"false\\" persisted=\\"false\\" css=\\"true\\" class=\\"mt-2\\"> + <transition-group-stub data-v-5d0380ab=\\"\\" name=\\"comment-list\\" tag=\\"ul\\" appear=\\"false\\" persisted=\\"false\\" css=\\"true\\" class=\\"comment-list\\"> + <event-comment-stub data-v-5d0380ab=\\"\\" comment=\\"[object Object]\\" event=\\"[object Object]\\" currentactor=\\"[object Object]\\" rootcomment=\\"true\\" readonly=\\"false\\" class=\\"root-comment my-2\\"></event-comment-stub> + <event-comment-stub data-v-5d0380ab=\\"\\" comment=\\"[object Object]\\" event=\\"[object Object]\\" currentactor=\\"[object Object]\\" rootcomment=\\"true\\" readonly=\\"false\\" class=\\"root-comment my-2\\"></event-comment-stub> </transition-group-stub> </transition-group-stub> </div>" @@ -34,34 +34,34 @@ exports[`CommentTree > renders a comment tree with comments 1`] = ` exports[`CommentTree > renders a loading comment tree 1`] = ` "<div data-v-5d0380ab=\\"\\"> <!--v-if--> - <p class=\\"text-center\\" data-v-5d0380ab=\\"\\">Loading comments…</p> + <p data-v-5d0380ab=\\"\\" class=\\"text-center\\">Loading comments…</p> </div>" `; exports[`CommentTree > renders an empty comment tree 1`] = ` "<div data-v-5d0380ab=\\"\\"> - <form class=\\"\\" data-v-5d0380ab=\\"\\"> + <form data-v-5d0380ab=\\"\\" class=\\"mt-2\\"> <!--v-if--> - <article class=\\"flex flex-wrap items-start gap-2\\" data-v-5d0380ab=\\"\\"> - <figure class=\\"\\" data-v-5d0380ab=\\"\\"> - <identity-picker-wrapper-stub modelvalue=\\"[object Object]\\" inline=\\"false\\" masked=\\"false\\" data-v-5d0380ab=\\"\\"></identity-picker-wrapper-stub> + <article data-v-5d0380ab=\\"\\" class=\\"flex flex-wrap items-start gap-2\\"> + <figure data-v-5d0380ab=\\"\\" class=\\"\\"> + <identity-picker-wrapper-stub data-v-5d0380ab=\\"\\" modelvalue=\\"[object Object]\\" inline=\\"false\\" masked=\\"false\\"></identity-picker-wrapper-stub> </figure> - <div class=\\"flex-1\\" data-v-5d0380ab=\\"\\"> - <div class=\\"flex flex-col gap-2\\" data-v-5d0380ab=\\"\\"> - <div class=\\"editor-wrapper\\" data-v-5d0380ab=\\"\\"> - <editor-stub currentactor=\\"[object Object]\\" mode=\\"comment\\" modelvalue=\\"\\" aria-label=\\"Comment body\\" data-v-5d0380ab=\\"\\"></editor-stub> + <div data-v-5d0380ab=\\"\\" class=\\"flex-1\\"> + <div data-v-5d0380ab=\\"\\" class=\\"flex flex-col gap-2\\"> + <div data-v-5d0380ab=\\"\\" class=\\"editor-wrapper\\"> + <editor-stub data-v-5d0380ab=\\"\\" currentactor=\\"[object Object]\\" mode=\\"comment\\" modelvalue=\\"\\" aria-label=\\"Comment body\\" placeholder=\\"Write a new comment\\"></editor-stub> <!--v-if--> </div> <!--v-if--> </div> </div> - <div class=\\"\\" data-v-5d0380ab=\\"\\"> - <o-button-stub variant=\\"primary\\" iconleft=\\"send\\" rounded=\\"false\\" outlined=\\"false\\" expanded=\\"false\\" inverted=\\"false\\" nativetype=\\"submit\\" tag=\\"button\\" disabled=\\"false\\" iconboth=\\"false\\" data-v-5d0380ab=\\"\\"></o-button-stub> + <div data-v-5d0380ab=\\"\\" class=\\"\\"> + <o-button-stub data-v-5d0380ab=\\"\\" variant=\\"primary\\" iconleft=\\"send\\" rounded=\\"false\\" outlined=\\"false\\" loading=\\"false\\" expanded=\\"false\\" inverted=\\"false\\" nativetype=\\"submit\\" tag=\\"button\\" disabled=\\"false\\" iconboth=\\"false\\"></o-button-stub> </div> </article> </form> - <transition-group-stub data-v-5d0380ab=\\"\\"> - <empty-content-stub icon=\\"comment\\" descriptionclasses=\\"\\" inline=\\"true\\" center=\\"false\\" data-v-5d0380ab=\\"\\"></empty-content-stub> + <transition-group-stub data-v-5d0380ab=\\"\\" tag=\\"div\\" name=\\"comment-empty-list\\" appear=\\"false\\" persisted=\\"false\\" css=\\"true\\" class=\\"mt-2\\"> + <empty-content-stub data-v-5d0380ab=\\"\\" icon=\\"comment\\" descriptionclasses=\\"\\" inline=\\"true\\" center=\\"false\\"></empty-content-stub> </transition-group-stub> </div>" `; diff --git a/tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap b/tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap index de0a9aef7..7dc38b91c 100644 --- a/tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap +++ b/tests/unit/specs/components/Group/__snapshots__/GroupSection.spec.ts.snap @@ -1,4 +1,4 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`GroupSection > renders group section with basic informations 1`] = ` "<section class=\\"flex flex-col mb-3 border-2 border-mbz-purple\\"> diff --git a/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap b/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap index 19854d85f..c59631d62 100644 --- a/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap +++ b/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap @@ -1,11 +1,11 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`ParticipationWithoutAccount > handles being already a participant 1`] = ` "<section class=\\"container mx-auto\\"> <div class=\\"\\"> <form> <p>This Mobilizon instance and this event organizer allows anonymous participations, but requires validation through email confirmation.</p> - <transition-stub> + <transition-stub name=\\"fade\\" appear=\\"false\\" persisted=\\"true\\" css=\\"true\\"> <article class=\\"o-notification o-notification--info\\"> <!--v-if--> <!--v-if--> @@ -15,7 +15,7 @@ exports[`ParticipationWithoutAccount > handles being already a participant 1`] = </div> </article> </transition-stub> - <transition-stub> + <transition-stub name=\\"fade\\" appear=\\"false\\" persisted=\\"true\\" css=\\"true\\"> <article class=\\"o-notification o-notification--danger\\"> <!--v-if--> <!--v-if--> diff --git a/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap b/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap index be813624e..cc0c700c7 100644 --- a/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap +++ b/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap @@ -1,11 +1,12 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`PostListItem > renders post list item with basic informations 1`] = ` -"<a href=\\"/p/my-blog-post-some-uuid\\" class=\\"block md:flex bg-white dark:bg-violet-2 dark:text-white dark:hover:text-white rounded-lg shadow-md\\" dir=\\"auto\\" data-v-6ca7cc69=\\"\\"> +"<a data-v-6ca7cc69=\\"\\" href=\\"/p/my-blog-post-some-uuid\\" class=\\"block md:flex bg-white dark:bg-violet-2 dark:text-white dark:hover:text-white rounded-lg shadow-md\\" dir=\\"auto\\"> <!--v-if--> - <div class=\\"flex flex-col gap-1 bg-inherit p-2 rounded-lg flex-1\\" data-v-6ca7cc69=\\"\\"> - <h3 class=\\"text-xl color-violet-3 line-clamp-3 mb-2 font-bold\\" lang=\\"en\\" data-v-6ca7cc69=\\"\\">My Blog Post</h3> - <p class=\\"flex gap-2\\" data-v-6ca7cc69=\\"\\"><span aria-hidden=\\"true\\" class=\\"material-design-icon clock-icon\\" role=\\"img\\" data-v-6ca7cc69=\\"\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\\"><!--v-if--></path></svg></span><span dir=\\"auto\\" class=\\"\\" data-v-6ca7cc69=\\"\\">Dec 2, 2020</span></p> + <div data-v-6ca7cc69=\\"\\" class=\\"flex flex-col gap-1 bg-inherit p-2 rounded-lg flex-1\\"> + <h3 data-v-6ca7cc69=\\"\\" class=\\"text-xl color-violet-3 line-clamp-3 mb-2 font-bold\\" lang=\\"en\\">My Blog Post</h3> + <p data-v-6ca7cc69=\\"\\" class=\\"flex gap-2\\"><span data-v-6ca7cc69=\\"\\" aria-hidden=\\"true\\" class=\\"material-design-icon clock-icon\\" role=\\"img\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\\"><!--v-if--></path></svg></span><span data-v-6ca7cc69=\\"\\" dir=\\"auto\\" class=\\"\\">Dec 2, 2020</span></p> + <!--v-if--> <!--v-if--> <!--v-if--> </div> @@ -13,24 +14,26 @@ exports[`PostListItem > renders post list item with basic informations 1`] = ` `; exports[`PostListItem > renders post list item with publisher name 1`] = ` -"<a href=\\"/p/my-blog-post-some-uuid\\" class=\\"block md:flex bg-white dark:bg-violet-2 dark:text-white dark:hover:text-white rounded-lg shadow-md\\" dir=\\"auto\\" data-v-6ca7cc69=\\"\\"> +"<a data-v-6ca7cc69=\\"\\" href=\\"/p/my-blog-post-some-uuid\\" class=\\"block md:flex bg-white dark:bg-violet-2 dark:text-white dark:hover:text-white rounded-lg shadow-md\\" dir=\\"auto\\"> <!--v-if--> - <div class=\\"flex flex-col gap-1 bg-inherit p-2 rounded-lg flex-1\\" data-v-6ca7cc69=\\"\\"> - <h3 class=\\"text-xl color-violet-3 line-clamp-3 mb-2 font-bold\\" lang=\\"en\\" data-v-6ca7cc69=\\"\\">My Blog Post</h3> - <p class=\\"flex gap-2\\" data-v-6ca7cc69=\\"\\"><span aria-hidden=\\"true\\" class=\\"material-design-icon clock-icon\\" role=\\"img\\" data-v-6ca7cc69=\\"\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\\"><!--v-if--></path></svg></span><span dir=\\"auto\\" class=\\"\\" data-v-6ca7cc69=\\"\\">Dec 2, 2020</span></p> + <div data-v-6ca7cc69=\\"\\" class=\\"flex flex-col gap-1 bg-inherit p-2 rounded-lg flex-1\\"> + <h3 data-v-6ca7cc69=\\"\\" class=\\"text-xl color-violet-3 line-clamp-3 mb-2 font-bold\\" lang=\\"en\\">My Blog Post</h3> + <p data-v-6ca7cc69=\\"\\" class=\\"flex gap-2\\"><span data-v-6ca7cc69=\\"\\" aria-hidden=\\"true\\" class=\\"material-design-icon clock-icon\\" role=\\"img\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\\"><!--v-if--></path></svg></span><span data-v-6ca7cc69=\\"\\" dir=\\"auto\\" class=\\"\\">Dec 2, 2020</span></p> + <!--v-if--> + <p data-v-6ca7cc69=\\"\\" class=\\"flex gap-1\\"><span data-v-6ca7cc69=\\"\\" aria-hidden=\\"true\\" class=\\"material-design-icon account-edit-icon\\" role=\\"img\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.09 20.21,11.09 20.42,11.3L21.7,12.58C21.91,12.79 21.91,13.14 21.7,13.35M12,18.94L18.06,12.88L20.11,14.93L14.06,21H12V18.94M12,14C7.58,14 4,15.79 4,18V20H10V18.11L14,14.11C13.34,14.03 12.67,14 12,14M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4Z\\"><!--v-if--></path></svg></span>Published by <b data-v-6ca7cc69=\\"\\" class=\\"\\">An author</b></p> <!--v-if--> - <p class=\\"flex gap-1\\" data-v-6ca7cc69=\\"\\"><span aria-hidden=\\"true\\" class=\\"material-design-icon account-edit-icon\\" role=\\"img\\" data-v-6ca7cc69=\\"\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.09 20.21,11.09 20.42,11.3L21.7,12.58C21.91,12.79 21.91,13.14 21.7,13.35M12,18.94L18.06,12.88L20.11,14.93L14.06,21H12V18.94M12,14C7.58,14 4,15.79 4,18V20H10V18.11L14,14.11C13.34,14.03 12.67,14 12,14M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4Z\\"><!--v-if--></path></svg></span>Published by <b class=\\"\\" data-v-6ca7cc69=\\"\\">An author</b></p> </div> </a>" `; exports[`PostListItem > renders post list item with tags 1`] = ` -"<a href=\\"/p/my-blog-post-some-uuid\\" class=\\"block md:flex bg-white dark:bg-violet-2 dark:text-white dark:hover:text-white rounded-lg shadow-md\\" dir=\\"auto\\" data-v-6ca7cc69=\\"\\"> +"<a data-v-6ca7cc69=\\"\\" href=\\"/p/my-blog-post-some-uuid\\" class=\\"block md:flex bg-white dark:bg-violet-2 dark:text-white dark:hover:text-white rounded-lg shadow-md\\" dir=\\"auto\\"> <!--v-if--> - <div class=\\"flex flex-col gap-1 bg-inherit p-2 rounded-lg flex-1\\" data-v-6ca7cc69=\\"\\"> - <h3 class=\\"text-xl color-violet-3 line-clamp-3 mb-2 font-bold\\" lang=\\"en\\" data-v-6ca7cc69=\\"\\">My Blog Post</h3> - <p class=\\"flex gap-2\\" data-v-6ca7cc69=\\"\\"><span aria-hidden=\\"true\\" class=\\"material-design-icon clock-icon\\" role=\\"img\\" data-v-6ca7cc69=\\"\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\\"><!--v-if--></path></svg></span><span dir=\\"auto\\" class=\\"\\" data-v-6ca7cc69=\\"\\">Dec 2, 2020</span></p> - <div class=\\"flex flex-wrap gap-y-0 gap-x-2\\" data-v-6ca7cc69=\\"\\"><span aria-hidden=\\"true\\" class=\\"material-design-icon tag-icon\\" role=\\"img\\" data-v-6ca7cc69=\\"\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\\"><!--v-if--></path></svg></span><span class=\\"rounded-md truncate text-sm text-violet-title px-2 py-1 bg-purple-3 dark:text-violet-3\\" data-v-6955ca87=\\"\\" data-v-6ca7cc69=\\"\\">A tag</span></div> + <div data-v-6ca7cc69=\\"\\" class=\\"flex flex-col gap-1 bg-inherit p-2 rounded-lg flex-1\\"> + <h3 data-v-6ca7cc69=\\"\\" class=\\"text-xl color-violet-3 line-clamp-3 mb-2 font-bold\\" lang=\\"en\\">My Blog Post</h3> + <p data-v-6ca7cc69=\\"\\" class=\\"flex gap-2\\"><span data-v-6ca7cc69=\\"\\" aria-hidden=\\"true\\" class=\\"material-design-icon clock-icon\\" role=\\"img\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.9L16.2,16.2Z\\"><!--v-if--></path></svg></span><span data-v-6ca7cc69=\\"\\" dir=\\"auto\\" class=\\"\\">Dec 2, 2020</span></p> + <div data-v-6ca7cc69=\\"\\" class=\\"flex flex-wrap gap-y-0 gap-x-2\\"><span data-v-6ca7cc69=\\"\\" aria-hidden=\\"true\\" class=\\"material-design-icon tag-icon\\" role=\\"img\\"><svg fill=\\"currentColor\\" class=\\"material-design-icon__svg\\" width=\\"24\\" height=\\"24\\" viewBox=\\"0 0 24 24\\"><path d=\\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\\"><!--v-if--></path></svg></span><span data-v-6955ca87=\\"\\" data-v-6ca7cc69=\\"\\" class=\\"rounded-md truncate text-sm text-violet-title px-2 py-1 bg-purple-3 dark:text-violet-3\\">A tag</span></div> + <!--v-if--> <!--v-if--> </div> </a>" diff --git a/tests/unit/specs/components/Report/ReportCard.spec.ts b/tests/unit/specs/components/Report/ReportCard.spec.ts index 08ac2e7f6..9a0d33381 100644 --- a/tests/unit/specs/components/Report/ReportCard.spec.ts +++ b/tests/unit/specs/components/Report/ReportCard.spec.ts @@ -36,11 +36,7 @@ describe("ReportCard", () => { reportData.reported.name ); - expect(wrapper.find(".flex.gap-1 div p:nth-child(2)").text()).toBe( - `@${reportData.reported.preferredUsername}` - ); - - expect(wrapper.find(".reported_by div:first-child").text()).toBe( + expect(wrapper.find(".reported_by span:first-child").text()).toBe( `Reported by John Snow` ); }); @@ -50,7 +46,7 @@ describe("ReportCard", () => { reporter: { domain: "somewhere.else", type: ActorType.APPLICATION }, }); - expect(wrapper.find(".reported_by div:first-child").text()).toBe( + expect(wrapper.find(".reported_by span:first-child").text()).toBe( "Reported by someone on somewhere.else" ); }); diff --git a/tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap b/tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap index d85250eba..511f97971 100644 --- a/tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap +++ b/tests/unit/specs/components/Report/__snapshots__/ReportModal.spec.ts.snap @@ -1,16 +1,16 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`ReportModal > renders report modal with basic informations and submits it 1`] = ` -"<div class=\\"p-2\\" data-v-e0cceef3=\\"\\"> +"<div data-v-e0cceef3=\\"\\" class=\\"p-2\\"> <!--v-if--> <section data-v-e0cceef3=\\"\\"> - <div class=\\"flex gap-1 flex-row mb-3\\" data-v-e0cceef3=\\"\\"><span class=\\"o-icon o-icon--warning hidden md:block flex-1\\" data-v-e0cceef3=\\"\\"><i class=\\"mdi mdi-alert 48\\"></i></span> + <div data-v-e0cceef3=\\"\\" class=\\"flex gap-1 flex-row mb-3 bg-mbz-yellow p-3 rounded items-center\\"><span data-v-e0cceef3=\\"\\" class=\\"o-icon o-icon--warning hidden md:block flex-1\\"><i class=\\"mdi mdi-alert 48\\"></i></span> <p data-v-e0cceef3=\\"\\">The report will be sent to the moderators of your instance. You can explain why you report this content below.</p> </div> - <div class=\\"\\" data-v-e0cceef3=\\"\\"> + <div data-v-e0cceef3=\\"\\"> <!--v-if--> - <div class=\\"o-field o-field--filled\\" data-v-e0cceef3=\\"\\"><label for=\\"additional-comments\\" class=\\"o-field__label\\">Additional comments</label> - <div class=\\"o-ctrl-input\\" data-v-e0cceef3=\\"\\"><textarea id=\\"additional-comments\\" class=\\"o-input o-input__textarea\\"></textarea> + <div data-v-e0cceef3=\\"\\" class=\\"o-field o-field--filled\\"><label for=\\"additional-comments\\" class=\\"o-field__label\\">Additional comments</label> + <div data-v-e0cceef3=\\"\\" class=\\"o-ctrl-input\\"><textarea id=\\"additional-comments\\" autofocus=\\"\\" class=\\"o-input o-input__textarea\\"></textarea> <!--v-if--> <!--v-if--> <!--v-if--> @@ -20,9 +20,9 @@ exports[`ReportModal > renders report modal with basic informations and submits <!--v-if--> </div> </section> - <footer class=\\"flex gap-2 py-3\\" data-v-e0cceef3=\\"\\"><button type=\\"button\\" class=\\"o-btn o-btn--outlined\\" data-v-e0cceef3=\\"\\"><span class=\\"o-btn__wrapper\\"><!--v-if--><span class=\\"o-btn__label\\">Cancel</span> + <footer data-v-e0cceef3=\\"\\" class=\\"flex gap-2 py-3\\"><button data-v-e0cceef3=\\"\\" type=\\"button\\" class=\\"o-btn o-btn--outlined\\"><span class=\\"o-btn__wrapper\\"><!--v-if--><span class=\\"o-btn__label\\">Cancel</span> <!--v-if--></span> - </button><button type=\\"button\\" class=\\"o-btn o-btn--primary\\" data-v-e0cceef3=\\"\\"><span class=\\"o-btn__wrapper\\"><!--v-if--><span class=\\"o-btn__label\\">Send the report</span> + </button><button data-v-e0cceef3=\\"\\" type=\\"button\\" class=\\"o-btn o-btn--primary\\"><span class=\\"o-btn__wrapper\\"><!--v-if--><span class=\\"o-btn__label\\">Send the report</span> <!--v-if--></span> </button></footer> </div>" diff --git a/tests/unit/specs/components/User/PasswordReset.spec.ts b/tests/unit/specs/components/User/PasswordReset.spec.ts index 7dd17b4fb..f30be1b68 100644 --- a/tests/unit/specs/components/User/PasswordReset.spec.ts +++ b/tests/unit/specs/components/User/PasswordReset.spec.ts @@ -1,9 +1,3 @@ -const useRouterMock = vi.fn(() => ({ - push: function () { - // do nothing - }, -})); - import { config, mount } from "@vue/test-utils"; import PasswordReset from "@/views/User/PasswordReset.vue"; import { createMockClient, RequestHandler } from "mock-apollo-client"; @@ -11,15 +5,17 @@ import { RESET_PASSWORD } from "@/graphql/auth"; import { resetPasswordResponseMock } from "../../mocks/auth"; import RouteName from "@/router/name"; import flushPromises from "flush-promises"; -import { describe, expect, it, vi } from "vitest"; +import { beforeEach, describe, expect, it, vi } from "vitest"; import { DefaultApolloClient } from "@vue/apollo-composable"; import Oruga from "@oruga-ui/oruga-next"; +import { + VueRouterMock, + createRouterMock, + injectRouterMock, +} from "vue-router-mock"; config.global.plugins.push(Oruga); - -vi.mock("vue-router/dist/vue-router.mjs", () => ({ - useRouter: useRouterMock, -})); +config.plugins.VueWrapper.install(VueRouterMock); let requestHandlers: Record<string, RequestHandler>; @@ -58,8 +54,21 @@ const generateWrapper = ( }; describe("Reset page", () => { + const router = createRouterMock({ + spy: { + create: (fn) => vi.fn(fn), + reset: (spy) => spy.mockReset(), + }, + }); + beforeEach(() => { + // inject it globally to ensure `useRoute()`, `$route`, etc work + // properly and give you access to test specific functions + injectRouterMock(router); + }); + it("renders correctly", () => { const wrapper = generateWrapper(); + expect(wrapper.router).toBe(router); expect(wrapper.findAll('input[type="password"').length).toBe(2); expect(wrapper.html()).toMatchSnapshot(); }); @@ -93,10 +102,6 @@ describe("Reset page", () => { }); it("redirects to homepage if token is valid", async () => { - const push = vi.fn(); // needs to write this code before render() - useRouterMock.mockImplementationOnce(() => ({ - push, - })); const wrapper = generateWrapper(); wrapper @@ -110,6 +115,6 @@ describe("Reset page", () => { token: "some-token", }); await flushPromises(); - expect(push).toHaveBeenCalledWith({ name: RouteName.HOME }); + expect(wrapper.router.push).toHaveBeenCalledWith({ name: RouteName.HOME }); }); }); diff --git a/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap b/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap index f5385ff1e..0deaa7470 100644 --- a/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap +++ b/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap @@ -1,4 +1,4 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Reset page > renders correctly 1`] = ` "<section class=\\"container mx-auto\\"> @@ -25,7 +25,7 @@ exports[`Reset page > renders correctly 1`] = ` exports[`Reset page > shows error if token is invalid 1`] = ` "<section class=\\"container mx-auto\\"> <h1 class=\\"\\">Password reset</h1> - <transition-stub title=\\"Error\\"> + <transition-stub name=\\"fade\\" appear=\\"false\\" persisted=\\"true\\" css=\\"true\\" title=\\"Error\\"> <article class=\\"o-notification o-notification--danger\\"> <!--v-if--> <!--v-if--> diff --git a/tests/unit/specs/components/User/login.spec.ts b/tests/unit/specs/components/User/login.spec.ts index e19a58fcf..c1e42f10e 100644 --- a/tests/unit/specs/components/User/login.spec.ts +++ b/tests/unit/specs/components/User/login.spec.ts @@ -1,15 +1,3 @@ -const useRouterMock = vi.fn(() => ({ - push: function () { - // do nothing - }, - replace: function () { - // do nothing - }, -})); -const useRouteMock = vi.fn(function () { - // do nothing -}); - import { config, mount, VueWrapper } from "@vue/test-utils"; import Login from "@/views/User/LoginView.vue"; import { @@ -26,23 +14,37 @@ import { CURRENT_USER_CLIENT } from "@/graphql/user"; import { ICurrentUser } from "@/types/current-user.model"; import flushPromises from "flush-promises"; import RouteName from "@/router/name"; -import { afterEach, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { DefaultApolloClient } from "@vue/apollo-composable"; import Oruga from "@oruga-ui/oruga-next"; import { cache } from "@/apollo/memory"; - -vi.mock("vue-router/dist/vue-router.mjs", () => ({ - useRouter: useRouterMock, - useRoute: useRouteMock, -})); +import { + VueRouterMock, + createRouterMock, + injectRouterMock, + getRouter, +} from "vue-router-mock"; config.global.plugins.push(Oruga); +config.plugins.VueWrapper.install(VueRouterMock); describe("Render login form", () => { let wrapper: VueWrapper; let mockClient: MockApolloClient | null; let requestHandlers: Record<string, RequestHandler>; + const router = createRouterMock({ + spy: { + create: (fn) => vi.fn(fn), + reset: (spy) => spy.mockReset(), + }, + }); + beforeEach(() => { + // inject it globally to ensure `useRoute()`, `$route`, etc work + // properly and give you access to test specific functions + injectRouterMock(router); + }); + const generateWrapper = ( handlers: Record<string, unknown> = {}, customProps: Record<string, unknown> = {}, @@ -90,6 +92,7 @@ describe("Render login form", () => { generateWrapper(); await wrapper.vm.$nextTick(); await wrapper.vm.$nextTick(); + await flushPromises(); expect(wrapper.exists()).toBe(true); expect(requestHandlers.configQueryHandler).toHaveBeenCalled(); @@ -103,15 +106,10 @@ describe("Render login form", () => { }); it("renders and submits the login form", async () => { - const replace = vi.fn(); // needs to write this code before render() - const push = vi.fn(); - useRouterMock.mockImplementationOnce(() => ({ - replace, - push, - })); generateWrapper(); await wrapper.vm.$nextTick(); await wrapper.vm.$nextTick(); + await flushPromises(); expect(wrapper.exists()).toBe(true); expect(requestHandlers.configQueryHandler).toHaveBeenCalled(); @@ -133,16 +131,12 @@ describe("Render login form", () => { expect(currentUser?.email).toBe("some@email.tld"); expect(currentUser?.id).toBe("1"); await flushPromises(); - expect(replace).toHaveBeenCalledWith({ name: RouteName.HOME }); + expect(wrapper.router.replace).toHaveBeenCalledWith({ + name: RouteName.HOME, + }); }); it("handles a login error", async () => { - const replace = vi.fn(); // needs to write this code before render() - const push = vi.fn(); - useRouterMock.mockImplementationOnce(() => ({ - push, - replace, - })); generateWrapper({ loginMutationHandler: vi.fn().mockResolvedValue({ errors: [ @@ -156,6 +150,7 @@ describe("Render login form", () => { await wrapper.vm.$nextTick(); await wrapper.vm.$nextTick(); + await flushPromises(); expect(wrapper.exists()).toBe(true); expect(requestHandlers.configQueryHandler).toHaveBeenCalled(); @@ -170,28 +165,21 @@ describe("Render login form", () => { expect(wrapper.find(".o-notification--danger").text()).toContain( "Impossible to authenticate, either your email or password are invalid." ); - expect(push).not.toHaveBeenCalled(); + expect(wrapper.router.push).not.toHaveBeenCalled(); }); it("handles redirection after login", async () => { - const replace = vi.fn(); // needs to write this code before render() - const push = vi.fn(); - useRouterMock.mockImplementationOnce(() => ({ - replace, - push, - })); - useRouteMock.mockImplementationOnce(() => ({ - query: { redirect: "/about/instance" }, - })); generateWrapper(); + getRouter().setQuery({ redirect: "/about/instance" }); await wrapper.vm.$nextTick(); await wrapper.vm.$nextTick(); + await flushPromises(); wrapper.find('form input[type="email"]').setValue("some@email.tld"); wrapper.find('form input[type="password"]').setValue("somepassword"); wrapper.find("form").trigger("submit"); await flushPromises(); - expect(push).toHaveBeenCalledWith("/about/instance"); + expect(wrapper.router.push).toHaveBeenCalledWith("/about/instance"); }); }); diff --git a/tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap b/tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap index 13e592ebb..cf310114d 100644 --- a/tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap +++ b/tests/unit/specs/components/__snapshots__/navbar.spec.ts.snap @@ -1,9 +1,9 @@ -// Vitest Snapshot v1 +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`App component > renders a Vue component 1`] = ` "<nav class=\\"bg-white border-gray-200 px-2 sm:px-4 py-2.5 dark:bg-zinc-900\\" id=\\"navbar\\"> - <div class=\\"container mx-auto flex flex-wrap items-center mx-auto gap-4\\"> - <router-link to=\\"[object Object]\\" class=\\"flex items-center\\"> + <div class=\\"container mx-auto flex flex-wrap items-center mx-auto gap-2 sm:gap-4\\"> + <router-link to=\\"[object Object]\\" class=\\"flex items-center flex-1\\"> <mobilizon-logo-stub invert=\\"false\\" class=\\"w-40\\"></mobilizon-logo-stub> </router-link> <!--v-if--><button type=\\"button\\" class=\\"inline-flex items-center p-2 ml-1 text-sm text-zinc-500 rounded-lg md:hidden hover:bg-zinc-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-zinc-400 dark:hover:bg-zinc-700 dark:focus:ring-gray-600\\" aria-controls=\\"mobile-menu-2\\" aria-expanded=\\"false\\"><span class=\\"sr-only\\">Open main menu</span><svg class=\\"w-6 h-6\\" aria-hidden=\\"true\\" fill=\\"currentColor\\" viewBox=\\"0 0 20 20\\" xmlns=\\"http://www.w3.org/2000/svg\\"> @@ -16,181 +16,9 @@ exports[`App component > renders a Vue component 1`] = ` <li> <router-link to=\\"[object Object]\\" class=\\"block py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700\\">Login</router-link> </li> - <li> - <router-link to=\\"[object Object]\\" class=\\"block py-2 pr-4 pl-3 text-zinc-700 border-b border-gray-100 hover:bg-zinc-50 md:hover:bg-transparent md:border-0 md:hover:text-mbz-purple-700 md:p-0 dark:text-zinc-400 md:dark:hover:text-white dark:hover:bg-zinc-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700\\">Register</router-link> - </li> + <!--v-if--> </ul> </div> </div> -</nav> -<!-- <o-navbar - id=\\"navbar\\" - type=\\"is-secondary\\" - wrapper-class=\\"container mx-auto\\" - v-model:active=\\"mobileNavbarActive\\" - > - <template #brand> - <o-navbar-item - tag=\\"router-link\\" - :to=\\"{ name: RouteName.HOME }\\" - :aria-label=\\"$t('Home')\\" - > - <logo /> - </o-navbar-item> - </template> - <template #start> - <o-navbar-item tag=\\"router-link\\" :to=\\"{ name: RouteName.SEARCH }\\">{{ - $t(\\"Explore\\") - }}</o-navbar-item> - <o-navbar-item - v-if=\\"currentActor.id && currentUser?.isLoggedIn\\" - tag=\\"router-link\\" - :to=\\"{ name: RouteName.MY_EVENTS }\\" - >{{ $t(\\"My events\\") }}</o-navbar-item - > - <o-navbar-item - tag=\\"router-link\\" - :to=\\"{ name: RouteName.MY_GROUPS }\\" - v-if=\\" - config && - config.features.groups && - currentActor.id && - currentUser?.isLoggedIn - \\" - >{{ $t(\\"My groups\\") }}</o-navbar-item - > - <o-navbar-item - tag=\\"span\\" - v-if=\\" - config && - config.features.eventCreation && - currentActor.id && - currentUser?.isLoggedIn - \\" - > - <o-button - v-if=\\"!hideCreateEventsButton\\" - tag=\\"router-link\\" - :to=\\"{ name: RouteName.CREATE_EVENT }\\" - variant=\\"primary\\" - >{{ $t(\\"Create\\") }}</o-button - > - </o-navbar-item> - </template> - <template #end> - <o-navbar-item tag=\\"div\\"> - <search-field @navbar-search=\\"mobileNavbarActive = false\\" /> - </o-navbar-item> - - <o-navbar-dropdown - v-if=\\"currentActor.id && currentUser?.isLoggedIn\\" - right - collapsible - ref=\\"user-dropdown\\" - tabindex=\\"0\\" - tag=\\"span\\" - @keyup.enter=\\"toggleMenu\\" - > - <template #label v-if=\\"currentActor\\"> - <div class=\\"identity-wrapper\\"> - <div> - <figure class=\\"image is-32x32\\" v-if=\\"currentActor.avatar\\"> - <img - class=\\"is-rounded\\" - alt=\\"avatarUrl\\" - :src=\\"currentActor.avatar.url\\" - /> - </figure> - <o-icon v-else icon=\\"account-circle\\" /> - </div> - <div class=\\"media-content is-hidden-desktop\\"> - <span>{{ displayName(currentActor) }}</span> - <span class=\\"has-text-grey-dark\\" v-if=\\"currentActor.name\\" - >@{{ currentActor.preferredUsername }}</span - > - </div> - </div> - </template> - - No identities dropdown if no identities - <span v-if=\\"identities.length <= 1\\"></span> - <o-navbar-item - tag=\\"span\\" - v-for=\\"identity in identities\\" - v-else - :active=\\"identity.id === currentActor.id\\" - :key=\\"identity.id\\" - tabindex=\\"0\\" - @click=\\"setIdentity({ - preferredUsername: identity.preferredUsername, - })\\" - @keyup.enter=\\"setIdentity({ - preferredUsername: identity.preferredUsername, - })\\" - > - <span> - <div class=\\"media-left\\"> - <figure class=\\"image is-32x32\\" v-if=\\"identity.avatar\\"> - <img - class=\\"is-rounded\\" - loading=\\"lazy\\" - :src=\\"identity.avatar.url\\" - alt - /> - </figure> - <o-icon v-else size=\\"is-medium\\" icon=\\"account-circle\\" /> - </div> - - <div class=\\"media-content\\"> - <span>{{ displayName(identity) }}</span> - <span class=\\"has-text-grey-dark\\" v-if=\\"identity.name\\" - >@{{ identity.preferredUsername }}</span - > - </div> - </span> - - <hr class=\\"navbar-divider\\" role=\\"presentation\\" /> - </o-navbar-item> - - <o-navbar-item - tag=\\"router-link\\" - :to=\\"{ name: RouteName.UPDATE_IDENTITY }\\" - >{{ $t(\\"My account\\") }}</o-navbar-item - > - <o-navbar-item - v-if=\\"currentUser.role === ICurrentUserRole.ADMINISTRATOR\\" - tag=\\"router-link\\" - :to=\\"{ name: RouteName.ADMIN_DASHBOARD }\\" - >{{ $t(\\"Administration\\") }}</o-navbar-item - > - - <o-navbar-item - tag=\\"span\\" - tabindex=\\"0\\" - @click=\\"logout\\" - @keyup.enter=\\"logout\\" - > - <span>{{ $t(\\"Log out\\") }}</span> - </o-navbar-item> - </o-navbar-dropdown> - - <o-navbar-item v-else tag=\\"div\\"> - <div class=\\"buttons\\"> - <router-link - class=\\"button is-primary\\" - v-if=\\"config && config.registrationsOpen\\" - :to=\\"{ name: RouteName.REGISTER }\\" - > - <strong>{{ $t(\\"Sign up\\") }}</strong> - </router-link> - - <router-link - class=\\"button is-light\\" - :to=\\"{ name: RouteName.LOGIN }\\" - >{{ $t(\\"Log in\\") }}</router-link - > - </div> - </o-navbar-item> - </template> - </o-navbar> -->" +</nav>" `; diff --git a/tests/unit/specs/mocks/config.ts b/tests/unit/specs/mocks/config.ts index b404b4fa7..eb2924beb 100644 --- a/tests/unit/specs/mocks/config.ts +++ b/tests/unit/specs/mocks/config.ts @@ -134,6 +134,7 @@ export const loginMock = { __typename: "Config", auth: { __typename: "Auth", + databaseLogin: true, oauthProviders: [], }, registrationsOpen: true, diff --git a/tests/unit/specs/mocks/event.ts b/tests/unit/specs/mocks/event.ts index 6410f0980..206794746 100644 --- a/tests/unit/specs/mocks/event.ts +++ b/tests/unit/specs/mocks/event.ts @@ -106,6 +106,7 @@ export const eventCommentThreadsMock = { }, deletedAt: null, insertedAt: "2020-12-03T09:02:00Z", + publishedAt: "2020-12-03T09:02:00Z", isAnnouncement: false, language: "en", }, @@ -137,6 +138,7 @@ export const eventCommentThreadsMock = { }, deletedAt: null, insertedAt: "2020-12-03T11:02:00Z", + publishedAt: "2020-12-03T11:02:00Z", isAnnouncement: false, language: "en", }, @@ -164,7 +166,6 @@ export const newCommentForEventResponse: DataMock = { local: true, visibility: "PUBLIC", totalReplies: 0, - updatedAt: "2020-12-03T13:02:00Z", originComment: null, inReplyToComment: null, replies: [], @@ -183,6 +184,8 @@ export const newCommentForEventResponse: DataMock = { }, deletedAt: null, insertedAt: "2020-12-03T13:02:00Z", + updatedAt: "2020-12-03T13:02:00Z", + publishedAt: "2020-12-03T13:02:00Z", isAnnouncement: false, language: "en", }, diff --git a/vite.config.js b/vite.config.js index e20c7d603..10d95904f 100644 --- a/vite.config.js +++ b/vite.config.js @@ -114,7 +114,7 @@ export default defineConfig(({ command }) => { coverage: { reporter: ["text", "json", "html"], }, - setupFiles: path.resolve(__dirname, "./tests/unit/setup.ts"), + setupFiles: [path.resolve(__dirname, "./tests/unit/setup.ts")], include: [path.resolve(__dirname, "./tests/unit/specs/**/*.spec.ts")], }, }; From c255ceacbb6dd7dbcab8949ffb5014db6bebce77 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 15 Nov 2023 14:46:09 +0100 Subject: [PATCH 11/18] chore: fix prettier configuration and run it Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .devcontainer/devcontainer.json | 72 ++++++----- .gitlab-ci.yml | 4 +- .prettierignore | 4 +- schema.graphql | 223 ++++++++------------------------ 4 files changed, 93 insertions(+), 210 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7ed7bedd6..526e27225 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,44 +1,46 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/elixir-phoenix-postgres { - "name": "Elixir, Phoenix, Node.js & PostgresSQL (Community)", - "dockerComposeFile": "docker-compose.yml", - "service": "elixir", - "workspaceFolder": "/workspace", + "name": "Elixir, Phoenix, Node.js & PostgresSQL (Community)", + "dockerComposeFile": "docker-compose.yml", + "service": "elixir", + "workspaceFolder": "/workspace", - // Set *default* container specific settings.json values on container create. - "settings": { - "sqltools.connections": [{ - "name": "Container database", - "driver": "PostgreSQL", - "previewLimit": 50, - "server": "localhost", - "port": 5432, - "database": "postgres", - "username": "postgres", - "password": "postgres" - }] - }, + // Set *default* container specific settings.json values on container create. + "settings": { + "sqltools.connections": [ + { + "name": "Container database", + "driver": "PostgreSQL", + "previewLimit": 50, + "server": "localhost", + "port": 5432, + "database": "postgres", + "username": "postgres", + "password": "postgres" + } + ] + }, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "jakebecker.elixir-ls", - "mtxr.sqltools", - "mtxr.sqltools-driver-pg" - ], + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "jakebecker.elixir-ls", + "mtxr.sqltools", + "mtxr.sqltools-driver-pg" + ], - // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [4000, 4001, 5432], + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [4000, 4001, 5432], - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "mix deps.get", - // "runArgs": ["--userns=keep-id", "--privileged"], - // "containerUser": "vscode", - // "containerEnv": { - // "HOME": "/home/vscode", - // }, - // "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z", + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "mix deps.get", + // "runArgs": ["--userns=keep-id", "--privileged"], + // "containerUser": "vscode", + // "containerEnv": { + // "HOME": "/home/vscode", + // }, + // "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z", - // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode" + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" } diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3b2532ecd..3ed731c6c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -67,7 +67,6 @@ lint-elixir: reports: codequality: codeclimate.json - lint-front: image: node:20 stage: check @@ -182,7 +181,7 @@ e2e: - npx playwright test --project $BROWSER parallel: matrix: - - BROWSER: ['firefox', 'chromium'] + - BROWSER: ["firefox", "chromium"] artifacts: expire_in: 2 days paths: @@ -268,7 +267,6 @@ build-and-push-to-latest-docker-tag: - ARCH: ["arm64"] ERL_FLAGS: ["ERL_FLAGS=+JMsingle true"] - # Don't push to latest when building beta/rc tags build-and-push-docker-tag: <<: *docker diff --git a/.prettierignore b/.prettierignore index 49212628b..61aab927f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,4 @@ src/i18n/*.json -coverage/ \ No newline at end of file +coverage/ +**/*.md +test/fixtures \ No newline at end of file diff --git a/schema.graphql b/schema.graphql index fd4111819..5b25fe54e 100644 --- a/schema.graphql +++ b/schema.graphql @@ -661,10 +661,7 @@ type Todo { "Root subscription" type RootSubscriptionType { "Notify when a person's participation's status changed for an event" - eventPersonParticipationChanged( - "The person's ID" - personId: ID! - ): Person + eventPersonParticipationChanged("The person's ID" personId: ID!): Person "Notify when a person's membership's status changed for a group" groupMembershipChanged( @@ -676,10 +673,7 @@ type RootSubscriptionType { ): Person "Notify when a discussion changed" - discussionCommentChanged( - "The discussion's slug" - slug: String! - ): Discussion + discussionCommentChanged("The discussion's slug" slug: String!): Discussion } "Event categories list configuration" @@ -1298,10 +1292,7 @@ type RootMutationType { ): Login "Refresh a token" - refreshToken( - "A refresh token" - refreshToken: String! - ): RefreshedToken + refreshToken("A refresh token" refreshToken: String!): RefreshedToken "Logout an user, deleting a refresh token" logout(refreshToken: String!): String @@ -1373,10 +1364,7 @@ type RootMutationType { ): UserSettings "Update the user's locale" - updateLocale( - "The user's new locale" - locale: String - ): User + updateLocale("The user's new locale" locale: String): User "Create a new person for user" createPerson( @@ -1415,10 +1403,7 @@ type RootMutationType { ): Person "Delete an identity" - deletePerson( - "The person's ID" - id: ID! - ): Person + deletePerson("The person's ID" id: ID!): Person "Register a first profile on registration" registerPerson( @@ -1499,10 +1484,7 @@ type RootMutationType { ): Group "Delete a group" - deleteGroup( - "The group ID" - groupId: ID! - ): DeletedObject + deleteGroup("The group ID" groupId: ID!): DeletedObject "Follow a group" followGroup( @@ -1523,10 +1505,7 @@ type RootMutationType { ): Follower "Unfollow a group" - unfollowGroup( - "The group ID" - groupId: ID! - ): Follower + unfollowGroup("The group ID" groupId: ID!): Follower "Create an event" createEvent( @@ -1667,10 +1646,7 @@ type RootMutationType { ): Event "Delete an event" - deleteEvent( - "The event ID to delete" - eventId: ID! - ): DeletedObject + deleteEvent("The event ID to delete" eventId: ID!): DeletedObject "Create a comment" createComment( @@ -1706,10 +1682,7 @@ type RootMutationType { ): Comment "Delete a single comment" - deleteComment( - "The comment ID" - commentId: ID! - ): Comment + deleteComment("The comment ID" commentId: ID!): Comment "Join an event" joinEvent( @@ -1772,16 +1745,10 @@ type RootMutationType { ): String "Join a group" - joinGroup( - "The group ID" - groupId: ID! - ): Member + joinGroup("The group ID" groupId: ID!): Member "Leave a group" - leaveGroup( - "The group ID" - groupId: ID! - ): DeletedObject + leaveGroup("The group ID" groupId: ID!): DeletedObject "Invite an actor to join the group" inviteMember( @@ -1793,28 +1760,16 @@ type RootMutationType { ): Member "Accept an invitation to a group" - acceptInvitation( - "The member ID" - id: ID! - ): Member + acceptInvitation("The member ID" id: ID!): Member "Reject an invitation to a group" - rejectInvitation( - "The member ID" - id: ID! - ): Member + rejectInvitation("The member ID" id: ID!): Member "Approve a membership request" - approveMember( - "The member ID" - memberId: ID! - ): Member + approveMember("The member ID" memberId: ID!): Member "Reject a membership request" - rejectMember( - "The member ID" - memberId: ID! - ): Member + rejectMember("The member ID" memberId: ID!): Member "Update a member's role" updateMember( @@ -1835,16 +1790,10 @@ type RootMutationType { ): Member "Create a Feed Token" - createFeedToken( - "The actor ID for the feed token" - actorId: ID - ): FeedToken + createFeedToken("The actor ID for the feed token" actorId: ID): FeedToken "Delete a feed token" - deleteFeedToken( - "The token to delete" - token: String! - ): DeletedFeedToken + deleteFeedToken("The token to delete" token: String!): DeletedFeedToken "Upload a media" uploadMedia( @@ -1859,10 +1808,7 @@ type RootMutationType { ): Media "Remove a media" - removeMedia( - "The media's ID" - id: ID! - ): DeletedObject + removeMedia("The media's ID" id: ID!): DeletedObject "Create a report" createReport( @@ -1901,34 +1847,19 @@ type RootMutationType { ): ReportNote "Delete a note on a report" - deleteReportNote( - "The note's ID" - noteId: ID! - ): DeletedObject + deleteReportNote("The note's ID" noteId: ID!): DeletedObject "Add an instance subscription" - addInstance( - "The instance domain to add" - domain: String! - ): Instance + addInstance("The instance domain to add" domain: String!): Instance "Delete a relay subscription" - removeRelay( - "The relay hostname to delete" - address: String! - ): Follower + removeRelay("The relay hostname to delete" address: String!): Follower "Accept a relay subscription" - acceptRelay( - "The accepted relay hostname" - address: String! - ): Follower + acceptRelay("The accepted relay hostname" address: String!): Follower "Reject a relay subscription" - rejectRelay( - "The rejected relay hostname" - address: String! - ): Follower + rejectRelay("The rejected relay hostname" address: String!): Follower "Save admin settings" saveAdminSettings( @@ -2072,10 +2003,7 @@ type RootMutationType { ): Discussion "Delete a discussion" - deleteDiscussion( - "The discussion's ID" - discussionId: ID! - ): Discussion + deleteDiscussion("The discussion's ID" discussionId: ID!): Discussion "Create a resource" createResource( @@ -2117,10 +2045,7 @@ type RootMutationType { ): Resource "Delete a resource" - deleteResource( - "The resource ID" - id: ID! - ): DeletedObject + deleteResource("The resource ID" id: ID!): DeletedObject "Get a preview for a resource link" previewResourceLink( @@ -2192,28 +2117,16 @@ type RootMutationType { ): Post "Delete a post" - deletePost( - "The post's ID" - id: ID! - ): DeletedObject + deletePost("The post's ID" id: ID!): DeletedObject "Suspend an actor" - suspendProfile( - "The remote profile ID to suspend" - id: ID! - ): DeletedObject + suspendProfile("The remote profile ID to suspend" id: ID!): DeletedObject "Unsuspend an actor" - unsuspendProfile( - "The remote profile ID to unsuspend" - id: ID! - ): Actor + unsuspendProfile("The remote profile ID to unsuspend" id: ID!): Actor "Refresh a profile" - refreshProfile( - "The remote profile ID to refresh" - id: ID! - ): Actor + refreshProfile("The remote profile ID to refresh" id: ID!): Actor "Update follower" updateFollower( @@ -2228,7 +2141,11 @@ type RootMutationType { unregisterPush(endpoint: String!): String - updateActivitySetting(key: String!, method: String!, enabled: Boolean!): ActivitySetting + updateActivitySetting( + key: String! + method: String! + enabled: Boolean! + ): ActivitySetting } type ActivityParamItem { @@ -2328,10 +2245,7 @@ type RootQueryType { ): Events "Interact with an URI" - interact( - "The URI for to interact with" - uri: String! - ): Interactable + interact("The URI for to interact with" uri: String!): Interactable "Get an user" user(id: ID!): User @@ -2370,10 +2284,7 @@ type RootQueryType { ): Person "Get a person by its ID" - person( - "The person ID" - id: ID! - ): Person + person("The person ID" id: ID!): Person "Get the persons for an user" identities: [Person] @@ -2427,10 +2338,7 @@ type RootQueryType { ): PaginatedGroupList "Get a group by its ID" - getGroup( - "The group ID" - id: ID! - ): Group + getGroup("The group ID" id: ID!): Group "Get a group by its preferred username" group( @@ -2439,10 +2347,7 @@ type RootQueryType { ): Group "Get a group by its preferred username" - groupById( - "The group local ID" - id: ID! - ): Group + groupById("The group local ID" id: ID!): Group "Get all events" events( @@ -2460,16 +2365,10 @@ type RootQueryType { ): PaginatedEventList "Get an event by uuid" - event( - "The event's UUID" - uuid: UUID! - ): Event + event("The event's UUID" uuid: UUID!): Event "Get replies for thread" - thread( - "The comment ID" - id: ID! - ): [Comment] + thread("The comment ID" id: ID!): [Comment] "Get the list of tags" tags( @@ -2519,10 +2418,7 @@ type RootQueryType { config: Config "Get a media" - media( - "The media ID" - id: ID! - ): Media + media("The media ID" id: ID!): Media "Get all reports" reports( @@ -2540,10 +2436,7 @@ type RootQueryType { ): PaginatedReportList "Get a report by id" - report( - "The report ID" - id: ID! - ): Report + report("The report ID" id: ID!): Report "Get the list of action logs" actionLogs(page: Int, limit: Int): PaginatedActionLogList @@ -2609,22 +2502,13 @@ type RootQueryType { ): PaginatedInstanceList "Get an instance's details" - instance( - "The instance domain" - domain: ID! - ): Instance + instance("The instance domain" domain: ID!): Instance "Get a todo list" - todoList( - "The todo-list ID" - id: ID! - ): TodoList + todoList("The todo-list ID" id: ID!): TodoList "Get a todo" - todo( - "The todo ID" - id: ID! - ): Todo + todo("The todo ID" id: ID!): Todo "Get a discussion" discussion( @@ -2645,10 +2529,7 @@ type RootQueryType { ): Resource "Get a post" - post( - "The post's slug" - slug: String! - ): Post + post("The post's slug" slug: String!): Post "Get the instance statistics" statistics: Statistics @@ -3066,7 +2947,7 @@ input MediaInputObject { } """ -The `Point` scalar type represents Point geographic information compliant string data, +The `Point` scalar type represents Point geographic information compliant string data, represented as floats separated by a semi-colon. The geodetic system is WGS 84 """ scalar Point @@ -3249,7 +3130,7 @@ type Follower { "Whether the follow has been approved by the target actor" approved: Boolean - "Whether the follower will be notified by the target actor's activity or not (applicable for profile\/group follows)" + "Whether the follower will be notified by the target actor's activity or not (applicable for profile/group follows)" notify: Boolean "When the follow was created" @@ -3924,13 +3805,13 @@ type User implements ActionLogObject { "The user's default actor" defaultActor: Person - "The datetime when the user was confirmed\/activated" + "The datetime when the user was confirmed/activated" confirmedAt: DateTime - "The datetime the last activation\/confirmation token was sent" + "The datetime the last activation/confirmation token was sent" confirmationSentAt: DateTime - "The account activation\/confirmation token" + "The account activation/confirmation token" confirmationToken: String "The datetime last reset password email was sent" @@ -4062,7 +3943,7 @@ type Group implements ActionLogObject & ActivityObject & Interactable & Actor { "Whether the actors manually approves followers" manuallyApprovesFollowers: Boolean - "Whether the group can be found and\/or promoted" + "Whether the group can be found and/or promoted" visibility: GroupVisibility "If the actor is suspended" From 5d65981dcdeebe567c234631c83ca3dc5a82a1a5 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 15 Nov 2023 14:53:30 +0100 Subject: [PATCH 12/18] ci: install python3 instead of python Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3ed731c6c..84f6dd1a6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -83,7 +83,7 @@ build-frontend: image: node:20 before_script: - apt update - - apt install -y --no-install-recommends python build-essential webp imagemagick gifsicle jpegoptim optipng pngquant + - apt install -y --no-install-recommends python3 build-essential webp imagemagick gifsicle jpegoptim optipng pngquant script: - npm install --frozen-lockfile - npm run build From e051df1ab32cbd0e125d1dc73caf4f859abd3633 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 15 Nov 2023 16:35:40 +0100 Subject: [PATCH 13/18] test: fix unit backend tests Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- lib/federation/activity_pub/transmogrifier.ex | 4 +- .../activity_pub/types/conversation.ex | 48 +++++++++++-------- .../transmogrifier/comments_test.exs | 23 +++++++-- test/graphql/resolvers/conversation_test.exs | 23 ++++++--- test/mobilizon/conversations_test.exs | 2 +- test/service/activity/conversation_test.exs | 48 +++++++++++-------- 6 files changed, 95 insertions(+), 53 deletions(-) diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index fcba654e2..2963deacd 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -71,8 +71,8 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do case Discussions.get_comment_from_url_with_preload(object["id"]) do {:error, :comment_not_found} -> case Converter.Comment.as_to_model_data(object) do - %{visibility: visibility} = object_data - when visibility === :private -> + %{visibility: visibility, attributed_to_id: attributed_to_id} = object_data + when visibility === :private and is_nil(attributed_to_id) -> Actions.Create.create(:conversation, object_data, false) object_data when is_map(object_data) -> diff --git a/lib/federation/activity_pub/types/conversation.ex b/lib/federation/activity_pub/types/conversation.ex index 0cdd614a8..b72cef022 100644 --- a/lib/federation/activity_pub/types/conversation.ex +++ b/lib/federation/activity_pub/types/conversation.ex @@ -23,37 +23,43 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Conversations do @impl Entity @spec create(map(), map()) :: {:ok, Conversation.t(), ActivityStream.t()} - | {:error, :conversation_not_found | :last_comment_not_found | Ecto.Changeset.t()} + | {:error, + :conversation_not_found + | :last_comment_not_found + | :empty_participants + | Ecto.Changeset.t()} def create(%{conversation_id: conversation_id} = args, additional) when not is_nil(conversation_id) do Logger.debug("Creating a reply to a conversation #{inspect(args, pretty: true)}") args = prepare_args(args) Logger.debug("Creating a reply to a conversation #{inspect(args, pretty: true)}") - case Conversations.get_conversation(conversation_id) do - %Conversation{} = conversation -> - case Conversations.reply_to_conversation(conversation, args) do - {:ok, %Conversation{last_comment_id: last_comment_id} = conversation} -> - ConversationActivity.insert_activity(conversation, subject: "conversation_replied") - maybe_publish_graphql_subscription(conversation) + with args when is_map(args) <- prepare_args(args) do + case Conversations.get_conversation(conversation_id) do + %Conversation{} = conversation -> + case Conversations.reply_to_conversation(conversation, args) do + {:ok, %Conversation{last_comment_id: last_comment_id} = conversation} -> + ConversationActivity.insert_activity(conversation, subject: "conversation_replied") + maybe_publish_graphql_subscription(conversation) - case Discussions.get_comment_with_preload(last_comment_id) do - %Comment{} = last_comment -> - comment_as_data = Convertible.model_to_as(last_comment) - audience = Audience.get_audience(conversation) - create_data = make_create_data(comment_as_data, Map.merge(audience, additional)) - {:ok, conversation, create_data} + case Discussions.get_comment_with_preload(last_comment_id) do + %Comment{} = last_comment -> + comment_as_data = Convertible.model_to_as(last_comment) + audience = Audience.get_audience(conversation) + create_data = make_create_data(comment_as_data, Map.merge(audience, additional)) + {:ok, conversation, create_data} - nil -> - {:error, :last_comment_not_found} - end + nil -> + {:error, :last_comment_not_found} + end - {:error, _, %Ecto.Changeset{} = err, _} -> - {:error, err} - end + {:error, _, %Ecto.Changeset{} = err, _} -> + {:error, err} + end - nil -> - {:error, :discussion_not_found} + nil -> + {:error, :discussion_not_found} + end end end diff --git a/test/federation/activity_pub/transmogrifier/comments_test.exs b/test/federation/activity_pub/transmogrifier/comments_test.exs index e0846c0d2..74929d5be 100644 --- a/test/federation/activity_pub/transmogrifier/comments_test.exs +++ b/test/federation/activity_pub/transmogrifier/comments_test.exs @@ -6,6 +6,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.CommentsTest do import ExUnit.CaptureLog alias Mobilizon.Actors alias Mobilizon.Actors.Actor + alias Mobilizon.Conversations.Conversation alias Mobilizon.Discussions alias Mobilizon.Discussions.Comment alias Mobilizon.Events.Event @@ -218,7 +219,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.CommentsTest do end) =~ "[warning] Parent object is something we don't handle" end - test "it ignores incoming private notes" do + test "it accepts incoming private notes" do actor_data = File.read!("test/fixtures/mastodon-actor.json") |> Jason.decode!() Mock @@ -245,12 +246,28 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.CommentsTest do end) data = File.read!("test/fixtures/mastodon-post-activity-private.json") |> Jason.decode!() - event = insert(:event) + %Event{organizer_actor_id: organizer_actor_id} = event = insert(:event) object = data["object"] object = Map.put(object, "inReplyTo", event.url) data = Map.put(data, "object", object) - :error = Transmogrifier.handle_incoming(data) + {:ok, %Activity{data: _data, local: false}, %Conversation{} = conversation} = + Transmogrifier.handle_incoming(data) + + {:ok, %Actor{id: actor_1_id}} = Actors.get_actor_by_url("https://framapiaf.org/users/tcit") + {:ok, %Actor{id: actor_2_id}} = Actors.get_actor_by_url("https://framapiaf.org/users/admin") + + assert conversation.event_id == event.id + assert conversation.last_comment.visibility == :private + assert conversation.last_comment.actor_id == actor_2_id + assert conversation.last_comment_id == conversation.origin_comment_id + assert is_nil(conversation.last_comment.in_reply_to_comment_id) + assert is_nil(conversation.last_comment.origin_comment_id) + + participants_id = Enum.map(conversation.participants, & &1.id) + + assert MapSet.new(participants_id) == + MapSet.new([organizer_actor_id, actor_1_id, actor_2_id]) end test "it works for incoming notices" do diff --git a/test/graphql/resolvers/conversation_test.exs b/test/graphql/resolvers/conversation_test.exs index 7c1479f4e..f8d891f1c 100644 --- a/test/graphql/resolvers/conversation_test.exs +++ b/test/graphql/resolvers/conversation_test.exs @@ -1,8 +1,6 @@ defmodule Mobilizon.GraphQL.Resolvers.ConversationTest do use Mobilizon.Web.ConnCase - alias Mobilizon.Actors - alias Mobilizon.Actors.Actor - + alias Mobilizon.Discussions alias Mobilizon.GraphQL.AbsintheHelpers import Mobilizon.Factory @@ -47,7 +45,10 @@ defmodule Mobilizon.GraphQL.Resolvers.ConversationTest do test "for a given event", %{conn: conn, user: user, actor: actor} do event = insert(:event, organizer_actor: actor) conversation = insert(:conversation, event: event) - another_comment = build(:comment, origin_comment: conversation.origin_comment) + another_comment = insert(:comment, origin_comment: conversation.origin_comment) + + Discussions.update_comment(conversation.origin_comment, %{conversation_id: conversation.id}) + Discussions.update_comment(another_comment, %{conversation_id: conversation.id}) conversation_participant = insert(:conversation_participant, actor: actor, conversation: conversation) @@ -66,10 +67,18 @@ defmodule Mobilizon.GraphQL.Resolvers.ConversationTest do conversation_data = hd(res["data"]["event"]["conversations"]["elements"]) assert conversation_data["id"] == to_string(conversation.id) assert conversation_data["lastComment"]["text"] == conversation.last_comment.text - assert conversation_data["comments"]["total"] == 2 - assert conversation_data["comments"]["elements"] - |> Enum.any?(fn comment -> comment.text == conversation.origin_comment.text end) + assert conversation_data["comments"]["total"] == 2 + comments = conversation_data["comments"]["elements"] + + assert MapSet.new(Enum.map(comments, & &1["id"])) == + [conversation.origin_comment.id, another_comment.id] + |> Enum.map(&to_string/1) + |> MapSet.new() + + assert Enum.any?(comments, fn comment -> + comment["text"] == conversation.origin_comment.text + end) assert conversation_data["actor"]["preferredUsername"] == conversation_participant.actor.preferred_username diff --git a/test/mobilizon/conversations_test.exs b/test/mobilizon/conversations_test.exs index 1ff2e64ad..8572fe74b 100644 --- a/test/mobilizon/conversations_test.exs +++ b/test/mobilizon/conversations_test.exs @@ -1,4 +1,4 @@ -defmodule Mobilizon.DiscussionsTest do +defmodule Mobilizon.ConversationsTest do use Mobilizon.DataCase import Mobilizon.Factory diff --git a/test/service/activity/conversation_test.exs b/test/service/activity/conversation_test.exs index bd6b819e5..2639d1fea 100644 --- a/test/service/activity/conversation_test.exs +++ b/test/service/activity/conversation_test.exs @@ -5,7 +5,7 @@ defmodule Mobilizon.Service.Activity.ConversationTest do alias Mobilizon.Actors.Actor alias Mobilizon.Conversations - alias Mobilizon.Conversations.Conversation + alias Mobilizon.Conversations.{Conversation, ConversationParticipant} alias Mobilizon.Discussions.Comment alias Mobilizon.Service.Activity.Conversation, as: ConversationActivity alias Mobilizon.Service.Workers.LegacyNotifierBuilder @@ -20,11 +20,19 @@ defmodule Mobilizon.Service.Activity.ConversationTest do %User{} = user = insert(:user) %Actor{id: actor_id} = actor = insert(:actor, user: user) - %Conversation{id: conversation_id, last_comment: %Comment{actor_id: last_comment_actor_id}} = - conversation = insert(:conversation) + %Conversation{ + id: conversation_id, + last_comment: %Comment{actor_id: last_comment_actor_id} + } = + conversation = insert(:conversation, event: nil) - insert(:conversation_participant, actor: actor, conversation: conversation) - insert(:conversation_participant, conversation: conversation) + %ConversationParticipant{id: conversation_participant_actor_id} = + insert(:conversation_participant, actor: actor, conversation: conversation) + + %ConversationParticipant{ + id: conversation_participant_id, + actor: %Actor{id: conversation_other_participant_actor_id} + } = insert(:conversation_participant, conversation: conversation) conversation = Conversations.get_conversation(conversation_id) @@ -35,13 +43,14 @@ defmodule Mobilizon.Service.Activity.ConversationTest do worker: LegacyNotifierBuilder, args: %{ "author_id" => last_comment_actor_id, - "participants" => [actor_id], + "participant" => %{"actor_id" => actor_id, "id" => conversation_participant_actor_id}, "object_id" => to_string(conversation_id), "object_type" => "conversation", "op" => "legacy_notify", "subject" => "conversation_created", "subject_params" => %{ - "conversation_id" => conversation_id + "conversation_id" => conversation_id, + "conversation_participant_id" => conversation_participant_actor_id }, "type" => "conversation" } @@ -50,19 +59,20 @@ defmodule Mobilizon.Service.Activity.ConversationTest do assert_enqueued( worker: LegacyNotifierBuilder, args: %{ - "author_id" => author_id, - "object_id" => to_string(comment_id), - "object_type" => "comment", - "op" => "legacy_notify", - "subject" => "event_new_comment", - "subject_params" => %{ - "comment_reply_to_uuid" => nil, - "event_title" => event_title, - "event_uuid" => event_uuid, - "comment_reply_to" => false, - "comment_uuid" => comment_uuid + "author_id" => last_comment_actor_id, + "participant" => %{ + "actor_id" => conversation_other_participant_actor_id, + "id" => conversation_participant_id }, - "type" => "comment" + "object_id" => to_string(conversation_id), + "object_type" => "conversation", + "op" => "legacy_notify", + "subject" => "conversation_created", + "subject_params" => %{ + "conversation_id" => conversation_id, + "conversation_participant_id" => conversation_participant_id + }, + "type" => "conversation" } ) end From 8d1107396532e9402dc7ed61b47543c3e528cea6 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 15 Nov 2023 16:36:23 +0100 Subject: [PATCH 14/18] build: only run ecto create & migrate & tz_world update on prepare_test task, not main test one Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- Makefile | 1 + docker-compose.test.yml | 2 +- mix.exs | 6 ++++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 7f2d40aba..c8b79d041 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ stop: @bash docker/message.sh "Mobilizon is stopped" test: stop @bash docker/message.sh "Running tests" + docker-compose -f docker-compose.yml -f docker-compose.test.yml run api mix prepare_test docker-compose -f docker-compose.yml -f docker-compose.test.yml run api mix test $(only) @bash docker/message.sh "Done running tests" format: diff --git a/docker-compose.test.yml b/docker-compose.test.yml index d597638a3..b65956505 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -11,7 +11,7 @@ services: MIX_ENV: "test" MOBILIZON_DATABASE_DBNAME: mobilizon_test MOBILIZON_INSTANCE_HOST: mobilizon.test - command: "mix test" + command: "mix prepare_test && mix test" volumes: pgdata: .: diff --git a/mix.exs b/mix.exs index cf3ddeeb2..72aade5e7 100644 --- a/mix.exs +++ b/mix.exs @@ -258,10 +258,12 @@ defmodule Mobilizon.Mixfile do "ecto.drop", "ecto.setup" ], - test: [ + prepare_test: [ "ecto.create", "ecto.migrate", - "tz_world.update", + "tz_world.update" + ], + test: [ &run_test/1 ], "phx.deps_migrate_serve": [ From f24866012b5ba12569025d6c265b02c65f73f8f5 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 15 Nov 2023 17:30:35 +0100 Subject: [PATCH 15/18] test: fix ActivityPub headers test Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- test/federation/activity_pub/activity_pub_test.exs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test/federation/activity_pub/activity_pub_test.exs b/test/federation/activity_pub/activity_pub_test.exs index f316e09d1..347f757fd 100644 --- a/test/federation/activity_pub/activity_pub_test.exs +++ b/test/federation/activity_pub/activity_pub_test.exs @@ -34,7 +34,17 @@ defmodule Mobilizon.Federation.ActivityPubTest do date: Signature.generate_date_header() }) - assert signature =~ "headers=\"date host digest content-length (request-target)\"" + headers = + signature + |> String.split(",") + |> Enum.find(&String.starts_with?(&1, "headers")) + |> String.replace_prefix("headers=\"", "") + |> String.replace_suffix("\"", "") + |> String.split(" ") + |> MapSet.new() + + assert headers == + MapSet.new(["date", "host", "digest", "content-length", "(request-target)"]) end end From 3c288c58582f0f5b3017a95734d695107d6d174f Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Wed, 15 Nov 2023 18:15:21 +0100 Subject: [PATCH 16/18] fix: build pictures at correct location and fix Plug.Static Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- lib/web/endpoint.ex | 30 +++++++++++++++--------------- lib/web/router.ex | 1 - scripts/build/pictures.sh | 2 +- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/lib/web/endpoint.ex b/lib/web/endpoint.ex index 1f53c865e..d8bf794bf 100644 --- a/lib/web/endpoint.ex +++ b/lib/web/endpoint.ex @@ -10,6 +10,21 @@ defmodule Mobilizon.Web.Endpoint do use Phoenix.Endpoint, otp_app: :mobilizon use Absinthe.Phoenix.Endpoint + # Serve at "/" the static files from "priv/static" directory. + # + # You should set gzip to true if you are running phoenix.digest + # when deploying your static files in production. + plug( + Plug.Static, + at: "/", + from: {:mobilizon, "priv/static"}, + gzip: false, + only: Mobilizon.Web.static_paths() + # only_matching: ["precache-manifest"] + ) + + plug(Mobilizon.Web.Plugs.UploadedMedia) + plug(Mobilizon.Web.Plugs.DetectLocalePlug) if Application.compile_env(:mobilizon, :env) !== :dev do @@ -37,21 +52,6 @@ defmodule Mobilizon.Web.Endpoint do do: RemoteIp ) - plug(Mobilizon.Web.Plugs.UploadedMedia) - - # Serve at "/" the static files from "priv/static" directory. - # - # You should set gzip to true if you are running phoenix.digest - # when deploying your static files in production. - plug( - Plug.Static, - at: "/", - from: {:mobilizon, "priv/static"}, - gzip: false, - only: Mobilizon.Web.static_paths(), - only_matching: ["precache-manifest"] - ) - # Code reloading can be explicitly enabled under the # :code_reloader configuration of your endpoint. if code_reloading? do diff --git a/lib/web/router.ex b/lib/web/router.ex index 037d256c1..c290d2683 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -72,7 +72,6 @@ defmodule Mobilizon.Web.Router do pipeline :browser do plug(:put_request_context) - plug(Plug.Static, at: "/", from: "priv/static") plug(Mobilizon.Web.Plugs.SetLocalePlug) diff --git a/scripts/build/pictures.sh b/scripts/build/pictures.sh index 999d136ef..ef0d3422a 100755 --- a/scripts/build/pictures.sh +++ b/scripts/build/pictures.sh @@ -2,7 +2,7 @@ set -eu -output_dir="../priv/static/img/pics" +output_dir="priv/static/img/pics" resolutions=( 480 1024 From b635937091032edd5f6222ae425b22e2db1f9793 Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Mon, 20 Nov 2023 09:35:21 +0100 Subject: [PATCH 17/18] fix: various fixes Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .../activity_pub/types/conversation.ex | 6 + lib/graphql/resolvers/conversation.ex | 14 +- lib/graphql/resolvers/participant.ex | 20 +- lib/mobilizon/discussions/comment.ex | 2 +- lib/service/activity/conversation.ex | 9 +- lib/service/formatter/html.ex | 14 ++ lib/service/formatter/text.ex | 37 ++++ .../workers/legacy_notifier_builder.ex | 7 + lib/web/email/activity.ex | 33 +++ .../email/email_anonymous_activity.html.heex | 205 +++++++++++++----- .../email/email_anonymous_activity.text.eex | 25 ++- lib/web/views/email_view.ex | 16 ++ src/assets/oruga-tailwindcss.css | 11 +- src/components/Account/ActorAutoComplete.vue | 15 +- src/components/Account/ActorCard.vue | 16 +- src/components/Account/ActorInline.vue | 4 - .../Conversations/ConversationListItem.vue | 2 +- .../Conversations/NewConversation.vue | 60 ++++- .../Participation/NewPrivateMessage.vue | 50 ++++- .../Participation/UnloggedParticipation.vue | 6 +- src/graphql/conversations.ts | 2 - src/i18n/en_US.json | 5 +- src/i18n/fr_FR.json | 5 +- src/oruga-config.ts | 3 +- src/utils/route.ts | 10 + src/views/Admin/InstancesView.vue | 2 +- .../Conversations/ConversationListView.vue | 24 +- src/views/Conversations/ConversationView.vue | 59 ++++- src/views/Event/EditView.vue | 12 +- src/views/Event/ParticipantsView.vue | 2 + src/views/Group/GroupView.vue | 15 ++ src/views/HomeView.vue | 6 +- src/views/SearchView.vue | 11 +- 33 files changed, 579 insertions(+), 129 deletions(-) create mode 100644 lib/service/formatter/text.ex create mode 100644 src/utils/route.ts diff --git a/lib/federation/activity_pub/types/conversation.ex b/lib/federation/activity_pub/types/conversation.ex index b72cef022..6bb8c7918 100644 --- a/lib/federation/activity_pub/types/conversation.ex +++ b/lib/federation/activity_pub/types/conversation.ex @@ -147,6 +147,12 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Conversations do (args |> Map.get(:mentions, []) |> prepare_mentions()) ++ ConverterUtils.fetch_mentions(mentions) + # Can't create a conversation with just ourselves + mentions = + Enum.filter(mentions, fn %{actor_id: actor_id} -> + to_string(actor_id) != to_string(args.actor_id) + end) + if Enum.empty?(mentions) do {:error, :empty_participants} else diff --git a/lib/graphql/resolvers/conversation.ex b/lib/graphql/resolvers/conversation.ex index 00f95de53..33c76c333 100644 --- a/lib/graphql/resolvers/conversation.ex +++ b/lib/graphql/resolvers/conversation.ex @@ -11,8 +11,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do alias Mobilizon.Storage.Page alias Mobilizon.Users.User alias Mobilizon.Web.Endpoint - # alias Mobilizon.Users.User import Mobilizon.Web.Gettext, only: [dgettext: 2] + require Logger @spec find_conversations_for_event(Event.t(), map(), Absinthe.Resolution.t()) :: {:ok, Page.t(ConversationView.t())} | {:error, :unauthenticated} @@ -157,9 +157,17 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do {:ok, conversation_to_view(conversation, conversation_participant_actor)} {:error, :empty_participants} -> - {:error, dgettext("errors", "Conversation needs to mention at least one participant")} + {:error, + dgettext( + "errors", + "Conversation needs to mention at least one participant that's not yourself" + )} end else + Logger.debug( + "Actor #{current_actor.id} is not authorized to reply to conversation #{inspect(Map.get(args, :conversation_id))}" + ) + {:error, :unauthorized} end end @@ -259,7 +267,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do %Conversation{participants: participants} -> participant_ids = Enum.map(participants, fn participant -> to_string(participant.id) end) - current_actor_id in participant_ids or + to_string(current_actor_id) in participant_ids or Enum.any?(participant_ids, fn participant_id -> Actors.is_member?(current_actor_id, participant_id) and attributed_to_id == participant_id diff --git a/lib/graphql/resolvers/participant.ex b/lib/graphql/resolvers/participant.ex index 520ecb149..23e739873 100644 --- a/lib/graphql/resolvers/participant.ex +++ b/lib/graphql/resolvers/participant.ex @@ -2,8 +2,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do @moduledoc """ Handles the participation-related GraphQL calls. """ - # alias Mobilizon.Conversations.ConversationParticipant - alias Mobilizon.{Actors, Config, Crypto, Events} + alias Mobilizon.{Actors, Config, Conversations, Crypto, Events} alias Mobilizon.Actors.Actor alias Mobilizon.Conversations.{Conversation, ConversationView} alias Mobilizon.Events.{Event, Participant} @@ -386,6 +385,13 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do {:member, false} -> {:error, :unauthorized} + {:error, :empty_participants} -> + {:error, + dgettext( + "errors", + "There are no participants matching the audience you've selected." + )} + {:error, err} -> {:error, err} end @@ -394,11 +400,19 @@ defmodule Mobilizon.GraphQL.Resolvers.Participant do def send_private_messages_to_participants(_parent, _args, _resolution), do: {:error, :unauthorized} - defp conversation_to_view(%Conversation{} = conversation, %Actor{} = actor) do + defp conversation_to_view( + %Conversation{id: conversation_id} = conversation, + %Actor{id: actor_id} = actor + ) do value = conversation |> Map.from_struct() |> Map.put(:actor, actor) + |> Map.put(:unread, false) + |> Map.put( + :conversation_participant_id, + Conversations.get_participant_by_conversation_and_actor(conversation_id, actor_id).id + ) struct(ConversationView, value) end diff --git a/lib/mobilizon/discussions/comment.ex b/lib/mobilizon/discussions/comment.ex index 0bd20f245..151f45218 100644 --- a/lib/mobilizon/discussions/comment.ex +++ b/lib/mobilizon/discussions/comment.ex @@ -77,7 +77,7 @@ defmodule Mobilizon.Discussions.Comment do belongs_to(:conversation, Conversation) has_many(:replies, Comment, foreign_key: :origin_comment_id) many_to_many(:tags, Tag, join_through: "comments_tags", on_replace: :delete) - has_many(:mentions, Mention) + has_many(:mentions, Mention, on_replace: :delete) many_to_many(:media, Media, join_through: "comments_medias", on_replace: :delete) timestamps(type: :utc_datetime) diff --git a/lib/service/activity/conversation.ex b/lib/service/activity/conversation.ex index f9dfe9738..3f31f1db0 100644 --- a/lib/service/activity/conversation.ex +++ b/lib/service/activity/conversation.ex @@ -79,11 +79,16 @@ defmodule Mobilizon.Service.Activity.Conversation do defp send_participant_notifications(_, _, _, _), do: {:ok, :skipped} defp event_subject_params(%Conversation{ - event: %Event{id: conversation_event_id, title: conversation_event_title} + event: %Event{ + id: conversation_event_id, + title: conversation_event_title, + uuid: conversation_event_uuid + } }), do: %{ conversation_event_id: conversation_event_id, - conversation_event_title: conversation_event_title + conversation_event_title: conversation_event_title, + conversation_event_uuid: conversation_event_uuid } defp event_subject_params(_), do: %{} diff --git a/lib/service/formatter/html.ex b/lib/service/formatter/html.ex index 5544eeded..67948d030 100644 --- a/lib/service/formatter/html.ex +++ b/lib/service/formatter/html.ex @@ -14,6 +14,8 @@ defmodule Mobilizon.Service.Formatter.HTML do def filter_tags(html), do: Sanitizer.scrub(html, DefaultScrubbler) + defdelegate basic_html(html), to: FastSanitize + @spec strip_tags(String.t()) :: String.t() | no_return() def strip_tags(html) do case FastSanitize.strip_tags(html) do @@ -39,5 +41,17 @@ defmodule Mobilizon.Service.Formatter.HTML do def strip_tags_and_insert_spaces(html), do: html + @spec html_to_text(String.t()) :: String.t() + def html_to_text(html) do + html + |> String.replace(~r/<li>/, "\\g{1}- ", global: true) + |> String.replace( + ~r/<\/?\s?br>|<\/\s?p>|<\/\s?li>|<\/\s?div>|<\/\s?h.>/, + "\\g{1}\n\r", + global: true + ) + |> strip_tags() + end + def filter_tags_for_oembed(html), do: Sanitizer.scrub(html, OEmbed) end diff --git a/lib/service/formatter/text.ex b/lib/service/formatter/text.ex new file mode 100644 index 000000000..140502f16 --- /dev/null +++ b/lib/service/formatter/text.ex @@ -0,0 +1,37 @@ +defmodule Mobilizon.Service.Formatter.Text do + @moduledoc """ + Helps to format text blocks + + Inspired from https://elixirforum.com/t/is-there-are-text-wrapping-library-for-elixir/21733/4 + Using the Knuth-Plass Line Wrapping Algorithm https://www.students.cs.ubc.ca/~cs-490/2015W2/lectures/Knuth.pdf + """ + + def quote_paragraph(string, max_line_length) do + paragraph(string, max_line_length, "> ") + end + + def paragraph(string, max_line_length, prefix \\ "") do + string + |> String.split("\n\n", trim: true) + |> Enum.map(&subparagraph(&1, max_line_length, prefix)) + |> Enum.join("\n#{prefix}\n") + end + + defp subparagraph(string, max_line_length, prefix) do + [word | rest] = String.split(string, ~r/\s+/, trim: true) + + lines_assemble(rest, max_line_length - String.length(prefix), String.length(word), word, []) + |> Enum.map(&"#{prefix}#{&1}") + |> Enum.join("\n") + end + + defp lines_assemble([], _, _, line, acc), do: [line | acc] |> Enum.reverse() + + defp lines_assemble([word | rest], max, line_length, line, acc) do + if line_length + 1 + String.length(word) > max do + lines_assemble(rest, max, String.length(word), word, [line | acc]) + else + lines_assemble(rest, max, line_length + 1 + String.length(word), line <> " " <> word, acc) + end + end +end diff --git a/lib/service/workers/legacy_notifier_builder.ex b/lib/service/workers/legacy_notifier_builder.ex index 4c0f776c7..a00e19260 100644 --- a/lib/service/workers/legacy_notifier_builder.ex +++ b/lib/service/workers/legacy_notifier_builder.ex @@ -22,6 +22,13 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do notify_anonymous_participants(get_in(args, ["subject_params", "event_id"]), activity) end + if args["subject"] == "conversation_created" do + notify_anonymous_participants( + get_in(args, ["subject_params", "conversation_event_id"]), + activity + ) + end + args |> users_to_notify(author_id: args["author_id"], group_id: Map.get(args, "group_id")) |> Enum.each(¬ify_user(&1, activity)) diff --git a/lib/web/email/activity.ex b/lib/web/email/activity.ex index 4f3f1a9f1..686360e0f 100644 --- a/lib/web/email/activity.ex +++ b/lib/web/email/activity.ex @@ -10,6 +10,7 @@ defmodule Mobilizon.Web.Email.Activity do alias Mobilizon.Actors.Actor alias Mobilizon.Config alias Mobilizon.Web.Email + require Logger @spec direct_activity(String.t(), list(), Keyword.t()) :: Swoosh.Email.t() def direct_activity( @@ -39,6 +40,36 @@ defmodule Mobilizon.Web.Email.Activity do end @spec anonymous_activity(String.t(), Activity.t(), Keyword.t()) :: Swoosh.Email.t() + def anonymous_activity( + email, + %Activity{subject_params: subject_params, type: :conversation} = activity, + options + ) do + locale = Keyword.get(options, :locale, "en") + + subject = + dgettext( + "activity", + "Informations about your event %{event}", + event: subject_params["conversation_event_title"] + ) + + conversation = Mobilizon.Conversations.get_conversation(activity.object_id) + + Logger.debug("Going to send anonymous activity of type #{activity.type} to #{email}") + + [to: email, subject: subject] + |> Email.base_email() + |> render_body(:email_anonymous_activity, %{ + subject: subject, + activity: activity, + locale: locale, + extra: %{ + "conversation" => conversation + } + }) + end + def anonymous_activity(email, %Activity{subject_params: subject_params} = activity, options) do locale = Keyword.get(options, :locale, "en") @@ -49,6 +80,8 @@ defmodule Mobilizon.Web.Email.Activity do event: subject_params["event_title"] ) + Logger.debug("Going to send anonymous activity of type #{activity.type} to #{email}") + [to: email, subject: subject] |> Email.base_email() |> render_body(:email_anonymous_activity, %{ diff --git a/lib/web/templates/email/email_anonymous_activity.html.heex b/lib/web/templates/email/email_anonymous_activity.html.heex index 4e0d9421e..b08a0652f 100644 --- a/lib/web/templates/email/email_anonymous_activity.html.heex +++ b/lib/web/templates/email/email_anonymous_activity.html.heex @@ -35,61 +35,164 @@ <tr> <td align="center" valign="top" width="600"> <![endif]--> - <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;"> - <!-- COPY --> - <tr> - <td bgcolor="#ffffff" align="left"> - <table width="100%" border="0" cellspacing="0" cellpadding="0"> - <tr> - <td - align="center" - style="border-radius: 3px; text-align: left; padding: 10px 5% 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 400;line-height: 25px;" - > - <%= dgettext( - "activity", - "%{profile} has posted an announcement under event %{event}.", - %{ - profile: "<b>#{escape_html(display_name_and_username(@activity.author))}</b>", - event: - "<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint, - :event, - @activity.subject_params["event_uuid"]) |> URI.decode()}\"> + <%= case @activity.type do %> + <% :comment -> %> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;"> + <!-- COPY --> + <tr> + <td bgcolor="#ffffff" align="left"> + <table width="100%" border="0" cellspacing="0" cellpadding="0"> + <tr> + <td + align="center" + style="border-radius: 3px; text-align: left; padding: 10px 5% 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 400;line-height: 25px;" + > + <%= dgettext( + "activity", + "%{profile} has posted a public announcement under event %{event}.", + %{ + profile: + "<b>#{escape_html(display_name_and_username(@activity.author))}</b>", + event: + "<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint, + :event, + @activity.subject_params["event_uuid"]) |> URI.decode()}\"> #{escape_html(@activity.subject_params["event_title"])} </a>" - } - ) - |> raw %> - </td> - </tr> - </table> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" align="left"> - <table width="100%" border="0" cellspacing="0" cellpadding="0"> - <tr> - <td bgcolor="#ffffff" align="center" style="padding: 20px 30px 60px 30px;"> - <table border="0" cellspacing="0" cellpadding="0"> - <tr> - <td align="center" style="border-radius: 3px;" bgcolor="#3C376E"> - <a - href={ + } + ) + |> raw %> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left"> + <table width="100%" border="0" cellspacing="0" cellpadding="0"> + <tr> + <td bgcolor="#ffffff" align="center" style="padding: 20px 30px 60px 30px;"> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td align="center" style="border-radius: 3px;" bgcolor="#3C376E"> + <a + href={ "#{Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"])}" } - target="_blank" - style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" - > - <%= gettext("Visit event page") %> - </a> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> + target="_blank" + style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" + > + <%= gettext("Visit event page") %> + </a> + </td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + </table> + <% :conversation -> %> + <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;"> + <!-- COPY --> + <tr> + <td bgcolor="#ffffff" align="left"> + <table width="100%" border="0" cellspacing="0" cellpadding="0"> + <tr> + <td + align="center" + style="border-radius: 3px; text-align: left; padding: 10px 5% 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 400;line-height: 25px;" + > + <%= dgettext( + "activity", + "%{profile} has posted a private announcement about event %{event}.", + %{ + profile: + "<b>#{escape_html(display_name_and_username(@activity.author))}</b>", + event: + "<a href=\"#{Routes.page_url(Mobilizon.Web.Endpoint, + :event, + @activity.subject_params["conversation_event_uuid"]) |> URI.decode()}\"> + #{escape_html(@activity.subject_params["conversation_event_title"])} + </a>" + } + ) + |> raw %> + <%= dgettext( + "activity", + "It might give details on how to join the event, so make sure to read it appropriately." + ) %> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left"> + <table width="100%" border="0" cellspacing="0" cellpadding="0"> + <tr> + <td bgcolor="#ffffff" align="center" style="padding: 20px 30px 60px 30px;"> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td align="center"> + <blockquote style="border-left-width: 0.25rem;border-left-color: #e2e8f0;border-left-style: solid;padding-left: 1em;margin: 0;text-align: start;color: #474467;font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 400;line-height: 25px;"> + <%= @extra["conversation"].last_comment.text + |> sanitize_to_basic_html() + |> raw() %> + </blockquote> + </td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left"> + <table width="100%" border="0" cellspacing="0" cellpadding="0"> + <tr> + <td + align="center" + style="border-radius: 3px; text-align: left; padding: 10px 5% 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 400;line-height: 25px;" + > + <%= dgettext( + "activity", + "This information is sent privately to you as a person who registered for this event. Share the informations above with other people with caution." + ) %> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" align="left"> + <table width="100%" border="0" cellspacing="0" cellpadding="0"> + <tr> + <td bgcolor="#ffffff" align="center" style="padding: 20px 30px 60px 30px;"> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td align="center" style="border-radius: 3px;" bgcolor="#3C376E"> + <a + href={ + "#{Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["conversation_event_uuid"])}" + } + target="_blank" + style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;" + > + <%= gettext("Visit event page") %> + </a> + </td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + </table> + <% end %> <!--[if (gte mso 9)|(IE)]> </td> </tr> diff --git a/lib/web/templates/email/email_anonymous_activity.text.eex b/lib/web/templates/email/email_anonymous_activity.text.eex index c19b43834..106d81bd4 100644 --- a/lib/web/templates/email/email_anonymous_activity.text.eex +++ b/lib/web/templates/email/email_anonymous_activity.text.eex @@ -1,11 +1,30 @@ <%= @subject %> == - -<%= dgettext("activity", "%{profile} has posted an announcement under event %{event}.", +<%= case @activity.type do %> +<% :comment -> %> +<%= dgettext("activity", "%{profile} has posted a public announcement under event %{event}.", %{ profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), event: @activity.subject_params["event_title"] } ) %> -<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %> \ No newline at end of file +<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %> +<% :conversation -> %> +<%= dgettext("activity", "%{profile} has posted a private announcement about event %{event}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["conversation_event_title"] + } +) %> +<%= dgettext("activity", "It might give details on how to join the event, so make sure to read it appropriately.") %> + +-- + +<%= @extra["conversation"].last_comment.text |> html_to_text() |> mail_quote() %> + +-- + +<%= dgettext("activity", "This information is sent privately to you as a person who registered for this event. Share the informations above with other people with caution.") %> +<%= Routes.page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["conversation_event_uuid"]) |> URI.decode() %> +<% end %> \ No newline at end of file diff --git a/lib/web/views/email_view.ex b/lib/web/views/email_view.ex index 82b0e74d9..c24aa87f7 100644 --- a/lib/web/views/email_view.ex +++ b/lib/web/views/email_view.ex @@ -7,6 +7,7 @@ defmodule Mobilizon.Web.EmailView do alias Mobilizon.Actors.Actor alias Mobilizon.Service.Address alias Mobilizon.Service.DateTime, as: DateTimeRenderer + alias Mobilizon.Service.Formatter.{HTML, Text} alias Mobilizon.Web.Router.Helpers, as: Routes import Mobilizon.Web.Gettext import Mobilizon.Service.Metadata.Utils, only: [process_description: 1] @@ -35,6 +36,21 @@ defmodule Mobilizon.Web.EmailView do |> safe_to_string() end + @spec sanitize_to_basic_html(String.t()) :: String.t() + def sanitize_to_basic_html(html) do + case HTML.basic_html(html) do + {:ok, html} -> html + _ -> "" + end + end + + defdelegate html_to_text(html), to: HTML + + def mail_quote(text) do + # https://www.emailonacid.com/blog/article/email-development/line-length-in-html-email/ + Text.quote_paragraph(text, 78) + end + def escaped_display_name_and_username(actor) do actor |> display_name_and_username() diff --git a/src/assets/oruga-tailwindcss.css b/src/assets/oruga-tailwindcss.css index 2583e89fc..619c5af46 100644 --- a/src/assets/oruga-tailwindcss.css +++ b/src/assets/oruga-tailwindcss.css @@ -42,13 +42,13 @@ body { @apply bg-transparent text-black dark:text-white font-semibold py-2 px-4 border border-mbz-bluegreen dark:border-violet-3; } .btn-outlined-success { - @apply border-mbz-success hover:bg-mbz-success; + @apply border-2 border-mbz-success bg-transparent text-mbz-success hover:bg-mbz-success; } .btn-outlined-warning { @apply bg-transparent border dark:text-white hover:dark:text-slate-900 hover:bg-mbz-warning border-mbz-warning; } .btn-outlined-danger { - @apply border-mbz-danger hover:bg-mbz-danger; + @apply border-2 bg-transparent border-mbz-danger text-mbz-danger hover:bg-mbz-danger; } .btn-outlined-text { @apply bg-transparent hover:text-slate-900; @@ -161,15 +161,18 @@ body { } .dropdown-item-active { - @apply bg-white dark:bg-zinc-700 dark:text-zinc-100 text-black; + @apply bg-mbz-yellow-500 dark:bg-mbz-yellow-900 dark:text-zinc-100 text-black; } .dropdown-button { @apply inline-flex gap-1; } /* Checkbox */ - .checkbox { + margin-inline-end: 1rem; +} + +.checkbox-check { @apply appearance-none bg-primary border-primary; } diff --git a/src/components/Account/ActorAutoComplete.vue b/src/components/Account/ActorAutoComplete.vue index b95c37055..47da387aa 100644 --- a/src/components/Account/ActorAutoComplete.vue +++ b/src/components/Account/ActorAutoComplete.vue @@ -1,6 +1,6 @@ <template> <o-inputitems - :modelValue="modelValue" + :modelValue="modelValueWithDisplayName" @update:modelValue="(val: IActor[]) => $emit('update:modelValue', val)" :data="availableActors" :allow-autocomplete="true" @@ -21,10 +21,10 @@ import { SEARCH_PERSON_AND_GROUPS } from "@/graphql/search"; import { IActor, IGroup, IPerson, displayName } from "@/types/actor"; import { Paginate } from "@/types/paginate"; import { useLazyQuery } from "@vue/apollo-composable"; -import { ref } from "vue"; +import { computed, ref } from "vue"; import ActorInline from "./ActorInline.vue"; -defineProps<{ +const props = defineProps<{ modelValue: IActor[]; }>(); @@ -32,6 +32,15 @@ defineEmits<{ "update:modelValue": [value: IActor[]]; }>(); +const modelValue = computed(() => props.modelValue); + +const modelValueWithDisplayName = computed(() => + modelValue.value.map((actor) => ({ + ...actor, + displayName: displayName(actor), + })) +); + const { load: loadSearchPersonsAndGroupsQuery, refetch: refetchSearchPersonsAndGroupsQuery, diff --git a/src/components/Account/ActorCard.vue b/src/components/Account/ActorCard.vue index c4d49710d..2124b746d 100644 --- a/src/components/Account/ActorCard.vue +++ b/src/components/Account/ActorCard.vue @@ -39,8 +39,18 @@ v-html="actor.summary" /> </div> - <div class="flex pr-2"> - <Email /> + <div class="flex pr-2" v-if="actor.type === ActorType.PERSON"> + <router-link + :to="{ + name: RouteName.CONVERSATION_LIST, + query: { + newMessage: 'true', + personMentions: usernameWithDomain(actor), + }, + }" + > + <Email /> + </router-link> </div> </div> <!-- <div @@ -85,6 +95,8 @@ import { displayName, IActor, usernameWithDomain } from "../../types/actor"; import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; import Email from "vue-material-design-icons/Email.vue"; +import RouteName from "@/router/name"; +import { ActorType } from "@/types/enums"; withDefaults( defineProps<{ diff --git a/src/components/Account/ActorInline.vue b/src/components/Account/ActorInline.vue index b99a7d381..54e518b87 100644 --- a/src/components/Account/ActorInline.vue +++ b/src/components/Account/ActorInline.vue @@ -24,15 +24,11 @@ @{{ usernameWithDomain(actor) }} </p> </div> - <div class="flex pr-2 self-center"> - <Email /> - </div> </div> </template> <script lang="ts" setup> import { displayName, IActor, usernameWithDomain } from "../../types/actor"; import AccountCircle from "vue-material-design-icons/AccountCircle.vue"; -import Email from "vue-material-design-icons/Email.vue"; defineProps<{ actor: IActor; diff --git a/src/components/Conversations/ConversationListItem.vue b/src/components/Conversations/ConversationListItem.vue index cdc4a8110..8ac1913b1 100644 --- a/src/components/Conversations/ConversationListItem.vue +++ b/src/components/Conversations/ConversationListItem.vue @@ -1,6 +1,6 @@ <template> <router-link - class="flex gap-2 w-full items-center px-2 py-4 border-b-stone-200 border-b bg-white dark:bg-transparent" + class="flex gap-4 w-full items-center px-2 py-4 border-b-stone-200 border-b bg-white dark:bg-transparent" dir="auto" :to="{ name: RouteName.CONVERSATION, diff --git a/src/components/Conversations/NewConversation.vue b/src/components/Conversations/NewConversation.vue index 4895dea28..9e800cd94 100644 --- a/src/components/Conversations/NewConversation.vue +++ b/src/components/Conversations/NewConversation.vue @@ -9,6 +9,15 @@ :currentActor="currentActor" :placeholder="t('Write a new message')" /> + <o-notification + class="my-2" + variant="danger" + :closable="false" + v-for="error in errors" + :key="error" + > + {{ error }} + </o-notification> <footer class="flex gap-2 py-3 mx-2 justify-end"> <o-button :disabled="!canSend" nativeType="submit">{{ t("Send") @@ -18,13 +27,14 @@ </template> <script lang="ts" setup> -import { IActor, IPerson, usernameWithDomain } from "@/types/actor"; +import { IActor, IGroup, IPerson, usernameWithDomain } from "@/types/actor"; import { computed, defineAsyncComponent, provide, ref } from "vue"; import { useI18n } from "vue-i18n"; import ActorAutoComplete from "../../components/Account/ActorAutoComplete.vue"; import { DefaultApolloClient, provideApolloClient, + useLazyQuery, useMutation, } from "@vue/apollo-composable"; import { apolloClient } from "@/vue-apollo"; @@ -34,12 +44,15 @@ import { IConversation } from "@/types/conversation"; import { useCurrentActorClient } from "@/composition/apollo/actor"; import { useRouter } from "vue-router"; import RouteName from "@/router/name"; +import { FETCH_PERSON } from "@/graphql/actor"; +import { FETCH_GROUP_PUBLIC } from "@/graphql/group"; const props = withDefaults( defineProps<{ - mentions?: IActor[]; + personMentions?: string[]; + groupMentions?: string[]; }>(), - { mentions: () => [] } + { personMentions: () => [], groupMentions: () => [] } ); provide(DefaultApolloClient, apolloClient); @@ -48,15 +61,36 @@ const router = useRouter(); const emit = defineEmits(["close"]); -const actorMentions = ref(props.mentions); +const errors = ref<string[]>([]); -const textMentions = computed(() => - (props.mentions ?? []).map((actor) => usernameWithDomain(actor)).join(" ") +const textPersonMentions = computed(() => props.personMentions); +const textGroupMentions = computed(() => props.groupMentions); +const actorMentions = ref<IActor[]>([]); + +const { load: fetchPerson } = provideApolloClient(apolloClient)(() => + useLazyQuery<{ fetchPerson: IPerson }, { username: string }>(FETCH_PERSON) ); +const { load: fetchGroup } = provideApolloClient(apolloClient)(() => + useLazyQuery<{ group: IGroup }, { name: string }>(FETCH_GROUP_PUBLIC) +); +textPersonMentions.value.forEach(async (textPersonMention) => { + const result = await fetchPerson(FETCH_PERSON, { + username: textPersonMention, + }); + if (!result) return; + actorMentions.value.push(result.fetchPerson); +}); +textGroupMentions.value.forEach(async (textGroupMention) => { + const result = await fetchGroup(FETCH_GROUP_PUBLIC, { + name: textGroupMention, + }); + if (!result) return; + actorMentions.value.push(result.group); +}); const { t } = useI18n({ useScope: "global" }); -const text = ref(textMentions.value); +const text = ref(""); const Editor = defineAsyncComponent( () => import("../../components/TextEditor.vue") @@ -70,8 +104,8 @@ const canSend = computed(() => { return actorMentions.value.length > 0 || /@.+/.test(text.value); }); -const { mutate: postPrivateMessageMutate } = provideApolloClient(apolloClient)( - () => +const { mutate: postPrivateMessageMutate, onError: onPrivateMessageError } = + provideApolloClient(apolloClient)(() => useMutation< { postPrivateMessage: IConversation; @@ -116,7 +150,13 @@ const { mutate: postPrivateMessageMutate } = provideApolloClient(apolloClient)( }); }, }) -); + ); + +onPrivateMessageError((err) => { + err.graphQLErrors.forEach((error) => { + errors.value.push(error.message); + }); +}); const sendForm = async (e: Event) => { e.preventDefault(); diff --git a/src/components/Participation/NewPrivateMessage.vue b/src/components/Participation/NewPrivateMessage.vue index 9bfb7e001..ccc3225bc 100644 --- a/src/components/Participation/NewPrivateMessage.vue +++ b/src/components/Participation/NewPrivateMessage.vue @@ -1,5 +1,30 @@ <template> <form @submit="sendForm"> + <h2>{{ t("New announcement") }}</h2> + <p> + {{ + t( + "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you." + ) + }} + </p> + <o-field class="mt-2 mb-4"> + <o-checkbox + v-model="selectedRoles" + :native-value="ParticipantRole.PARTICIPANT" + :label="t('Participant')" + /> + <o-checkbox + v-model="selectedRoles" + :native-value="ParticipantRole.NOT_APPROVED" + :label="t('Not approved')" + /> + <o-checkbox + v-model="selectedRoles" + :native-value="ParticipantRole.REJECTED" + :label="t('Rejected')" + /> + </o-field> <Editor v-model="text" mode="basic" @@ -8,6 +33,15 @@ :currentActor="currentActor" :placeholder="t('Write a new message')" /> + <o-notification + class="my-2" + variant="danger" + :closable="true" + v-for="error in errors" + :key="error" + > + {{ error }} + </o-notification> <o-button class="mt-3" nativeType="submit">{{ t("Send") }}</o-button> </form> </template> @@ -32,9 +66,15 @@ const props = defineProps<{ const event = computed(() => props.event); const text = ref(""); + +const errors = ref<string[]>([]); + +const selectedRoles = ref<ParticipantRole[]>([ParticipantRole.PARTICIPANT]); + const { mutate: eventPrivateMessageMutate, onDone: onEventPrivateMessageMutated, + onError: onEventPrivateMessageError, } = useMutation< { sendEventPrivateMessage: IConversation; @@ -43,8 +83,7 @@ const { text: string; actorId: string; eventId: string; - roles?: string; - inReplyToActorId?: ParticipantRole[]; + roles?: ParticipantRole[]; language?: string; } >(SEND_EVENT_PRIVATE_MESSAGE_MUTATION, { @@ -96,6 +135,7 @@ const sendForm = (e: Event) => { event.value.organizerActor?.id ?? currentActor.value?.id, eventId: event.value.id, + roles: selectedRoles.value, }); }; @@ -103,6 +143,12 @@ onEventPrivateMessageMutated(() => { text.value = ""; }); +onEventPrivateMessageError((err) => { + err.graphQLErrors.forEach((error) => { + errors.value.push(error.message); + }); +}); + const Editor = defineAsyncComponent( () => import("../../components/TextEditor.vue") ); diff --git a/src/components/Participation/UnloggedParticipation.vue b/src/components/Participation/UnloggedParticipation.vue index b73cf14ee..8be6313a6 100644 --- a/src/components/Participation/UnloggedParticipation.vue +++ b/src/components/Participation/UnloggedParticipation.vue @@ -9,7 +9,7 @@ <router-link :to="{ name: RouteName.EVENT_PARTICIPATE_WITH_ACCOUNT }"> <figure class="flex justify-center my-2"> <img - src="../../../public/img/undraw_profile.svg" + src="/img/undraw_profile.svg" alt="Profile illustration" width="128" height="128" @@ -55,7 +55,7 @@ <img width="128" height="128" - src="../../../public/img/undraw_mail_2.svg" + src="/img/undraw_mail_2.svg" alt="Privacy illustration" /> </figure> @@ -66,7 +66,7 @@ <a :href="`${event.url}/participate/without-account`" v-else> <figure class="flex justify-center my-2"> <img - src="../../../public/img/undraw_mail_2.svg" + src="/img/undraw_mail_2.svg" width="128" height="128" alt="Privacy illustration" diff --git a/src/graphql/conversations.ts b/src/graphql/conversations.ts index 92069d81d..32af7f823 100644 --- a/src/graphql/conversations.ts +++ b/src/graphql/conversations.ts @@ -54,7 +54,6 @@ export const SEND_EVENT_PRIVATE_MESSAGE_MUTATION = gql` $actorId: ID! $eventId: ID! $roles: [ParticipantRoleEnum] - $attributedToId: ID $language: String ) { sendEventPrivateMessage( @@ -62,7 +61,6 @@ export const SEND_EVENT_PRIVATE_MESSAGE_MUTATION = gql` actorId: $actorId eventId: $eventId roles: $roles - attributedToId: $attributedToId language: $language ) { ...ConversationQuery diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index b9d5ae6f8..781aacae4 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -1625,5 +1625,8 @@ "You have access to this conversation as a member of the {group} group": "You have access to this conversation as a member of the {group} group", "Comment from an event announcement": "Comment from an event announcement", "Comment from a private conversation": "Comment from a private conversation", - "I've been mentionned in a conversation": "I've been mentionned in a conversation" + "I've been mentionned in a conversation": "I've been mentionned in a conversation", + "New announcement": "New announcement", + "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you.": "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you.", + "The following participants are groups, which means group members are able to reply to this conversation:": "The following participants are groups, which means group members are able to reply to this conversation:" } \ No newline at end of file diff --git a/src/i18n/fr_FR.json b/src/i18n/fr_FR.json index 897d13370..028e70b0d 100644 --- a/src/i18n/fr_FR.json +++ b/src/i18n/fr_FR.json @@ -1621,5 +1621,8 @@ "You have access to this conversation as a member of the {group} group": "Vous avez accès à cette conversation en tant que membre du groupe {group}", "Comment from an event announcement": "Commentaire d'une annonce d'événement", "Comment from a private conversation": "Commentaire d'une conversation privée", - "I've been mentionned in a conversation": "J'ai été mentionnée dans une conversation" + "I've been mentionned in a conversation": "J'ai été mentionnée dans une conversation", + "New announcement": "Nouvelle annonce", + "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you.": "Cette annonce sera envoyée à tous les participant·es ayant le statut sélectionné ci-dessous. Iels ne pourront pas répondre à votre annonce, mais iels peuvent créer une nouvelle conversation avec vous.", + "The following participants are groups, which means group members are able to reply to this conversation:": "Les participants suivants sont des groupes, ce qui signifie que les membres du groupes peuvent répondre dans cette conversation:" } diff --git a/src/oruga-config.ts b/src/oruga-config.ts index 165c37a39..38db635ec 100644 --- a/src/oruga-config.ts +++ b/src/oruga-config.ts @@ -35,7 +35,8 @@ export const orugaConfig = { variantClass: "icon-", }, checkbox: { - checkClass: "checkbox", + rootClass: "checkbox", + checkClass: "checkbox-check", checkCheckedClass: "checkbox-checked", labelClass: "checkbox-label", }, diff --git a/src/utils/route.ts b/src/utils/route.ts new file mode 100644 index 000000000..2c3f332b2 --- /dev/null +++ b/src/utils/route.ts @@ -0,0 +1,10 @@ +import { RouteQueryTransformer } from "vue-use-route-query"; + +export const arrayTransformer: RouteQueryTransformer<string[]> = { + fromQuery(query: string) { + return query.split(","); + }, + toQuery(value: string[]) { + return value.join(","); + }, +}; diff --git a/src/views/Admin/InstancesView.vue b/src/views/Admin/InstancesView.vue index a62f09cea..3dad71a07 100644 --- a/src/views/Admin/InstancesView.vue +++ b/src/views/Admin/InstancesView.vue @@ -80,7 +80,7 @@ <img class="w-12" v-if="instance.hasRelay" - src="../../../public/img/logo.svg" + src="/img/logo.svg" alt="" /> <CloudQuestion v-else :size="36" /> diff --git a/src/views/Conversations/ConversationListView.vue b/src/views/Conversations/ConversationListView.vue index 14c702dad..f903d147f 100644 --- a/src/views/Conversations/ConversationListView.vue +++ b/src/views/Conversations/ConversationListView.vue @@ -44,19 +44,28 @@ <script lang="ts" setup> import RouteName from "../../router/name"; import { useQuery } from "@vue/apollo-composable"; -import { computed, defineAsyncComponent, ref } from "vue"; +import { computed, defineAsyncComponent, ref, watchEffect } from "vue"; import { useI18n } from "vue-i18n"; -import { integerTransformer, useRouteQuery } from "vue-use-route-query"; +import { + booleanTransformer, + integerTransformer, + useRouteQuery, +} from "vue-use-route-query"; import { PROFILE_CONVERSATIONS } from "@/graphql/event"; import ConversationListItem from "../../components/Conversations/ConversationListItem.vue"; import EmptyContent from "../../components/Utils/EmptyContent.vue"; import { useHead } from "@vueuse/head"; import { IPerson } from "@/types/actor"; import { useProgrammatic } from "@oruga-ui/oruga-next"; +import { arrayTransformer } from "@/utils/route"; const page = useRouteQuery("page", 1, integerTransformer); const CONVERSATIONS_PER_PAGE = 10; +const showModal = useRouteQuery("newMessage", false, booleanTransformer); +const personMentions = useRouteQuery("personMentions", [], arrayTransformer); +const groupMentions = useRouteQuery("groupMentions", [], arrayTransformer); + const { t } = useI18n({ useScope: "global" }); useHead({ @@ -69,6 +78,7 @@ const { result: conversationsResult } = useQuery<{ loggedPerson: Pick<IPerson, "conversations">; }>(PROFILE_CONVERSATIONS, () => ({ page: page.value, + limit: CONVERSATIONS_PER_PAGE, })); const conversations = computed( @@ -88,7 +98,17 @@ const NewConversation = defineAsyncComponent( const openNewMessageModal = () => { oruga.modal.open({ component: NewConversation, + props: { + personMentions: personMentions.value, + groupMentions: groupMentions.value, + }, trapFocus: true, }); }; + +watchEffect(() => { + if (showModal.value) { + openNewMessageModal(); + } +}); </script> diff --git a/src/views/Conversations/ConversationView.vue b/src/views/Conversations/ConversationView.vue index d568f0b82..f92d53640 100644 --- a/src/views/Conversations/ConversationView.vue +++ b/src/views/Conversations/ConversationView.vue @@ -14,13 +14,13 @@ ]" /> <div - v-if="conversation.event" - class="bg-mbz-yellow p-6 mb-6 rounded flex gap-2 items-center" + v-if="conversation.event && !isCurrentActorAuthor" + class="bg-mbz-yellow p-6 mb-3 rounded flex gap-2 items-center" > <Calendar :size="36" /> <i18n-t tag="p" - keypath="This is a announcement from the organizers of event {event}" + keypath="This is a announcement from the organizers of event {event}. You can't reply to it, but you can send a private message to event organizers." > <template #event> <b> @@ -35,10 +35,7 @@ </template> </i18n-t> </div> - <div - v-if="currentActor && currentActor.id !== conversation.actor?.id" - class="bg-mbz-info p-6 rounded flex gap-2 items-center my-3" - > + <o-notification v-if="isCurrentActorAuthor" variant="info" closable> <i18n-t keypath="You have access to this conversation as a member of the {group} group" tag="p" @@ -55,7 +52,36 @@ > </template> </i18n-t> - </div> + </o-notification> + <o-notification + v-else-if="groupParticipants.length > 0 && !conversation.event" + variant="info" + closable + > + <p> + {{ + t( + "The following participants are groups, which means group members are able to reply to this conversation:" + ) + }} + </p> + <ul class="list-disc"> + <li + v-for="groupParticipant in groupParticipants" + :key="groupParticipant.id" + > + <router-link + :to="{ + name: RouteName.GROUP, + params: { + preferredUsername: usernameWithDomain(groupParticipant), + }, + }" + ><b>{{ displayName(groupParticipant) }}</b></router-link + > + </li> + </ul> + </o-notification> <o-notification v-if="error" variant="danger"> {{ error }} </o-notification> @@ -107,7 +133,7 @@ </form> <div v-else-if="conversation.event" - class="bg-mbz-yellow p-6 rounded flex gap-2 items-center mt-6" + class="bg-mbz-yellow p-6 rounded flex gap-2 items-center mt-3" > <Calendar :size="36" /> <i18n-t @@ -239,6 +265,12 @@ const otherParticipants = computed( ) ?? [] ); +const groupParticipants = computed(() => { + return otherParticipants.value.filter( + (participant) => participant.type === ActorType.GROUP + ); +}); + const Editor = defineAsyncComponent( () => import("../../components/TextEditor.vue") ); @@ -253,8 +285,15 @@ const title = computed(() => }) ); +const isCurrentActorAuthor = computed( + () => + currentActor.value && + conversation.value && + currentActor.value.id !== conversation.value?.actor?.id +); + useHead({ - title: title.value, + title: () => title.value, }); const newComment = ref(""); diff --git a/src/views/Event/EditView.vue b/src/views/Event/EditView.vue index a83fb61b3..c18eba759 100644 --- a/src/views/Event/EditView.vue +++ b/src/views/Event/EditView.vue @@ -650,12 +650,6 @@ const FullAddressAutoComplete = defineAsyncComponent( const { t } = useI18n({ useScope: "global" }); -useHead({ - title: computed(() => - props.isUpdate ? t("Event edition") : t("Event creation") - ), -}); - const props = withDefaults( defineProps<{ eventId?: undefined | string; @@ -667,6 +661,12 @@ const props = withDefaults( const eventId = computed(() => props.eventId); +useHead({ + title: computed(() => + props.isUpdate ? t("Event edition") : t("Event creation") + ), +}); + const event = ref<IEditableEvent>(new EventModel()); const unmodifiedEvent = ref<IEditableEvent>(new EventModel()); diff --git a/src/views/Event/ParticipantsView.vue b/src/views/Event/ParticipantsView.vue index 50447c2cb..4630b581f 100644 --- a/src/views/Event/ParticipantsView.vue +++ b/src/views/Event/ParticipantsView.vue @@ -225,6 +225,7 @@ @click="acceptParticipants(checkedRows)" variant="success" :disabled="!canAcceptParticipants" + outlined > {{ t( @@ -238,6 +239,7 @@ @click="refuseParticipants(checkedRows)" variant="danger" :disabled="!canRefuseParticipants" + outlined > {{ t( diff --git a/src/views/Group/GroupView.vue b/src/views/Group/GroupView.vue index e9532c49f..1ccc52e5e 100644 --- a/src/views/Group/GroupView.vue +++ b/src/views/Group/GroupView.vue @@ -266,6 +266,21 @@ : t("Deactivate notifications") }}</span> </o-button> + <o-button + outlined + tag="router-link" + :to="{ + name: RouteName.CONVERSATION_LIST, + query: { + newMessage: 'true', + groupMentions: usernameWithDomain(group), + }, + }" + icon-left="email" + v-if="!isCurrentActorAGroupMember || previewPublic" + > + {{ t("Contact") }} + </o-button> <o-button outlined icon-left="share" diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index e1f435275..15cacd6f3 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -5,19 +5,19 @@ <div class="-z-10 overflow-hidden"> <img alt="" - src="../../public/img/shape-1.svg" + src="/img/shape-1.svg" class="-z-10 absolute left-[2%] top-36" width="300" /> <img alt="" - src="../../public/img/shape-2.svg" + src="/img/shape-2.svg" class="-z-10 absolute left-[50%] top-[5%] -translate-x-2/4 opacity-60" width="800" /> <img alt="" - src="../../public/img/shape-3.svg" + src="/img/shape-3.svg" class="-z-10 absolute top-0 right-36" width="200" /> diff --git a/src/views/SearchView.vue b/src/views/SearchView.vue index 46faf5bf3..d1d2cc385 100644 --- a/src/views/SearchView.vue +++ b/src/views/SearchView.vue @@ -749,7 +749,6 @@ import { useRouteQuery, enumTransformer, booleanTransformer, - RouteQueryTransformer, } from "vue-use-route-query"; import Calendar from "vue-material-design-icons/Calendar.vue"; import AccountMultiple from "vue-material-design-icons/AccountMultiple.vue"; @@ -776,6 +775,7 @@ import lodashSortBy from "lodash/sortBy"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; import SkeletonGroupResultList from "@/components/Group/SkeletonGroupResultList.vue"; import SkeletonEventResultList from "@/components/Event/SkeletonEventResultList.vue"; +import { arrayTransformer } from "@/utils/route"; const EventMarkerMap = defineAsyncComponent( () => import("@/components/Search/EventMarkerMap.vue") @@ -840,15 +840,6 @@ enum SortValues { MEMBER_COUNT_DESC = "MEMBER_COUNT_DESC", } -const arrayTransformer: RouteQueryTransformer<string[]> = { - fromQuery(query: string) { - return query.split(","); - }, - toQuery(value: string[]) { - return value.join(","); - }, -}; - const props = defineProps<{ tag?: string; }>(); From 7ef85fe19bd401c81108a3711b9bb9714809287b Mon Sep 17 00:00:00 2001 From: Thomas Citharel <tcit@tcit.fr> Date: Mon, 20 Nov 2023 12:15:19 +0100 Subject: [PATCH 18/18] fix(announcements): load group announcements Signed-off-by: Thomas Citharel <tcit@tcit.fr> --- .sobelow-skips | 6 +- lib/graphql/resolvers/conversation.ex | 2 +- lib/service/formatter/text.ex | 9 +- .../Conversations/AnnouncementListItem.vue | 97 +++++++++++++++++++ .../Conversations/EventConversations.vue | 21 ++-- .../Participation/NewPrivateMessage.vue | 7 +- src/i18n/en_US.json | 3 +- src/i18n/fr_FR.json | 5 +- test/service/notifier/email_test.exs | 3 +- 9 files changed, 124 insertions(+), 29 deletions(-) create mode 100644 src/components/Conversations/AnnouncementListItem.vue diff --git a/.sobelow-skips b/.sobelow-skips index eb69fdfc3..3ce31fbbd 100644 --- a/.sobelow-skips +++ b/.sobelow-skips @@ -3,13 +3,13 @@ 1C29EE70E90ECED01AF28EC58D2575B5 31CE26BC979C57B9E3CC97B40C290CE5 3529E7A4CECC24D02678820E6F521162 -4A4B7002DEB734A943B467DF7D2BD1AA +37E854EA3BDF7275C6A7631F80804EC4 4E7C044C59E0BCB76AA826789998F624 53CBBEB6243FAF5C37249CBA17DE6F4C -5804C3D68F833A3E8D258C0704DEE775 5BCE3651A03711295046DE48BDFE007E +5C16A2AE6A24E4795F95DDE20EEC458E +5C4CED447689F00D9D1ACEB9B895ED29 630C0972985257251EDF89A7117DE423 -81BAE1F18B4148E83C3265F81FFA6F5C 94ACF7B17C3FF42F64E57DD1DA936BD8 A32E125003F1EDFAD95C487C6A969725 ACF6272A1DBB3A2ABD96C0C120B5CA69 diff --git a/lib/graphql/resolvers/conversation.ex b/lib/graphql/resolvers/conversation.ex index 33c76c333..5c76683ca 100644 --- a/lib/graphql/resolvers/conversation.ex +++ b/lib/graphql/resolvers/conversation.ex @@ -29,7 +29,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Conversation do if Actors.is_member?(actor_id, attributed_to_id) do {:ok, event_id - |> Conversations.find_conversations_for_event(actor_id, page, limit) + |> Conversations.find_conversations_for_event(attributed_to_id, page, limit) |> conversation_participant_to_view()} else {:ok, %Page{total: 0, elements: []}} diff --git a/lib/service/formatter/text.ex b/lib/service/formatter/text.ex index 140502f16..2a46e9f4c 100644 --- a/lib/service/formatter/text.ex +++ b/lib/service/formatter/text.ex @@ -13,16 +13,15 @@ defmodule Mobilizon.Service.Formatter.Text do def paragraph(string, max_line_length, prefix \\ "") do string |> String.split("\n\n", trim: true) - |> Enum.map(&subparagraph(&1, max_line_length, prefix)) - |> Enum.join("\n#{prefix}\n") + |> Enum.map_join("\n#{prefix}\n", &subparagraph(&1, max_line_length, prefix)) end defp subparagraph(string, max_line_length, prefix) do [word | rest] = String.split(string, ~r/\s+/, trim: true) - lines_assemble(rest, max_line_length - String.length(prefix), String.length(word), word, []) - |> Enum.map(&"#{prefix}#{&1}") - |> Enum.join("\n") + rest + |> lines_assemble(max_line_length - String.length(prefix), String.length(word), word, []) + |> Enum.map_join("\n", &"#{prefix}#{&1}") end defp lines_assemble([], _, _, line, acc), do: [line | acc] |> Enum.reverse() diff --git a/src/components/Conversations/AnnouncementListItem.vue b/src/components/Conversations/AnnouncementListItem.vue new file mode 100644 index 000000000..8d49311e4 --- /dev/null +++ b/src/components/Conversations/AnnouncementListItem.vue @@ -0,0 +1,97 @@ +<template> + <router-link + class="flex gap-4 w-full items-center px-2 py-4 border-b-stone-200 border-b bg-white dark:bg-transparent my-2 rounded" + dir="auto" + :to="{ + name: RouteName.CONVERSATION, + params: { id: announcement.conversationParticipantId }, + }" + > + <div class="overflow-hidden flex-1"> + <div class="flex items-center justify-between"> + <p> + {{ + t("Sent to {count} participants", otherParticipants.length, { + count: otherParticipants.length, + }) + }} + </p> + <div class="inline-flex items-center px-1.5"> + <time + class="whitespace-nowrap" + :datetime="actualDate.toString()" + :title="formatDateTimeString(actualDate)" + > + {{ distanceToNow }}</time + > + </div> + </div> + <div + class="line-clamp-4 my-1" + dir="auto" + v-if="!announcement.lastComment?.deletedAt" + > + {{ htmlTextEllipsis }} + </div> + <div v-else class=""> + {{ t("[This comment has been deleted]") }} + </div> + </div> + </router-link> +</template> +<script lang="ts" setup> +import { formatDistanceToNowStrict } from "date-fns"; +import { IConversation } from "../../types/conversation"; +import RouteName from "../../router/name"; +import { computed, inject } from "vue"; +import { formatDateTimeString } from "../../filters/datetime"; +import type { Locale } from "date-fns"; +import { useI18n } from "vue-i18n"; +import { useCurrentActorClient } from "@/composition/apollo/actor"; + +const props = defineProps<{ + announcement: IConversation; +}>(); + +const announcement = computed(() => props.announcement); + +const dateFnsLocale = inject<Locale>("dateFnsLocale"); +const { t } = useI18n({ useScope: "global" }); + +const distanceToNow = computed(() => { + return ( + formatDistanceToNowStrict(new Date(actualDate.value), { + locale: dateFnsLocale, + }) ?? t("Right now") + ); +}); + +const htmlTextEllipsis = computed((): string => { + const element = document.createElement("div"); + if (announcement.value.lastComment && announcement.value.lastComment.text) { + element.innerHTML = announcement.value.lastComment.text + .replace(/<br\s*\/?>/gi, " ") + .replace(/<p>/gi, " "); + } + return element.innerText; +}); + +const actualDate = computed((): string => { + if ( + announcement.value.updatedAt === announcement.value.insertedAt && + announcement.value.lastComment?.publishedAt + ) { + return announcement.value.lastComment.publishedAt; + } + return announcement.value.updatedAt; +}); + +const { currentActor } = useCurrentActorClient(); + +const otherParticipants = computed( + () => + announcement.value?.participants.filter( + (participant) => participant.id !== currentActor.value?.id + ) ?? [] +); +</script> diff --git a/src/components/Conversations/EventConversations.vue b/src/components/Conversations/EventConversations.vue index 77139b99e..83aa2c693 100644 --- a/src/components/Conversations/EventConversations.vue +++ b/src/components/Conversations/EventConversations.vue @@ -2,18 +2,10 @@ <div class="container mx-auto section"> <breadcrumbs-nav :links="[]" /> <section> - <h1>{{ t("Conversations") }}</h1> - <!-- <o-button - tag="router-link" - :to="{ - name: RouteName.CREATE_CONVERSATION, - params: { uuid: event.uuid }, - }" - >{{ t("New private message") }}</o-button - > --> + <h1>{{ t("Announcements") }}</h1> <div v-if="conversations.elements.length > 0"> - <conversation-list-item - :conversation="conversation" + <announcement-list-item + :announcement="conversation" v-for="conversation in conversations.elements" :key="conversation.id" /> @@ -30,15 +22,14 @@ > </o-pagination> </div> - <empty-content v-else icon="chat"> - {{ t("There's no conversations yet") }} + <empty-content v-else icon="bullhorn" inline> + {{ t("There's no announcements yet") }} </empty-content> </section> </div> </template> <script lang="ts" setup> -import ConversationListItem from "../../components/Conversations/ConversationListItem.vue"; -// import RouteName from "../../router/name"; +import AnnouncementListItem from "../../components/Conversations/AnnouncementListItem.vue"; import EmptyContent from "../../components/Utils/EmptyContent.vue"; import { useI18n } from "vue-i18n"; import { useRouteQuery, integerTransformer } from "vue-use-route-query"; diff --git a/src/components/Participation/NewPrivateMessage.vue b/src/components/Participation/NewPrivateMessage.vue index ccc3225bc..6491a8d48 100644 --- a/src/components/Participation/NewPrivateMessage.vue +++ b/src/components/Participation/NewPrivateMessage.vue @@ -42,7 +42,12 @@ > {{ error }} </o-notification> - <o-button class="mt-3" nativeType="submit">{{ t("Send") }}</o-button> + <o-button + class="mt-3" + nativeType="submit" + :disabled="selectedRoles.length == 0" + >{{ t("Send") }}</o-button + > </form> </template> diff --git a/src/i18n/en_US.json b/src/i18n/en_US.json index 781aacae4..dbbfe6c9d 100644 --- a/src/i18n/en_US.json +++ b/src/i18n/en_US.json @@ -1628,5 +1628,6 @@ "I've been mentionned in a conversation": "I've been mentionned in a conversation", "New announcement": "New announcement", "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you.": "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you.", - "The following participants are groups, which means group members are able to reply to this conversation:": "The following participants are groups, which means group members are able to reply to this conversation:" + "The following participants are groups, which means group members are able to reply to this conversation:": "The following participants are groups, which means group members are able to reply to this conversation:", + "Sent to {count} participants": "Sent to no participants|Sent to one participant|Sent to {count} participants" } \ No newline at end of file diff --git a/src/i18n/fr_FR.json b/src/i18n/fr_FR.json index 028e70b0d..01f8780d9 100644 --- a/src/i18n/fr_FR.json +++ b/src/i18n/fr_FR.json @@ -1624,5 +1624,6 @@ "I've been mentionned in a conversation": "J'ai été mentionnée dans une conversation", "New announcement": "Nouvelle annonce", "This announcement will be send to all participants with the statuses selected below. They will not be allowed to reply to your announcement, but they can create a new conversation with you.": "Cette annonce sera envoyée à tous les participant·es ayant le statut sélectionné ci-dessous. Iels ne pourront pas répondre à votre annonce, mais iels peuvent créer une nouvelle conversation avec vous.", - "The following participants are groups, which means group members are able to reply to this conversation:": "Les participants suivants sont des groupes, ce qui signifie que les membres du groupes peuvent répondre dans cette conversation:" -} + "The following participants are groups, which means group members are able to reply to this conversation:": "Les participants suivants sont des groupes, ce qui signifie que les membres du groupes peuvent répondre dans cette conversation:", + "Sent to {count} participants": "Envoyé à aucun·e participant·e|Envoyé à une participant·e|Envoyé à {count} participant·es" +} \ No newline at end of file diff --git a/test/service/notifier/email_test.exs b/test/service/notifier/email_test.exs index 20c99d836..5a88735fe 100644 --- a/test/service/notifier/email_test.exs +++ b/test/service/notifier/email_test.exs @@ -138,7 +138,8 @@ defmodule Mobilizon.Service.Notifier.EmailTest do @email "someone@somewhere.tld" test "send activity notification to anonymous user" do - %Activity{} = activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now()) + %Activity{} = + activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now(), type: :comment) Email.send_anonymous_activity(@email, activity, locale: "en")