diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index 5d09d0b9c..2d33ae3df 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -4,6 +4,9 @@ FROM node:16-alpine as assets RUN apk add --no-cache python3 build-base libwebp-tools bash imagemagick ncurses WORKDIR /build COPY js . + +ENV CYPRESS_INSTALL_BINARY 0 + RUN yarn install \ && yarn run build diff --git a/js/fragmentTypes.json b/js/fragmentTypes.json index 649592581..2316e34c5 100644 --- a/js/fragmentTypes.json +++ b/js/fragmentTypes.json @@ -5,79 +5,41 @@ "kind": "INTERFACE", "name": "ActionLogObject", "possibleTypes": [ - { - "name": "Comment" - }, - { - "name": "Event" - }, - { - "name": "Person" - }, - { - "name": "Report" - }, - { - "name": "ReportNote" - }, - { - "name": "User" - } + { "name": "Comment" }, + { "name": "Event" }, + { "name": "Group" }, + { "name": "Person" }, + { "name": "Report" }, + { "name": "ReportNote" }, + { "name": "User" } ] }, { "kind": "INTERFACE", "name": "ActivityObject", "possibleTypes": [ - { - "name": "Comment" - }, - { - "name": "Discussion" - }, - { - "name": "Event" - }, - { - "name": "Group" - }, - { - "name": "Member" - }, - { - "name": "Post" - }, - { - "name": "Resource" - } + { "name": "Comment" }, + { "name": "Discussion" }, + { "name": "Event" }, + { "name": "Group" }, + { "name": "Member" }, + { "name": "Post" }, + { "name": "Resource" } ] }, { "kind": "INTERFACE", "name": "Actor", "possibleTypes": [ - { - "name": "Person" - }, - { - "name": "Group" - }, - { - "name": "Application" - } + { "name": "Application" }, + { "name": "Group" }, + { "name": "Person" } ] }, { "kind": "INTERFACE", "name": "Interactable", - "possibleTypes": [ - { - "name": "Event" - }, - { - "name": "Group" - } - ] + "possibleTypes": [{ "name": "Event" }, { "name": "Group" }] } ] } diff --git a/js/package.json b/js/package.json index 011a25477..ef9662ea3 100644 --- a/js/package.json +++ b/js/package.json @@ -76,18 +76,19 @@ "@types/prosemirror-view": "^1.11.4", "@typescript-eslint/eslint-plugin": "^4.18.0", "@typescript-eslint/parser": "^4.18.0", - "@vue/cli-plugin-babel": "~5.0.0-beta.5", - "@vue/cli-plugin-e2e-cypress": "~5.0.0-beta.5", - "@vue/cli-plugin-eslint": "~5.0.0-beta.5", - "@vue/cli-plugin-pwa": "~5.0.0-beta.5", - "@vue/cli-plugin-router": "~5.0.0-beta.5", - "@vue/cli-plugin-typescript": "~5.0.0-beta.5", - "@vue/cli-plugin-unit-jest": "~5.0.0-beta.5", - "@vue/cli-service": "~5.0.0-beta.5", + "@vue/cli-plugin-babel": "~5.0.0-beta.7", + "@vue/cli-plugin-e2e-cypress": "~5.0.0-beta.7", + "@vue/cli-plugin-eslint": "~5.0.0-beta.7", + "@vue/cli-plugin-pwa": "~5.0.0-beta.7", + "@vue/cli-plugin-router": "~5.0.0-beta.7", + "@vue/cli-plugin-typescript": "~5.0.0-beta.7", + "@vue/cli-plugin-unit-jest": "~5.0.0-beta.7", + "@vue/cli-service": "~5.0.0-beta.7", "@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-typescript": "^7.0.0", "@vue/test-utils": "^1.1.0", "@vue/vue2-jest": "^27.0.0-alpha.2", + "@vue/vue3-jest": "^27.0.0-alpha.1", "cypress": "^8.3.0", "eslint": "^7.20.0", "eslint-plugin-cypress": "^2.10.3", diff --git a/js/src/common.scss b/js/src/common.scss index 30160e383..b9c39647d 100644 --- a/js/src/common.scss +++ b/js/src/common.scss @@ -157,3 +157,10 @@ p { background-color: whitesmoke; color: #0a0a0a; } + +/** + * Bulma/Buefy fixes + */ +.icon { + vertical-align: middle; +} diff --git a/js/src/components/Event/DateCalendarIcon.vue b/js/src/components/Event/DateCalendarIcon.vue index bd87863d1..59a55e3fc 100644 --- a/js/src/components/Event/DateCalendarIcon.vue +++ b/js/src/components/Event/DateCalendarIcon.vue @@ -12,18 +12,17 @@ diff --git a/js/src/components/Event/MultiCard.vue b/js/src/components/Event/MultiCard.vue new file mode 100644 index 000000000..da4669ee2 --- /dev/null +++ b/js/src/components/Event/MultiCard.vue @@ -0,0 +1,46 @@ + + + diff --git a/js/src/components/Event/MultiEventMinimalistCard.vue b/js/src/components/Event/MultiEventMinimalistCard.vue new file mode 100644 index 000000000..ea99e4917 --- /dev/null +++ b/js/src/components/Event/MultiEventMinimalistCard.vue @@ -0,0 +1,38 @@ + + + diff --git a/js/src/components/Event/ParticipationButton.vue b/js/src/components/Event/ParticipationButton.vue index 65c44041f..4fa3bd5c6 100644 --- a/js/src/components/Event/ParticipationButton.vue +++ b/js/src/components/Event/ParticipationButton.vue @@ -151,6 +151,7 @@ A button to set your participation > @@ -62,13 +63,16 @@ tag="span" path="Powered by {mobilizon}. © 2018 - {date} The Mobilizon Contributors - Made with the financial support of {contributors}." > - {{ + {{ $t("Mobilizon") }} {{ new Date().getFullYear() }} - {{ - $t("more than 1360 contributors") - }} + {{ $t("more than 1360 contributors") }} diff --git a/js/src/components/Group/GroupMemberCard.vue b/js/src/components/Group/GroupMemberCard.vue index bf63e0670..77002a359 100644 --- a/js/src/components/Group/GroupMemberCard.vue +++ b/js/src/components/Group/GroupMemberCard.vue @@ -4,6 +4,7 @@
+ {{ displayNameAndUsername(member.actor) }}
@@ -47,7 +48,7 @@
-

{{ member.parent.summary }}

+

@@ -110,7 +111,8 @@ export default class GroupMemberCard extends Vue { display: flex; padding: 5px; - figure { + figure, + span.icon { padding-right: 3px; } } diff --git a/js/src/components/Image/LazyImage.vue b/js/src/components/Image/LazyImage.vue index c5d95b7f5..5af065b92 100644 --- a/js/src/components/Image/LazyImage.vue +++ b/js/src/components/Image/LazyImage.vue @@ -16,7 +16,7 @@ :width="width" :height="height" class="absolute top-0 left-0 transition-opacity duration-500" - :class="isLoaded ? 'opacity-100' : 'opacity-0'" + :class="{ isLoaded: isLoaded ? 'opacity-100' : 'opacity-0', rounded }" alt="" />
@@ -37,6 +37,7 @@ export default class LazyImage extends Vue { @Prop({ type: String, required: false, default: null }) blurhash!: string; @Prop({ type: Number, default: 1 }) width!: number; @Prop({ type: Number, default: 1 }) height!: number; + @Prop({ type: Boolean, default: false }) rounded!: boolean; inheritAttrs = false; isLoaded = false; @@ -63,12 +64,14 @@ export default class LazyImage extends Vue { onEnter(): void { // Image is visible (means: has entered the viewport), // so start loading by setting the src attribute - this.image.src = this.src; + if (this.image) { + this.image.src = this.src; - this.image.onload = () => { - // Image is loaded, so start fading in - this.isLoaded = true; - }; + this.image.onload = () => { + // Image is loaded, so start fading in + this.isLoaded = true; + }; + } } @Watch("src") @@ -113,5 +116,8 @@ img { height: 100%; object-fit: cover; object-position: 50% 50%; + &.rounded { + border-radius: 8px; + } } diff --git a/js/src/components/Image/LazyImageWrapper.vue b/js/src/components/Image/LazyImageWrapper.vue index 1b3e1313a..038207644 100644 --- a/js/src/components/Image/LazyImageWrapper.vue +++ b/js/src/components/Image/LazyImageWrapper.vue @@ -5,6 +5,7 @@ :width="pictureOrDefault.metadata.width" :height="pictureOrDefault.metadata.height" :blurhash="pictureOrDefault.metadata.blurhash" + :rounded="rounded" /> + diff --git a/js/src/components/Post/PostElementItem.vue b/js/src/components/Post/PostElementItem.vue deleted file mode 100644 index 045ffbdab..000000000 --- a/js/src/components/Post/PostElementItem.vue +++ /dev/null @@ -1,134 +0,0 @@ - - - diff --git a/js/src/components/Post/PostListItem.vue b/js/src/components/Post/PostListItem.vue index daa1024a3..c9d37ff1c 100644 --- a/js/src/components/Post/PostListItem.vue +++ b/js/src/components/Post/PostListItem.vue @@ -3,53 +3,116 @@ class="post-minimalist-card-wrapper" :to="{ name: RouteName.POST, params: { slug: post.slug } }" > -
+ +

{{ post.title }}

- {{ - formatDistanceToNow(new Date(post.publishAt || post.insertedAt), { - locale: $dateFnsLocale, - addSuffix: true, - }) - }} +

+ + {{ + publishedAt | formatDateTimeString(undefined, false, "short") + }} + {{ + formatDistanceToNow(publishedAt, { + locale: $dateFnsLocale, + addSuffix: true, + }) + }} +

+ + + {{ tag.title }} + +

+ + + {{ + displayName(post.author) + }} + +

diff --git a/js/src/components/Resource/FolderItem.vue b/js/src/components/Resource/FolderItem.vue index 5bf4ae112..32771dc84 100644 --- a/js/src/components/Resource/FolderItem.vue +++ b/js/src/components/Resource/FolderItem.vue @@ -61,7 +61,7 @@ export default class FolderItem extends Mixins(ResourceMixin) { list = []; groupObject: Record = { - name: `folder-${this.resource.title}`, + name: `folder-${this.resource?.title}`, pull: false, put: ["resources"], }; diff --git a/js/src/components/Utils/EmptyContent.vue b/js/src/components/Utils/EmptyContent.vue index 0b5af97b6..60102696e 100644 --- a/js/src/components/Utils/EmptyContent.vue +++ b/js/src/components/Utils/EmptyContent.vue @@ -32,6 +32,7 @@ export default class EmptyContent extends Vue { } &.inline { margin-top: 5vh; + margin-bottom: 2vh; } } diff --git a/js/src/graphql/actor.ts b/js/src/graphql/actor.ts index 54f616d94..aa7f0d372 100644 --- a/js/src/graphql/actor.ts +++ b/js/src/graphql/actor.ts @@ -1,14 +1,25 @@ import gql from "graphql-tag"; +export const ACTOR_FRAGMENT = gql` + fragment ActorFragment on Actor { + id + avatar { + id + url + } + type + preferredUsername + name + domain + summary + url + } +`; + export const FETCH_PERSON = gql` query ($username: String!) { fetchPerson(preferredUsername: $username) { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended mediaSize avatar { @@ -34,6 +45,7 @@ export const FETCH_PERSON = gql` } } } + ${ACTOR_FRAGMENT} `; export const GET_PERSON = gql` @@ -47,12 +59,7 @@ export const GET_PERSON = gql` $membershipsLimit: Int ) { person(id: $actorId) { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended mediaSize avatar { @@ -98,14 +105,7 @@ export const GET_PERSON = gql` role insertedAt parent { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } } } @@ -115,6 +115,7 @@ export const GET_PERSON = gql` } } } + ${ACTOR_FRAGMENT} `; export const PERSON_FRAGMENT = gql` @@ -126,6 +127,7 @@ export const PERSON_FRAGMENT = gql` } type preferredUsername + domain name } `; @@ -151,17 +153,11 @@ export const LIST_PROFILES = gql` ) { total elements { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_DEFAULT_ACTOR = gql` @@ -179,12 +175,9 @@ export const CURRENT_ACTOR_CLIENT = gql` query currentActor { currentActor @client { id - avatar { - id - url - } preferredUsername name + avatar } } `; @@ -205,91 +198,6 @@ export const UPDATE_CURRENT_ACTOR_CLIENT = gql` } `; -export const LOGGED_USER_PARTICIPATIONS = gql` - query LoggedUserParticipations( - $afterDateTime: DateTime - $beforeDateTime: DateTime - $page: Int - $limit: Int - ) { - loggedUser { - id - participations( - afterDatetime: $afterDateTime - beforeDatetime: $beforeDateTime - page: $page - limit: $limit - ) { - total - elements { - event { - id - uuid - title - picture { - id - url - alt - } - beginsOn - visibility - organizerActor { - id - preferredUsername - name - domain - summary - avatar { - id - url - } - } - attributedTo { - avatar { - id - url - } - preferredUsername - name - summary - domain - url - id - } - participantStats { - going - notApproved - participant - } - options { - maximumAttendeeCapacity - remainingAttendeeCapacity - } - tags { - id - slug - title - } - } - id - role - actor { - id - preferredUsername - name - domain - summary - avatar { - id - url - } - } - } - } - } - } -`; - export const LOGGED_USER_DRAFTS = gql` query LoggedUserDrafts($page: Int, $limit: Int) { loggedUser { @@ -298,6 +206,7 @@ export const LOGGED_USER_DRAFTS = gql` id uuid title + draft picture { id url @@ -306,14 +215,7 @@ export const LOGGED_USER_DRAFTS = gql` beginsOn visibility organizerActor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } participantStats { going @@ -326,6 +228,7 @@ export const LOGGED_USER_DRAFTS = gql` } } } + ${ACTOR_FRAGMENT} `; export const LOGGED_USER_MEMBERSHIPS = gql` @@ -338,25 +241,10 @@ export const LOGGED_USER_MEMBERSHIPS = gql` id role actor { - id - avatar { - id - url - } - preferredUsername - name - domain + ...ActorFragment } parent { - id - preferredUsername - domain - name - type - avatar { - id - url - } + ...ActorFragment organizedEvents { elements { id @@ -370,34 +258,22 @@ export const LOGGED_USER_MEMBERSHIPS = gql` } } invitedBy { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } } } } + ${ACTOR_FRAGMENT} `; export const IDENTITIES = gql` query Identities { identities { - id - avatar { - id - url - } - type - preferredUsername - name + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const PERSON_MEMBERSHIPS = gql` @@ -410,20 +286,10 @@ export const PERSON_MEMBERSHIPS = gql` id role parent { - id - preferredUsername - name - domain - type - avatar { - id - url - } + ...ActorFragment } invitedBy { - id - preferredUsername - name + ...ActorFragment } insertedAt updatedAt @@ -431,9 +297,10 @@ export const PERSON_MEMBERSHIPS = gql` } } } + ${ACTOR_FRAGMENT} `; -export const PERSON_MEMBERSHIP_GROUP = gql` +export const PERSON_STATUS_GROUP = gql` query PersonMembershipGroup($id: ID!, $group: String!) { person(id: $id) { id @@ -443,19 +310,26 @@ export const PERSON_MEMBERSHIP_GROUP = gql` id role parent { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } invitedBy { - id - preferredUsername - name + ...ActorFragment + } + insertedAt + updatedAt + } + } + follows(group: $group) { + total + elements { + id + notify + approved + target_actor { + ...ActorFragment + } + actor { + ...ActorFragment } insertedAt updatedAt @@ -463,6 +337,7 @@ export const PERSON_MEMBERSHIP_GROUP = gql` } } } + ${ACTOR_FRAGMENT} `; export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql` @@ -478,19 +353,10 @@ export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql` id role parent { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } invitedBy { - id - preferredUsername - name + ...ActorFragment } insertedAt updatedAt @@ -498,6 +364,7 @@ export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql` } } } + ${ACTOR_FRAGMENT} `; export const CREATE_PERSON = gql` @@ -513,16 +380,10 @@ export const CREATE_PERSON = gql` summary: $summary avatar: $avatar ) { - id - preferredUsername - name - summary - avatar { - id - url - } + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const UPDATE_PERSON = gql` @@ -533,16 +394,10 @@ export const UPDATE_PERSON = gql` $avatar: MediaInput ) { updatePerson(id: $id, name: $name, summary: $summary, avatar: $avatar) { - id - preferredUsername - name - summary - avatar { - id - url - } + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const DELETE_PERSON = gql` @@ -570,16 +425,10 @@ export const REGISTER_PERSON = gql` summary: $summary email: $email ) { - id - preferredUsername - name - summary - avatar { - id - url - } + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const SUSPEND_PROFILE = gql` diff --git a/js/src/graphql/admin.ts b/js/src/graphql/admin.ts index 5dac4ea00..acb3f73b1 100644 --- a/js/src/graphql/admin.ts +++ b/js/src/graphql/admin.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const DASHBOARD = gql` query { @@ -14,14 +15,7 @@ export const DASHBOARD = gql` } } lastGroupCreated { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } numberOfUsers numberOfEvents @@ -33,31 +27,23 @@ export const DASHBOARD = gql` numberOfConfirmedParticipationsToLocalEvents } } + ${ACTOR_FRAGMENT} `; export const RELAY_FRAGMENT = gql` fragment relayFragment on Follower { id actor { - id - preferredUsername - name - domain - type - summary + ...ActorFragment } targetActor { - id - preferredUsername - name - domain - type - summary + ...ActorFragment } approved insertedAt updatedAt } + ${ACTOR_FRAGMENT} `; export const RELAY_FOLLOWERS = gql` diff --git a/js/src/graphql/comment.ts b/js/src/graphql/comment.ts index dd6b6df4c..350a9cf38 100644 --- a/js/src/graphql/comment.ts +++ b/js/src/graphql/comment.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const COMMENT_FIELDS_FRAGMENT_NAME = "CommentFields"; export const COMMENT_FIELDS_FRAGMENT = gql` @@ -10,15 +11,7 @@ export const COMMENT_FIELDS_FRAGMENT = gql` visibility local actor { - avatar { - id - url - } - id - domain - preferredUsername - name - summary + ...ActorFragment } totalReplies insertedAt @@ -26,6 +19,7 @@ export const COMMENT_FIELDS_FRAGMENT = gql` deletedAt isAnnouncement } + ${ACTOR_FRAGMENT} `; export const COMMENT_RECURSIVE_FRAGMENT = gql` diff --git a/js/src/graphql/discussion.ts b/js/src/graphql/discussion.ts index ef66d22c6..1d14933b7 100644 --- a/js/src/graphql/discussion.ts +++ b/js/src/graphql/discussion.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const DISCUSSION_BASIC_FIELDS_FRAGMENT = gql` fragment DiscussionBasicFields on Discussion { @@ -11,18 +12,13 @@ export const DISCUSSION_BASIC_FIELDS_FRAGMENT = gql` id text actor { - id - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } publishedAt deletedAt } } + ${ACTOR_FRAGMENT} `; export const DISCUSSION_FIELDS_FOR_REPLY_FRAGMENT = gql` @@ -35,26 +31,17 @@ export const DISCUSSION_FIELDS_FOR_REPLY_FRAGMENT = gql` text updatedAt actor { - id - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } } actor { - id - preferredUsername - domain + ...ActorFragment } creator { - id - preferredUsername - domain + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const DISCUSSION_FIELDS_FRAGMENT = gql` @@ -70,28 +57,17 @@ export const DISCUSSION_FIELDS_FRAGMENT = gql` deletedAt publishedAt actor { - id - domain - name - preferredUsername - avatar { - url - } + ...ActorFragment } } actor { - id - domain - name - preferredUsername + ...ActorFragment } creator { - id - domain - name - preferredUsername + ...ActorFragment } } + ${ACTOR_FRAGMENT} `; export const CREATE_DISCUSSION = gql` @@ -121,14 +97,7 @@ export const GET_DISCUSSION = gql` id text actor { - id - avatar { - id - url - } - name - domain - preferredUsername + ...ActorFragment } insertedAt updatedAt @@ -140,6 +109,7 @@ export const GET_DISCUSSION = gql` } } ${DISCUSSION_FIELDS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const UPDATE_DISCUSSION = gql` @@ -171,16 +141,10 @@ export const DISCUSSION_COMMENT_CHANGED = gql` deletedAt publishedAt actor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } } } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/event.ts b/js/src/graphql/event.ts index 7f3e52ad4..2385e0db9 100644 --- a/js/src/graphql/event.ts +++ b/js/src/graphql/event.ts @@ -1,71 +1,13 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; import { ADDRESS_FRAGMENT } from "./address"; +import { EVENT_OPTIONS_FRAGMENT } from "./event_options"; +import { + PARTICIPANTS_QUERY_FRAGMENT, + PARTICIPANT_QUERY_FRAGMENT, +} from "./participant"; import { TAG_FRAGMENT } from "./tags"; -const PARTICIPANT_QUERY_FRAGMENT = gql` - fragment ParticipantQuery on Participant { - role - id - actor { - preferredUsername - avatar { - id - url - } - name - id - domain - } - event { - id - uuid - } - metadata { - cancellationToken - message - } - insertedAt - } -`; - -const PARTICIPANTS_QUERY_FRAGMENT = gql` - fragment ParticipantsQuery on PaginatedParticipantList { - total - elements { - ...ParticipantQuery - } - } - ${PARTICIPANT_QUERY_FRAGMENT} -`; - -const EVENT_OPTIONS_FRAGMENT = gql` - fragment EventOptions on EventOptions { - maximumAttendeeCapacity - remainingAttendeeCapacity - showRemainingAttendeeCapacity - anonymousParticipation - showStartTime - showEndTime - timezone - offers { - price - priceCurrency - url - } - participationConditions { - title - content - url - } - attendees - program - commentModeration - showParticipationPrice - hideOrganizerWhenGroupEvent - isOnline - } -`; - const FULL_EVENT_FRAGMENT = gql` fragment FullEvent on Event { id @@ -97,40 +39,13 @@ const FULL_EVENT_FRAGMENT = gql` ...AdressFragment } organizerActor { - avatar { - id - url - } - preferredUsername - domain - name - url - id - summary + ...ActorFragment } contacts { - avatar { - id - url - } - preferredUsername - name - summary - domain - url - id + ...ActorFragment } attributedTo { - avatar { - id - url - } - preferredUsername - name - summary - domain - url - id + ...ActorFragment } participantStats { going @@ -156,18 +71,19 @@ const FULL_EVENT_FRAGMENT = gql` } } physicalAddress { - id - description + ...AdressFragment } organizerActor { - id - avatar { - id - url - } - preferredUsername - domain - name + ...ActorFragment + } + attributedTo { + ...ActorFragment + } + options { + ...EventOptions + } + tags { + ...TagFragment } } options { @@ -183,6 +99,7 @@ const FULL_EVENT_FRAGMENT = gql` ${ADDRESS_FRAGMENT} ${TAG_FRAGMENT} ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const FETCH_EVENT = gql` @@ -244,36 +161,28 @@ export const FETCH_EVENTS = gql` # online_address, # phone_address, physicalAddress { - id - description - locality + ...AdressFragment } organizerActor { - id - avatar { - id - url - } - preferredUsername - domain - name + ...ActorFragment } attributedTo { - avatar { - id - url - } - preferredUsername - name + ...ActorFragment } category tags { ...TagFragment } + options { + ...EventOptions + } } } } + ${ADDRESS_FRAGMENT} ${TAG_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const CREATE_EVENT = gql` @@ -511,18 +420,15 @@ export const FETCH_GROUP_EVENTS = gql` $afterDateTime: DateTime $beforeDateTime: DateTime $organisedEventsPage: Int - $organisedEventslimit: Int + $organisedEventsLimit: Int ) { group(preferredUsername: $name) { - id - preferredUsername - domain - name + ...ActorFragment organizedEvents( afterDatetime: $afterDateTime beforeDatetime: $beforeDateTime page: $organisedEventsPage - limit: $organisedEventslimit + limit: $organisedEventsLimit ) { elements { id @@ -531,29 +437,33 @@ export const FETCH_GROUP_EVENTS = gql` beginsOn draft options { - maximumAttendeeCapacity + ...EventOptions } participantStats { participant notApproved } attributedTo { - id - preferredUsername - name - domain + ...ActorFragment } organizerActor { + ...ActorFragment + } + physicalAddress { + ...AdressFragment + } + picture { + url id - preferredUsername - name - domain } } total } } } + ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} + ${ADDRESS_FRAGMENT} `; export const CLOSE_EVENTS = gql` @@ -570,13 +480,28 @@ export const CLOSE_EVENTS = gql` url } tags { - slug - title + ...TagFragment + } + options { + ...EventOptions + } + physicalAddress { + ...AdressFragment + } + attributedTo { + ...ActorFragment + } + organizerActor { + ...ActorFragment } __typename } } } + ${ADDRESS_FRAGMENT} + ${TAG_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const EXPORT_EVENT_PARTICIPATIONS = gql` diff --git a/js/src/graphql/event_options.ts b/js/src/graphql/event_options.ts new file mode 100644 index 000000000..ca521506b --- /dev/null +++ b/js/src/graphql/event_options.ts @@ -0,0 +1,29 @@ +import gql from "graphql-tag"; + +export const EVENT_OPTIONS_FRAGMENT = gql` + fragment EventOptions on EventOptions { + maximumAttendeeCapacity + remainingAttendeeCapacity + showRemainingAttendeeCapacity + anonymousParticipation + showStartTime + showEndTime + timezone + offers { + price + priceCurrency + url + } + participationConditions { + title + content + url + } + attendees + program + commentModeration + showParticipationPrice + hideOrganizerWhenGroupEvent + isOnline + } +`; diff --git a/js/src/graphql/followers.ts b/js/src/graphql/followers.ts index 48f4f0abc..c72f67e06 100644 --- a/js/src/graphql/followers.ts +++ b/js/src/graphql/followers.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const GROUP_FOLLOWERS = gql` query ( @@ -8,10 +9,7 @@ export const GROUP_FOLLOWERS = gql` $approved: Boolean ) { group(preferredUsername: $name) { - id - preferredUsername - name - domain + ...ActorFragment followers( page: $followersPage limit: $followersLimit @@ -21,14 +19,7 @@ export const GROUP_FOLLOWERS = gql` elements { id actor { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } approved insertedAt @@ -37,6 +28,7 @@ export const GROUP_FOLLOWERS = gql` } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_FOLLOWER = gql` @@ -47,3 +39,28 @@ export const UPDATE_FOLLOWER = gql` } } `; + +export const FOLLOW_GROUP = gql` + mutation FollowGroup($groupId: ID!, $notify: Boolean) { + followGroup(groupId: $groupId, notify: $notify) { + id + } + } +`; + +export const UNFOLLOW_GROUP = gql` + mutation UnfollowGroup($groupId: ID!) { + unfollowGroup(groupId: $groupId) { + id + } + } +`; + +export const UPDATE_GROUP_FOLLOW = gql` + mutation UpdateGroupFollow($followId: ID!, $notify: Boolean) { + updateGroupFollow(followId: $followId, notify: $notify) { + id + notify + } + } +`; diff --git a/js/src/graphql/group.ts b/js/src/graphql/group.ts index eea47ede7..481f15286 100644 --- a/js/src/graphql/group.ts +++ b/js/src/graphql/group.ts @@ -2,6 +2,10 @@ import gql from "graphql-tag"; import { DISCUSSION_BASIC_FIELDS_FRAGMENT } from "./discussion"; import { RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT } from "./resources"; import { POST_BASIC_FIELDS } from "./post"; +import { ACTOR_FRAGMENT } from "./actor"; +import { ADDRESS_FRAGMENT } from "./address"; +import { TAG_FRAGMENT } from "./tags"; +import { EVENT_OPTIONS_FRAGMENT } from "./event_options"; export const LIST_GROUPS = gql` query ListGroups( @@ -23,12 +27,7 @@ export const LIST_GROUPS = gql` limit: $limit ) { elements { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended avatar { id @@ -51,16 +50,12 @@ export const LIST_GROUPS = gql` total } } + ${ACTOR_FRAGMENT} `; export const GROUP_FIELDS_FRAGMENTS = gql` fragment GroupFullFields on Group { - id - url - name - domain - summary - preferredUsername + ...ActorFragment suspended visibility openness @@ -76,6 +71,7 @@ export const GROUP_FIELDS_FRAGMENTS = gql` type id originId + url } avatar { id @@ -101,7 +97,7 @@ export const GROUP_FIELDS_FRAGMENTS = gql` afterDatetime: $afterDateTime beforeDatetime: $beforeDateTime page: $organisedEventsPage - limit: $organisedEventslimit + limit: $organisedEventsLimit ) { elements { id @@ -117,16 +113,23 @@ export const GROUP_FIELDS_FRAGMENTS = gql` notApproved } attributedTo { - id - preferredUsername - name - domain + ...ActorFragment } organizerActor { + ...ActorFragment + } + picture { id - preferredUsername - name - domain + url + } + physicalAddress { + ...AdressFragment + } + options { + ...EventOptions + } + tags { + ...TagFragment } } total @@ -148,14 +151,7 @@ export const GROUP_FIELDS_FRAGMENTS = gql` id role actor { - id - name - domain - preferredUsername - avatar { - id - url - } + ...ActorFragment } insertedAt } @@ -197,6 +193,10 @@ export const GROUP_FIELDS_FRAGMENTS = gql` total } } + ${ACTOR_FRAGMENT} + ${ADDRESS_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} + ${TAG_FRAGMENT} `; export const FETCH_GROUP = gql` @@ -205,7 +205,7 @@ export const FETCH_GROUP = gql` $afterDateTime: DateTime $beforeDateTime: DateTime $organisedEventsPage: Int - $organisedEventslimit: Int + $organisedEventsLimit: Int $postsPage: Int $postsLimit: Int $membersPage: Int @@ -229,7 +229,7 @@ export const GET_GROUP = gql` $afterDateTime: DateTime $beforeDateTime: DateTime $organisedEventsPage: Int - $organisedEventslimit: Int + $organisedEventsLimit: Int $postsPage: Int $postsLimit: Int $membersPage: Int @@ -263,21 +263,14 @@ export const CREATE_GROUP = gql` banner: $banner avatar: $avatar ) { - id - preferredUsername - name - domain - summary - avatar { - id - url - } + ...ActorFragment banner { id url } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_GROUP = gql` @@ -303,23 +296,17 @@ export const UPDATE_GROUP = gql` physicalAddress: $physicalAddress manuallyApprovesFollowers: $manuallyApprovesFollowers ) { - id - preferredUsername - name - summary + ...ActorFragment visibility openness manuallyApprovesFollowers - avatar { - id - url - } banner { id url } } } + ${ACTOR_FRAGMENT} `; export const DELETE_GROUP = gql` @@ -355,10 +342,7 @@ export const GROUP_TIMELINE = gql` $limit: Int ) { group(preferredUsername: $preferredUsername) { - id - preferredUsername - domain - name + ...ActorFragment activity(type: $type, author: $author, page: $page, limit: $limit) { total elements { @@ -371,18 +355,10 @@ export const GROUP_TIMELINE = gql` } type author { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } group { - id - preferredUsername + ...ActorFragment } object { ... on Event { @@ -396,14 +372,7 @@ export const GROUP_TIMELINE = gql` ... on Member { id actor { - id - name - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } } ... on Resource { @@ -421,11 +390,7 @@ export const GROUP_TIMELINE = gql` id } ... on Group { - id - preferredUsername - domain - name - summary + ...ActorFragment visibility openness physicalAddress { @@ -433,9 +398,7 @@ export const GROUP_TIMELINE = gql` } banner { id - } - avatar { - id + url } } } @@ -443,4 +406,5 @@ export const GROUP_TIMELINE = gql` } } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/home.ts b/js/src/graphql/home.ts new file mode 100644 index 000000000..0b6ff5c11 --- /dev/null +++ b/js/src/graphql/home.ts @@ -0,0 +1,107 @@ +import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; +import { ADDRESS_FRAGMENT } from "./address"; +import { EVENT_OPTIONS_FRAGMENT } from "./event_options"; +import { TAG_FRAGMENT } from "./tags"; +import { USER_SETTINGS_FRAGMENT } from "./user"; + +export const HOME_USER_QUERIES = gql` + query HomeUserQueries( + $afterDateTime: DateTime + $beforeDateTime: DateTime + $page: Int + $limit: Int + ) { + loggedUser { + id + locale + settings { + ...UserSettingFragment + } + participations( + afterDatetime: $afterDateTime + beforeDatetime: $beforeDateTime + page: $page + limit: $limit + ) { + total + elements { + event { + id + uuid + title + picture { + id + url + alt + } + beginsOn + visibility + organizerActor { + ...ActorFragment + } + attributedTo { + ...ActorFragment + } + participantStats { + going + notApproved + participant + } + options { + ...EventOptions + } + tags { + ...TagFragment + } + } + id + role + actor { + ...ActorFragment + } + } + } + followedGroupEvents { + total + elements { + profile { + id + } + group { + ...ActorFragment + } + event { + id + uuid + title + beginsOn + picture { + url + } + attributedTo { + ...ActorFragment + } + organizerActor { + ...ActorFragment + } + options { + ...EventOptions + } + physicalAddress { + ...AdressFragment + } + tags { + ...TagFragment + } + } + } + } + } + } + ${USER_SETTINGS_FRAGMENT} + ${ADDRESS_FRAGMENT} + ${TAG_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} + ${ACTOR_FRAGMENT} +`; diff --git a/js/src/graphql/member.ts b/js/src/graphql/member.ts index 305ae7239..bf6bda441 100644 --- a/js/src/graphql/member.ts +++ b/js/src/graphql/member.ts @@ -1,31 +1,19 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const MEMBER_FRAGMENT = gql` fragment MemberFragment on Member { id role parent { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } actor { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } insertedAt } + ${ACTOR_FRAGMENT} `; export const INVITE_MEMBER = gql` @@ -57,24 +45,13 @@ export const REJECT_INVITATION = gql` export const GROUP_MEMBERS = gql` query ($name: String!, $roles: String, $page: Int, $limit: Int) { group(preferredUsername: $name) { - id - url - name - domain - preferredUsername + ...ActorFragment members(page: $page, limit: $limit, roles: $roles) { elements { id role actor { - id - name - domain - preferredUsername - avatar { - id - url - } + ...ActorFragment } insertedAt } @@ -82,6 +59,7 @@ export const GROUP_MEMBERS = gql` } } } + ${ACTOR_FRAGMENT} `; export const UPDATE_MEMBER = gql` diff --git a/js/src/graphql/participant.ts b/js/src/graphql/participant.ts new file mode 100644 index 000000000..b3772833e --- /dev/null +++ b/js/src/graphql/participant.ts @@ -0,0 +1,210 @@ +import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; +import { ADDRESS_FRAGMENT } from "./address"; +import { EVENT_OPTIONS_FRAGMENT } from "./event_options"; +import { TAG_FRAGMENT } from "./tags"; + +export const LOGGED_USER_PARTICIPATIONS = gql` + query LoggedUserParticipations( + $afterDateTime: DateTime + $beforeDateTime: DateTime + $page: Int + $limit: Int + ) { + loggedUser { + id + participations( + afterDatetime: $afterDateTime + beforeDatetime: $beforeDateTime + page: $page + limit: $limit + ) { + total + elements { + event { + id + uuid + url + title + picture { + id + url + alt + } + beginsOn + visibility + organizerActor { + ...ActorFragment + } + attributedTo { + ...ActorFragment + } + participantStats { + going + notApproved + participant + } + options { + ...EventOptions + } + tags { + id + slug + title + } + physicalAddress { + ...AdressFragment + } + } + id + role + actor { + ...ActorFragment + } + } + } + } + } + ${ACTOR_FRAGMENT} + ${ADDRESS_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} +`; + +export const LOGGED_USER_UPCOMING_EVENTS = gql` + query LoggedUserUpcomingEvents( + $afterDateTime: DateTime + $beforeDateTime: DateTime + $page: Int + $limit: Int + ) { + loggedUser { + id + participations( + afterDatetime: $afterDateTime + beforeDatetime: $beforeDateTime + page: $page + limit: $limit + ) { + total + elements { + event { + id + uuid + url + title + picture { + id + url + alt + } + beginsOn + visibility + organizerActor { + ...ActorFragment + } + attributedTo { + ...ActorFragment + } + participantStats { + going + notApproved + rejected + participant + } + options { + ...EventOptions + } + tags { + id + slug + title + } + physicalAddress { + ...AdressFragment + } + } + id + role + actor { + ...ActorFragment + } + } + } + followedGroupEvents(afterDatetime: $afterDateTime) { + total + elements { + profile { + id + } + group { + ...ActorFragment + } + event { + id + uuid + title + beginsOn + picture { + url + } + attributedTo { + ...ActorFragment + } + organizerActor { + ...ActorFragment + } + options { + ...EventOptions + } + physicalAddress { + ...AdressFragment + } + tags { + ...TagFragment + } + participantStats { + going + notApproved + rejected + participant + } + } + } + } + } + } + ${ACTOR_FRAGMENT} + ${ADDRESS_FRAGMENT} + ${EVENT_OPTIONS_FRAGMENT} + ${TAG_FRAGMENT} +`; + +export const PARTICIPANT_QUERY_FRAGMENT = gql` + fragment ParticipantQuery on Participant { + role + id + actor { + ...ActorFragment + } + event { + id + uuid + } + metadata { + cancellationToken + message + } + insertedAt + } + ${ACTOR_FRAGMENT} +`; + +export const PARTICIPANTS_QUERY_FRAGMENT = gql` + fragment ParticipantsQuery on PaginatedParticipantList { + total + elements { + ...ParticipantQuery + } + } + ${PARTICIPANT_QUERY_FRAGMENT} +`; diff --git a/js/src/graphql/post.ts b/js/src/graphql/post.ts index 556fe01f2..b7ccc7bd4 100644 --- a/js/src/graphql/post.ts +++ b/js/src/graphql/post.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; import { TAG_FRAGMENT } from "./tags"; export const POST_FRAGMENT = gql` @@ -10,24 +11,10 @@ export const POST_FRAGMENT = gql` body draft author { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } attributedTo { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } insertedAt updatedAt @@ -49,6 +36,7 @@ export const POST_FRAGMENT = gql` } } ${TAG_FRAGMENT} + ${ACTOR_FRAGMENT} `; export const POST_BASIC_FIELDS = gql` @@ -58,24 +46,10 @@ export const POST_BASIC_FIELDS = gql` slug url author { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } attributedTo { - id - preferredUsername - name - domain - avatar { - id - url - } + ...ActorFragment } insertedAt updatedAt @@ -87,16 +61,18 @@ export const POST_BASIC_FIELDS = gql` url name } + tags { + ...TagFragment + } } + ${ACTOR_FRAGMENT} + ${TAG_FRAGMENT} `; export const FETCH_GROUP_POSTS = gql` query GroupPosts($preferredUsername: String!, $page: Int, $limit: Int) { group(preferredUsername: $preferredUsername) { - id - preferredUsername - domain - name + ...ActorFragment posts(page: $page, limit: $limit) { total elements { diff --git a/js/src/graphql/report.ts b/js/src/graphql/report.ts index bc842070c..3fcffe8e8 100644 --- a/js/src/graphql/report.ts +++ b/js/src/graphql/report.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const REPORTS = gql` query Reports($status: ReportStatus, $page: Int, $limit: Int) { @@ -7,25 +8,10 @@ export const REPORTS = gql` elements { id reported { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } reporter { - id - preferredUsername - name - avatar { - id - url - } - domain - type + ...ActorFragment } event { id @@ -41,31 +27,17 @@ export const REPORTS = gql` } } } + ${ACTOR_FRAGMENT} `; const REPORT_FRAGMENT = gql` fragment ReportFragment on Report { id reported { - id - preferredUsername - name - avatar { - id - url - } - domain + ...ActorFragment } reporter { - id - preferredUsername - name - avatar { - id - url - } - domain - type + ...ActorFragment } event { id @@ -81,27 +53,14 @@ const REPORT_FRAGMENT = gql` id text actor { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } notes { id content moderator { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } insertedAt } @@ -110,6 +69,7 @@ const REPORT_FRAGMENT = gql` status content } + ${ACTOR_FRAGMENT} `; export const REPORT = gql` @@ -167,13 +127,7 @@ export const LOGS = gql` id action actor { - id - preferredUsername - domain - avatar { - id - url - } + ...ActorFragment } object { ... on Report { @@ -197,23 +151,14 @@ export const LOGS = gql` uuid } actor { - id - preferredUsername - domain - name + ...ActorFragment } } ... on Person { - id - preferredUsername - domain - name + ...ActorFragment } ... on Group { - id - preferredUsername - domain - name + ...ActorFragment } ... on User { id @@ -226,4 +171,5 @@ export const LOGS = gql` total } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/resources.ts b/js/src/graphql/resources.ts index 44d1168f0..ecc5523eb 100644 --- a/js/src/graphql/resources.ts +++ b/js/src/graphql/resources.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT = gql` fragment ResourceMetadataBasicFields on ResourceMetadata { @@ -38,10 +39,7 @@ export const GET_RESOURCE = gql` type } actor { - id - preferredUsername - name - domain + ...ActorFragment } children(page: $page, limit: $limit) { total @@ -68,6 +66,7 @@ export const GET_RESOURCE = gql` } } } + ${ACTOR_FRAGMENT} ${RESOURCE_METADATA_BASIC_FIELDS_FRAGMENT} `; diff --git a/js/src/graphql/search.ts b/js/src/graphql/search.ts index 042fdf92e..b2f18ec6c 100644 --- a/js/src/graphql/search.ts +++ b/js/src/graphql/search.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const SEARCH_EVENTS = gql` query SearchEvents( @@ -58,18 +59,11 @@ export const SEARCH_GROUPS = gql` ) { total elements { - id - avatar { - id - url - } - domain - preferredUsername - name - __typename + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const SEARCH_PERSONS = gql` @@ -77,18 +71,11 @@ export const SEARCH_PERSONS = gql` searchPersons(term: $searchText, page: $page, limit: $limit) { total elements { - id - avatar { - id - url - } - domain - preferredUsername - name - __typename + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const INTERACT = gql` @@ -110,16 +97,9 @@ export const INTERACT = gql` __typename } ... on Group { - id - avatar { - id - url - } - domain - preferredUsername - name - __typename + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; diff --git a/js/src/graphql/todos.ts b/js/src/graphql/todos.ts index dd3502ad3..cc704339c 100644 --- a/js/src/graphql/todos.ts +++ b/js/src/graphql/todos.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const GET_TODO = gql` query GetTodo($id: ID!) { @@ -9,26 +10,17 @@ export const GET_TODO = gql` dueDate todoList { actor { - id - preferredUsername - domain - name + ...ActorFragment } title id } assignedTo { - id - preferredUsername - domain - name - avatar { - id - url - } + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const FETCH_TODO_LIST = gql` @@ -43,21 +35,17 @@ export const FETCH_TODO_LIST = gql` title status assignedTo { - id - preferredUsername - domain + ...ActorFragment } dueDate } } actor { - id - preferredUsername - domain - name + ...ActorFragment } } } + ${ACTOR_FRAGMENT} `; export const CREATE_TODO_LIST = gql` diff --git a/js/src/graphql/user.ts b/js/src/graphql/user.ts index 0f0e7e373..8d0a8bce9 100644 --- a/js/src/graphql/user.ts +++ b/js/src/graphql/user.ts @@ -1,4 +1,5 @@ import gql from "graphql-tag"; +import { ACTOR_FRAGMENT } from "./actor"; export const CREATE_USER = gql` mutation CreateUser($email: String!, $password: String!, $locale: String) { @@ -18,17 +19,12 @@ export const VALIDATE_USER = gql` id email defaultActor { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } } } } + ${ACTOR_FRAGMENT} `; export const LOGGED_USER = gql` @@ -37,17 +33,12 @@ export const LOGGED_USER = gql` id email defaultActor { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } provider } } + ${ACTOR_FRAGMENT} `; export const CHANGE_PASSWORD = gql` @@ -228,14 +219,7 @@ export const LIST_USERS = gql` confirmedAt disabled actors { - id - preferredUsername - avatar { - id - url - } - name - summary + ...ActorFragment } settings { timezone @@ -243,6 +227,7 @@ export const LIST_USERS = gql` } } } + ${ACTOR_FRAGMENT} `; export const GET_USER = gql` @@ -263,13 +248,7 @@ export const GET_USER = gql` id } actors { - id - preferredUsername - name - avatar { - id - url - } + ...ActorFragment } participations { total @@ -277,6 +256,7 @@ export const GET_USER = gql` role } } + ${ACTOR_FRAGMENT} `; export const UPDATE_USER_LOCALE = gql` diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index d7027ea80..2fff97df0 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1021,7 +1021,6 @@ "A member has been updated": "A member has been updated", "User settings": "User settings", "You changed your email or password": "You changed your email or password", - "Organized by you": "Organized by you", "Move resource to the root folder": "Move resource to the root folder", "Share this group": "Share this group", "This group is accessible only through it's link. Be careful where you post this link.": "This group is accessible only through it's link. Be careful where you post this link.", @@ -1202,6 +1201,30 @@ "{timezoneLongName} ({timezoneShortName})": "{timezoneLongName} ({timezoneShortName})", "Back to top": "Back to top", "Powered by Mobilizon": "Powered by Mobilizon", - "Instance follows": "Instance follows", - "The event is fully online": "The event is fully online" + "The event is fully online": "The event is fully online", + "Follow": "Follow", + "Cancel follow request": "Cancel follow request", + "Unfollow": "Unfollow", + "your notification settings": "your notification settings", + "You will receive notifications about this group's public activity depending on %{notification_settings}.": "You will receive notifications about this group's public activity depending on %{notification_settings}.", + "Online": "Online", + "That you follow or of which you are a member": "That you follow or of which you are a member", + "{number} seats left": "{number} seats left", + "Published by {name}": "Published by {name}", + "Share this post": "Share this post", + "This post is accessible only through it's link. Be careful where you post this link.": "This post is accessible only through it's link. Be careful where you post this link.", + "Post URL": "Post URL", + "Are you sure you want to delete this post? This action cannot be reverted.": "Are you sure you want to delete this post? This action cannot be reverted.", + "Attending": "Attending", + "From my groups": "From my groups", + "You don't have any upcoming events. Maybe try another filter?": "You don't have any upcoming events. Maybe try another filter?", + "Leave group": "Leave group", + "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.": "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.", + "Upcoming events from your groups": "Upcoming events from your groups", + "Accessible only by link": "Accessible only by link", + "Report this post": "Report this post", + "Post {eventTitle} reported": "Post {eventTitle} reported", + "You have attended {count} events in the past.": "You have not attended any events in the past.|You have attended one event in the past.|You have attended {count} events in the past.", + "Showing events starting on": "Showing events starting on", + "Showing events before": "Showing events before" } diff --git a/js/src/i18n/es.json b/js/src/i18n/es.json index c1e97c9a0..9eba48260 100644 --- a/js/src/i18n/es.json +++ b/js/src/i18n/es.json @@ -488,7 +488,6 @@ "Instance administrator": "Administrador de instancia", "Instance configuration": "Configuración de instancia", "Instance feeds": "Flujos de instancias", - "Instance follows": "La instancia sigue", "Instance languages": "Idiomas de instancia", "Instance rules": "Reglas de instancia", "Instance settings": "Configuraciones de instancia", diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index d29910fc4..960689693 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -1267,8 +1267,6 @@ "Time in your timezone ({timezone})": "Heure dans votre fuseau horaire ({timezone})", "Export": "Export", "Times in your timezone ({timezone})": "Heures dans votre fuseau horaire ({timezone})", - "has loaded": "a chargé", - "Skip to main": "", "Navigated to {pageTitle}": "Navigué vers {pageTitle}", "Comment body": "Corps du commentaire", "Confirm participation": "Confirmer la participation", @@ -1308,6 +1306,29 @@ "{timezoneLongName} ({timezoneShortName})": "{timezoneLongName} ({timezoneShortName})", "Back to top": "Retour en haut", "Powered by Mobilizon": "Propulsé par Mobilizon", - "Instance follows": "Abonnements de l'instance", - "The event is fully online": "L'événement est entièrement en ligne" + "The event is fully online": "L'événement est entièrement en ligne", + "Follow": "Suivre", + "Cancel follow request": "Annuler la demande de suivi", + "Unfollow": "Ne plus suivre", + "your notification settings": "vos paramètres de notification", + "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}.", + "Online": "En ligne", + "That you follow or of which you are a member": "Que vous suivez ou dont vous êtes membre", + "{number} seats left": "{number} places restantes", + "Published by {name}": "Publié par {name}", + "Share this post": "Partager ce billet", + "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.", + "Post URL": "URL du billet", + "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.", + "Attending": "Participant⋅e", + "From my groups": "De mes groupes", + "You don't have any upcoming events. Maybe try another filter?": "Vous n'avez pas d'événements à venir. Essayez peut-être un autre filtre ?", + "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 certain⋅e de vouloir quitter le groupe {groupName}? Vous perdrez accès au contenu privé de ce groupe. Cette action ne peut être annulée.", + "Upcoming events from your groups": "Événements de vos groupes à venir", + "Accessible only by link": "Accessible uniquement par lien", + "Report this post": "Signaler ce billet", + "Post {eventTitle} reported": "Billet {eventTitle} signalé", + "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é.", + "Showing events starting on": "Afficher les événements à partir de", + "Showing events before": "Afficher les événements avant" } diff --git a/js/src/mixins/group.ts b/js/src/mixins/group.ts index 9b320e6a6..752c84c9d 100644 --- a/js/src/mixins/group.ts +++ b/js/src/mixins/group.ts @@ -1,13 +1,20 @@ import { CURRENT_ACTOR_CLIENT, GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED, - PERSON_MEMBERSHIP_GROUP, + PERSON_STATUS_GROUP, } from "@/graphql/actor"; -import { FETCH_GROUP } from "@/graphql/group"; +import { DELETE_GROUP, FETCH_GROUP } from "@/graphql/group"; import RouteName from "@/router/name"; -import { IActor, IGroup, IPerson, usernameWithDomain } from "@/types/actor"; +import { + IActor, + IFollower, + IGroup, + IPerson, + usernameWithDomain, +} from "@/types/actor"; import { MemberRole } from "@/types/enums"; import { Component, Vue } from "vue-property-decorator"; +import { Route } from "vue-router"; const now = new Date(); @@ -31,7 +38,7 @@ const now = new Date(); }, }, person: { - query: PERSON_MEMBERSHIP_GROUP, + query: PERSON_STATUS_GROUP, fetchPolicy: "cache-and-network", variables() { return { @@ -100,6 +107,27 @@ export default class GroupMixin extends Vue { ); } + get isCurrentActorFollowing(): boolean { + return this.currentActorFollow?.approved === true; + } + + get isCurrentActorPendingFollow(): boolean { + return this.currentActorFollow?.approved === false; + } + + get isCurrentActorFollowingNotify(): boolean { + return ( + this.isCurrentActorFollowing && this.currentActorFollow?.notify === true + ); + } + + get currentActorFollow(): IFollower | null { + if (this.person?.follows?.total > 0) { + return this.person?.follows?.elements[0]; + } + return null; + } + handleErrors(errors: any[]): void { if ( errors.some((error) => error.status_code === 404) || @@ -108,4 +136,28 @@ export default class GroupMixin extends Vue { this.$router.replace({ name: RouteName.PAGE_NOT_FOUND }); } } + + confirmDeleteGroup(): void { + this.$buefy.dialog.confirm({ + title: this.$t("Delete group") as string, + message: this.$t( + "Are you sure you want to completely delete this group? All members - including remote ones - will be notified and removed from the group, and all of the group data (events, posts, discussions, todos…) will be irretrievably destroyed." + ) as string, + confirmText: this.$t("Delete group") as string, + cancelText: this.$t("Cancel") as string, + type: "is-danger", + hasIcon: true, + onConfirm: () => this.deleteGroup(), + }); + } + + async deleteGroup(): Promise { + await this.$apollo.mutate<{ deleteGroup: IGroup }>({ + mutation: DELETE_GROUP, + variables: { + groupId: this.group.id, + }, + }); + return this.$router.push({ name: RouteName.MY_GROUPS }); + } } diff --git a/js/src/mixins/post.ts b/js/src/mixins/post.ts new file mode 100644 index 000000000..cfd7968e1 --- /dev/null +++ b/js/src/mixins/post.ts @@ -0,0 +1,64 @@ +import { DELETE_POST, FETCH_POST } from "@/graphql/post"; +import { usernameWithDomain } from "@/types/actor"; +import { IPost } from "@/types/post.model"; +import { Component, Vue } from "vue-property-decorator"; +import RouteName from "../router/name"; + +@Component({ + apollo: { + post: { + query: FETCH_POST, + fetchPolicy: "cache-and-network", + variables() { + return { + slug: this.slug, + }; + }, + skip() { + return !this.slug; + }, + error({ graphQLErrors }) { + this.handleErrors(graphQLErrors); + }, + }, + }, +}) +export default class PostMixin extends Vue { + post!: IPost; + + RouteName = RouteName; + + protected async openDeletePostModal(): Promise { + this.$buefy.dialog.confirm({ + type: "is-danger", + title: this.$t("Delete post") as string, + message: this.$t( + "Are you sure you want to delete this post? This action cannot be reverted." + ) as string, + onConfirm: () => this.deletePost(), + }); + } + + async deletePost(): Promise { + const { data } = await this.$apollo.mutate({ + mutation: DELETE_POST, + variables: { + id: this.post.id, + }, + }); + if (data && this.post.attributedTo) { + this.$router.push({ + name: RouteName.POSTS, + params: { + preferredUsername: usernameWithDomain(this.post.attributedTo), + }, + }); + } + } + + handleErrors(errors: any[]): void { + if (errors.some((error) => error.status_code === 404)) { + this.$router.replace({ name: RouteName.PAGE_NOT_FOUND }); + } + } +} diff --git a/js/src/router/event.ts b/js/src/router/event.ts index 633f5698b..1851b9e0d 100644 --- a/js/src/router/event.ts +++ b/js/src/router/event.ts @@ -52,6 +52,7 @@ export const eventRoutes: RouteConfig[] = [ path: "/events/me", name: EventRouteName.MY_EVENTS, component: myEvents, + props: true, meta: { requiredAuth: true, announcer: { message: (): string => i18n.t("My events") as string }, diff --git a/js/src/router/groups.ts b/js/src/router/groups.ts index 7ebdbc828..067b35879 100644 --- a/js/src/router/groups.ts +++ b/js/src/router/groups.ts @@ -18,6 +18,7 @@ export enum GroupsRouteName { POSTS = "POSTS", GROUP_EVENTS = "GROUP_EVENTS", GROUP_JOIN = "GROUP_JOIN", + GROUP_FOLLOW = "GROUP_FOLLOW", TIMELINE = "TIMELINE", } @@ -149,6 +150,14 @@ export const groupsRoutes: RouteConfig[] = [ name: GroupsRouteName.GROUP_JOIN, meta: { requiredAuth: false, announcer: { skip: true } }, }, + { + path: "/@:preferredUsername/follow", + component: (): Promise => + import("@/components/Group/JoinGroupWithAccount.vue"), + props: true, + name: GroupsRouteName.GROUP_FOLLOW, + meta: { requiredAuth: false, announcer: { skip: true } }, + }, { path: "/@:preferredUsername/timeline", name: GroupsRouteName.TIMELINE, diff --git a/js/src/styles/_event-card.scss b/js/src/styles/_event-card.scss new file mode 100644 index 000000000..f657bc47d --- /dev/null +++ b/js/src/styles/_event-card.scss @@ -0,0 +1,18 @@ +.event-organizer { + display: flex; + align-items: center; + + .organizer-name { + padding-left: 5px; + font-weight: 600; + } +} + +.event-subtitle { + display: flex; + align-items: center; + + & > span:not(.icon) { + padding-left: 5px; + } +} diff --git a/js/src/types/actor/follower.model.ts b/js/src/types/actor/follower.model.ts index 9c96b7ec0..5d0a9acc0 100644 --- a/js/src/types/actor/follower.model.ts +++ b/js/src/types/actor/follower.model.ts @@ -5,4 +5,5 @@ export interface IFollower { actor: IActor; targetActor: IActor; approved: boolean; + notify?: boolean; } diff --git a/js/src/types/actor/index.ts b/js/src/types/actor/index.ts index ca57d3a40..5ecc51b53 100644 --- a/js/src/types/actor/index.ts +++ b/js/src/types/actor/index.ts @@ -1,3 +1,4 @@ export * from "./actor.model"; export * from "./group.model"; export * from "./person.model"; +export * from "./follower.model"; diff --git a/js/src/types/actor/person.model.ts b/js/src/types/actor/person.model.ts index 699f8a72d..dc8451a42 100644 --- a/js/src/types/actor/person.model.ts +++ b/js/src/types/actor/person.model.ts @@ -6,12 +6,14 @@ import type { Paginate } from "../paginate"; import type { IParticipant } from "../participant.model"; import type { IMember } from "./member.model"; import type { IFeedToken } from "../feedtoken.model"; +import { IFollower } from "./follower.model"; export interface IPerson extends IActor { feedTokens: IFeedToken[]; goingToEvents: IEvent[]; participations: Paginate; memberships: Paginate; + follows: Paginate; user?: ICurrentUser; } @@ -31,6 +33,7 @@ export class Person extends Actor implements IPerson { this.patch(hash); } + follows!: Paginate; patch(hash: IPerson | Record): void { Object.assign(this, hash); diff --git a/js/src/types/current-user.model.ts b/js/src/types/current-user.model.ts index ca752b068..428e36195 100644 --- a/js/src/types/current-user.model.ts +++ b/js/src/types/current-user.model.ts @@ -3,6 +3,7 @@ import type { IPerson } from "@/types/actor/person.model"; import type { Paginate } from "./paginate"; import type { IParticipant } from "./participant.model"; import { ICurrentUserRole, INotificationPendingEnum } from "./enums"; +import { IFollowedGroupEvent } from "./followedGroupEvent.model"; export interface ICurrentUser { id: string; @@ -47,6 +48,7 @@ export interface IUser extends ICurrentUser { drafts: IEvent[]; settings: IUserSettings; activitySettings: IActivitySetting[]; + followedGroupEvents: Paginate; locale: string; provider?: string; lastSignInAt: string; diff --git a/js/src/types/event.model.ts b/js/src/types/event.model.ts index 4574e2d3e..6f66e085b 100644 --- a/js/src/types/event.model.ts +++ b/js/src/types/event.model.ts @@ -4,7 +4,7 @@ import type { ITag } from "@/types/tag.model"; import type { IMedia } from "@/types/media.model"; import type { IComment } from "@/types/comment.model"; import type { Paginate } from "@/types/paginate"; -import { Actor, Group } from "./actor"; +import { Actor, displayName, Group } from "./actor"; import type { IActor, IGroup, IPerson } from "./actor"; import type { IParticipant } from "./participant.model"; import { EventOptions } from "./event-options.model"; @@ -257,3 +257,21 @@ export function toEditJSON(event: IEditableEvent): IEventEditJSON { })), }; } + +export function organizer(event: IEvent): IActor | null { + if (event.attributedTo?.id) { + return event.attributedTo; + } + if (event.organizerActor) { + return event.organizerActor; + } + return null; +} + +export function organizerDisplayName(event: IEvent): string | null { + const organizerActor = organizer(event); + if (organizerActor) { + return displayName(organizerActor); + } + return null; +} diff --git a/js/src/types/followedGroupEvent.model.ts b/js/src/types/followedGroupEvent.model.ts new file mode 100644 index 000000000..ee80a6ebe --- /dev/null +++ b/js/src/types/followedGroupEvent.model.ts @@ -0,0 +1,10 @@ +import { IEvent } from "./event.model"; +import { IPerson, IGroup } from "./actor"; +import { IUser } from "./current-user.model"; + +export interface IFollowedGroupEvent { + profile: IPerson; + group: IGroup; + user: IUser; + event: IEvent; +} diff --git a/js/src/variables.scss b/js/src/variables.scss index 02942a8c1..46c03bcbb 100644 --- a/js/src/variables.scss +++ b/js/src/variables.scss @@ -53,7 +53,7 @@ $success: #0d8758; $success-invert: findColorInvert($success); $info: #36bcd4; $info-invert: findColorInvert($info); -$danger: #ff2e54; +$danger: #cd2026; $danger-invert: findColorInvert($danger); $link: $primary; $link-invert: $primary-invert; diff --git a/js/src/views/Admin/Follows.vue b/js/src/views/Admin/Follows.vue index 50ce67eba..aae1acecd 100644 --- a/js/src/views/Admin/Follows.vue +++ b/js/src/views/Admin/Follows.vue @@ -89,7 +89,7 @@ import RouteName from "../../router/name"; }, metaInfo() { return { - title: this.$t("Instance follows") as string, + title: this.$t("Federation") as string, }; }, }) diff --git a/js/src/views/Discussions/DiscussionsList.vue b/js/src/views/Discussions/DiscussionsList.vue index a49c901c8..22b06a54a 100644 --- a/js/src/views/Discussions/DiscussionsList.vue +++ b/js/src/views/Discussions/DiscussionsList.vue @@ -89,7 +89,7 @@ import { MemberRole } from "@/types/enums"; import { CURRENT_ACTOR_CLIENT, GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED, - PERSON_MEMBERSHIP_GROUP, + PERSON_STATUS_GROUP, } from "@/graphql/actor"; import { IMember } from "@/types/actor/member.model"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; @@ -116,7 +116,7 @@ const DISCUSSIONS_PER_PAGE = 10; }, }, person: { - query: PERSON_MEMBERSHIP_GROUP, + query: PERSON_STATUS_GROUP, fetchPolicy: "cache-and-network", variables() { return { diff --git a/js/src/views/Event/Edit.vue b/js/src/views/Event/Edit.vue index 7662c41a6..341d5212c 100644 --- a/js/src/views/Event/Edit.vue +++ b/js/src/views/Event/Edit.vue @@ -606,8 +606,7 @@ import { CURRENT_ACTOR_CLIENT, IDENTITIES, LOGGED_USER_DRAFTS, - LOGGED_USER_PARTICIPATIONS, - PERSON_MEMBERSHIP_GROUP, + PERSON_STATUS_GROUP, } from "../../graphql/actor"; import { displayNameAndUsername, @@ -635,6 +634,7 @@ import { IEventOptions } from "@/types/event-options.model"; import { USER_SETTINGS } from "@/graphql/user"; import { IUser } from "@/types/current-user.model"; import { IAddress } from "@/types/address.model"; +import { LOGGED_USER_PARTICIPATIONS } from "@/graphql/participant"; const DEFAULT_LIMIT_NUMBER_OF_PLACES = 10; @@ -669,7 +669,7 @@ const DEFAULT_LIMIT_NUMBER_OF_PLACES = 10; }, }, person: { - query: PERSON_MEMBERSHIP_GROUP, + query: PERSON_STATUS_GROUP, fetchPolicy: "cache-and-network", variables() { return { diff --git a/js/src/views/Event/Event.vue b/js/src/views/Event/Event.vue index 48991bdad..3756830e3 100755 --- a/js/src/views/Event/Event.vue +++ b/js/src/views/Event/Event.vue @@ -345,15 +345,7 @@

{{ $t("These events may interest you") }}

-
-
- -
-
+ {{ $t("Past events") }} - - - +
-
- - {{ $t("Upcoming") }} - - -
- {{ month[0] }} - -
-
-
- {{ $t("Load more") }} +
+ + + {{ + showUpcoming ? $t("Upcoming events") : $t("Past events") + }} + + + {{ $t("Drafts") }} + + + {{ + $t("Attending") + }} + + + {{ + $t("From my groups") + }} + +

+ {{ + $tc( + "You have attended {count} events in the past.", + pastParticipations.total, + { + count: pastParticipations.total, + } + ) + }} +

+ + + + +
+
+
+
-
-
-
- - {{ $t("Drafts") }} - -
- -
-
-
- - {{ $t("Past events") }} - - -
- {{ month[0] }} - -
-
-
- +
+
+ +
+ {{ month[0] }} +
+ + +
+
+
+
+ {{ $t("Load more") }} +
+
+
{{ $t("Load more") }} - -
-
-
-

- {{ $t("You didn't create or join any event yet.") }} - - {{ $t("create an event") }} - {{ $t("explore the events") }} - + {{ + $t( + "You don't have any upcoming events. Maybe try another filter?" + ) + }}

+ + {{ $t("create an event") }} + {{ $t("explore the events") }} +
-
+
+
+ +
+ {{ month[0] }} + +
+
+
+ {{ $t("Load more") }} +
+
- + @@ -133,35 +198,47 @@ import { ParticipantRole } from "@/types/enums"; import RouteName from "@/router/name"; import { supportsWebPFormat } from "@/utils/support"; import { IParticipant, Participant } from "../../types/participant.model"; +import { LOGGED_USER_DRAFTS } from "../../graphql/actor"; +import { EventModel, IEvent } from "../../types/event.model"; +import EventParticipationCard from "../../components/Event/EventParticipationCard.vue"; +import MultiEventMinimalistCard from "../../components/Event/MultiEventMinimalistCard.vue"; +import EventMinimalistCard from "../../components/Event/EventMinimalistCard.vue"; +import Subtitle from "../../components/Utils/Subtitle.vue"; import { LOGGED_USER_PARTICIPATIONS, - LOGGED_USER_DRAFTS, -} from "../../graphql/actor"; -import { EventModel, IEvent } from "../../types/event.model"; -import EventListCard from "../../components/Event/EventListCard.vue"; -import EventCard from "../../components/Event/EventCard.vue"; -import Subtitle from "../../components/Utils/Subtitle.vue"; + LOGGED_USER_UPCOMING_EVENTS, +} from "@/graphql/participant"; +import { Paginate } from "@/types/paginate"; + +type Eventable = IParticipant | IEvent; @Component({ components: { Subtitle, - EventCard, - EventListCard, + MultiEventMinimalistCard, + EventParticipationCard, + EventMinimalistCard, }, apollo: { config: CONFIG, - futureParticipations: { - query: LOGGED_USER_PARTICIPATIONS, + userUpcomingEvents: { + query: LOGGED_USER_UPCOMING_EVENTS, fetchPolicy: "cache-and-network", - variables: { - page: 1, - limit: 10, - afterDateTime: new Date().toISOString(), + variables() { + return { + page: 1, + limit: 10, + afterDateTime: this.dateFilter, + }; }, - update: (data) => - data.loggedUser.participations.elements.map( + update(data) { + this.futureParticipations = data.loggedUser.participations.elements.map( (participation: IParticipant) => new Participant(participation) - ), + ); + this.groupEvents = data.loggedUser.followedGroupEvents.elements.map( + ({ event }: { event: IEvent }) => event + ); + }, }, drafts: { query: LOGGED_USER_DRAFTS, @@ -176,15 +253,14 @@ import Subtitle from "../../components/Utils/Subtitle.vue"; pastParticipations: { query: LOGGED_USER_PARTICIPATIONS, fetchPolicy: "cache-and-network", - variables: { - page: 1, - limit: 10, - beforeDateTime: new Date().toISOString(), + variables() { + return { + page: 1, + limit: 10, + beforeDateTime: this.dateFilter, + }; }, - update: (data) => - data.loggedUser.participations.elements.map( - (participation: IParticipant) => new Participant(participation) - ), + update: (data) => data.loggedUser.participations, }, }, metaInfo() { @@ -200,13 +276,89 @@ export default class MyEvents extends Vue { limit = 10; + get showUpcoming(): boolean { + return ((this.$route.query.showUpcoming as string) || "true") === "true"; + } + + set showUpcoming(showUpcoming: boolean) { + this.$router.push({ + name: RouteName.MY_EVENTS, + query: { ...this.$route.query, showUpcoming: showUpcoming.toString() }, + }); + } + + get showDrafts(): boolean { + return ((this.$route.query.showDrafts as string) || "true") === "true"; + } + + set showDrafts(showDrafts: boolean) { + this.$router.push({ + name: RouteName.MY_EVENTS, + query: { ...this.$route.query, showDrafts: showDrafts.toString() }, + }); + } + + get showAttending(): boolean { + return ((this.$route.query.showAttending as string) || "true") === "true"; + } + + set showAttending(showAttending: boolean) { + this.$router.push({ + name: RouteName.MY_EVENTS, + query: { ...this.$route.query, showAttending: showAttending.toString() }, + }); + } + + get showMyGroups(): boolean { + return ((this.$route.query.showMyGroups as string) || "false") === "true"; + } + + set showMyGroups(showMyGroups: boolean) { + this.$router.push({ + name: RouteName.MY_EVENTS, + query: { ...this.$route.query, showMyGroups: showMyGroups.toString() }, + }); + } + + get dateFilter(): Date { + const query = this.$route.query.dateFilter as string; + if (query && /(\d{4}-\d{2}-\d{2})/.test(query)) { + return new Date(`${query}T00:00:00Z`); + } + return new Date(); + } + + set dateFilter(date: Date) { + const pad = (number: number) => { + if (number < 10) { + return "0" + number; + } + return number; + }; + const stringifiedDate = `${date.getFullYear()}-${pad( + date.getMonth() + 1 + )}-${pad(date.getDate())}`; + + if (this.$route.query.dateFilter !== stringifiedDate) { + this.$router.push({ + name: RouteName.MY_EVENTS, + query: { + ...this.$route.query, + dateFilter: stringifiedDate, + }, + }); + } + } + config!: IConfig; futureParticipations: IParticipant[] = []; + groupEvents: IEvent[] = []; + hasMoreFutureParticipations = true; - pastParticipations: IParticipant[] = []; + pastParticipations: Paginate = { elements: [], total: 0 }; hasMorePastParticipations = true; @@ -216,49 +368,68 @@ export default class MyEvents extends Vue { supportsWebPFormat = supportsWebPFormat; - static monthlyParticipations( - participations: IParticipant[], + static monthlyEvents( + elements: Eventable[], revertSort = false - ): Map { - const res = participations.filter( - ({ event, role }) => - event.beginsOn != null && role !== ParticipantRole.REJECTED - ); - if (revertSort) { - res.sort( - (a: IParticipant, b: IParticipant) => - b.event.beginsOn.getTime() - a.event.beginsOn.getTime() - ); - } else { - res.sort( - (a: IParticipant, b: IParticipant) => - a.event.beginsOn.getTime() - b.event.beginsOn.getTime() - ); - } - return res.reduce( - (acc: Map, participation: IParticipant) => { - const month = new Date(participation.event.beginsOn).toLocaleDateString( - undefined, - { - year: "numeric", - month: "long", - } + ): Map { + const res = elements.filter((element: Eventable) => { + if ("role" in element) { + return ( + element.event.beginsOn != null && + element.role !== ParticipantRole.REJECTED ); - const filteredParticipations: IParticipant[] = acc.get(month) || []; - filteredParticipations.push(participation); - acc.set(month, filteredParticipations); - return acc; - }, - new Map() - ); + } + return element.beginsOn != null; + }); + if (revertSort) { + res.sort((a: Eventable, b: Eventable) => { + const aTime = "role" in a ? a.event.beginsOn : a.beginsOn; + const bTime = "role" in b ? b.event.beginsOn : b.beginsOn; + return new Date(bTime).getTime() - new Date(aTime).getTime(); + }); + } else { + res.sort((a: Eventable, b: Eventable) => { + const aTime = "role" in a ? a.event.beginsOn : a.beginsOn; + const bTime = "role" in b ? b.event.beginsOn : b.beginsOn; + return new Date(aTime).getTime() - new Date(bTime).getTime(); + }); + } + return res.reduce((acc: Map, element: Eventable) => { + const month = new Date( + "role" in element ? element.event.beginsOn : element.beginsOn + ).toLocaleDateString(undefined, { + year: "numeric", + month: "long", + }); + const filteredElements: Eventable[] = acc.get(month) || []; + filteredElements.push(element); + acc.set(month, filteredElements); + return acc; + }, new Map()); } - get monthlyFutureParticipations(): Map { - return MyEvents.monthlyParticipations(this.futureParticipations); + get monthlyFutureEvents(): Map { + let eventable = [] as Eventable[]; + if (this.showAttending) { + eventable = [...eventable, ...this.futureParticipations]; + } + if (this.showMyGroups) { + eventable = [...eventable, ...this.groupEvents]; + } + return MyEvents.monthlyEvents(eventable); } - get monthlyPastParticipations(): Map { - return MyEvents.monthlyParticipations(this.pastParticipations, true); + get monthlyPastParticipations(): Map { + return MyEvents.monthlyEvents(this.pastParticipations.elements, true); + } + + monthParticipationsIds(elements: Eventable[]): string[] { + let res = elements.filter((element: Eventable) => { + return "role" in element; + }) as IParticipant[]; + return res.map(({ event }: { event: IEvent }) => { + return event.id as string; + }); } loadMoreFutureParticipations(): void { @@ -287,9 +458,12 @@ export default class MyEvents extends Vue { this.futureParticipations = this.futureParticipations.filter( (participation) => participation.event.id !== eventid ); - this.pastParticipations = this.pastParticipations.filter( - (participation) => participation.event.id !== eventid - ); + this.pastParticipations = { + elements: this.pastParticipations.elements.filter( + (participation) => participation.event.id !== eventid + ), + total: this.pastParticipations.total - 1, + }; } get hideCreateEventButton(): boolean { @@ -300,6 +474,8 @@ export default class MyEvents extends Vue { diff --git a/js/src/views/Group/Group.vue b/js/src/views/Group/Group.vue index 2cde993c2..8e5033df3 100644 --- a/js/src/views/Group/Group.vue +++ b/js/src/views/Group/Group.vue @@ -149,6 +149,7 @@ currentActor.id " @click="joinGroup" + @keyup.enter="joinGroup" type="is-primary" :disabled="previewPublic" >{{ $t("Join group") }}
{{ $t("Join group") }} + {{ $t("Follow") }} + {{ $t("Follow") }} + {{ $t("Cancel follow request") }}{{ $t("Unfollow") }} + {{ $t("Share") }} @@ -196,6 +251,7 @@ v-if="!previewPublic && isCurrentActorAGroupMember" aria-role="menuitem" @click="triggerShare()" + @keyup.enter="triggerShare()" > @@ -230,6 +286,7 @@ v-if="ableToReport" aria-role="menuitem" @click="isReportModalActive = true" + @keyup.enter="isReportModalActive = true" > @@ -239,7 +296,8 @@ @@ -351,8 +409,8 @@ class="organized-events-wrapper" v-if="group && group.organizedEvents.total > 0" > - @@ -120,10 +202,8 @@ import { IMember } from "@/types/actor/member.model"; import { CURRENT_ACTOR_CLIENT, PERSON_MEMBERSHIPS, - PERSON_MEMBERSHIP_GROUP, + PERSON_STATUS_GROUP, } from "../../graphql/actor"; -import { FETCH_POST } from "../../graphql/post"; -import { IPost } from "../../types/post.model"; import { usernameWithDomain } from "../../types/actor"; import RouteName from "../../router/name"; import Tag from "../../components/Tag.vue"; @@ -132,9 +212,17 @@ import ActorInline from "../../components/Account/ActorInline.vue"; import { formatDistanceToNowStrict } from "date-fns"; import { CURRENT_USER_CLIENT } from "@/graphql/user"; import { ICurrentUser } from "@/types/current-user.model"; +import { CONFIG } from "@/graphql/config"; +import { IConfig } from "@/types/config.model"; +import SharePostModal from "../../components/Post/SharePostModal.vue"; +import { IReport } from "@/types/report.model"; +import { CREATE_REPORT } from "@/graphql/report"; +import ReportModal from "../../components/Report/ReportModal.vue"; +import PostMixin from "../../mixins/post"; @Component({ apollo: { + config: CONFIG, currentUser: CURRENT_USER_CLIENT, currentActor: CURRENT_ACTOR_CLIENT, memberships: { @@ -150,23 +238,8 @@ import { ICurrentUser } from "@/types/current-user.model"; return !this.currentActor || !this.currentActor.id; }, }, - post: { - query: FETCH_POST, - fetchPolicy: "cache-and-network", - variables() { - return { - slug: this.slug, - }; - }, - skip() { - return !this.slug; - }, - error({ graphQLErrors }) { - this.handleErrors(graphQLErrors); - }, - }, person: { - query: PERSON_MEMBERSHIP_GROUP, + query: PERSON_STATUS_GROUP, fetchPolicy: "cache-and-network", variables() { return { @@ -187,6 +260,8 @@ import { ICurrentUser } from "@/types/current-user.model"; Tag, LazyImageWrapper, ActorInline, + SharePostModal, + ReportModal, }, metaInfo() { return { @@ -200,13 +275,13 @@ import { ICurrentUser } from "@/types/current-user.model"; }; }, }) -export default class Post extends mixins(GroupMixin) { +export default class Post extends mixins(GroupMixin, PostMixin) { @Prop({ required: true, type: String }) slug!: string; - post!: IPost; - memberships!: IMember[]; + config!: IConfig; + RouteName = RouteName; currentUser!: ICurrentUser; @@ -217,11 +292,9 @@ export default class Post extends mixins(GroupMixin) { PostVisibility = PostVisibility; - handleErrors(errors: any[]): void { - if (errors.some((error) => error.status_code === 404)) { - this.$router.replace({ name: RouteName.PAGE_NOT_FOUND }); - } - } + isShareModalActive = false; + + isReportModalActive = false; get isCurrentActorMember(): boolean { if (!this.post.attributedTo || !this.memberships) return false; @@ -236,6 +309,62 @@ export default class Post extends mixins(GroupMixin) { ICurrentUserRole.MODERATOR, ].includes(this.currentUser.role); } + + get ableToReport(): boolean { + return ( + this.config && + (this.currentActor.id != null || this.config.anonymous.reports.allowed) + ); + } + + triggerShare(): void { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore-start + if (navigator.share) { + navigator + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + .share({ + title: this.post.title, + url: this.post.url, + }) + .then(() => console.log("Successful share")) + .catch((error: any) => console.log("Error sharing", error)); + } else { + this.isShareModalActive = true; + // send popup + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore-end + } + + async reportPost(content: string, forward: boolean): Promise { + this.isReportModalActive = false; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + this.$refs.reportModal.close(); + const postTitle = this.post.title; + + try { + await this.$apollo.mutate({ + mutation: CREATE_REPORT, + variables: { + postId: this.post.id, + reportedId: this.post.attributedTo?.id, + content, + forward, + }, + }); + this.$notifier.success( + this.$t("Post {eventTitle} reported", { postTitle }) as string + ); + } catch (error) { + console.error(error); + } + } + get groupDomain(): string | undefined | null { + return this.post.attributedTo?.domain; + } } diff --git a/js/src/views/Resources/ResourceFolder.vue b/js/src/views/Resources/ResourceFolder.vue index c830327b4..e8a6a90b9 100644 --- a/js/src/views/Resources/ResourceFolder.vue +++ b/js/src/views/Resources/ResourceFolder.vue @@ -60,11 +60,11 @@ @@ -418,6 +418,10 @@ export default class Resources extends Mixins(ResourceMixin) { return this.filteredPath.slice(-1)[0]; } + get resourceProviders(): IProvider[] { + return this.config?.resourceProviders || []; + } + async createResource(): Promise { if (!this.resource.actor) return; this.modalError = ""; diff --git a/js/src/views/User/Login.vue b/js/src/views/User/Login.vue index 27c1e7251..5d0700d4c 100644 --- a/js/src/views/User/Login.vue +++ b/js/src/views/User/Login.vue @@ -158,6 +158,7 @@ import AuthProviders from "../../components/User/AuthProviders.vue"; return { title: this.$t("Login on Mobilizon!") as string, titleTemplate: "%s | Mobilizon", + meta: [{ name: "robots", content: "noindex" }], }; }, }) diff --git a/js/src/views/User/ResendConfirmation.vue b/js/src/views/User/ResendConfirmation.vue index a791e5dc2..bedfeb237 100644 --- a/js/src/views/User/ResendConfirmation.vue +++ b/js/src/views/User/ResendConfirmation.vue @@ -60,6 +60,7 @@ import RouteName from "../../router/name"; metaInfo() { return { title: this.$t("Resend confirmation email") as string, + meta: [{ name: "robots", content: "noindex" }], }; }, }) diff --git a/js/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap b/js/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap index 968fe545b..cebfa47e2 100644 --- a/js/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap +++ b/js/tests/unit/specs/components/Participation/__snapshots__/ParticipationWithoutAccount.spec.ts.snap @@ -19,6 +19,7 @@ exports[`ParticipationWithoutAccount handles being already a participant 1`] = ` + @@ -30,6 +31,7 @@ exports[`ParticipationWithoutAccount handles being already a participant 1`] = `
You are already a participant of this event
+
@@ -88,6 +90,7 @@ exports[`ParticipationWithoutAccount renders the participation without account v
Unable to save your participation in this browser.
+

You may now close this window, or return to the event's page.

@@ -116,6 +119,7 @@ exports[`ParticipationWithoutAccount renders the warning if the event participat
Unable to save your participation in this browser.
+

You may now close this window, or return to the event's page.

diff --git a/js/tests/unit/specs/components/Post/PostElementItem.spec.ts b/js/tests/unit/specs/components/Post/PostElementItem.spec.ts deleted file mode 100644 index 0ce89f5a9..000000000 --- a/js/tests/unit/specs/components/Post/PostElementItem.spec.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { config, createLocalVue, mount } from "@vue/test-utils"; -import PostElementItem from "@/components/Post/PostElementItem.vue"; -import { formatDateTimeString } from "@/filters/datetime"; -import Buefy from "buefy"; -import VueRouter from "vue-router"; -import { routes } from "@/router"; -import { PostVisibility } from "@/types/enums"; - -const localVue = createLocalVue(); -localVue.use(Buefy); -localVue.use(VueRouter); -const router = new VueRouter({ routes, mode: "history" }); -localVue.filter("formatDateTimeString", formatDateTimeString); -config.mocks.$t = (key: string): string => key; - -const postData = { - id: "1", - slug: "my-blog-post-some-uuid", - title: "My Blog Post", - body: "My content", - insertedAt: "2020-12-02T09:01:20.873Z", - visibility: PostVisibility.PUBLIC, - author: { - preferredUsername: "author", - domain: "remote-domain.tld", - name: "Author", - }, - attributedTo: { - preferredUsername: "my-awesome-group", - domain: null, - name: "My Awesome Group", - }, -}; - -const generateWrapper = ( - customPostData: Record = {}, - isCurrentActorMember = false -) => { - return mount(PostElementItem, { - localVue, - router, - propsData: { - post: { ...postData, ...customPostData }, - isCurrentActorMember, - }, - }); -}; - -describe("PostElementItem", () => { - it("renders post with basic informations", () => { - const wrapper = generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - - expect( - wrapper.find("a.post-minimalist-card-wrapper").attributes("href") - ).toBe(`/p/${postData.slug}`); - - expect(wrapper.find(".post-minimalist-title").text()).toContain( - postData.title - ); - expect(wrapper.find(".metadata").text()).toContain( - formatDateTimeString(postData.insertedAt, undefined, false) - ); - - expect(wrapper.find(".metadata small").text()).not.toContain("Public"); - }); - - it("shows the author if actor is a group member", () => { - const wrapper = generateWrapper({}, true); - expect(wrapper.html()).toMatchSnapshot(); - - expect(wrapper.find(".metadata").text()).toContain(`Created by {username}`); - }); - - it("shows the draft tag if post is a draft", () => { - const wrapper = generateWrapper({ draft: true }); - expect(wrapper.html()).toMatchSnapshot(); - - expect(wrapper.findComponent({ name: "b-tag" }).exists()).toBe(true); - }); - - it("tells if the post is public when the actor is a group member", () => { - const wrapper = generateWrapper({}, true); - expect(wrapper.html()).toMatchSnapshot(); - - expect(wrapper.find(".metadata small").text()).toContain("Public"); - }); - - it("tells if the post is accessible only through link", () => { - const wrapper = generateWrapper({ visibility: PostVisibility.UNLISTED }); - expect(wrapper.html()).toMatchSnapshot(); - - expect(wrapper.find(".metadata small").text()).toContain( - "Accessible through link" - ); - }); - - it("tells if the post is accessible only to members", () => { - const wrapper = generateWrapper({ visibility: PostVisibility.PRIVATE }); - expect(wrapper.html()).toMatchSnapshot(); - - expect(wrapper.find(".metadata small").text()).toContain( - "Accessible only to members" - ); - }); -}); diff --git a/js/tests/unit/specs/components/Post/PostListItem.spec.ts b/js/tests/unit/specs/components/Post/PostListItem.spec.ts index cf52cb295..f34b29a87 100644 --- a/js/tests/unit/specs/components/Post/PostListItem.spec.ts +++ b/js/tests/unit/specs/components/Post/PostListItem.spec.ts @@ -4,6 +4,8 @@ import Buefy from "buefy"; import VueRouter from "vue-router"; import { routes } from "@/router"; import { enUS } from "date-fns/locale"; +import { formatDateTimeString } from "@/filters/datetime"; +import { i18n } from "@/utils/i18n"; const localVue = createLocalVue(); localVue.use(Buefy); @@ -20,14 +22,23 @@ const postData = { title: "My Blog Post", body: "My content", insertedAt: "2020-12-02T09:01:20.873Z", + tags: [], }; -const generateWrapper = (customPostData: Record = {}) => { +const generateWrapper = ( + customPostData: Record = {}, + customProps: Record = {} +) => { return mount(PostListItem, { localVue, router, + i18n, propsData: { post: { ...postData, ...customPostData }, + ...customProps, + }, + filters: { + formatDateTimeString, }, }); }; @@ -36,14 +47,40 @@ describe("PostListItem", () => { it("renders post list item with basic informations", () => { const wrapper = generateWrapper(); - // can't use the snapshot feature because of `ago` + expect(wrapper.html()).toMatchSnapshot(); expect( wrapper.find("a.post-minimalist-card-wrapper").attributes("href") ).toBe(`/p/${postData.slug}`); - expect(wrapper.find(".post-minimalist-title").text()).toContain( - postData.title + expect(wrapper.find(".post-minimalist-title").text()).toBe(postData.title); + + expect(wrapper.find(".post-publication-date").text()).toBe("Dec 2, 2020"); + + expect(wrapper.find(".post-publisher").exists()).toBeFalsy(); + }); + + it("renders post list item with tags", () => { + const wrapper = generateWrapper({ + tags: [{ slug: "a-tag", title: "A tag" }], + }); + + expect(wrapper.html()).toMatchSnapshot(); + + expect(wrapper.find(".tags").text()).toContain("A tag"); + + expect(wrapper.find(".post-publisher").exists()).toBeFalsy(); + }); + + it("renders post list item with publisher name", () => { + const wrapper = generateWrapper( + { author: { name: "An author" } }, + { isCurrentActorMember: true } ); + + expect(wrapper.html()).toMatchSnapshot(); + + expect(wrapper.find(".post-publisher").exists()).toBeTruthy(); + expect(wrapper.find(".post-publisher").text()).toContain("An author"); }); }); diff --git a/js/tests/unit/specs/components/Post/__snapshots__/PostElementItem.spec.ts.snap b/js/tests/unit/specs/components/Post/__snapshots__/PostElementItem.spec.ts.snap deleted file mode 100644 index a8d299b71..000000000 --- a/js/tests/unit/specs/components/Post/__snapshots__/PostElementItem.spec.ts.snap +++ /dev/null @@ -1,103 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`PostElementItem renders post with basic informations 1`] = ` - -
-
-
-
-

My Blog Post

- -
-
-
-
-`; - -exports[`PostElementItem shows the author if actor is a group member 1`] = ` - -
-
-
-
-

My Blog Post

- -
-
-
-
-`; - -exports[`PostElementItem shows the draft tag if post is a draft 1`] = ` - -
-
-
-
-

My Blog Post

- -
-
-
-
-`; - -exports[`PostElementItem tells if the post is accessible only through link 1`] = ` - -
-
-
-
-

My Blog Post

- -
-
-
-
-`; - -exports[`PostElementItem tells if the post is accessible only to members 1`] = ` - -
-
-
-
-

My Blog Post

- -
-
-
-
-`; - -exports[`PostElementItem tells if the post is public when the actor is a group member 1`] = ` - -
-
-
-
-

My Blog Post

- -
-
-
-
-`; diff --git a/js/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap b/js/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap new file mode 100644 index 000000000..65ecf28a4 --- /dev/null +++ b/js/tests/unit/specs/components/Post/__snapshots__/PostListItem.spec.ts.snap @@ -0,0 +1,39 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`PostListItem renders post list item with basic informations 1`] = ` + + +
+

My Blog Post

+

Dec 2, 2020

+ + +
+
+`; + +exports[`PostListItem renders post list item with publisher name 1`] = ` + + +
+

My Blog Post

+

Dec 2, 2020

+ +

Published by An author

+
+
+`; + +exports[`PostListItem renders post list item with tags 1`] = ` + + +
+

My Blog Post

+

Dec 2, 2020

+
A tag + +
+ +
+
+`; diff --git a/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap b/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap index c9657457d..8b7805ec7 100644 --- a/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap +++ b/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap @@ -48,6 +48,7 @@ exports[`Reset page shows error if token is invalid 1`] = `
The token you provided is invalid.
+
diff --git a/js/vue.config.js b/js/vue.config.js index d55ed6fcd..2298e3d43 100644 --- a/js/vue.config.js +++ b/js/vue.config.js @@ -21,7 +21,9 @@ module.exports = { css: { loaderOptions: { scss: { - additionalData: `@import "@/variables.scss";`, + additionalData: ` + @use "@/variables.scss" as *; + `, sassOptions: { quietDeps: true, }, diff --git a/js/yarn.lock b/js/yarn.lock index 586de0738..70e11c5cb 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -61,32 +61,32 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.15.8", "@babel/code-frame@^7.8.3": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" - integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.8.3": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== dependencies: - "@babel/highlight" "^7.14.5" + "@babel/highlight" "^7.16.0" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.0.tgz#ea269d7f78deb3a7826c39a4048eecda541ebdaa" + integrity sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.16", "@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.8.tgz#195b9f2bffe995d2c6c159e72fe525b4114e8c10" - integrity sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og== +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.7.5": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" + integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== dependencies: - "@babel/code-frame" "^7.15.8" - "@babel/generator" "^7.15.8" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.8" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.8" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.0" + "@babel/helpers" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -94,64 +94,64 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.15.4", "@babel/generator@^7.15.8", "@babel/generator@^7.7.2": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" - integrity sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g== +"@babel/generator@^7.16.0", "@babel/generator@^7.7.2": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" + integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== dependencies: - "@babel/types" "^7.15.6" + "@babel/types" "^7.16.0" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz#f1a686b92da794020c26582eb852e9accd0d7882" + integrity sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ== dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-explode-assignable-expression" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== +"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz#01d615762e796c17952c29e3ede9d6de07d235a8" + integrity sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg== dependencies: - "@babel/compat-data" "^7.15.0" + "@babel/compat-data" "^7.16.0" "@babel/helper-validator-option" "^7.14.5" browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== +"@babel/helper-create-class-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz#090d4d166b342a03a9fec37ef4fd5aeb9c7c6a4b" + integrity sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-member-expression-to-functions" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== +"@babel/helper-create-regexp-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" + integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/helper-define-polyfill-provider@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz#8867aed79d3ea6cade40f801efb7ac5c66916b10" + integrity sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -162,117 +162,117 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== +"@babel/helper-explode-assignable-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" + integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== +"@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== +"@babel/helper-get-function-arity@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" + integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== +"@babel/helper-hoist-variables@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" + integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== +"@babel/helper-member-expression-to-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" + integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" - integrity sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg== +"@babel/helper-module-transforms@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" + integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA== dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== +"@babel/helper-optimise-call-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" + integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" "@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.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== +"@babel/helper-remap-async-to-generator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz#d5aa3b086e13a5fe05238ff40c3a5a0c2dab3ead" + integrity sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-wrap-function" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== +"@babel/helper-replace-supers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" + integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-member-expression-to-functions" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== +"@babel/helper-simple-access@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" + integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== +"@babel/helper-split-export-declaration@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" + integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": +"@babel/helper-validator-identifier@^7.15.7": version "7.15.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== @@ -282,183 +282,190 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== +"@babel/helper-wrap-function@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz#b3cf318afce774dfe75b86767cd6d68f3482e57c" + integrity sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g== dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-function-name" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== +"@babel/helpers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.0.tgz#875519c979c232f41adfbd43a3b0398c2e388183" + integrity sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ== dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== +"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.15.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.8", "@babel/parser@^7.7.2": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" - integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.7.2": + version "7.16.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.2.tgz#3723cd5c8d8773eef96ce57ea1d9b7faaccd12ac" + integrity sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw== -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.0": + version "7.16.2" + 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.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" + integrity sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" -"@babel/plugin-proposal-async-generator-functions@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz#a3100f785fab4357987c4223ab1b02b599048403" - integrity sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2" + integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + +"@babel/plugin-proposal-async-generator-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz#11425d47a60364352f668ad5fbc1d6596b2c5caf" + integrity sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.16.0" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz#c029618267ddebc7280fa286e0f8ca2a278a2d1a" + integrity sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== +"@babel/plugin-proposal-class-static-block@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz#5296942c564d8144c83eea347d0aa8a0b89170e7" + integrity sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.12.13": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.15.8.tgz#eb2969abf8993f15289f09fed762bb1df1521bd5" - integrity sha512-5n8+xGK7YDrXF+WAORg3P7LlCCdiaAyKLZi22eP2BwTy4kJ0kFUMMDCj4nQ8YrKyNZgjhU/9eRVqONnjB3us8g== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.0.tgz#515db5f6891611c0d176b63ede0844fbd9be797b" + integrity sha512-ttvhKuVnQwoNQrcTd1oe6o49ahaZ1kns1fsJKzTVOaS/FJDJoK4qzgVS68xzJhYUMgTnbXW6z/T6rlP3lL7tJw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-decorators" "^7.14.5" + "@babel/plugin-syntax-decorators" "^7.16.0" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-proposal-dynamic-import@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz#783eca61d50526202f9b296095453977e88659f1" + integrity sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-proposal-export-namespace-from@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz#9c01dee40b9d6b847b656aaf4a3976a71740f222" + integrity sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +"@babel/plugin-proposal-json-strings@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz#cae35a95ed1d2a7fa29c4dc41540b84a72e9ab25" + integrity sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz#a711b8ceb3ffddd3ef88d3a49e86dbd3cc7db3fd" + integrity sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz#44e1cce08fe2427482cf446a91bb451528ed0596" + integrity sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz#5d418e4fbbf8b9b7d03125d3a52730433a373734" + integrity sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== +"@babel/plugin-proposal-object-rest-spread@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz#5fb32f6d924d6e6712810362a60e12a2609872e6" + integrity sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" + "@babel/compat-data" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" + "@babel/plugin-transform-parameters" "^7.16.0" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz#5910085811ab4c28b00d6ebffa4ab0274d1e5f16" + integrity sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz#56dbc3970825683608e9efb55ea82c2a2d6c8dc0" + integrity sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz#b4dafb9c717e4301c5776b30d080d6383c89aff6" + integrity sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== +"@babel/plugin-proposal-private-property-in-object@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz#69e935b2c5c79d2488112d886f0c4e2790fee76f" + integrity sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== +"@babel/plugin-proposal-unicode-property-regex@^7.16.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz#890482dfc5ea378e42e19a71e709728cabf18612" + integrity sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-async-generators@^7.8.4": @@ -489,10 +496,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz#eafb9c0cbe09c8afeb964ba3a7bbd63945a72f20" - integrity sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw== +"@babel/plugin-syntax-decorators@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.0.tgz#eb8d811cdd1060f6ac3c00956bf3f6335505a32f" + integrity sha512-nxnnngZClvlY13nHJAIDow0S7Qzhq64fQ/NlqS+VER3kjW/4F0jLhXjeL8jcwSwz6Ca3rotT5NJD2T9I7lcv7g== dependencies: "@babel/helper-plugin-utils" "^7.14.5" @@ -525,9 +532,9 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.2.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz#f9624394317365a9a88c82358d3f8471154698f1" + integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" @@ -588,297 +595,298 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz#2feeb13d9334cc582ea9111d3506f773174179bb" + integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-transform-arrow-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz#951706f8b449c834ed07bd474c0924c944b95a8e" + integrity sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-transform-async-to-generator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604" + integrity sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw== dependencies: - "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.16.0" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-block-scoped-functions@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz#c618763233ad02847805abcac4c345ce9de7145d" + integrity sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +"@babel/plugin-transform-block-scoping@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz#bcf433fb482fe8c3d3b4e8a66b1c4a8e77d37c16" + integrity sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== +"@babel/plugin-transform-classes@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz#54cf5ff0b2242c6573d753cd4bfc7077a8b282f5" + integrity sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-computed-properties@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz#e0c385507d21e1b0b076d66bed6d5231b85110b7" + integrity sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +"@babel/plugin-transform-destructuring@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz#ad3d7e74584ad5ea4eadb1e6642146c590dee33c" + integrity sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +"@babel/plugin-transform-dotall-regex@^7.16.0", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz#50bab00c1084b6162d0a58a818031cf57798e06f" + integrity sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz#8bc2e21813e3e89e5e5bf3b60aa5fc458575a176" + integrity sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-exponentiation-operator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz#a180cd2881e3533cef9d3901e48dad0fbeff4be4" + integrity sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== +"@babel/plugin-transform-for-of@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz#f7abaced155260e2461359bbc7c7248aca5e6bd2" + integrity sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz#02e3699c284c6262236599f751065c5d5f1f400e" + integrity sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg== dependencies: - "@babel/helper-function-name" "^7.14.5" + "@babel/helper-function-name" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz#79711e670ffceb31bd298229d50f3621f7980cac" + integrity sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-member-expression-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz#5251b4cce01eaf8314403d21aedb269d79f5e64b" + integrity sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-modules-amd@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz#09abd41e18dcf4fd479c598c1cef7bd39eb1337e" + integrity sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw== dependencies: - "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.15.0", "@babel/plugin-transform-modules-commonjs@^7.15.4", "@babel/plugin-transform-modules-commonjs@^7.2.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== +"@babel/plugin-transform-modules-commonjs@^7.15.0", "@babel/plugin-transform-modules-commonjs@^7.16.0", "@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz#add58e638c8ddc4875bd9a9ecb5c594613f6c922" + integrity sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ== dependencies: - "@babel/helper-module-transforms" "^7.15.4" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" + "@babel/helper-simple-access" "^7.16.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== +"@babel/plugin-transform-modules-systemjs@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz#a92cf240afeb605f4ca16670453024425e421ea4" + integrity sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg== dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-validator-identifier" "^7.15.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-modules-umd@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz#195f26c2ad6d6a391b70880effce18ce625e06a7" + integrity sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg== dependencies: - "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz#d3db61cc5d5b97986559967cd5ea83e5c32096ca" + integrity sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-new-target@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz#af823ab576f752215a49937779a41ca65825ab35" + integrity sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-object-super@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz#fb20d5806dc6491a06296ac14ea8e8d6fedda72b" + integrity sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-replace-supers" "^7.16.0" -"@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== +"@babel/plugin-transform-parameters@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz#1b50765fc421c229819dc4c7cdb8911660b3c2d7" + integrity sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-property-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz#a95c552189a96a00059f6776dc4e00e3690c78d1" + integrity sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-regenerator@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz#eaee422c84b0232d03aea7db99c97deeaf6125a4" + integrity sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-reserved-words@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz#fff4b9dcb19e12619394bda172d14f2d04c0379c" + integrity sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-runtime@^7.12.15": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz#9d15b1e94e1c7f6344f65a8d573597d93c6cd886" - integrity sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.0.tgz#3fe0da36c2f0834bef7c4d3e7f2b2db0ee0c8909" + integrity sha512-zlPf1/XFn5+vWdve3AAhf+Sxl+MVa5VlwTwWgnLx23u4GlatSRQJ3Eoo9vllf0a9il3woQsT4SK+5Z7c06h8ag== dependencies: - "@babel/helper-module-imports" "^7.15.4" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.5" - babel-plugin-polyfill-regenerator "^0.2.2" + babel-plugin-polyfill-corejs2 "^0.2.3" + babel-plugin-polyfill-corejs3 "^0.3.0" + babel-plugin-polyfill-regenerator "^0.2.3" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-shorthand-properties@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz#090372e3141f7cc324ed70b3daf5379df2fa384d" + integrity sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-spread@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468" - integrity sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ== +"@babel/plugin-transform-spread@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz#d21ca099bbd53ab307a8621e019a7bd0f40cdcfb" + integrity sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-sticky-regex@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz#c35ea31a02d86be485f6aa510184b677a91738fd" + integrity sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-template-literals@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz#a8eced3a8e7b8e2d40ec4ec4548a45912630d302" + integrity sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-typeof-symbol@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz#8b19a244c6f8c9d668dca6a6f754ad6ead1128f2" + integrity sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-unicode-escapes@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz#1a354064b4c45663a32334f46fa0cf6100b5b1f3" + integrity sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-unicode-regex@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz#293b80950177c8c85aede87cef280259fb995402" + integrity sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.16": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.8.tgz#f527ce5bcb121cd199f6b502bf23e420b3ff8dba" - integrity sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.0.tgz#97228393d217560d6a1c6c56f0adb9d12bca67f5" + integrity sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" + "@babel/compat-data" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.8" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-async-generator-functions" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-class-static-block" "^7.16.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.0" + "@babel/plugin-proposal-export-namespace-from" "^7.16.0" + "@babel/plugin-proposal-json-strings" "^7.16.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-object-rest-spread" "^7.16.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-proposal-private-property-in-object" "^7.16.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.0" "@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" @@ -893,50 +901,50 @@ "@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-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.15.8" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.5" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" + "@babel/plugin-transform-arrow-functions" "^7.16.0" + "@babel/plugin-transform-async-to-generator" "^7.16.0" + "@babel/plugin-transform-block-scoped-functions" "^7.16.0" + "@babel/plugin-transform-block-scoping" "^7.16.0" + "@babel/plugin-transform-classes" "^7.16.0" + "@babel/plugin-transform-computed-properties" "^7.16.0" + "@babel/plugin-transform-destructuring" "^7.16.0" + "@babel/plugin-transform-dotall-regex" "^7.16.0" + "@babel/plugin-transform-duplicate-keys" "^7.16.0" + "@babel/plugin-transform-exponentiation-operator" "^7.16.0" + "@babel/plugin-transform-for-of" "^7.16.0" + "@babel/plugin-transform-function-name" "^7.16.0" + "@babel/plugin-transform-literals" "^7.16.0" + "@babel/plugin-transform-member-expression-literals" "^7.16.0" + "@babel/plugin-transform-modules-amd" "^7.16.0" + "@babel/plugin-transform-modules-commonjs" "^7.16.0" + "@babel/plugin-transform-modules-systemjs" "^7.16.0" + "@babel/plugin-transform-modules-umd" "^7.16.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.0" + "@babel/plugin-transform-new-target" "^7.16.0" + "@babel/plugin-transform-object-super" "^7.16.0" + "@babel/plugin-transform-parameters" "^7.16.0" + "@babel/plugin-transform-property-literals" "^7.16.0" + "@babel/plugin-transform-regenerator" "^7.16.0" + "@babel/plugin-transform-reserved-words" "^7.16.0" + "@babel/plugin-transform-shorthand-properties" "^7.16.0" + "@babel/plugin-transform-spread" "^7.16.0" + "@babel/plugin-transform-sticky-regex" "^7.16.0" + "@babel/plugin-transform-template-literals" "^7.16.0" + "@babel/plugin-transform-typeof-symbol" "^7.16.0" + "@babel/plugin-transform-unicode-escapes" "^7.16.0" + "@babel/plugin-transform-unicode-regex" "^7.16.0" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.0" + babel-plugin-polyfill-corejs2 "^0.2.3" + babel-plugin-polyfill-corejs3 "^0.3.0" + babel-plugin-polyfill-regenerator "^0.2.3" + core-js-compat "^3.19.0" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -952,42 +960,42 @@ regenerator-runtime "^0.12.0" "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.13.10", "@babel/runtime@^7.8.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.0.tgz#e27b977f2e2088ba24748bf99b5e1dece64e4f0b" + integrity sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.0.0", "@babel/template@^7.15.4", "@babel/template@^7.3.3": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== +"@babel/template@^7.0.0", "@babel/template@^7.16.0", "@babel/template@^7.3.3": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.7.2": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.0.tgz#965df6c6bfc0a958c1e739284d3c9fa4a6e3c45b" + integrity sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== dependencies: - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1075,9 +1083,9 @@ minimatch "^3.0.4" "@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + 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== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1095,27 +1103,27 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.2.5.tgz#bddbf8d41c191f17b52bf0c9e6c0d18605e35d6e" - integrity sha512-smtlRF9vNKorRMCUtJ+yllIoiY8oFmfFG7xlzsAE76nKEwXNhjPOJIsc7Dv+AUitVt76t+KjIpUP9m98Crn2LQ== +"@jest/console@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.3.1.tgz#e8ea3a475d3f8162f23d69efbfaa9cbe486bee93" + integrity sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw== dependencies: "@jest/types" "^27.2.5" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.2.5" - jest-util "^27.2.5" + jest-message-util "^27.3.1" + jest-util "^27.3.1" slash "^3.0.0" -"@jest/core@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.2.5.tgz#854c314708cee0d892ac4f531b9129f00a21ee69" - integrity sha512-VR7mQ+jykHN4WO3OvusRJMk4xCa2MFLipMS+43fpcRGaYrN1KwMATfVEXif7ccgFKYGy5D1TVXTNE4mGq/KMMA== +"@jest/core@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.3.1.tgz#04992ef1b58b17c459afb87ab56d81e63d386925" + integrity sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg== dependencies: - "@jest/console" "^27.2.5" - "@jest/reporters" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" + "@jest/console" "^27.3.1" + "@jest/reporters" "^27.3.1" + "@jest/test-result" "^27.3.1" + "@jest/transform" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" ansi-escapes "^4.2.1" @@ -1123,64 +1131,64 @@ emittery "^0.8.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^27.2.5" - jest-config "^27.2.5" - jest-haste-map "^27.2.5" - jest-message-util "^27.2.5" + jest-changed-files "^27.3.0" + jest-config "^27.3.1" + jest-haste-map "^27.3.1" + jest-message-util "^27.3.1" jest-regex-util "^27.0.6" - jest-resolve "^27.2.5" - jest-resolve-dependencies "^27.2.5" - jest-runner "^27.2.5" - jest-runtime "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" - jest-watcher "^27.2.5" + jest-resolve "^27.3.1" + jest-resolve-dependencies "^27.3.1" + jest-runner "^27.3.1" + jest-runtime "^27.3.1" + jest-snapshot "^27.3.1" + jest-util "^27.3.1" + jest-validate "^27.3.1" + jest-watcher "^27.3.1" micromatch "^4.0.4" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.2.5.tgz#b85517ccfcec55690c82c56f5a01a3b30c5e3c84" - integrity sha512-XvUW3q6OUF+54SYFCgbbfCd/BKTwm5b2MGLoc2jINXQLKQDTCS2P2IrpPOtQ08WWZDGzbhAzVhOYta3J2arubg== +"@jest/environment@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.3.1.tgz#2182defbce8d385fd51c5e7c7050f510bd4c86b1" + integrity sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw== dependencies: - "@jest/fake-timers" "^27.2.5" + "@jest/fake-timers" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" - jest-mock "^27.2.5" + jest-mock "^27.3.0" -"@jest/fake-timers@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.5.tgz#0c7e5762d7bfe6e269e7b49279b097a52a42f0a0" - integrity sha512-ZGUb6jg7BgwY+nmO0TW10bc7z7Hl2G/UTAvmxEyZ/GgNFoa31tY9/cgXmqcxnnZ7o5Xs7RAOz3G1SKIj8IVDlg== +"@jest/fake-timers@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.3.1.tgz#1fad860ee9b13034762cdb94266e95609dfce641" + integrity sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA== dependencies: "@jest/types" "^27.2.5" "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^27.2.5" - jest-mock "^27.2.5" - jest-util "^27.2.5" + jest-message-util "^27.3.1" + jest-mock "^27.3.0" + jest-util "^27.3.1" -"@jest/globals@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.5.tgz#4115538f98ed6cee4051a90fdbd0854062902099" - integrity sha512-naRI537GM+enFVJQs6DcwGYPn/0vgJNb06zGVbzXfDfe/epDPV73hP1vqO37PqSKDeOXM2KInr6ymYbL1HTP7g== +"@jest/globals@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.3.1.tgz#ce1dfb03d379237a9da6c1b99ecfaca1922a5f9e" + integrity sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg== dependencies: - "@jest/environment" "^27.2.5" + "@jest/environment" "^27.3.1" "@jest/types" "^27.2.5" - expect "^27.2.5" + expect "^27.3.1" -"@jest/reporters@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.5.tgz#65198ed1f3f4449e3f656129764dc6c5bb27ebe3" - integrity sha512-zYuR9fap3Q3mxQ454VWF8I6jYHErh368NwcKHWO2uy2fwByqBzRHkf9j2ekMDM7PaSTWcLBSZyd7NNxR1iHxzQ== +"@jest/reporters@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.3.1.tgz#28b5c1f5789481e23788048fa822ed15486430b9" + integrity sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" + "@jest/console" "^27.3.1" + "@jest/test-result" "^27.3.1" + "@jest/transform" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" chalk "^4.0.0" @@ -1193,10 +1201,10 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^27.2.5" - jest-resolve "^27.2.5" - jest-util "^27.2.5" - jest-worker "^27.2.5" + jest-haste-map "^27.3.1" + jest-resolve "^27.3.1" + jest-util "^27.3.1" + jest-worker "^27.3.1" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" @@ -1212,30 +1220,30 @@ graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.2.5.tgz#e9f73cf6cd5e2cc6eb3105339248dea211f9320e" - integrity sha512-ub7j3BrddxZ0BdSnM5JCF6cRZJ/7j3wgdX0+Dtwhw2Po+HKsELCiXUTvh+mgS4/89mpnU1CPhZxe2mTvuLPJJg== +"@jest/test-result@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.3.1.tgz#89adee8b771877c69b3b8d59f52f29dccc300194" + integrity sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg== dependencies: - "@jest/console" "^27.2.5" + "@jest/console" "^27.3.1" "@jest/types" "^27.2.5" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.2.5.tgz#ed5ae91c00e623fb719111d58e380395e16cefbb" - integrity sha512-8j8fHZRfnjbbdMitMAGFKaBZ6YqvFRFJlMJzcy3v75edTOqc7RY65S9JpMY6wT260zAcL2sTQRga/P4PglCu3Q== +"@jest/test-sequencer@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz#4b3bde2dbb05ee74afdae608cf0768e3354683b1" + integrity sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA== dependencies: - "@jest/test-result" "^27.2.5" + "@jest/test-result" "^27.3.1" graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" - jest-runtime "^27.2.5" + jest-haste-map "^27.3.1" + jest-runtime "^27.3.1" -"@jest/transform@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.2.5.tgz#02b08862a56dbedddf0ba3c2eae41e049a250e29" - integrity sha512-29lRtAHHYGALbZOx343v0zKmdOg4Sb0rsA1uSv0818bvwRhs3TyElOmTVXlrw0v1ZTqXJCAH/cmoDXimBhQOJQ== +"@jest/transform@^27.3.1": + version "27.3.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.3.1.tgz#ff80eafbeabe811e9025e4b6f452126718455220" + integrity sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^27.2.5" @@ -1244,9 +1252,9 @@ convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" + jest-haste-map "^27.3.1" jest-regex-util "^27.0.6" - jest-util "^27.2.5" + jest-util "^27.3.1" micromatch "^4.0.4" pirates "^4.0.1" slash "^3.0.0" @@ -1294,9 +1302,9 @@ graphql "14.0.2" "@mdi/font@^6.1.95": - version "6.2.95" - resolved "https://registry.yarnpkg.com/@mdi/font/-/font-6.2.95.tgz#7084ad939253a3d62e38f77d85f6c0c38508fbb2" - integrity sha512-0RKkhabkFZP3ALwKqrjhdKdhydQpoydIjX6cvjIwLyjADCsE0pG68YkGY+S3qnfdErmhS4m8adwvgrAFXp2AYQ== + version "6.4.95" + resolved "https://registry.yarnpkg.com/@mdi/font/-/font-6.4.95.tgz#d3b7a615c4c82ba2a9c29b2b59b158dced4f9b0e" + integrity sha512-jCQdXCD339EXirWYFbZv1Ansthm9j6O3FSQLsfi/mKamnGYxqbUBm5D4UjcVr6HVYIPNwTQQ46HNHlswPD8RcQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1420,10 +1428,10 @@ ejs "^2.6.1" magic-string "^0.25.0" -"@tiptap/core@^2.0.0-beta.122", "@tiptap/core@^2.0.0-beta.41": - version "2.0.0-beta.122" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.122.tgz#bba02ae53c1cfb209a672952ad8649feded6f462" - integrity sha512-kuEYMfAV+2lO/QyL6yerfJo2fI9wnYCPvIJgpj9sTB0WeXl8ZiD53POlBZM0MEKqmUCtw5kqnGffnsEzSK7jGQ== +"@tiptap/core@^2.0.0-beta.130", "@tiptap/core@^2.0.0-beta.41": + version "2.0.0-beta.130" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.130.tgz#d0b0f14bd6aaf2ad79515fe2307beced7d9c704e" + integrity sha512-mHj1ZF4Fw0JGmICf2OgUfb1dNDqCLUZY3RjPgGpQNcvCEBqb4nnF30gipFMBhxzEcr4GvqrVzU6fQJelh31WOA== dependencies: "@types/prosemirror-commands" "^1.0.4" "@types/prosemirror-keymap" "^1.0.4" @@ -1434,152 +1442,154 @@ "@types/prosemirror-view" "^1.19.1" prosemirror-commands "^1.1.11" prosemirror-keymap "^1.1.3" - prosemirror-model "^1.14.3" + prosemirror-model "^1.15.0" prosemirror-schema-list "^1.1.6" prosemirror-state "^1.3.4" prosemirror-transform "^1.3.3" - prosemirror-view "^1.20.2" + prosemirror-view "^1.20.3" -"@tiptap/extension-blockquote@^2.0.0-beta.17", "@tiptap/extension-blockquote@^2.0.0-beta.6": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.17.tgz#960fd01eb08ea7762c706d6e1d5334145a258aca" - integrity sha512-mn94P3TO6LFCvn/LEgAbZrtKWLJw3YQgGiI3Doa67DGUXeID0nlyu+5iVTHUOdMXtqWbYgRW8HGjVgdyo5G5cw== +"@tiptap/extension-blockquote@^2.0.0-beta.21", "@tiptap/extension-blockquote@^2.0.0-beta.6": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.0.0-beta.21.tgz#2400f337101404ced6f1c988b83491eeaed418e1" + integrity sha512-yE2N2A6zfH9C/9DAs/p9dLbyy6iWzTpX7tTSGnWyAb1h+SEkqzPBxJryNUU4DYw+Rq/hasQIu37TrHTrOqJyiA== -"@tiptap/extension-bold@^2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.17.tgz#afbdc65190e62a5940f118296058a1887f521826" - integrity sha512-17XOOasNK7sB6UdxDquF0s7Pdaitr165d3mwPrTETeQytS7cCnGpIjwg3rvp+LNgZMKEC4mxrBob8WxA7uK8Mg== +"@tiptap/extension-bold@^2.0.0-beta.21": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.21.tgz#50eea83e3bc7f85f6eeb90145927189041ade9d7" + integrity sha512-GRsImvcUJ4vspvoZvugO7Y9akigjeHFpHti1sGJGULPsv4oX5vMMxys4yaI3/qA+Tm8qyK+14ju6Jb7YKwvdBA== -"@tiptap/extension-bubble-menu@^2.0.0-beta.40", "@tiptap/extension-bubble-menu@^2.0.0-beta.9": - version "2.0.0-beta.40" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.40.tgz#01af836d521b64be6344357d42c39f3112705d7a" - integrity sha512-1bMuQ7747IPvvoy1GLoX/iwmleIWRH7maEi8K2MTB0wsN4pjnuRjua0LdNMMM5i4/ZE/qYehNtpHeJfwIrFnhQ== +"@tiptap/extension-bubble-menu@^2.0.0-beta.44", "@tiptap/extension-bubble-menu@^2.0.0-beta.9": + version "2.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.44.tgz#2a2b42b59c6906cba1ce54bdbbb153324e45ee16" + integrity sha512-kpU38X2FwW6n2LCQ9RY5wyFpJayuA7uGjvIS8IDKPuWjHSNMaS32T5ybjBBkxCace8z8w6lXa8U7IwZkk7tAcA== dependencies: prosemirror-state "^1.3.4" - prosemirror-view "^1.20.2" + prosemirror-view "^1.20.3" tippy.js "^6.3.2" -"@tiptap/extension-bullet-list@^2.0.0-beta.16": - version "2.0.0-beta.16" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.16.tgz#5e54ad5a4b9d8d46472a80034ad5629dc0e6d841" - integrity sha512-+L4/Oeey1wqYwN2KGFfsw2K7qfn81FSNElRylhcG2RueqFnMgiaeigPDDIHT5xOqUQ0cyWsJxHoQOaKw4h2bPA== +"@tiptap/extension-bullet-list@^2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.0-beta.20.tgz#519566172c0bf7fec7d0cf3c84366c01abe2afc8" + integrity sha512-/2gPQ4UvjD/VxKnovtHwdz6xSJZdZ0tPRRB6Lm7uwFcrmCCoUFMrzYmQruyMNcWWbrgoLh3A70HTFVdOCxL+nw== "@tiptap/extension-character-count@^2.0.0-beta.5": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@tiptap/extension-character-count/-/extension-character-count-2.0.0-beta.13.tgz#6fb6b56d28762534c6643916018b8b08bea3bbb2" - integrity sha512-2rRMvp+ppocyw6tmJx/hpl8wvs9BOIFN5fvDpVxH9INXJu9ZnZPfb2Pko/2RYsx+uWn2q7nKS4jgqNmkZA0ovg== + version "2.0.0-beta.15" + resolved "https://registry.yarnpkg.com/@tiptap/extension-character-count/-/extension-character-count-2.0.0-beta.15.tgz#b124babce785a53e13bedc4160a1f1182de6ace7" + integrity sha512-y01lKwiwOBQYSNHNidl75r2CTPUYQUpf7vsgXhFWlEcYan05FM9oIjqAXQOKah5kuNdQqiUhq75AO/1Zu/o9fw== -"@tiptap/extension-code-block@^2.0.0-beta.19": - version "2.0.0-beta.19" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.19.tgz#9f740b74e453a243d0c4d07f044cc71855f0dae1" - integrity sha512-3V6sj+S9lYFB5muTQxYYUpUN9icQ4V52SwNpUKhm+08H3sXfPV0EPbhMuoFpSn5t2Ybb56S0usfpadQTJEKkXg== +"@tiptap/extension-code-block@^2.0.0-beta.26": + version "2.0.0-beta.26" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.26.tgz#6c8793eb885dff8b7abf808f902b52f417d2f743" + integrity sha512-ZG60N90RbhwvJR9VsDc9t9FdBMEEfcmzbRr4j/LcvvVbAG7poDbC9HRmSim484GSEN2yBDEgk+Ifxi9TiaBy1g== + dependencies: + prosemirror-state "^1.3.4" -"@tiptap/extension-code@^2.0.0-beta.18": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.0.0-beta.18.tgz#1be641abbdf23d1ff53cf504c38108aec4853311" - integrity sha512-d/QKmcCFwoYxoI+UPhB3Bb2EIFERw5MXZpNUxjnY3hDZfqA7AgXj6wiHS6RkQSeLgnQEULWRvtMU0J+Uvo0z6A== +"@tiptap/extension-code@^2.0.0-beta.22": + version "2.0.0-beta.22" + resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.0.0-beta.22.tgz#4c590d6eaf9af4d3e4c718de5e83e4d3f11ee53a" + integrity sha512-jJCCkj6/C/rwv+ppx0MIF7ynhessU06lN8IGjJsDTUh1Z4TYP3tpUNrgF7jfrg7G23QvPWbEVj7siDd+px6xCw== "@tiptap/extension-document@^2.0.0-beta.13": version "2.0.0-beta.13" resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.0-beta.13.tgz#8cfb29d4de64bf4a790817f730c05b4f9b7167b2" integrity sha512-nrufdKziA/wovaY4DjGkc8OGuIZi8CH8CW3+yYfeWbruwFKkyZHlZy9nplFWSEqBHPAeqD+px9r91yGMW3ontA== -"@tiptap/extension-dropcursor@^2.0.0-beta.19": - version "2.0.0-beta.19" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.19.tgz#8a37ffe27e484eb44dd18297830d1fd8ce0c50ce" - integrity sha512-rslIcVvD42NNh5sEbkCkG03DWMFBrS5KoK+lDOdIcC1DjmTtpVgcLvvE01btzaB3ljx+UVqI2Zaxa6VOiTeEMw== +"@tiptap/extension-dropcursor@^2.0.0-beta.21": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.21.tgz#a9052840fbe4e186e5aeea0166e14495c1d393b4" + integrity sha512-QA4dgBRgRtv3TbLh7ZhhnATHepfLzEQMGsqSuxEdI8GpPDQ/vwRxFh7lJ8bHs4KZngxbfLD6znEyTZXEy2z/eQ== dependencies: "@types/prosemirror-dropcursor" "^1.0.3" prosemirror-dropcursor "^1.3.5" -"@tiptap/extension-floating-menu@^2.0.0-beta.34": - version "2.0.0-beta.34" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.34.tgz#057c808b170aa827975186904f42ccb0e30c907d" - integrity sha512-WheIsmcTy3+4j9qHoaRdFzdczqSXZVPOPytEq81zwMz7GuWA+Oom3egkvmW1gc1gv5gR+bGklWhm+l0ML2D7qA== +"@tiptap/extension-floating-menu@^2.0.0-beta.38": + version "2.0.0-beta.38" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.38.tgz#cbfe13fc5c397da1345889761ab4ba34680bad0a" + integrity sha512-FbAF9brNMKxLPdvQf7e4O73OAYXwgtyc8dPhxVCj53n4h1oYLykB9tsvGit2/KWcMHeUSKjnUuTVARflA6wr+Q== dependencies: prosemirror-state "^1.3.4" - prosemirror-view "^1.20.2" + prosemirror-view "^1.20.3" tippy.js "^6.3.2" -"@tiptap/extension-gapcursor@^2.0.0-beta.25": - version "2.0.0-beta.25" - resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.25.tgz#85e53380d6255ede6fffa005fee711c7a2b4546f" - integrity sha512-dmow1C822DFfLhe+0bIRsdjTWjjzPeq2j9zpo2IaE54rMTfGVvrOPNe51OZ2KgpPob7iTilgaOZDTrnUW6ialw== +"@tiptap/extension-gapcursor@^2.0.0-beta.30": + version "2.0.0-beta.30" + resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.0-beta.30.tgz#ee742ff229c15d476ba598f8a533f5bbc48d0e75" + integrity sha512-6K8N+BiztReMqj9qu8h5Y/qvFGm7XrprGb03l+sG6eZ4fKYLU202zt/DReJYRDCTPHM/6zthUCK5xoR0+TtN2A== dependencies: "@types/prosemirror-gapcursor" "^1.0.4" prosemirror-gapcursor "^1.2.0" -"@tiptap/extension-hard-break@^2.0.0-beta.22": - version "2.0.0-beta.22" - resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.22.tgz#3ecc62f33686e778d0c7a9f0ed6226c857bcb886" - integrity sha512-ofoOBwjqcQJ2QCzAERPvwXOzTuf7lVuMb2soUUOyjIuwqXidGC30aY2peOnVGsFsdYNjeprOejE//ud7pg/3sA== +"@tiptap/extension-hard-break@^2.0.0-beta.26": + version "2.0.0-beta.26" + resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.26.tgz#04f814d41941e5b9148fbf6be30b28b60751a3c0" + integrity sha512-6TmFJ6GAOuZ1J4kCyaZUl6XaBSgGbd9kGYGKzhBH+ps4OHtQDl23A+RVxTr8wUVD2mMo2/VsJi9MyLRzI2KBnA== -"@tiptap/extension-heading@^2.0.0-beta.16": - version "2.0.0-beta.16" - resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.16.tgz#4c8df08c33db0fb442d062d851a3b2c5c978416e" - integrity sha512-z9NsabhyqIct8S12LdJ7XGGt73jlzwjDjqyc/g5AhEPZWNJ6k4yvcsGk+t6hEatK5O6ELs1gdeCOCElP0OqA8A== +"@tiptap/extension-heading@^2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.0.0-beta.20.tgz#89e331282521419de810807eb53e6504e2f4abfb" + integrity sha512-JQEs6Pilk9Q/5/hZa3og3pt2Si7MwXIl3UJwCyljXpTdnuSon4OppAo4lVN5L9A8tZNqrX7TOpd/yaDoI/0ToQ== -"@tiptap/extension-history@^2.0.0-beta.16", "@tiptap/extension-history@^2.0.0-beta.5": - version "2.0.0-beta.16" - resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.0.0-beta.16.tgz#f40317bab795e2daf981aa1a01d6025f306be72c" - integrity sha512-nrNwV8a7zUt1t2I/kPX5Y6N9vZ8mrugimJIQmPGIp/4mmw1SEUzkaPpIsv6+ELmqMHSDktQ0ofb3pXeWDXWZvw== +"@tiptap/extension-history@^2.0.0-beta.18", "@tiptap/extension-history@^2.0.0-beta.5": + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.0.0-beta.18.tgz#886d702b4c4b72c96dd63d3f2fa89da5e9688e91" + integrity sha512-8yR+NozZlHFwlYaNqAKrstdWb5nXhfrYTdxjR68LpjlWLgPCn2bm7ZoJDuYaHGa3sIT1HqBus6zerqOjr/YYig== dependencies: "@types/prosemirror-history" "^1.0.3" prosemirror-history "^1.2.0" -"@tiptap/extension-horizontal-rule@^2.0.0-beta.22": - version "2.0.0-beta.22" - resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.22.tgz#f271eaabd869e2032a9c2d6db4d4ef127f12c9d3" - integrity sha512-v9PFi8hxCBRMXCk5lK35sHetw95IzqjZ9ttkdgro2JfeDdOfFG7FylOrXriFvfKHCpbU2TNbZLud+fg8MXVPtQ== +"@tiptap/extension-horizontal-rule@^2.0.0-beta.26": + version "2.0.0-beta.26" + resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.0-beta.26.tgz#95741cb62278319edbc3146c85d8dbc3b8be4e9a" + integrity sha512-9kmmZiV79cn7Q9SObFNkVEjXykUY+kBANOB4MFNpkd1/X43deOv+fBJFWywRHbnGa324egtOePHQfdqnP8s8tA== dependencies: prosemirror-state "^1.3.4" "@tiptap/extension-image@^2.0.0-beta.6": - version "2.0.0-beta.16" - resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.0.0-beta.16.tgz#8893c979bc6053e74e7c01c07abe9637feba4f3f" - integrity sha512-mt5oYGYvO9lFOlAj5xoe5X/dx/7lRYERu7Su3xdCr5tnFJyKH+e+MGvaa+90lewjsMKxZ+JoqCwJUpQ/pChOtA== + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.0.0-beta.21.tgz#056eace5980633eda1072f505b72a4164f23f415" + integrity sha512-0GUh4GwRhN1Wgl8WJXjQ1jmGHpa4H4c2CGII4G6b9XKNqFSQPum3qKzQCw8uAlYpsEjEuPR2GFK9Yc0iT08m8w== -"@tiptap/extension-italic@^2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.17.tgz#32483f3d2e8b732af5d833d81843b12552113dab" - integrity sha512-rtbijLCunCp2xyvUxDcYJDErMn0EwZ+PUBYWBzCG1WpxxvsaqC+/yoj8mBKlxW1Dob/uFGkJnyMCZrhXMwW3iQ== +"@tiptap/extension-italic@^2.0.0-beta.21": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.0.0-beta.21.tgz#54efbe5e8af84157290e7e5f4aa7f2053d8b7872" + integrity sha512-q2H3Og3Qg01N70jC7c/UYMTdeXdWOY5cTrZP2vtGmedGimJpMGpenMc5mrnmEXKssjmNaz/Q8409MV4rHwbmzg== "@tiptap/extension-link@^2.0.0-beta.8": - version "2.0.0-beta.21" - resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.0-beta.21.tgz#a8c5ab3d54f7390760a8ee5b3459d231aebf6707" - integrity sha512-nkrJjAuB3HtY0/Pp2AJXoZA31EgpPeJCz6dE/1DT8W6C/oBEIAaFNPm/bKgk/WvM8L+ayX4nfkKJ2rgNaJotuQ== + version "2.0.0-beta.25" + resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.0.0-beta.25.tgz#4b35b3deee4f86da2bd9c3562ea13a91e1c0b46c" + integrity sha512-nRGJpuJMcrqveoJlMUi4yGT1FW+1cse04/dQe41xNIJHlizSEAW94D9JXhAwZ99eALuP8pYUK/HssYGvto8Lhw== dependencies: - linkifyjs "^3.0.1" + linkifyjs "^3.0.3" prosemirror-state "^1.3.4" -"@tiptap/extension-list-item@^2.0.0-beta.14", "@tiptap/extension-list-item@^2.0.0-beta.6": - version "2.0.0-beta.14" - resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.0.0-beta.14.tgz#65a9ff9daa11bc9ca8bc2989a891abe68081cfbd" - integrity sha512-t6xwEqP+d5443Ul2Jvqz9kXb3ro7bA7yY9HA0vskm3120WxxHW9jxgxZN+82Ot5Tm7nXOAlsN6vuqnt4idnxZQ== +"@tiptap/extension-list-item@^2.0.0-beta.16", "@tiptap/extension-list-item@^2.0.0-beta.6": + version "2.0.0-beta.16" + resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.0.0-beta.16.tgz#599b94958b7758ae472d9dbd0f1d6ec1b8b4ebff" + integrity sha512-I/Tmj9zW5BHeftGByYj/TVJBqZi6cRLsiwufaV4CTMlfYUHE8DDjiQlukGSksa+Nba+wPErWriXAOaBBkjFhjw== "@tiptap/extension-mention@^2.0.0-beta.42": - version "2.0.0-beta.75" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.0-beta.75.tgz#1dced3dc52858daa52478ebecca7497eb28af96f" - integrity sha512-BEhGFh6R7T6R13A64C7wRwM0quHrMV09VI6yXxy1MRYjpYUojPfh7YUeFMstKTx+yI3Bb4lNf7xDygKDSivVWw== + version "2.0.0-beta.81" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.0-beta.81.tgz#19304b53e6f474b58283e1d6da0e20e80fc8a295" + integrity sha512-EOgNHffWUxFNZBBiz7Fvj/BcbpxlSTDMm5M1msU2MgQ+cA62fevIvvKLpIBqKK1f0p+nzLxQWd8gL5axJ3bHbQ== dependencies: - "@tiptap/suggestion" "^2.0.0-beta.72" - prosemirror-model "^1.14.3" + "@tiptap/suggestion" "^2.0.0-beta.77" + prosemirror-model "^1.15.0" prosemirror-state "^1.3.4" -"@tiptap/extension-ordered-list@^2.0.0-beta.17", "@tiptap/extension-ordered-list@^2.0.0-beta.6": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.17.tgz#76175bdf4604584da19b1b1280c5b2d683dcd24b" - integrity sha512-gPAtg8nLdmGMgtdz6wVX6rVO/IpzrB3JyF8VBfKjwB0poQiGjEsSpQngWam7wokIuDYtMZuitUwmhVDBvGrNqw== +"@tiptap/extension-ordered-list@^2.0.0-beta.21", "@tiptap/extension-ordered-list@^2.0.0-beta.6": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.0-beta.21.tgz#6f3430378c2f7bc69e85e403c63060ab151be3a0" + integrity sha512-TkUWOAayblM2z9rtyREau5fNw7CvvlT6rHlSLGty+VQ861Nuu5gi8Ew4oQETYCmKNYQtZJhm65XjPPyl2GD2dA== -"@tiptap/extension-paragraph@^2.0.0-beta.17": - version "2.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.17.tgz#f8f0263359b95dec9c10078699697908568d9be9" - integrity sha512-qCQVCf9c2hgaeIdfy22PaoZyW5Vare/1aGkOEAaZma5RjrUbV9hrRKwoW9LsDjnh1EN1fIeKdg02yEhnHWtG8A== - -"@tiptap/extension-strike@^2.0.0-beta.19": +"@tiptap/extension-paragraph@^2.0.0-beta.19": version "2.0.0-beta.19" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.19.tgz#4f3cba8b5a42aca83ded088032ae84e1f0863161" - integrity sha512-vRcUW6YkFcb535MgdEotwoqnrbhlsUoZ7nKoZ5MNA+Nu6rXRAz5VXaHncFNpWM77WcEbuaOKvcGolkMK1q2BIw== + resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.19.tgz#043211ca77dcc8c22bea8bf9f223892cef2a5fe3" + integrity sha512-mk8Es7kZIAAETHqXqMItNs34HnnlFvYp8+u7e8PQZtMF85YaIH4IVCVhCC2/buVRQTBnFJ3bJDbJAnawnxAWBQ== + +"@tiptap/extension-strike@^2.0.0-beta.23": + version "2.0.0-beta.23" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.23.tgz#f1d82b8af038b2adcc9d7bb9973669eb8c604523" + integrity sha512-xUCpuCDb8lG9BVve+/uq8fxOAPJgndQ0gapFZXCEb2wuZj0HfsHNwva8q0pMeIYXTSAIjobkueHtT8NjvSLtnw== "@tiptap/extension-text@^2.0.0-beta.13": version "2.0.0-beta.13" @@ -1587,52 +1597,52 @@ integrity sha512-0EtAwuRldCAoFaL/iXgkRepEeOd55rPg5N4FQUN1xTwZT7PDofukP0DG/2jff/Uj17x4uTaJAa9qlFWuNnDvjw== "@tiptap/extension-underline@^2.0.0-beta.7": - version "2.0.0-beta.16" - resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.0.0-beta.16.tgz#b610c85f122b5f67919651107e8906c19cff1b75" - integrity sha512-N3wMfSJkn+A5HbuLSpbn1Zp9CWWLXfMexpVdg4eUwTMOgF/kpVRaPGCkBonhHH3NfWtT7QbSipdWc7DKpBb8Jw== + version "2.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.0.0-beta.18.tgz#25fc72788565ca80a52b111b31124c346a5053a0" + integrity sha512-zYx9aAAbwKdrF/QJvRhaZFpBebcmXNYAjZmYyyErTR1NXmPi2SMAE8OaDC3S7xRnt8HeHwDAUbqiUfXJWG1XRA== "@tiptap/starter-kit@^2.0.0-beta.37": - version "2.0.0-beta.121" - resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.121.tgz#be36d9bf4c118c22e1744aedcf5f95304082301c" - integrity sha512-ZeCQPyAQWRZYI6ln+HN6S/hi8a/3eZ/ZPw9Xq7/VAAavqMOCwTuvVLKoIxG6UEC2zWHhCYjlzSIjT01IK2QC8A== + version "2.0.0-beta.132" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.132.tgz#7f6b3e5b7e99bab769dd5ce6d5f02a97af471d57" + integrity sha512-LQxYMpFdRW5/PLcbRzw0PhwVLk7hm7n/NMYZd9W76W3rLmAaTQ/9CfxkgFjV0yfLxtgVDkg6OCtpZbpbbQZOfA== dependencies: - "@tiptap/core" "^2.0.0-beta.122" - "@tiptap/extension-blockquote" "^2.0.0-beta.17" - "@tiptap/extension-bold" "^2.0.0-beta.17" - "@tiptap/extension-bullet-list" "^2.0.0-beta.16" - "@tiptap/extension-code" "^2.0.0-beta.18" - "@tiptap/extension-code-block" "^2.0.0-beta.19" + "@tiptap/core" "^2.0.0-beta.130" + "@tiptap/extension-blockquote" "^2.0.0-beta.21" + "@tiptap/extension-bold" "^2.0.0-beta.21" + "@tiptap/extension-bullet-list" "^2.0.0-beta.20" + "@tiptap/extension-code" "^2.0.0-beta.22" + "@tiptap/extension-code-block" "^2.0.0-beta.26" "@tiptap/extension-document" "^2.0.0-beta.13" - "@tiptap/extension-dropcursor" "^2.0.0-beta.19" - "@tiptap/extension-gapcursor" "^2.0.0-beta.25" - "@tiptap/extension-hard-break" "^2.0.0-beta.22" - "@tiptap/extension-heading" "^2.0.0-beta.16" - "@tiptap/extension-history" "^2.0.0-beta.16" - "@tiptap/extension-horizontal-rule" "^2.0.0-beta.22" - "@tiptap/extension-italic" "^2.0.0-beta.17" - "@tiptap/extension-list-item" "^2.0.0-beta.14" - "@tiptap/extension-ordered-list" "^2.0.0-beta.17" - "@tiptap/extension-paragraph" "^2.0.0-beta.17" - "@tiptap/extension-strike" "^2.0.0-beta.19" + "@tiptap/extension-dropcursor" "^2.0.0-beta.21" + "@tiptap/extension-gapcursor" "^2.0.0-beta.30" + "@tiptap/extension-hard-break" "^2.0.0-beta.26" + "@tiptap/extension-heading" "^2.0.0-beta.20" + "@tiptap/extension-history" "^2.0.0-beta.18" + "@tiptap/extension-horizontal-rule" "^2.0.0-beta.26" + "@tiptap/extension-italic" "^2.0.0-beta.21" + "@tiptap/extension-list-item" "^2.0.0-beta.16" + "@tiptap/extension-ordered-list" "^2.0.0-beta.21" + "@tiptap/extension-paragraph" "^2.0.0-beta.19" + "@tiptap/extension-strike" "^2.0.0-beta.23" "@tiptap/extension-text" "^2.0.0-beta.13" -"@tiptap/suggestion@^2.0.0-beta.72": - version "2.0.0-beta.72" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.0-beta.72.tgz#7e61f62617dcc2d1421dfc0f5db9cba1f7dcd261" - integrity sha512-DwImLQpl0KR1fySV2g84AGviDiryo40fwCXxwzpMXpn0rcEVEdh616eQGEOWCvC3NIY2RdB4KVpbYcMnXCZxFw== +"@tiptap/suggestion@^2.0.0-beta.77": + version "2.0.0-beta.77" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.0-beta.77.tgz#bbe0c16e67ac15e3ca937d74e30e82584c40ba0b" + integrity sha512-yN/tupeV+UEzrYLatB04Jq9UiBXLWwfjxl081SteFViECa3b627m/n3dLp/UThiZXSTLML3N/4noH3L/rAbFrA== dependencies: - prosemirror-model "^1.14.3" + prosemirror-model "^1.15.0" prosemirror-state "^1.3.4" - prosemirror-view "^1.20.2" + prosemirror-view "^1.20.3" "@tiptap/vue-2@^2.0.0-beta.21": - version "2.0.0-beta.58" - resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.58.tgz#1cd1c832943bd76351d905991d3145e620a34b2a" - integrity sha512-B65uLQAfql4ciYlBk8g2b1UBHR/URQEktcit0YI7+nCaUj6oYnSMWLfSJch3pog+BpxurgN88t/o4+hnkOMVXw== + version "2.0.0-beta.62" + resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.62.tgz#1ff0569113ee00ea99dc63400bbb054ebb9800e6" + integrity sha512-P+TcoDXWy/+cAe1IxrHzqaVihrN8S7rkBQgeqKQsmseo5NGipl0kT6vgN0Of6o6Vmo9yfKhgT2L5LdjA9hdXDQ== dependencies: - "@tiptap/extension-bubble-menu" "^2.0.0-beta.40" - "@tiptap/extension-floating-menu" "^2.0.0-beta.34" - prosemirror-view "^1.20.2" + "@tiptap/extension-bubble-menu" "^2.0.0-beta.44" + "@tiptap/extension-floating-menu" "^2.0.0-beta.38" + prosemirror-view "^1.20.3" "@tootallnate/once@1": version "1.1.2" @@ -1721,9 +1731,9 @@ integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== "@types/eslint@*", "@types/eslint@^7.2.4": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.1.tgz#50b07747f1f84c2ba8cd394cf0fe0ba07afce320" - integrity sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg== + version "7.28.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.2.tgz#0ff2947cdd305897c52d5372294e8c76f351db68" + integrity sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1769,10 +1779,10 @@ dependencies: "@types/node" "*" -"@types/html-minifier-terser@^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" - integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== +"@types/html-minifier-terser@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz#563c1c6c132cd204e71512f9c0b394ff90d3fae7" + integrity sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ== "@types/http-proxy@^1.17.5": version "1.17.7" @@ -1833,9 +1843,9 @@ "@types/geojson" "*" "@types/lodash@^4.14.141": - version "4.14.175" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.175.tgz#b78dfa959192b01fae0ad90e166478769b215f45" - integrity sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw== + version "4.14.176" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.176.tgz#641150fc1cda36fbfa329de603bbb175d7ee20c0" + integrity sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ== "@types/mime@^1": version "1.3.2" @@ -1853,14 +1863,14 @@ integrity sha512-rr20mmx41OkWx4q5du2dv2sESR/6xH2tzScUQXwO8SiaQWa6PYTuan1nqBtA76FR9qkVfZY7nwQwZNC9StX/Ww== "@types/node@*": - version "16.10.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.3.tgz#7a8f2838603ea314d1d22bb3171d899e15c57bd5" - integrity sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ== + version "16.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" + integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== "@types/node@^14.14.31": - version "14.17.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.21.tgz#6359d8cf73481e312a43886fa50afc70ce5592c6" - integrity sha512-zv8ukKci1mrILYiQOwGSV4FpkZhyxQtuFWGya2GujWg+zVAeRQ4qbaMmWp9vb9889CFA8JECH7lkwCL6Ygg8kA== + version "14.17.32" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.32.tgz#2ca61c9ef8c77f6fa1733be9e623ceb0d372ad96" + integrity sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -1878,9 +1888,9 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/phoenix@^1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.5.2.tgz#9846009959b752e04b3560e31f213ddbc137e499" - integrity sha512-eAr6f4apLMY0COa1WIZikziSUBq4plqE5TwzzUeDyXvfuWLnLckeMF43byOwbk6W5ioIJXSHP42iR3Wo7U3RiQ== + version "1.5.3" + resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.5.3.tgz#80706952320b3bf49b5f138504dbfd0f7875650e" + integrity sha512-7fasDSyLIU0GAeVqaFNY3qQU4Ki5ZUUqF8L01EeFHbY3Qazo1pGZFjMkxMd1vZCS66tEBArC7zi7WKo6ZpOCNw== "@types/prettier@^2.1.5": version "2.4.1" @@ -1954,9 +1964,9 @@ "@types/prosemirror-state" "*" "@types/prosemirror-state@*", "@types/prosemirror-state@^1.2.4", "@types/prosemirror-state@^1.2.7": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.2.7.tgz#cd55062e4043a31e3426f47668f1d7038b5d8dfb" - integrity sha512-clJf5uw3/XQnBJtl2RqYXoLMGBySnLYl43xtDvFfQZKkLnnYcM1SDU8dcz7lWjl2Dm+H98RpLOl44pp7DYT+wA== + version "1.2.8" + resolved "https://registry.yarnpkg.com/@types/prosemirror-state/-/prosemirror-state-1.2.8.tgz#65080eeec52f63c50bf7034377f07773b4f6b2ac" + integrity sha512-mq9uyQWcpu8jeamO6Callrdvf/e1H/aRLR2kZWSpZrPHctEsxWHBbluD/wqVjXBRIOoMHLf6ZvOkrkmGLoCHVA== dependencies: "@types/prosemirror-model" "*" "@types/prosemirror-transform" "*" @@ -2030,6 +2040,16 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== + "@types/trusted-types@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" @@ -2060,9 +2080,9 @@ webpack "*" "@types/webpack-env@^1.15.2": - version "1.16.2" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.2.tgz#8db514b059c1b2ae14ce9d7bb325296de6a9a0fa" - integrity sha512-vKx7WNQNZDyJveYcHAm9ZxhqSGLYwoyLhrHjLBOkw3a7cT76sTdjgtwyijhk1MaHyRIuSztcVwrUOO/NEu68Dw== + version "1.16.3" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" + integrity sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw== "@types/yargs-parser@*": version "20.2.1" @@ -2234,9 +2254,9 @@ integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== "@vue/babel-plugin-jsx@^1.0.3": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.0.tgz#eb73871cbe468bc12141441a0052d8948ac4f67d" - integrity sha512-RGesLuTa+/0dHw7Ai3oQK0PoZbHPgtnjRQMTA/RRarqTWqMcFQ1BWYW47nSCkJAPYfd9hkUC0BWqokiOlJjJyg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz#0c5bac27880d23f89894cd036a37b55ef61ddfc1" + integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" @@ -2260,10 +2280,10 @@ lodash.kebabcase "^4.1.1" svg-tags "^1.0.0" -"@vue/babel-preset-app@^5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-5.0.0-beta.5.tgz#3585c18abf919691f01ba97195165f5cf6e1075b" - integrity sha512-r6axGbc0Gi/zkH7TUzmWhgt5j0pscldOAo5oUiGnfyeorZ5XNOt8tHjQVQgBbJx68lv4ZYN0s7T+/IOegy1sSA== +"@vue/babel-preset-app@^5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-5.0.0-beta.7.tgz#fbff6a4198e69f6283b41bd71db10b8ae2c9440e" + integrity sha512-V4GqcBz+qx3EqCVvw1PAOVLc6HlOF+UaJdaC5Jd5oeD+VpUaZDaOTHydtVz1TLN4VHW3vkCABYf+BDRPLNkfpg== dependencies: "@babel/core" "^7.12.16" "@babel/helper-compilation-targets" "^7.12.16" @@ -2345,68 +2365,68 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" camelcase "^5.0.0" -"@vue/cli-overlay@^5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-5.0.0-beta.5.tgz#af6ed2133a6db9ab863fdd2886eb5ac80a71f1d0" - integrity sha512-VaCWjAGCacH1YUau54+tVJ/2+hoCGb7BAdsKKBX9nhkTU5+dfXSDYPPUcxxebhFA0IEiXFD7wE76d9Pb8/sFTw== +"@vue/cli-overlay@^5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-5.0.0-beta.7.tgz#a417a4f9c7b0102b6ab0df9a41c7a0a70dfac30b" + integrity sha512-OwG3wZA2ruG6XNQdHsn5hBk0sjRJHkbCARkbnnwKDfULrsGt8xMqFEowiPH0xzVGQgPGqHPXyKvGbE/MRGJBeA== -"@vue/cli-plugin-babel@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.0-beta.5.tgz#bc3a3271afca26b49fcebea5b83eefc81d0c0c0a" - integrity sha512-SYFF9pMjkD8e4ovhZDGVgNwaD3avu+UY0yhywLjHFK1F/pbCTKGR5STLOvnAMmDaG9Q9acVZTuTVPE11POnk/Q== +"@vue/cli-plugin-babel@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.0-beta.7.tgz#2e149bf26b9001aa8cb9622ed49b3a5973b7b2db" + integrity sha512-xB7NFldn+k17NXY5JsoNB6ZCwNd6yAZ+Xn9tEEaH3B/J+VQjCsSIgT4NxTpl0xBptq5CeCvFS7hW3fHIexcKFw== dependencies: "@babel/core" "^7.12.16" - "@vue/babel-preset-app" "^5.0.0-beta.5" - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/babel-preset-app" "^5.0.0-beta.7" + "@vue/cli-shared-utils" "^5.0.0-beta.7" babel-loader "^8.2.2" thread-loader "^3.0.0" webpack "^5.22.0" -"@vue/cli-plugin-e2e-cypress@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-5.0.0-beta.5.tgz#4876d66687d3694146c5689ea0f2772a58d9a15a" - integrity sha512-+sc4Aegryyl3hRBcRj258zo/Dslrn4QgWH0sD5Act9yZprwxkdWaGqtDOL2hrcUCf7hpBRgHN/HIWsV4F4phxg== +"@vue/cli-plugin-e2e-cypress@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-5.0.0-beta.7.tgz#6d51ea711e0f226f34dfecb91f837103db873786" + integrity sha512-8030gvuFAQjRnyJhwhsabEw/8+nodyP8oWwbPL/CejhWBe6xnrAoBNkXtyu2qDvJxzc4hNy45hUdEobAtTO/dg== dependencies: - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/cli-shared-utils" "^5.0.0-beta.7" eslint-plugin-cypress "^2.11.2" -"@vue/cli-plugin-eslint@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.0-beta.5.tgz#65d659cf5df8293f4df8dfcbcffdf03ec587535c" - integrity sha512-KcLcGNS9D6v6iN9IVI40t58c7KwzbBe4yx0/jyG8FChily/EuJMCXkXx6l/Ye0hukcLrWZsWZg7Kh0ADCz1aYA== +"@vue/cli-plugin-eslint@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.0-beta.7.tgz#4978907bf63a5d2446d70183e4c4a0fdeea95ad7" + integrity sha512-ACKuxOI5XpuXZBIHwSI2RwLAOMikxFMKBPBICse/qNDmihU2kXfDcGMrqQOh7HbqQE4XdpwhaUvARHz80psxEg== dependencies: - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/cli-shared-utils" "^5.0.0-beta.7" eslint-webpack-plugin "2.4.3" globby "^11.0.2" inquirer "^8.0.0" webpack "^5.22.0" yorkie "^2.0.0" -"@vue/cli-plugin-pwa@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-5.0.0-beta.5.tgz#242255e6faadf441064e8e6181c97f30097eecb8" - integrity sha512-idFW1v2+vmWL2HSFYymDZIIZ0Xd4FcbKBryP5ZFpZdhO9EqPYS7OxTuMhPQqSS2ezbuGWYMgZPaaZuZsyyLdYQ== +"@vue/cli-plugin-pwa@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-5.0.0-beta.7.tgz#9276ae9d832bbeb5281653b7fa1b0fd46608ccc7" + integrity sha512-4vHbKF1yicxS2vyOnhBiqJCE+iG1sFPshNgFYfzPrMC3r1b+MvZIXbSPsUOQtoNmNyi4qiucRssgh4n9pDr/eA== dependencies: - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/cli-shared-utils" "^5.0.0-beta.7" html-webpack-plugin "^5.1.0" webpack "^5.22.0" workbox-webpack-plugin "^6.1.0" -"@vue/cli-plugin-router@^5.0.0-beta.5", "@vue/cli-plugin-router@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.0-beta.5.tgz#de9aee641196a51b9178d696d96221464ad84e1f" - integrity sha512-i1rAB/dJgS09osz1YlV+TWrjf8BQAZc2+QZJwkNnrZZarQx12EWLhQ/pZ3h7p1Luc/oZUWF/qO6RnCTx+FyuNQ== +"@vue/cli-plugin-router@^5.0.0-beta.7", "@vue/cli-plugin-router@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.0-beta.7.tgz#dd4b41c2bbf9532f46d41ca856e589a82472172f" + integrity sha512-EK4xNS/tt5QVR/v6ZYGxFeLobgMA4K9IuLvY2sdGWblDci3r9MpGETgg4IJPNvWEZukRGVTWjLjoJYpodUdJOA== dependencies: - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/cli-shared-utils" "^5.0.0-beta.7" -"@vue/cli-plugin-typescript@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-5.0.0-beta.5.tgz#168b7e823c11507e78c8e57fae8f0515376f7426" - integrity sha512-j8GvTlMAg0GcfkM7zMUAzuXqmdZ22LIg10tyBtBTyPwO8fjLvK7M83zv54Q3kpcQJkq53ThFYxK29ychulk+jA== +"@vue/cli-plugin-typescript@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-5.0.0-beta.7.tgz#7ae79ca38910b819437ccc557b250ebcdc2e84bd" + integrity sha512-01JD5yMmc+enhy7KmNJCSxX3wscy3EgNz3dXP1yNlgCkhiqmzeS5d+DOCN9JO+buGcP1S9h48RAnwAlEmY4zMA== dependencies: "@babel/core" "^7.12.16" "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/cli-shared-utils" "^5.0.0-beta.7" babel-loader "^8.2.2" cache-loader "^4.1.0" fork-ts-checker-webpack-plugin "^6.1.0" @@ -2416,15 +2436,15 @@ webpack "^5.22.0" yorkie "^2.0.0" -"@vue/cli-plugin-unit-jest@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-5.0.0-beta.5.tgz#f388f2f892f40f650330fb9b93a6aace1258eb61" - integrity sha512-sm2iaEKe5u4dr8nIArkIdfYD2oX187CGxpvnRdGIDdXYUBU3aw0ml6WZbeKgObh4o/SkLwaQoIyDwtbGUbE2yg== +"@vue/cli-plugin-unit-jest@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-5.0.0-beta.7.tgz#5a004944033594db8172c606040927e71fd6a408" + integrity sha512-/ZoJ6bUhXyxD3YckGa9dJnDFP0oA0h22ZTGsYxD9EumVzoVryd4YllpLXKI7awcg5HLxmZJmUD2kaVgwwmuK8w== dependencies: "@babel/core" "^7.12.16" "@babel/plugin-transform-modules-commonjs" "^7.15.0" "@types/jest" "^27.0.1" - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/cli-shared-utils" "^5.0.0-beta.7" babel-jest "^27.1.0" deepmerge "^4.2.2" jest "^27.1.0" @@ -2432,25 +2452,25 @@ jest-transform-stub "^2.0.0" jest-watch-typeahead "^0.6.1" -"@vue/cli-plugin-vuex@^5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.0-beta.5.tgz#12ef40d45f8b60469b6c33a1308d553d0ae55cfd" - integrity sha512-2sascP+eptznskmCecB4SqjduwdVp0BLWlNL9chTM2T0WHEljju1g7xbMQZGYCeZWTgbVwE/CE2AOmArg3t29Q== +"@vue/cli-plugin-vuex@^5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.0-beta.7.tgz#080f03375f9c1a8af21c5afb129a13be2e591b3c" + integrity sha512-RoQGXGtz1brmsSYLrkm/LnXlp+SGVVM4ncWAJv9pYoUBJAocOEX+WmfNhbYe6l9jtfq1AmimVV3Id7drOZDAOw== -"@vue/cli-service@~5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-5.0.0-beta.5.tgz#9a95db9d0440999b3a65b8ef1643015c8b9c74a6" - integrity sha512-JWSsetICoPbLhJQQfPpFE5Z+mY8+mp76/vmi7Xe78ihsiuf2oO8ySAXyMdc2jwCVYpvj5wGoIzKJUh0dq7Aa9w== +"@vue/cli-service@~5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-5.0.0-beta.7.tgz#e1805fc3cb1654539b9ca306c15c21ac556b4b4d" + integrity sha512-C0sClCPzYFO1vwn4y6RQTdWPePX70tvoHJNrLFZHQiyp9vfY3zsnXjloEihqvdg6o7HxQfg/f8xPcS7WsM1Wbg== dependencies: "@babel/helper-compilation-targets" "^7.12.16" "@soda/friendly-errors-webpack-plugin" "^1.8.0" "@soda/get-current-script" "^1.0.2" "@types/minimist" "^1.2.0" "@types/webpack-dev-server" "^4.1.0" - "@vue/cli-overlay" "^5.0.0-beta.5" - "@vue/cli-plugin-router" "^5.0.0-beta.5" - "@vue/cli-plugin-vuex" "^5.0.0-beta.5" - "@vue/cli-shared-utils" "^5.0.0-beta.5" + "@vue/cli-overlay" "^5.0.0-beta.7" + "@vue/cli-plugin-router" "^5.0.0-beta.7" + "@vue/cli-plugin-vuex" "^5.0.0-beta.7" + "@vue/cli-shared-utils" "^5.0.0-beta.7" "@vue/component-compiler-utils" "^3.1.2" "@vue/vue-loader-v15" "npm:vue-loader@^15.9.7" "@vue/web-component-wrapper" "^1.3.0" @@ -2472,7 +2492,6 @@ default-gateway "^6.0.3" dotenv "^10.0.0" dotenv-expand "^5.1.0" - file-loader "^6.1.1" fs-extra "^9.1.0" globby "^11.0.2" hash-sum "^2.0.0" @@ -2491,7 +2510,6 @@ ssri "^8.0.1" terser-webpack-plugin "^5.1.1" thread-loader "^3.0.0" - url-loader "^4.1.1" vue-loader "^16.4.0" vue-style-loader "^4.1.3" webpack "^5.22.0" @@ -2502,10 +2520,10 @@ webpack-virtual-modules "^0.4.2" whatwg-fetch "^3.6.2" -"@vue/cli-shared-utils@^5.0.0-beta.5": - version "5.0.0-beta.5" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.0-beta.5.tgz#e4cac7368f7ef51f80515fddb83699e87886be0e" - integrity sha512-aerbLTYPon+o5lrt3zYNxIstN223YltclkT2G+zvLn07R2Sw17vpJpGBMKGhMtojfFdi/b4Sygtg5Msggm0Azw== +"@vue/cli-shared-utils@^5.0.0-beta.7": + version "5.0.0-beta.7" + resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.0-beta.7.tgz#b7dc167d6e7a66ae2e02065c2ff46acefe21b569" + integrity sha512-5z+z+pSjM55aGbLf2HF4ND4rQhOYACRWmn+9P2va8bL5ZPP2K3162m1R1YGP3ftCsZwIzII7ksIFBba75TNjkg== dependencies: chalk "^4.1.2" execa "^1.0.0" @@ -2521,9 +2539,9 @@ strip-ansi "^6.0.0" "@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz#2f7ed5feed82ff7f0284acc11d525ee7eff22460" - integrity sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg== + version "3.3.0" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9" + integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ== dependencies: consolidate "^0.15.1" hash-sum "^1.0.2" @@ -2534,7 +2552,7 @@ source-map "~0.6.1" vue-template-es2015-compiler "^1.9.0" optionalDependencies: - prettier "^1.18.2" + prettier "^1.18.2 || ^2.0.0" "@vue/eslint-config-prettier@^6.0.0": version "6.0.0" @@ -2571,9 +2589,9 @@ vue-style-loader "^4.1.0" "@vue/vue2-jest@^27.0.0-alpha.2": - version "27.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@vue/vue2-jest/-/vue2-jest-27.0.0-alpha.2.tgz#0af6893b091cebaf4adb08daaae8fca0636f41bb" - integrity sha512-lcrdUgQuNXVd5oMbpiiuHMuZ88B55B1zHxW+KZuO/h5nnNUMjHKjKc9NZfqXYReWFytYquTGlejLFH2Vo7e4Gw== + version "27.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/@vue/vue2-jest/-/vue2-jest-27.0.0-alpha.3.tgz#fe28c70ee21db494ea8ac1ddbce7a81dd9cabb73" + integrity sha512-50UrwXn7xO92TwsJCUGiA9CCpjKCZRWlW2Q3eOgR8Y05bbDnTRrhc23ZDc9gKqeWCykEIdRnUXo5Qb1XeDl+7A== dependencies: "@babel/plugin-transform-modules-commonjs" "^7.2.0" "@vue/component-compiler-utils" "^3.1.0" @@ -2581,6 +2599,18 @@ extract-from-css "^0.4.4" source-map "0.5.6" +"@vue/vue3-jest@^27.0.0-alpha.1": + version "27.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/@vue/vue3-jest/-/vue3-jest-27.0.0-alpha.3.tgz#c9c77d971220e3359a1d379008d3fa33564a6380" + integrity sha512-q6Ij39J/qPMkMHhttq0r4Yx/leaN1rMnUrwicLwad9YuVO6sPAbiaiUa+A5jbcHcHGMhXcJ69oGIf4dj7oGidg== + dependencies: + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + chalk "^2.1.0" + convert-source-map "^1.6.0" + extract-from-css "^0.4.4" + source-map "0.5.6" + tsconfig "^7.0.0" + "@vue/web-component-wrapper@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" @@ -3006,7 +3036,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.3: +array-includes@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== @@ -3022,7 +3052,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.flat@^1.2.4: +array.prototype.flat@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== @@ -3061,9 +3091,9 @@ async@^2.6.2: lodash "^4.17.14" async@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8" - integrity sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg== + version "3.2.2" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.2.tgz#2eb7671034bb2194d45d30e31e24ec7e7f9670cd" + integrity sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g== asynckit@^0.4.0: version "0.4.0" @@ -3081,15 +3111,15 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^10.2.4: - version "10.3.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.3.7.tgz#cef2562058406bd378c94aacda36bb46a97b3186" - integrity sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg== + version "10.4.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" + integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== dependencies: - browserslist "^4.17.3" - caniuse-lite "^1.0.30001264" + browserslist "^4.17.5" + caniuse-lite "^1.0.30001272" fraction.js "^4.1.1" normalize-range "^0.1.2" - picocolors "^0.2.1" + picocolors "^1.0.0" postcss-value-parser "^4.1.0" aws-sign2@~0.7.0: @@ -3102,12 +3132,12 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -babel-jest@^27.1.0, babel-jest@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.2.5.tgz#6bbbc1bb4200fe0bfd1b1fbcbe02fc62ebed16aa" - integrity sha512-GC9pWCcitBhSuF7H3zl0mftoKizlswaF0E3qi+rPL417wKkCB0d+Sjjb0OfXvxj7gWiBf497ldgRMii68Xz+2g== +babel-jest@^27.1.0, babel-jest@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.3.1.tgz#0636a3404c68e07001e434ac4956d82da8a80022" + integrity sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ== dependencies: - "@jest/transform" "^27.2.5" + "@jest/transform" "^27.3.1" "@jest/types" "^27.2.5" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.0.0" @@ -3117,9 +3147,9 @@ babel-jest@^27.1.0, babel-jest@^27.2.5: slash "^3.0.0" babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -3134,14 +3164,14 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" babel-plugin-jest-hoist@^27.2.0: @@ -3154,29 +3184,29 @@ babel-plugin-jest-hoist@^27.2.0: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-polyfill-corejs2@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz#6ed8e30981b062f8fe6aca8873a37ebcc8cc1c0f" + integrity sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.2.4" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" - integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw== +babel-plugin-polyfill-corejs3@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz#fa7ca3d1ee9ddc6193600ffb632c9785d54918af" + integrity sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.16.2" + "@babel/helper-define-polyfill-provider" "^0.2.4" + core-js-compat "^3.18.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz#2e9808f5027c4336c994992b48a4262580cb8d6d" + integrity sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.2.4" babel-polyfill@6.26.0: version "6.26.0" @@ -3335,16 +3365,16 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.17.3: - version "4.17.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.3.tgz#2844cd6eebe14d12384b0122d217550160d2d624" - integrity sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.17.6: + version "4.17.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d" + integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw== dependencies: - caniuse-lite "^1.0.30001264" - electron-to-chromium "^1.3.857" + caniuse-lite "^1.0.30001274" + electron-to-chromium "^1.3.886" escalade "^3.1.1" - node-releases "^1.1.77" - picocolors "^0.2.1" + node-releases "^2.0.1" + picocolors "^1.0.0" bs-logger@0.x: version "0.2.6" @@ -3361,9 +3391,9 @@ bser@2.1.1: node-int64 "^0.4.0" buefy@^0.9.0: - version "0.9.10" - resolved "https://registry.yarnpkg.com/buefy/-/buefy-0.9.10.tgz#17f64ee1ba43a145d1d3c56f45cba95e4e2975fa" - integrity sha512-xXEoy/NTgBNiIfBTCdHi2Vu5SJJdB046py6ekUvYuUgYwRvulySZksdecVNNWdfEVU8iD4esZaRbTLwCegFcVQ== + version "0.9.11" + resolved "https://registry.yarnpkg.com/buefy/-/buefy-0.9.11.tgz#69ab7f46e4f172d43247916f770f29764f9e0931" + integrity sha512-WP32SiaM9WVxDtzgdiq7V2zyIvn41NboPgluVqdB6OAi1/QhjO/63m6hd/jy6Vk8r+zuhIZD+aP9KlQ10EhxTQ== dependencies: bulma "0.9.3" @@ -3421,9 +3451,9 @@ bytes@3.1.0: integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cac@^6.7.3: - version "6.7.8" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.8.tgz#5b73bc5265fb55ccc132befef40eb9b831ae610b" - integrity sha512-EozC0vCN4aX3LbcVAzN0tW0qKeDFDXZ74xIAfCviLP2B6yzWPMaYLlMP0EHi2oZKvNqRgY35bOKQtWc5xQ0dDA== + version "6.7.11" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.11.tgz#8828e0874e578b60d839a7591567d7d5bdc7cbce" + integrity sha512-m4xrA2MKfid6uDV2j2+0mXrtPGxlvAW0y+7Gnn2P8WVMSG+4e4tcoYX++94ZPblPfpBccJ5e7HvKdghlX5yiDA== cache-loader@^4.1.0: version "4.1.0" @@ -3455,7 +3485,7 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.1: +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== @@ -3483,10 +3513,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001264: - version "1.0.30001265" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" - integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001274: + version "1.0.30001275" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001275.tgz#26f5076629fe4e52bbd245f9046ad7b90aafdf57" + integrity sha512-ihJVvj8RX0kn9GgP43HKhb5q9s2XQn4nEQhdldEJvZhCsuiB2XOq6fAMYQZaN6FPWfsr2qU0cdL0CSbETwbJAg== case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" @@ -3541,7 +3571,7 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.1: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== @@ -3566,7 +3596,7 @@ ci-info@^1.5.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== -ci-info@^3.1.1: +ci-info@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== @@ -3576,10 +3606,10 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== +clean-css@^5.1.5: + version "5.2.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" + integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== dependencies: source-map "~0.6.0" @@ -3674,6 +3704,11 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3708,17 +3743,12 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.0.1, colord@^2.6: - version "2.8.0" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.8.0.tgz#64fb7aa03de7652b5a39eee50271a104c2783b12" - integrity sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA== +colord@^2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" + integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== -colorette@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -colorette@^2.0.10, colorette@^2.0.14: +colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16: version "2.0.16" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== @@ -3740,7 +3770,7 @@ commander@^2.19.0, commander@^2.20.0: 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, commander@^4.1.1: +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== @@ -3750,16 +3780,16 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - commander@^7.0.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + common-tags@^1.4.0, common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3866,12 +3896,12 @@ copy-webpack-plugin@^9.0.1: schema-utils "^3.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.16.0, core-js-compat@^3.16.2, core-js-compat@^3.8.3: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.2.tgz#e40c266fbd613948dd8d2d2156345da8ac03c142" - integrity sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ== +core-js-compat@^3.18.0, core-js-compat@^3.19.0, core-js-compat@^3.8.3: + version "3.19.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.1.tgz#fe598f1a9bf37310d77c3813968e9f7c7bb99476" + integrity sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g== dependencies: - browserslist "^4.17.3" + browserslist "^4.17.6" semver "7.0.0" core-js@2.6.0: @@ -3885,9 +3915,9 @@ core-js@^2.4.0, core-js@^2.5.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.4, core-js@^3.8.3: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.2.tgz#63a551e8a29f305cd4123754846e65896619ba5b" - integrity sha512-zNhPOUoSgoizoSQFdX1MeZO16ORRb9FFQLts8gSYbZU5FcgXhp24iMWMxnOQo5uIaIG7/6FA/IqJPwev1o9ZXQ== + version "3.19.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.1.tgz#f6f173cae23e73a7d88fa23b6e9da329276c6641" + integrity sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg== core-util-is@1.0.2: version "1.0.2" @@ -4035,16 +4065,16 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz#359943bf00c5c8e05489f12dd25f3006f2c1cbd2" - integrity sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ== +cssnano-preset-default@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.5.tgz#6effb7175ee5d296f95330e137587e27ee974d44" + integrity sha512-fF00UI+d3PWkGfMd62geqmoUe5h+LOhGE2GH4Fqq3beNKdCU1LWwLUyIcu4/A72lWv0737cHey5zhhWw3rW0sA== dependencies: css-declaration-sorter "^6.0.3" cssnano-utils "^2.0.1" postcss-calc "^8.0.0" - postcss-colormin "^5.2.0" - postcss-convert-values "^5.0.1" + postcss-colormin "^5.2.1" + postcss-convert-values "^5.0.2" postcss-discard-comments "^5.0.1" postcss-discard-duplicates "^5.0.1" postcss-discard-empty "^5.0.1" @@ -4052,7 +4082,7 @@ cssnano-preset-default@^5.1.4: postcss-merge-longhand "^5.0.2" postcss-merge-rules "^5.0.2" postcss-minify-font-values "^5.0.1" - postcss-minify-gradients "^5.0.2" + postcss-minify-gradients "^5.0.3" postcss-minify-params "^5.0.1" postcss-minify-selectors "^5.1.0" postcss-normalize-charset "^5.0.1" @@ -4067,7 +4097,7 @@ cssnano-preset-default@^5.1.4: postcss-ordered-values "^5.0.2" postcss-reduce-initial "^5.0.1" postcss-reduce-transforms "^5.0.1" - postcss-svgo "^5.0.2" + postcss-svgo "^5.0.3" postcss-unique-selectors "^5.0.1" cssnano-utils@^2.0.1: @@ -4076,11 +4106,11 @@ cssnano-utils@^2.0.1: integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== cssnano@^5.0.0, cssnano@^5.0.6: - version "5.0.8" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.8.tgz#39ad166256980fcc64faa08c9bb18bb5789ecfa9" - integrity sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg== + version "5.0.9" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.9.tgz#bd03168835c0883c16754085704f57861a32d99c" + integrity sha512-Y4olTKBKsPKl5izpcXHRDiB/1rVdbIDM4qVXgEKBt466kYT42SEEsnCYOQFFXzEkUYV8pJNCII9JKzb8KfDk+g== dependencies: - cssnano-preset-default "^5.1.4" + cssnano-preset-default "^5.1.5" is-resolvable "^1.1.0" lilconfig "^2.0.3" yaml "^1.10.2" @@ -4110,9 +4140,9 @@ cssstyle@^2.3.0: cssom "~0.3.6" cypress@^8.3.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-8.5.0.tgz#5712ca170913f8344bf167301205c4217c1eb9bd" - integrity sha512-MMkXIS+Ro2KETn4gAlG3tIc/7FiljuuCZP0zpd9QsRG6MZSyZW/l1J3D4iQM6WHsVxuX4rFChn5jPFlC2tNSvQ== + version "8.7.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-8.7.0.tgz#2ee371f383d8f233d3425b6cc26ddeec2668b6da" + integrity sha512-b1bMC3VQydC6sXzBMFnSqcvwc9dTZMgcaOzT0vpSD+Gq1yFc+72JDWi55sfUK5eIeNLAtWOGy1NNb6UlhMvB+Q== dependencies: "@cypress/request" "^2.88.6" "@cypress/xvfb" "^1.2.4" @@ -4485,10 +4515,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.3.857: - version "1.3.864" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.864.tgz#6a993bcc196a2b8b3df84d28d5d4dd912393885f" - integrity sha512-v4rbad8GO6/yVI92WOeU9Wgxc4NA0n4f6P1FvZTY+jyY7JHEhw3bduYu60v3Q1h81Cg6eo4ApZrFPuycwd5hGw== +electron-to-chromium@^1.3.886: + version "1.3.887" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.887.tgz#b36aeed12a28aaa19460a467823f5bbe1f3c6f06" + integrity sha512-QQUumrEjFDKSVYVdaeBmFdyQGoaV+fCSMyWHvfx/u22bRHSTeBQYt6P4jMY+gFd4kgKB9nqk7RMtWkDB49OYPA== emittery@^0.8.1: version "0.8.1" @@ -4664,12 +4694,13 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534" - integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q== +eslint-module-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" + integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== dependencies: debug "^3.2.7" + find-up "^2.1.0" pkg-dir "^2.0.0" eslint-plugin-cypress@^2.10.3, eslint-plugin-cypress@^2.11.2: @@ -4680,23 +4711,21 @@ eslint-plugin-cypress@^2.10.3, eslint-plugin-cypress@^2.11.2: globals "^11.12.0" eslint-plugin-import@^2.20.2: - version "2.24.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz#2c8cd2e341f3885918ee27d18479910ade7bb4da" - integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q== + version "2.25.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz#b3b9160efddb702fc1636659e71ba1d10adbe9e9" + integrity sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g== dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.6.2" - find-up "^2.0.0" + eslint-module-utils "^2.7.0" has "^1.0.3" - is-core-module "^2.6.0" + is-core-module "^2.7.0" + is-glob "^4.0.3" minimatch "^3.0.4" - object.values "^1.1.4" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" + object.values "^1.1.5" resolve "^1.20.0" tsconfig-paths "^3.11.0" @@ -4708,9 +4737,9 @@ eslint-plugin-prettier@^4.0.0: prettier-linter-helpers "^1.0.0" eslint-plugin-vue@^7.6.0: - version "7.19.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.19.1.tgz#435fb2ce712842a9530b28eacb883680e8eaa4f3" - integrity sha512-e2pD7nW2sTY04ThH+66BgToNwC4n6dqfNhKE+ypdJFtZgn3Zn+nP8ZEIFPG0PGqCKQ3qxy8dJk1bzUsuQd3ANA== + version "7.20.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz#98c21885a6bfdf0713c3a92957a5afeaaeed9253" + integrity sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw== dependencies: eslint-utils "^2.1.0" natural-compare "^1.4.0" @@ -4849,9 +4878,9 @@ estraverse@^4.1.1: integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + 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" @@ -4956,16 +4985,16 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expect@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.2.5.tgz#16154aaa60b4d9a5b0adacfea3e4d6178f4b93fd" - integrity sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA== +expect@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.3.1.tgz#d0f170b1f5c8a2009bab0beffd4bb94f043e38e7" + integrity sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg== dependencies: "@jest/types" "^27.2.5" ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" + jest-get-type "^27.3.1" + jest-matcher-utils "^27.3.1" + jest-message-util "^27.3.1" jest-regex-util "^27.0.6" express@^4.17.1: @@ -5049,9 +5078,9 @@ extsprintf@1.3.0: integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@1.0.0: version "1.0.0" @@ -5143,14 +5172,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^6.1.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5180,7 +5201,7 @@ find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -5224,9 +5245,9 @@ flush-promises@^1.0.2: integrity sha512-G0sYfLQERwKz4+4iOZYQEZVpOt9zQrlItIxQAAYAWpfby3gbHrx0osCHz5RLl/XoXevXk0xoN4hDFky/VV9TrA== follow-redirects@^1.0.0: - version "1.14.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" - integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== + version "1.14.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" + integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== forever-agent@~0.6.1: version "0.6.1" @@ -5234,9 +5255,9 @@ forever-agent@~0.6.1: integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= fork-ts-checker-webpack-plugin@^6.1.0: - version "6.3.4" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.3.4.tgz#9af17de0a36caf6f1b4e1d2d081cf586f0a12b14" - integrity sha512-z0dns2NXH9NHH0wpW6iuUmyXYRN9BI2Lqnv+RCdL+9GXSW6tKUqYnwf+h3ZaucJsbsrdobdxuOELGgm1xVZITA== + version "6.4.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz#057e477cf1d8b013b2ed2669437f818680289c4c" + integrity sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg== dependencies: "@babel/code-frame" "^7.8.3" "@types/json-schema" "^7.0.5" @@ -5444,9 +5465,9 @@ globals@^11.1.0, globals@^11.12.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== + version "13.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" + integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== dependencies: type-fest "^0.20.2" @@ -5482,9 +5503,9 @@ graphql@14.0.2: iterall "^1.2.2" graphql@^15.0.0: - version "15.6.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.6.1.tgz#9125bdf057553525da251e19e96dab3d3855ddfc" - integrity sha512-3i5lu0z6dRvJ48QP9kFxBkJ7h4Kso7PS8eahyTFz5Jm6CvQfLtNIE8LX9N6JLnXTuwR+sIYnXzaWp6anOg0QQw== + version "15.7.2" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.7.2.tgz#85ab0eeb83722977151b3feb4d631b5f2ab287ef" + integrity sha512-AnnKk7hFQFmU/2I9YSQf3xw44ctnSFCfp3zE0N6W174gqe9fWG/2rKaKxROK7CcI3XtERpjEKFqts8o319Kf7A== gzip-size@^6.0.0: version "6.0.0" @@ -5611,18 +5632,18 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== +html-minifier-terser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.0.2.tgz#14059ad64b69bf9f8b8a33f25b53411d8321e75d" + integrity sha512-AgYO3UGhMYQx2S/FBJT3EM0ZYcKmH6m9XL9c1v77BeK/tYJxGPxT1/AtsdUi4FcP8kZGmqqnItCcjFPcX9hk6A== dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" + camel-case "^4.1.2" + clean-css "^5.1.5" + commander "^8.1.0" he "^1.2.0" - param-case "^3.0.3" + param-case "^3.0.4" relateurl "^0.2.7" - terser "^4.6.3" + terser "^5.7.2" html-tags@^2.0.0: version "2.0.0" @@ -5635,14 +5656,14 @@ html-tags@^3.1.0: integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== html-webpack-plugin@^5.1.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz#7b04bf80b1f6fe84a6d3f66c8b79d64739321b08" - integrity sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ== + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== dependencies: - "@types/html-minifier-terser" "^5.0.0" - html-minifier-terser "^5.0.1" + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" lodash "^4.17.21" - pretty-error "^3.0.4" + pretty-error "^4.0.0" tapable "^2.0.0" htmlparser2@^6.1.0: @@ -5766,9 +5787,9 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== idb@^6.0.0: - version "6.1.4" - resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.4.tgz#ec77519fe2591be616eaf3bbdedc3662bb558a99" - integrity sha512-DshI5yxIB3NYc47cPpfipYX8MSIgQPqVR+WoaGI9EDq6cnLGgGYR1fp6z8/Bq9vMS8Jq1bS3eWUgXpFO5+ypSA== + version "6.1.5" + resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" + integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== ieee754@^1.1.13: version "1.2.1" @@ -5966,16 +5987,16 @@ is-ci@^1.0.10: ci-info "^1.5.0" is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: - ci-info "^3.1.1" + ci-info "^3.2.0" -is-core-module@^2.2.0, is-core-module@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3" - integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ== +is-core-module@^2.2.0, is-core-module@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== dependencies: has "^1.0.3" @@ -6205,12 +6226,12 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== +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== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: +istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -6220,6 +6241,17 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -6230,18 +6262,18 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + 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.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.3.tgz#974d682037f6d12b15dc55f9a2a5f8f1ea923831" - integrity sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A== + version "3.0.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.5.tgz#a2580107e71279ea6d661ddede929ffc6d693384" + integrity sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -6256,94 +6288,94 @@ javascript-stringify@^2.0.1: resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== -jest-changed-files@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.2.5.tgz#9dfd550d158260bcb6fa80aff491f5647f7daeca" - integrity sha512-jfnNJzF89csUKRPKJ4MwZ1SH27wTmX2xiAIHUHrsb/OYd9Jbo4/SXxJ17/nnx6RIifpthk3Y+LEeOk+/dDeGdw== +jest-changed-files@^27.3.0: + version "27.3.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.3.0.tgz#22a02cc2b34583fc66e443171dc271c0529d263c" + integrity sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg== dependencies: "@jest/types" "^27.2.5" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.2.5.tgz#573256a6fb6e447ac2fc7e0ade9375013309037f" - integrity sha512-eyL9IcrAxm3Saq3rmajFCwpaxaRMGJ1KJs+7hlTDinXpJmeR3P02bheM3CYohE7UfwOBmrFMJHjgo/WPcLTM+Q== +jest-circus@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.3.1.tgz#1679e74387cbbf0c6a8b42de963250a6469e0797" + integrity sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw== dependencies: - "@jest/environment" "^27.2.5" - "@jest/test-result" "^27.2.5" + "@jest/environment" "^27.3.1" + "@jest/test-result" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.2.5" + expect "^27.3.1" is-generator-fn "^2.0.0" - jest-each "^27.2.5" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" - jest-runtime "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - pretty-format "^27.2.5" + jest-each "^27.3.1" + jest-matcher-utils "^27.3.1" + jest-message-util "^27.3.1" + jest-runtime "^27.3.1" + jest-snapshot "^27.3.1" + jest-util "^27.3.1" + pretty-format "^27.3.1" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.2.5.tgz#88718c8f05f1c0f209152952ecd61afe4c3311bb" - integrity sha512-XzfcOXi5WQrXqFYsDxq5RDOKY4FNIgBgvgf3ZBz4e/j5/aWep5KnsAYH5OFPMdX/TP/LFsYQMRH7kzJUMh6JKg== +jest-cli@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.3.1.tgz#b576f9d146ba6643ce0a162d782b40152b6b1d16" + integrity sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q== dependencies: - "@jest/core" "^27.2.5" - "@jest/test-result" "^27.2.5" + "@jest/core" "^27.3.1" + "@jest/test-result" "^27.3.1" "@jest/types" "^27.2.5" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" - jest-config "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" + jest-config "^27.3.1" + jest-util "^27.3.1" + jest-validate "^27.3.1" prompts "^2.0.1" yargs "^16.2.0" -jest-config@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.2.5.tgz#c2e4ec6ea2bf4ffd2cae3d927999fe6159cba207" - integrity sha512-QdENtn9b5rIIYGlbDNEcgY9LDL5kcokJnXrp7x8AGjHob/XFqw1Z6p+gjfna2sUulQsQ3ce2Fvntnv+7fKYDhQ== +jest-config@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.3.1.tgz#cb3b7f6aaa8c0a7daad4f2b9573899ca7e09bbad" + integrity sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.2.5" + "@jest/test-sequencer" "^27.3.1" "@jest/types" "^27.2.5" - babel-jest "^27.2.5" + babel-jest "^27.3.1" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.2.5" - jest-environment-jsdom "^27.2.5" - jest-environment-node "^27.2.5" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.2.5" + jest-circus "^27.3.1" + jest-environment-jsdom "^27.3.1" + jest-environment-node "^27.3.1" + jest-get-type "^27.3.1" + jest-jasmine2 "^27.3.1" jest-regex-util "^27.0.6" - jest-resolve "^27.2.5" - jest-runner "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" + jest-resolve "^27.3.1" + jest-runner "^27.3.1" + jest-util "^27.3.1" + jest-validate "^27.3.1" micromatch "^4.0.4" - pretty-format "^27.2.5" + pretty-format "^27.3.1" -jest-diff@^27.0.0, jest-diff@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.5.tgz#908f7a6aca5653824516ad30e0a9fd9767e53623" - integrity sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA== +jest-diff@^27.0.0, jest-diff@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.3.1.tgz#d2775fea15411f5f5aeda2a5e02c2f36440f6d55" + integrity sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ== dependencies: chalk "^4.0.0" diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.2.5" + jest-get-type "^27.3.1" + pretty-format "^27.3.1" jest-docblock@^27.0.6: version "27.0.6" @@ -6352,51 +6384,51 @@ jest-docblock@^27.0.6: dependencies: detect-newline "^3.0.0" -jest-each@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.2.5.tgz#378118d516db730b92096a9607b8711165946353" - integrity sha512-HUPWIbJT0bXarRwKu/m7lYzqxR4GM5EhKOsu0z3t0SKtbFN6skQhpAUADM4qFShBXb9zoOuag5lcrR1x/WM+Ag== +jest-each@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.3.1.tgz#14c56bb4f18dd18dc6bdd853919b5f16a17761ff" + integrity sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ== dependencies: "@jest/types" "^27.2.5" chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.2.5" - pretty-format "^27.2.5" + jest-get-type "^27.3.1" + jest-util "^27.3.1" + pretty-format "^27.3.1" -jest-environment-jsdom@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.2.5.tgz#21de3ad0e89441d961b592ba7561b16241279208" - integrity sha512-QtRpOh/RQKuXniaWcoFE2ElwP6tQcyxHu0hlk32880g0KczdonCs5P1sk5+weu/OVzh5V4Bt1rXuQthI01mBLg== +jest-environment-jsdom@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz#63ac36d68f7a9303494df783494856222b57f73e" + integrity sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg== dependencies: - "@jest/environment" "^27.2.5" - "@jest/fake-timers" "^27.2.5" + "@jest/environment" "^27.3.1" + "@jest/fake-timers" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" - jest-mock "^27.2.5" - jest-util "^27.2.5" + jest-mock "^27.3.0" + jest-util "^27.3.1" jsdom "^16.6.0" -jest-environment-node@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.2.5.tgz#ffa1afb3604c640ec841f044d526c65912e02cef" - integrity sha512-0o1LT4grm7iwrS8fIoLtwJxb/hoa3GsH7pP10P02Jpj7Mi4BXy65u46m89vEM2WfD1uFJQ2+dfDiWZNA2e6bJg== +jest-environment-node@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.3.1.tgz#af7d0eed04edafb740311b303f3fe7c8c27014bb" + integrity sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw== dependencies: - "@jest/environment" "^27.2.5" - "@jest/fake-timers" "^27.2.5" + "@jest/environment" "^27.3.1" + "@jest/fake-timers" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" - jest-mock "^27.2.5" - jest-util "^27.2.5" + jest-mock "^27.3.0" + jest-util "^27.3.1" -jest-get-type@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" - integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== +jest-get-type@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.3.1.tgz#a8a2b0a12b50169773099eee60a0e6dd11423eff" + integrity sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg== -jest-haste-map@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.5.tgz#0247b7299250643472bbcf5b4ad85c72d5178e2e" - integrity sha512-pzO+Gw2WLponaSi0ilpzYBE0kuVJstoXBX8YWyUebR8VaXuX4tzzn0Zp23c/WaETo7XYTGv2e8KdnpiskAFMhQ== +jest-haste-map@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.3.1.tgz#7656fbd64bf48bda904e759fc9d93e2c807353ee" + integrity sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg== dependencies: "@jest/types" "^27.2.5" "@types/graceful-fs" "^4.1.2" @@ -6406,35 +6438,35 @@ jest-haste-map@^27.2.5: graceful-fs "^4.2.4" jest-regex-util "^27.0.6" jest-serializer "^27.0.6" - jest-util "^27.2.5" - jest-worker "^27.2.5" + jest-util "^27.3.1" + jest-worker "^27.3.1" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.2.5.tgz#baaf96c69913c52bce0100000cf0721027c0fd66" - integrity sha512-hdxY9Cm/CjLqu2tXeAoQHPgA4vcqlweVXYOg1+S9FeFdznB9Rti+eEBKDDkmOy9iqr4Xfbq95OkC4NFbXXPCAQ== +jest-jasmine2@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz#df6d3d07c7dafc344feb43a0072a6f09458d32b0" + integrity sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.2.5" + "@jest/environment" "^27.3.1" "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.5" + "@jest/test-result" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.2.5" + expect "^27.3.1" is-generator-fn "^2.0.0" - jest-each "^27.2.5" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" - jest-runtime "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - pretty-format "^27.2.5" + jest-each "^27.3.1" + jest-matcher-utils "^27.3.1" + jest-message-util "^27.3.1" + jest-runtime "^27.3.1" + jest-snapshot "^27.3.1" + jest-util "^27.3.1" + pretty-format "^27.3.1" throat "^6.0.1" jest-junit@^13.0.0: @@ -6447,28 +6479,28 @@ jest-junit@^13.0.0: uuid "^8.3.2" xml "^1.0.1" -jest-leak-detector@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.2.5.tgz#e2edc3b37d38e8d9a527e10e456b403c3151b206" - integrity sha512-HYsi3GUR72bYhOGB5C5saF9sPdxGzSjX7soSQS+BqDRysc7sPeBwPbhbuT8DnOpijnKjgwWQ8JqvbmReYnt3aQ== +jest-leak-detector@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz#7fb632c2992ef707a1e73286e1e704f9cc1772b2" + integrity sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg== dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.2.5" + jest-get-type "^27.3.1" + pretty-format "^27.3.1" -jest-matcher-utils@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz#4684faaa8eb32bf15e6edaead6834031897e2980" - integrity sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg== +jest-matcher-utils@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz#257ad61e54a6d4044e080d85dbdc4a08811e9c1c" + integrity sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w== dependencies: chalk "^4.0.0" - jest-diff "^27.2.5" - jest-get-type "^27.0.6" - pretty-format "^27.2.5" + jest-diff "^27.3.1" + jest-get-type "^27.3.1" + pretty-format "^27.3.1" -jest-message-util@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.5.tgz#ed8b7b0965247bb875a49c1f9b9ab2d1d0820028" - integrity sha512-ggXSLoPfIYcbmZ8glgEJZ8b+e0Msw/iddRmgkoO7lDAr9SmI65IIfv7VnvTnV4FGnIIUIjzM+fHRHO5RBvyAbQ== +jest-message-util@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.3.1.tgz#f7c25688ad3410ab10bcb862bcfe3152345c6436" + integrity sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^27.2.5" @@ -6476,14 +6508,14 @@ jest-message-util@^27.2.5: chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.4" - pretty-format "^27.2.5" + pretty-format "^27.3.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.2.5.tgz#0ec38d5ff1e49c4802e7a4a8179e8d7a2fd84de0" - integrity sha512-HiMB3LqE9RzmeMzZARi2Bz3NoymxyP0gCid4y42ca1djffNtYFKgI220aC1VP1mUZ8rbpqZbHZOJ15093bZV/Q== +jest-mock@^27.3.0: + version "27.3.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.3.0.tgz#ddf0ec3cc3e68c8ccd489bef4d1f525571a1b867" + integrity sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw== dependencies: "@jest/types" "^27.2.5" "@types/node" "*" @@ -6498,40 +6530,40 @@ jest-regex-util@^27.0.0, jest-regex-util@^27.0.6: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== -jest-resolve-dependencies@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.5.tgz#fcd8eca005b3d11ba32da443045c028164b83be1" - integrity sha512-BSjefped31bcvvCh++/pN9ueqqN1n0+p8/58yScuWfklLm2tbPbS9d251vJhAy0ZI2pL/0IaGhOTJrs9Y4FJlg== +jest-resolve-dependencies@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz#85b99bdbdfa46e2c81c6228fc4c91076f624f6e2" + integrity sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A== dependencies: "@jest/types" "^27.2.5" jest-regex-util "^27.0.6" - jest-snapshot "^27.2.5" + jest-snapshot "^27.3.1" -jest-resolve@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.2.5.tgz#04dadbfc1312a2541f5c199c5011945e9cfe5cef" - integrity sha512-q5irwS3oS73SKy3+FM/HL2T7WJftrk9BRzrXF92f7net5HMlS7lJMg/ZwxLB4YohKqjSsdksEw7n/jvMxV7EKg== +jest-resolve@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.3.1.tgz#0e5542172a1aa0270be6f66a65888647bdd74a3e" + integrity sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw== dependencies: "@jest/types" "^27.2.5" chalk "^4.0.0" - escalade "^3.1.1" graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" + jest-haste-map "^27.3.1" jest-pnp-resolver "^1.2.2" - jest-util "^27.2.5" - jest-validate "^27.2.5" + jest-util "^27.3.1" + jest-validate "^27.3.1" resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.2.5.tgz#3d9d0626f351480bb2cffcfbbfac240c0097ebd4" - integrity sha512-n41vw9RLg5TKAnEeJK9d6pGOsBOpwE89XBniK+AD1k26oIIy3V7ogM1scbDjSheji8MUPC9pNgCrZ/FHLVDNgg== +jest-runner@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.3.1.tgz#1d594dcbf3bd8600a7e839e790384559eaf96e3e" + integrity sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww== dependencies: - "@jest/console" "^27.2.5" - "@jest/environment" "^27.2.5" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" + "@jest/console" "^27.3.1" + "@jest/environment" "^27.3.1" + "@jest/test-result" "^27.3.1" + "@jest/transform" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" chalk "^4.0.0" @@ -6539,30 +6571,29 @@ jest-runner@^27.2.5: exit "^0.1.2" graceful-fs "^4.2.4" jest-docblock "^27.0.6" - jest-environment-jsdom "^27.2.5" - jest-environment-node "^27.2.5" - jest-haste-map "^27.2.5" - jest-leak-detector "^27.2.5" - jest-message-util "^27.2.5" - jest-resolve "^27.2.5" - jest-runtime "^27.2.5" - jest-util "^27.2.5" - jest-worker "^27.2.5" + jest-environment-jsdom "^27.3.1" + jest-environment-node "^27.3.1" + jest-haste-map "^27.3.1" + jest-leak-detector "^27.3.1" + jest-message-util "^27.3.1" + jest-resolve "^27.3.1" + jest-runtime "^27.3.1" + jest-util "^27.3.1" + jest-worker "^27.3.1" source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.2.5.tgz#d144c3f6889b927aae1e695b63a41a3323b7016b" - integrity sha512-N0WRZ3QszKyZ3Dm27HTBbBuestsSd3Ud5ooVho47XZJ8aSKO/X1Ag8M1dNx9XzfGVRNdB/xCA3lz8MJwIzPLLA== +jest-runtime@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.3.1.tgz#80fa32eb85fe5af575865ddf379874777ee993d7" + integrity sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg== dependencies: - "@jest/console" "^27.2.5" - "@jest/environment" "^27.2.5" - "@jest/fake-timers" "^27.2.5" - "@jest/globals" "^27.2.5" + "@jest/console" "^27.3.1" + "@jest/environment" "^27.3.1" + "@jest/globals" "^27.3.1" "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.2.5" - "@jest/transform" "^27.2.5" + "@jest/test-result" "^27.3.1" + "@jest/transform" "^27.3.1" "@jest/types" "^27.2.5" "@types/yargs" "^16.0.0" chalk "^4.0.0" @@ -6572,14 +6603,14 @@ jest-runtime@^27.2.5: exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-haste-map "^27.2.5" - jest-message-util "^27.2.5" - jest-mock "^27.2.5" + jest-haste-map "^27.3.1" + jest-message-util "^27.3.1" + jest-mock "^27.3.0" jest-regex-util "^27.0.6" - jest-resolve "^27.2.5" - jest-snapshot "^27.2.5" - jest-util "^27.2.5" - jest-validate "^27.2.5" + jest-resolve "^27.3.1" + jest-snapshot "^27.3.1" + jest-util "^27.3.1" + jest-validate "^27.3.1" slash "^3.0.0" strip-bom "^4.0.0" yargs "^16.2.0" @@ -6599,10 +6630,10 @@ jest-serializer@^27.0.6: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.2.5.tgz#8a612fe31e2967f58ad364542198dff61f92ef32" - integrity sha512-2/Jkn+VN6Abwz0llBltZaiJMnL8b1j5Bp/gRIxe9YR3FCEh9qp0TXVV0dcpTGZ8AcJV1SZGQkczewkI9LP5yGw== +jest-snapshot@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.3.1.tgz#1da5c0712a252d70917d46c037054f5918c49ee4" + integrity sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" @@ -6610,23 +6641,23 @@ jest-snapshot@^27.2.5: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.2.5" + "@jest/transform" "^27.3.1" "@jest/types" "^27.2.5" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.2.5" + expect "^27.3.1" graceful-fs "^4.2.4" - jest-diff "^27.2.5" - jest-get-type "^27.0.6" - jest-haste-map "^27.2.5" - jest-matcher-utils "^27.2.5" - jest-message-util "^27.2.5" - jest-resolve "^27.2.5" - jest-util "^27.2.5" + jest-diff "^27.3.1" + jest-get-type "^27.3.1" + jest-haste-map "^27.3.1" + jest-matcher-utils "^27.3.1" + jest-message-util "^27.3.1" + jest-resolve "^27.3.1" + jest-util "^27.3.1" natural-compare "^1.4.0" - pretty-format "^27.2.5" + pretty-format "^27.3.1" semver "^7.3.2" jest-transform-stub@^2.0.0: @@ -6634,29 +6665,29 @@ jest-transform-stub@^2.0.0: resolved "https://registry.yarnpkg.com/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz#19018b0851f7568972147a5d60074b55f0225a7d" integrity sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg== -jest-util@^27.0.0, jest-util@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.2.5.tgz#88740c4024d223634a82ce7c2263e8bc6df3b3ba" - integrity sha512-QRhDC6XxISntMzFRd/OQ6TGsjbzA5ONO0tlAj2ElHs155x1aEr0rkYJBEysG6H/gZVH3oGFzCdAB/GA8leh8NQ== +jest-util@^27.0.0, jest-util@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.3.1.tgz#a58cdc7b6c8a560caac9ed6bdfc4e4ff23f80429" + integrity sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw== dependencies: "@jest/types" "^27.2.5" "@types/node" "*" chalk "^4.0.0" + ci-info "^3.2.0" graceful-fs "^4.2.4" - is-ci "^3.0.0" picomatch "^2.2.3" -jest-validate@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.5.tgz#2d59bf1627d180f395ba58f24599b0ee0efcfbdf" - integrity sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw== +jest-validate@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.3.1.tgz#3a395d61a19cd13ae9054af8cdaf299116ef8a24" + integrity sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q== dependencies: "@jest/types" "^27.2.5" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.0.6" + jest-get-type "^27.3.1" leven "^3.1.0" - pretty-format "^27.2.5" + pretty-format "^27.3.1" jest-watch-typeahead@^0.6.1: version "0.6.5" @@ -6671,17 +6702,17 @@ jest-watch-typeahead@^0.6.1: string-length "^4.0.1" strip-ansi "^6.0.0" -jest-watcher@^27.0.0, jest-watcher@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.2.5.tgz#41cd3e64dc5bea8a4327083d71ba7667be400567" - integrity sha512-umV4qGozg2Dn6DTTtqAh9puPw+DGLK9AQas7+mWjiK8t0fWMpxKg8ZXReZw7L4C88DqorsGUiDgwHNZ+jkVrkQ== +jest-watcher@^27.0.0, jest-watcher@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.3.1.tgz#ba5e0bc6aa843612b54ddb7f009d1cbff7e05f3e" + integrity sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA== dependencies: - "@jest/test-result" "^27.2.5" + "@jest/test-result" "^27.3.1" "@jest/types" "^27.2.5" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.2.5" + jest-util "^27.3.1" string-length "^4.0.1" jest-worker@^26.2.1, jest-worker@^26.6.2: @@ -6693,23 +6724,23 @@ jest-worker@^26.2.1, jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.0.2, jest-worker@^27.0.6, jest-worker@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.5.tgz#ed42865661959488aa020e8a325df010597c36d4" - integrity sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw== +jest-worker@^27.0.2, jest-worker@^27.0.6, jest-worker@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" + integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" jest@^27.1.0: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.2.5.tgz#7d8a5c8781a160f693beeb7c68e46c16ef948148" - integrity sha512-vDMzXcpQN4Ycaqu+vO7LX8pZwNNoKMhc+gSp6q1D8S6ftRk8gNW8cni3YFxknP95jxzQo23Lul0BI2FrWgnwYQ== + version "27.3.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.3.1.tgz#b5bab64e8f56b6f7e275ba1836898b0d9f1e5c8a" + integrity sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng== dependencies: - "@jest/core" "^27.2.5" + "@jest/core" "^27.3.1" import-local "^3.0.2" - jest-cli "^27.2.5" + jest-cli "^27.3.1" joi@^17.4.0: version "17.4.2" @@ -6812,7 +6843,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -6913,9 +6944,9 @@ kleur@^3.0.3: integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== klona@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== launch-editor-middleware@^2.2.1: version "2.2.1" @@ -6938,9 +6969,9 @@ lazy-ass@^1.6.0: integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= leaflet.locatecontrol@^0.74.0: - version "0.74.0" - resolved "https://registry.yarnpkg.com/leaflet.locatecontrol/-/leaflet.locatecontrol-0.74.0.tgz#a62153a0de5e05ef7efd73df7247a23060330fd7" - integrity sha512-Rs4u2ZH9SeEB4IBLhBT3yPWaN81CtFq4XWT6gTCZeqVOImMJKpwqkVn9FKxge9Z5JFBRJHFFquYEdwR3mxgHxg== + version "0.74.1" + resolved "https://registry.yarnpkg.com/leaflet.locatecontrol/-/leaflet.locatecontrol-0.74.1.tgz#f34cdf9afa982e15bcabda6469fee5096f36ffd4" + integrity sha512-TsgoiAU62Yj7W3dtpOGWXhFDUe2RpPuHmW0tS5QR/5RFgvmrUflcnsUGgozBScnRF/1cUJ00WjtlGPPxBMTXkQ== leaflet@^1.4.0: version "1.7.1" @@ -6978,34 +7009,25 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -linkifyjs@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-3.0.2.tgz#f1d300300ef21dab0eaabdd8a661186723f924ba" - integrity sha512-PSHDxSAWkZQ208W4PI/+yo9NHSI6NAHKmazMtyRavyibJgrPOioPIjQn7zyapASQlKoPmAV+tOlqzTqX3XFWXQ== +linkifyjs@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-3.0.3.tgz#51ea2160b4c60c2c87c27757a1e9eacd422c6076" + integrity sha512-ba5opS5wRHSbDC8VaiDdN14nPGm6LqyRsIPQZGG4qXV4scFdrPneT/uoZOaq9QAPBf6W9I9D/6tNSzWH//815Q== listr2@^3.8.3: - version "3.12.2" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.2.tgz#2d55cc627111603ad4768a9e87c9c7bb9b49997e" - integrity sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A== + version "3.13.3" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.13.3.tgz#d8f6095c9371b382c9b1c2bc33c5941d8e177f11" + integrity sha512-VqAgN+XVfyaEjSaFewGPcDs5/3hBbWVaX1VgWv2f52MF7US45JuARlArULctiB44IIcEk3JF7GtoFCLqEdeuPA== dependencies: cli-truncate "^2.1.0" - colorette "^1.4.0" + clone "^2.1.2" + colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" - rxjs "^6.6.7" + rxjs "^7.4.0" through "^2.3.8" wrap-ansi "^7.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^4.1.0, loader-runner@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" @@ -7021,9 +7043,9 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4 json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.1.tgz#3b8d4386f42378d6434d32d7bc08e7a52d39575e" + integrity sha512-g4miPa9uUrZz4iElkaVJgDFwKJGh8aQGM7pUL4ejXl6cu7kSb30seQOVGNMP6sW8j7DW77X68hJZ+GM7UGhXeQ== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -7069,7 +7091,7 @@ lodash.mapvalues@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= -lodash.memoize@^4.1.2: +lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= @@ -7099,7 +7121,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.x, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7192,12 +7214,12 @@ make-error@1.x: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - tmpl "1.0.x" + tmpl "1.0.5" mdn-data@2.0.14: version "2.0.14" @@ -7277,9 +7299,9 @@ mime@1.6.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.3.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^1.0.0: version "1.2.0" @@ -7393,15 +7415,10 @@ mz@^2.4.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanocolors@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" - integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== - -nanoid@^3.1.28: - version "3.1.29" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4" - integrity sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg== +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== natural-compare@^1.4.0: version "1.4.0" @@ -7437,9 +7454,9 @@ no-case@^3.0.4: tslib "^2.0.3" node-fetch@^2.6.1: - version "2.6.5" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== + version "2.6.6" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" + integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== dependencies: whatwg-url "^5.0.0" @@ -7467,10 +7484,10 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-releases@^1.1.77: - version "1.1.77" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" - integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== nopt@^5.0.0: version "5.0.0" @@ -7479,7 +7496,7 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: +normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7568,7 +7585,7 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.values@^1.1.4: +object.values@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== @@ -7616,9 +7633,9 @@ onetime@^5.1.0, onetime@^5.1.2: mimic-fn "^2.1.0" open@^8.0.2, open@^8.0.9: - version "8.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.3.0.tgz#fdef1cdfe405e60dec8ebd18889e7e812f39c59f" - integrity sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w== + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -7775,7 +7792,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -param-case@^3.0.3: +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== @@ -7790,14 +7807,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -7873,13 +7882,6 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.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" @@ -7905,6 +7907,11 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== +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.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -7915,11 +7922,6 @@ pify@^2.2.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" @@ -7941,13 +7943,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - popper.js@^1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -7970,20 +7965,20 @@ postcss-calc@^8.0.0: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" -postcss-colormin@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.0.tgz#2b620b88c0ff19683f3349f4cf9e24ebdafb2c88" - integrity sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw== +postcss-colormin@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.1.tgz#6e444a806fd3c578827dbad022762df19334414d" + integrity sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - colord "^2.0.1" + colord "^2.9.1" postcss-value-parser "^4.1.0" -postcss-convert-values@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz#4ec19d6016534e30e3102fdf414e753398645232" - integrity sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg== +postcss-convert-values@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059" + integrity sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg== dependencies: postcss-value-parser "^4.1.0" @@ -8008,9 +8003,9 @@ postcss-discard-overridden@^5.0.1: integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== postcss-loader@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.1.1.tgz#58dd0a3accd9bc87cc52eff75244db578d11301a" - integrity sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug== + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.0.tgz#714370a3f567141cf4cadcdf9575f5234d186bc5" + integrity sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA== dependencies: cosmiconfig "^7.0.0" klona "^2.0.4" @@ -8043,12 +8038,12 @@ postcss-minify-font-values@^5.0.1: dependencies: postcss-value-parser "^4.1.0" -postcss-minify-gradients@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz#7c175c108f06a5629925d698b3c4cf7bd3864ee5" - integrity sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ== +postcss-minify-gradients@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e" + integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q== dependencies: - colord "^2.6" + colord "^2.9.1" cssnano-utils "^2.0.1" postcss-value-parser "^4.1.0" @@ -8198,13 +8193,13 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.2.tgz#bc73c4ea4c5a80fbd4b45e29042c34ceffb9257f" - integrity sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A== +postcss-svgo@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30" + integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA== dependencies: postcss-value-parser "^4.1.0" - svgo "^2.3.0" + svgo "^2.7.0" postcss-unique-selectors@^5.0.1: version "5.0.1" @@ -8229,12 +8224,12 @@ postcss@^7.0.36: source-map "^0.6.1" postcss@^8.2.15, postcss@^8.2.6, postcss@^8.3.5: - version "8.3.9" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31" - integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw== + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== dependencies: - nanoid "^3.1.28" - picocolors "^0.2.1" + nanoid "^3.1.30" + picocolors "^1.0.0" source-map-js "^0.6.2" prelude-ls@^1.2.1: @@ -8272,12 +8267,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.18.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -prettier@^2.0.0, prettier@^2.2.1: +"prettier@^1.18.2 || ^2.0.0", prettier@^2.0.0, prettier@^2.2.1: version "2.4.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== @@ -8287,13 +8277,13 @@ pretty-bytes@^5.3.0, pretty-bytes@^5.4.1, pretty-bytes@^5.6.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-error@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-3.0.4.tgz#94b1d54f76c1ed95b9c604b9de2194838e5b574e" - integrity sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ== +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: lodash "^4.17.20" - renderkid "^2.0.6" + renderkid "^3.0.0" pretty-format@^23.0.1: version "23.6.0" @@ -8303,10 +8293,10 @@ pretty-format@^23.0.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^27.0.0, pretty-format@^27.2.5: - version "27.2.5" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.2.5.tgz#7cfe2a8e8f01a5b5b29296a0b70f4140df0830c5" - integrity sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g== +pretty-format@^27.0.0, pretty-format@^27.3.1: + version "27.3.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" + integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA== dependencies: "@jest/types" "^27.2.5" ansi-regex "^5.0.1" @@ -8359,9 +8349,9 @@ prop-types@^15.7.2: react-is "^16.8.1" prosemirror-commands@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.11.tgz#369252fcca5397ee7b011b963cc4da45b0b7cb70" - integrity sha512-uXDVkOGJbFHocdacMJihrnQCT7tHswO48ewq6ByqLxTwOrI8Y4B4aHvwUbM4epwElv/YjgC+DuqXm/gEHPym4w== + version "1.1.12" + resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.12.tgz#5cb0fef4e5a0039e2fa19b42a5626af03d7c2ec3" + integrity sha512-+CrMs3w/ZVPSkR+REg8KL/clyFLv/1+SgY/OMN+CB22Z24j9TZDje72vL36lOZ/E4NeRXuiCcmENcW/vAcG67A== dependencies: prosemirror-model "^1.0.0" prosemirror-state "^1.0.0" @@ -8396,17 +8386,17 @@ prosemirror-history@^1.2.0: rope-sequence "^1.3.0" prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz#8b481bf8389a5ac40d38dbd67ec3da2c7eac6a6d" - integrity sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg== + version "1.1.5" + resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.5.tgz#b5984c7d30f5c75956c853126c54e9e624c0327b" + integrity sha512-8SZgPH3K+GLsHL2wKuwBD9rxhsbnVBTwpHCO4VUO5GmqUQlxd/2GtBVWTsyLq4Dp3N9nGgPd3+lZFKUDuVp+Vw== dependencies: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-model@^1.0.0, prosemirror-model@^1.14.3: - version "1.14.3" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.14.3.tgz#a9c250d3c4023ddf10ecb41a0a7a130e9741d37e" - integrity sha512-yzZlBaSxfUPIIP6U5Edh5zKxJPZ5f7bwZRhiCuH3UYkWhj+P3d8swHsbuAMOu/iDatDc5J/Qs5Mb3++mZf+CvQ== +prosemirror-model@^1.0.0, prosemirror-model@^1.14.3, prosemirror-model@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.15.0.tgz#23bc09098daa7c309dba90a76a1b989ce6f61405" + integrity sha512-hQJv7SnIhlAy9ga3lhPPgaufhvCbQB9tHwscJ9E1H1pPHmN8w5V/lURueoYv9Kc3/bpNWoyHa8r3g//m7N0ChQ== dependencies: orderedmap "^1.1.0" @@ -8433,10 +8423,10 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor dependencies: prosemirror-model "^1.0.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.20.2.tgz#fc073def4358fdbd617ea11f5cd4217c5123635d" - integrity sha512-zh67dsGCI7QKWDbtLEAdZLmadxBJYRArM8E0z2wfuNGpx4i6ObVGzHjbnblZs2n88IwqHdEA47rEhyUqZ+kAbg== +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.20.3: + version "1.21.0" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.21.0.tgz#d793cd338eda224026b8fe18a4f3163204963b8b" + integrity sha512-Pjh0vXw/l2Ifc3QcBVKJ/qHej33MX4sdq4/uAVqkSmHLf//bVWTYSZibihMya3lsIxTbDzNl/Z03KrhXWMHaoA== dependencies: prosemirror-model "^1.14.3" prosemirror-state "^1.0.0" @@ -8550,14 +8540,6 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -8567,15 +8549,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - read-pkg@^5.1.1, read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -8708,16 +8681,16 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -renderkid@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: css-select "^4.1.3" dom-converter "^0.2.0" htmlparser2 "^6.1.0" lodash "^4.17.21" - strip-ansi "^3.0.1" + strip-ansi "^6.0.1" request-progress@^3.0.0: version "3.0.0" @@ -8768,6 +8741,11 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.9.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" @@ -8820,9 +8798,9 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1: - version "2.58.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" - integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw== + version "2.59.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.59.0.tgz#108c61b0fa0a37ebc8d1f164f281622056f0db59" + integrity sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw== optionalDependencies: fsevents "~2.3.2" @@ -8843,14 +8821,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.6.7: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.2.0: +rxjs@^7.2.0, rxjs@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== @@ -8880,17 +8851,17 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass-loader@^12.0.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201" - integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg== + version "12.3.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.3.0.tgz#93278981c189c36a58cbfc37d4b9cef0cdc02871" + integrity sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA== dependencies: klona "^2.0.4" neo-async "^2.6.2" sass@^1.34.1: - version "1.42.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2" - integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg== + version "1.43.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f" + integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -9060,9 +9031,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== side-channel@^1.0.4: version "1.0.4" @@ -9084,9 +9055,9 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== sirv@^1.0.7: - version "1.0.17" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.17.tgz#86e2c63c612da5a1dace1c16c46f524aaa26ac45" - integrity sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw== + version "1.0.18" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.18.tgz#105fab52fb656ce8a2bebbf36b11052005952899" + integrity sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA== dependencies: "@polka/url" "^1.0.0-next.20" mime "^2.3.1" @@ -9155,7 +9126,7 @@ source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: +source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== @@ -9362,7 +9333,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^3.0.0, strip-ansi@^3.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 sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -9427,6 +9398,11 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= +strip-json-comments@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + strip-json-comments@^3.1.0, 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" @@ -9479,17 +9455,17 @@ svg-tags@^1.0.0: resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= -svgo@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.7.0.tgz#e164cded22f4408fe4978f082be80159caea1e2d" - integrity sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w== +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" css-select "^4.1.3" css-tree "^1.1.3" csso "^4.2.0" - nanocolors "^0.1.12" + picocolors "^1.0.0" stable "^0.1.8" symbol-observable@^4.0.0: @@ -9559,15 +9535,6 @@ terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.1.3: source-map "^0.6.1" terser "^5.7.2" -terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - terser@^5.0.0, terser@^5.7.2: version "5.9.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" @@ -9647,9 +9614,9 @@ timsort@^0.3.0: integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tippy.js@^6.2.3, tippy.js@^6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.2.tgz#c03a0b88f170dffeba42f569771801dddc1f6340" - integrity sha512-35XVQI7Zl/jHZ51+8eHu/vVRXBjWYGobPm5G9FxOchj4r5dWhghKGS0nm0ARUKZTF96V7pPn7EbXS191NTwldw== + version "6.3.3" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.3.tgz#04810e79fc217acacc4bd4acb5acf428d7c33974" + integrity sha512-Y3bLm4p33a8TJ49idtxfe6YYxcrmGKkOosry5clshy+wue622nhOxpf+KDfOQmif8etqsoIYFfVyVyXKQDqWVw== dependencies: "@popperjs/core" "^2.9.0" @@ -9667,7 +9634,7 @@ tmp@~0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.x: +tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -9745,15 +9712,15 @@ ts-invariant@^0.9.0: tslib "^2.1.0" ts-jest@27: - version "27.0.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.5.tgz#0b0604e2271167ec43c12a69770f0bb65ad1b750" - integrity sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w== + version "27.0.7" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.7.tgz#fb7c8c8cb5526ab371bc1b23d06e745652cca2d0" + integrity sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" jest-util "^27.0.0" json5 "2.x" - lodash "4.x" + lodash.memoize "4.x" make-error "1.x" semver "7.x" yargs-parser "20.x" @@ -9779,6 +9746,16 @@ tsconfig-paths@^3.11.0: minimist "^1.2.0" strip-bom "^3.0.0" +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -9878,9 +9855,9 @@ typescript@^3.9.3: integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== typescript@~4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== + version "4.4.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" + integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== unbox-primitive@^1.0.1: version "1.0.1" @@ -9969,15 +9946,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -10021,7 +9989,7 @@ v-tooltip@^2.1.3: popper.js "^1.16.1" vue-resize "^1.0.1" -v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: +v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== @@ -10109,14 +10077,14 @@ vue-i18n-extract@^2.0.4: js-yaml "^4.1.0" vue-i18n@^8.14.0: - version "8.26.1" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.26.1.tgz#56419bcb2414a01e0e9046fe1883d0edd421bf41" - integrity sha512-N6GpogueNQqmAye6lkUySlrXAZqBs9DYz8+8LHxm4IV7hEP/KWQL9VUCV8oJ0DS1asUTlvI2qKm2MydRgoPJFQ== + version "8.26.7" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.26.7.tgz#adfd48373449fe31438c48e3b3bd43044dc3a681" + integrity sha512-7apa5PvRg1YCLoraE3lOgpCG8hJGupLCtywQWedWsgBbvF0TOgFvhitqK9xRH0PBGG1G8aiJz9oklyNDFfDxLg== vue-loader@^16.4.0: - version "16.8.1" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.8.1.tgz#354f12bc0897954158b71590f800295713a7792d" - integrity sha512-V53TJbHmzjBhCG5OYI2JWy/aYDspz4oVHKxS43Iy212GjGIG1T3EsB3+GWXFm/1z5VwjdjLmdZUFYM70y77vtQ== + version "16.8.2" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.8.2.tgz#78552d6558207a93f09e4fb68b068d44964eb740" + integrity sha512-Nkq+z9mAsMEK+qkXgK+9Ia7D8w9uu9j4ut0IMT5coMfux3rCgIp1QBB1CYwY0M34A1nRMSONEaWXxAAw6xSl/Q== dependencies: chalk "^4.1.0" hash-sum "^2.0.0" @@ -10142,9 +10110,9 @@ vue-resize@^1.0.1: "@babel/runtime" "^7.13.10" vue-router@^3.1.6: - version "3.5.2" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.2.tgz#5f55e3f251970e36c3e8d88a7cd2d67a350ade5c" - integrity sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ== + version "3.5.3" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.3.tgz#041048053e336829d05dafacf6a8fb669a2e7999" + integrity sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg== vue-scrollto@^2.17.1: version "2.20.0" @@ -10211,11 +10179,11 @@ w3c-xmlserializer@^2.0.0: xml-name-validator "^3.0.0" walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - makeerror "1.0.x" + makeerror "1.0.12" watchpack@^2.2.0: version "2.2.0" @@ -10260,14 +10228,14 @@ webidl-conversions@^6.1.0: integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-bundle-analyzer@^4.4.0: - version "4.4.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz#39898cf6200178240910d629705f0f3493f7d666" - integrity sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" + integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== dependencies: acorn "^8.0.4" acorn-walk "^8.0.0" chalk "^4.1.0" - commander "^6.2.0" + commander "^7.2.0" gzip-size "^6.0.0" lodash "^4.17.20" opener "^1.5.2" @@ -10283,9 +10251,9 @@ webpack-chain@^6.5.1: javascript-stringify "^2.0.1" webpack-cli@^4.7.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.0.tgz#dc43e6e0f80dd52e89cbf73d5294bcd7ad6eb343" - integrity sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw== + version "4.9.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3" + integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ== dependencies: "@discoveryjs/json-ext" "^0.5.0" "@webpack-cli/configtest" "^1.1.0" @@ -10298,7 +10266,6 @@ webpack-cli@^4.7.0: import-local "^3.0.2" interpret "^2.2.0" rechoir "^0.7.0" - v8-compile-cache "^2.2.0" webpack-merge "^5.7.3" webpack-dev-middleware@^5.2.1: @@ -10313,13 +10280,13 @@ webpack-dev-middleware@^5.2.1: schema-utils "^3.1.0" webpack-dev-server@^4.1.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.3.1.tgz#759d3337f0fbea297fbd1e433ab04ccfc000076b" - integrity sha512-qNXQCVYo1kYhH9pgLtm8LRNkXX3XzTfHSj/zqzaqYzGPca+Qjr+81wj1jgPMCHhIhso9WEQ+kX9z23iG9PzQ7w== + version "4.4.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.4.0.tgz#10ec17088f840c9ccb2ebb0b43c49ec293206f7e" + integrity sha512-+S0XRIbsopVjPFjCO8I07FXYBWYqkFmuP56ucGMTs2hA/gV4q2M9xTmNo5Tg4o8ffRR+Nm3AsXnQXxKRyYovrA== dependencies: ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.1" + chokidar "^3.5.2" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" @@ -10370,9 +10337,9 @@ webpack-virtual-modules@^0.4.2: integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw== webpack@*, webpack@^5.22.0, webpack@^5.38.1: - version "5.58.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.58.1.tgz#df8aad72b617a9d0db8c89d4f410784ee93320d7" - integrity sha512-4Z/dmbTU+VmkCb2XNgW7wkE5TfEcSooclprn/UEuVeAkwHhn07OcgUsyaKHGtCY/VobjnsYBlyhKeMLiSoOqPg== + version "5.61.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.61.0.tgz#fa827f0ee9bdfd141dd73c3e891e955ebd52fe7f" + integrity sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" diff --git a/lib/federation/activity_pub/utils.ex b/lib/federation/activity_pub/utils.ex index a0672373e..4df44e64d 100644 --- a/lib/federation/activity_pub/utils.ex +++ b/lib/federation/activity_pub/utils.ex @@ -300,7 +300,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do end def origin_check?(id, %{"type" => type, "id" => actor_id} = _params) - when type in ["Actor", "Person", "Group"], + when type in ["Actor", "Person", "Group", "Application"], do: id == actor_id def origin_check?(_id, %{"actor" => nil} = _args), do: false diff --git a/lib/graphql/resolvers/event.ex b/lib/graphql/resolvers/event.ex index 1138b0bd8..4f25dcd4b 100644 --- a/lib/graphql/resolvers/event.ex +++ b/lib/graphql/resolvers/event.ex @@ -21,7 +21,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do # We limit the max number of events that can be retrieved @event_max_limit 100 - @number_of_related_events 3 + @number_of_related_events 4 @spec organizer_for_event(Event.t(), map(), Absinthe.Resolution.t()) :: {:ok, Actor.t() | nil} | {:error, String.t()} @@ -213,38 +213,19 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do """ @spec list_related_events(Event.t(), map(), Absinthe.Resolution.t()) :: {:ok, list(Event.t())} def list_related_events( - %Event{tags: tags, organizer_actor: organizer_actor, uuid: uuid}, + %Event{uuid: uuid} = event, _args, _resolution ) do # We get the organizer's next public event events = - [Events.get_upcoming_public_event_for_actor(organizer_actor, uuid)] - |> Enum.filter(&is_map/1) - - # We find similar events with the same tags - # uniq_by : It's possible event_from_same_actor is inside events_from_tags - events = - events - |> Enum.concat(Events.list_events_by_tags(tags, @number_of_related_events)) - |> uniq_events() - - # TODO: We should use tag_relations to find more appropriate events - - # We've considered all recommended events, so we fetch the latest events - events = - if @number_of_related_events - length(events) > 0 do - events - |> Enum.concat( - Events.list_events(1, @number_of_related_events, :begins_on, :asc, true).elements - ) - |> uniq_events() - else - events - end - - events = - events + event + |> organizer_next_public_event() + # We find similar events with the same tags + |> similar_events_common_tags(event) + # TODO: We should use tag_relations to find more appropriate events + # We've considered all recommended events, so we fetch the latest events + |> add_latest_events() # We remove the same event from the results |> Enum.filter(fn event -> event.uuid != uuid end) # We return only @number_of_related_events right now @@ -253,6 +234,39 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do {:ok, events} end + @spec organizer_next_public_event(Event.t()) :: list(Event.t()) + defp organizer_next_public_event(%Event{attributed_to: %Actor{} = group, uuid: uuid}) do + [Events.get_upcoming_public_event_for_actor(group, uuid)] + |> Enum.filter(&is_map/1) + end + + defp organizer_next_public_event(%Event{organizer_actor: %Actor{} = profile, uuid: uuid}) do + [Events.get_upcoming_public_event_for_actor(profile, uuid)] + |> Enum.filter(&is_map/1) + end + + @spec similar_events_common_tags(list(Event.t()), Event.t()) :: list(Event.t()) + defp similar_events_common_tags(events, %Event{tags: tags, uuid: uuid}) do + events + |> Enum.concat(Events.list_events_by_tags(tags, @number_of_related_events)) + |> Enum.filter(fn event -> event.uuid != uuid end) + # uniq_by : It's possible event_from_same_actor is inside events_from_tags + |> uniq_events() + end + + @spec add_latest_events(list(Event.t())) :: list(Event.t()) + defp add_latest_events(events) do + if @number_of_related_events - length(events) > 0 do + events + |> Enum.concat( + Events.list_events(1, @number_of_related_events + 1, :begins_on, :asc, true).elements + ) + |> uniq_events() + else + events + end + end + @spec uniq_events(list(Event.t())) :: list(Event.t()) defp uniq_events(events), do: Enum.uniq_by(events, fn event -> event.uuid end) diff --git a/lib/graphql/resolvers/group.ex b/lib/graphql/resolvers/group.ex index 5a4ea22e5..d0532067e 100644 --- a/lib/graphql/resolvers/group.ex +++ b/lib/graphql/resolvers/group.ex @@ -6,7 +6,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do import Mobilizon.Users.Guards alias Mobilizon.Config alias Mobilizon.{Actors, Events} - alias Mobilizon.Actors.{Actor, Member} + alias Mobilizon.Actors.{Actor, Follower, Member} alias Mobilizon.Federation.ActivityPub.Actions alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor alias Mobilizon.GraphQL.API @@ -320,6 +320,82 @@ defmodule Mobilizon.GraphQL.Resolvers.Group do {:error, dgettext("errors", "You need to be logged-in to leave a group")} end + @doc """ + Follow a group + """ + @spec follow_group(any(), map(), Absinthe.Resolution.t()) :: + {:ok, Follower.t()} | {:error, String.t()} + def follow_group(_parent, %{group_id: group_id, notify: _notify}, %{ + context: %{current_actor: %Actor{} = actor} + }) do + case Actors.get_actor(group_id) do + %Actor{type: :Group} = group -> + case Actions.Follow.follow(actor, group) do + {:ok, _activity, %Follower{} = follower} -> + {:ok, follower} + + {:error, :already_following} -> + {:error, dgettext("errors", "You are already following this group")} + end + + nil -> + {:error, dgettext("errors", "Group not found")} + end + end + + def follow_group(_parent, _args, _resolution) do + {:error, dgettext("errors", "You need to be logged-in to follow a group")} + end + + @doc """ + Update a group follow + """ + @spec update_group_follow(any(), map(), Absinthe.Resolution.t()) :: + {:ok, Member.t()} | {:error, String.t()} + def update_group_follow(_parent, %{follow_id: follow_id, notify: notify}, %{ + context: %{current_actor: %Actor{} = actor} + }) do + case Actors.get_follower(follow_id) do + %Follower{} = follower -> + if follower.actor_id == actor.id do + # Update notify + Actors.update_follower(follower, %{notify: notify}) + else + {:error, dgettext("errors", "Follow does not match your account")} + end + + nil -> + {:error, dgettext("errors", "Follow not found")} + end + end + + def update_group_follow(_parent, _args, _resolution) do + {:error, dgettext("errors", "You need to be logged-in to update a group follow")} + end + + @doc """ + Unfollow a group + """ + @spec unfollow_group(any(), map(), Absinthe.Resolution.t()) :: + {:ok, Follower.t()} | {:error, String.t()} + def unfollow_group(_parent, %{group_id: group_id}, %{ + context: %{current_actor: %Actor{} = actor} + }) do + case Actors.get_actor(group_id) do + %Actor{type: :Group} = group -> + with {:ok, _activity, %Follower{} = follower} <- Actions.Follow.unfollow(actor, group) do + {:ok, follower} + end + + nil -> + {:error, dgettext("errors", "Group not found")} + end + end + + def unfollow_group(_parent, _args, _resolution) do + {:error, dgettext("errors", "You need to be logged-in to unfollow a group")} + end + @spec find_events_for_group(Actor.t(), map(), Absinthe.Resolution.t()) :: {:ok, Page.t(Event.t())} def find_events_for_group( diff --git a/lib/graphql/resolvers/person.ex b/lib/graphql/resolvers/person.ex index 709927d40..613c0c9e8 100644 --- a/lib/graphql/resolvers/person.ex +++ b/lib/graphql/resolvers/person.ex @@ -6,7 +6,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do import Mobilizon.Users.Guards alias Mobilizon.{Actors, Events, Users} - alias Mobilizon.Actors.{Actor, Member} + alias Mobilizon.Actors.{Actor, Follower, Member} alias Mobilizon.Events.Participant alias Mobilizon.Storage.{Page, Repo} alias Mobilizon.Users.User @@ -355,7 +355,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do end @doc """ - Returns the list of events this person is going to + Returns this person's group memberships """ @spec person_memberships(Actor.t(), map(), map()) :: {:ok, Page.t()} | {:error, String.t()} def person_memberships(%Actor{id: actor_id} = person, %{group: group}, %{ @@ -398,6 +398,49 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do end end + @doc """ + Returns this person's group follows + """ + @spec person_follows(Actor.t(), map(), map()) :: {:ok, Page.t()} | {:error, String.t()} + def person_follows(%Actor{} = person, %{group: group}, %{ + context: %{current_user: %User{} = user} + }) do + if user_can_access_person_details?(person, user) do + with {:group, %Actor{} = group} <- {:group, Actors.get_actor_by_name(group, :Group)}, + %Follower{} = follow <- + Actors.get_follower_by_followed_and_following(group, person) do + {:ok, + %Page{ + total: 1, + elements: [follow] + }} + else + nil -> + {:ok, %Page{total: 0, elements: []}} + + {:group, nil} -> + {:error, :group_not_found} + end + else + {:error, dgettext("errors", "Profile is not owned by authenticated user")} + end + end + + def person_follows( + %Actor{} = person, + %{page: page, limit: limit}, + %{ + context: %{current_user: %User{} = user} + } + ) do + if user_can_access_person_details?(person, user) do + follows = Actors.list_paginated_follows_for_actor(person, page, limit) + {:ok, follows} + else + {:error, dgettext("errors", "Profile is not owned by authenticated user")} + end + end + @spec user_for_person(Actor.t(), map(), Absinthe.Resolution.t()) :: {:ok, User.t() | nil} | {:error, String.t() | nil} def user_for_person(%Actor{type: :Person, user_id: user_id}, _args, %{ diff --git a/lib/graphql/resolvers/user.ex b/lib/graphql/resolvers/user.ex index 6300028ca..430bc6b48 100644 --- a/lib/graphql/resolvers/user.ex +++ b/lib/graphql/resolvers/user.ex @@ -5,7 +5,7 @@ defmodule Mobilizon.GraphQL.Resolvers.User do import Mobilizon.Users.Guards - alias Mobilizon.{Actors, Admin, Config, Events, Users} + alias Mobilizon.{Actors, Admin, Config, Events, FollowedGroupActivity, Users} alias Mobilizon.Actors.Actor alias Mobilizon.Federation.ActivityPub.{Actions, Relay} alias Mobilizon.Service.Auth.Authenticator @@ -311,19 +311,20 @@ defmodule Mobilizon.GraphQL.Resolvers.User do def change_default_actor( _parent, %{preferred_username: username}, - %{context: %{current_user: %User{id: user_id} = user}} + %{context: %{current_user: %User{} = user}} ) do - with %Actor{id: actor_id} = actor <- Actors.get_local_actor_by_name(username), - {:user_actor, true} <- - {:user_actor, actor_id in Enum.map(Users.get_actors_for_user(user), & &1.id)}, - %User{} = user <- Users.update_user_default_actor(user_id, actor) do - {:ok, user} - else - {:user_actor, _} -> - {:error, :actor_not_from_user} + case Actors.get_local_actor_by_name(username) do + %Actor{id: actor_id} = actor -> + if actor_id in Enum.map(Users.get_actors_for_user(user), & &1.id) do + %User{} = user = Users.update_user_default_actor(user, actor) + {:ok, user} + else + {:error, dgettext("errors", "This profile does not belong to you")} + end - _error -> - {:error, :unable_to_change_default_actor} + nil -> + {:error, + dgettext("errors", "Profile with username %{username} not found", %{username: username})} end end @@ -632,6 +633,29 @@ defmodule Mobilizon.GraphQL.Resolvers.User do }} end + def user_followed_group_events(%User{id: user_id}, %{page: page, limit: limit} = args, %{ + context: %{current_user: %User{id: logged_in_user_id}} + }) + when user_id == logged_in_user_id do + activities = + FollowedGroupActivity.user_followed_group_events( + user_id, + Map.get(args, :after_datetime), + page, + limit + ) + + activities = %Page{ + activities + | elements: + Enum.map(activities.elements, fn [event, group, profile] -> + %{group: group, profile: profile, event: event} + end) + } + + {:ok, activities} + end + @spec update_user_login_information(User.t(), map()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} defp update_user_login_information( diff --git a/lib/graphql/schema.ex b/lib/graphql/schema.ex index 5ce92d9ed..f8b143d05 100644 --- a/lib/graphql/schema.ex +++ b/lib/graphql/schema.ex @@ -49,6 +49,7 @@ defmodule Mobilizon.GraphQL.Schema do import_types(Schema.StatisticsType) import_types(Schema.Users.PushSubscription) import_types(Schema.Users.ActivitySetting) + import_types(Schema.FollowedGroupActivityType) @desc "A struct containing the id of the deleted object" object :deleted_object do @@ -157,7 +158,6 @@ defmodule Mobilizon.GraphQL.Schema do import_fields(:resource_queries) import_fields(:post_queries) import_fields(:statistics_queries) - # import_fields(:push_queries) end @desc """ diff --git a/lib/graphql/schema/actors/follower.ex b/lib/graphql/schema/actors/follower.ex index 94da4335c..fcfff2840 100644 --- a/lib/graphql/schema/actors/follower.ex +++ b/lib/graphql/schema/actors/follower.ex @@ -17,6 +17,11 @@ defmodule Mobilizon.GraphQL.Schema.Actors.FollowerType do description: "Whether the follow has been approved by the target actor" ) + field(:notify, :boolean, + description: + "Whether the follower will be notified by the target actor's activity or not (applicable for profile/group follows)" + ) + field(:inserted_at, :datetime, description: "When the follow was created") field(:updated_at, :datetime, description: "When the follow was updated") end diff --git a/lib/graphql/schema/actors/group.ex b/lib/graphql/schema/actors/group.ex index 32e12a78d..492382fa8 100644 --- a/lib/graphql/schema/actors/group.ex +++ b/lib/graphql/schema/actors/group.ex @@ -205,6 +205,12 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do value(:private, description: "Visible only to people with the link - or invited") end + object :group_follow do + field(:group, :group, description: "The group followed") + field(:profile, :group, description: "The group followed") + field(:notify, :boolean, description: "Whether to notify profile from group activity") + end + object :group_queries do @desc "Get all groups" field :groups, :paginated_group_list do @@ -310,5 +316,36 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do resolve(&Group.delete_group/3) end + + @desc "Follow a group" + field :follow_group, :follower do + arg(:group_id, non_null(:id), description: "The group ID") + + arg(:notify, :boolean, + description: "Whether to notify profile from group activity", + default_value: true + ) + + resolve(&Group.follow_group/3) + end + + @desc "Update a group follow" + field :update_group_follow, :follower do + arg(:follow_id, non_null(:id), description: "The follow ID") + + arg(:notify, :boolean, + description: "Whether to notify profile from group activity", + default_value: true + ) + + resolve(&Group.update_group_follow/3) + end + + @desc "Unfollow a group" + field :unfollow_group, :follower do + arg(:group_id, non_null(:id), description: "The group ID") + + resolve(&Group.unfollow_group/3) + end end end diff --git a/lib/graphql/schema/actors/person.ex b/lib/graphql/schema/actors/person.ex index 42743316f..65fd6c54a 100644 --- a/lib/graphql/schema/actors/person.ex +++ b/lib/graphql/schema/actors/person.ex @@ -102,6 +102,21 @@ defmodule Mobilizon.GraphQL.Schema.Actors.PersonType do arg(:limit, :integer, default_value: 10, description: "The limit of memberships per page") resolve(&Person.person_memberships/3) end + + @desc "The list of groups this person follows" + field(:follows, :paginated_follower_list, + description: "The list of groups this person follows" + ) do + arg(:group, :string, description: "Filter by group federated username") + + arg(:page, :integer, + default_value: 1, + description: "The page in the follows list" + ) + + arg(:limit, :integer, default_value: 10, description: "The limit of follows per page") + resolve(&Person.person_follows/3) + end end @desc """ diff --git a/lib/graphql/schema/followed_group_activity.ex b/lib/graphql/schema/followed_group_activity.ex new file mode 100644 index 000000000..7d45136ee --- /dev/null +++ b/lib/graphql/schema/followed_group_activity.ex @@ -0,0 +1,20 @@ +defmodule Mobilizon.GraphQL.Schema.FollowedGroupActivityType do + @moduledoc """ + Schema representation for a follow activity + """ + use Absinthe.Schema.Notation + + @desc "A paginated list of follow group events" + object :paginated_followed_group_events do + field(:elements, list_of(:followed_group_event), description: "A list of follow group events") + field(:total, :integer, description: "The total number of follow group events in the list") + end + + @desc "A follow group event" + object :followed_group_event do + field(:user, :user) + field(:profile, :person) + field(:group, :group) + field(:event, :event) + end +end diff --git a/lib/graphql/schema/user.ex b/lib/graphql/schema/user.ex index b4ccd6f0c..cb567e289 100644 --- a/lib/graphql/schema/user.ex +++ b/lib/graphql/schema/user.ex @@ -104,6 +104,26 @@ defmodule Mobilizon.GraphQL.Schema.UserType do resolve(&User.user_drafted_events/3) end + field(:followed_group_events, :paginated_followed_group_events, + description: "The suggested events from the groups this user follows" + ) do + arg(:page, :integer, + default_value: 1, + description: "The page in the follow group events list" + ) + + arg(:limit, :integer, + default_value: 10, + description: "The limit of follow group events per page" + ) + + arg(:after_datetime, :datetime, + description: "Filter follow group events by event start datetime" + ) + + resolve(&User.user_followed_group_events/3) + end + field(:settings, :user_settings, description: "The list of settings for this user") do resolve(&User.user_settings/3) end diff --git a/lib/mobilizon.ex b/lib/mobilizon.ex index d4733f38b..95fdc27cf 100644 --- a/lib/mobilizon.ex +++ b/lib/mobilizon.ex @@ -19,7 +19,6 @@ defmodule Mobilizon do alias Mobilizon.Federation.ActivityPub alias Mobilizon.Service.{ErrorPage, ErrorReporting} alias Mobilizon.Service.Export.{Feed, ICalendar} - alias TzWorld.Backend.DetsWithIndexCache @name Mix.Project.config()[:name] @version Mix.Project.config()[:version] @@ -38,9 +37,8 @@ defmodule Mobilizon do @spec start(:normal | {:takeover, node} | {:failover, node}, term) :: {:ok, pid} | {:ok, pid, term} | {:error, term} def start(_type, _args) do - # We update and reload TzWorld at runtime so that the data is not contained in releases + # We update TzWorld at runtime so that the data is not contained in releases TzWorldUpdate.run(nil) - DetsWithIndexCache.handle_call(:reload_data, nil, nil) children = [ diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index 68fe1fdcb..da6b0e848 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -1030,6 +1030,14 @@ defmodule Mobilizon.Actors do |> Repo.delete() end + @spec list_paginated_follows_for_actor(Actor.t(), integer | nil, integer | nil) :: + Page.t(Follower.t()) + def list_paginated_follows_for_actor(%Actor{id: actor_id}, page \\ nil, limit \\ nil) do + actor_id + |> followings_for_actor_query + |> Page.build_page(page, limit) + end + @doc """ Returns the list of external followers for an actor. """ diff --git a/lib/mobilizon/actors/follower.ex b/lib/mobilizon/actors/follower.ex index 396fb4b63..c40ab6d18 100644 --- a/lib/mobilizon/actors/follower.ex +++ b/lib/mobilizon/actors/follower.ex @@ -17,12 +17,14 @@ defmodule Mobilizon.Actors.Follower do url: String.t(), target_actor: Actor.t(), actor: Actor.t(), + notify: boolean(), inserted_at: DateTime.t(), updated_at: DateTime.t() } @required_attrs [:url, :approved, :target_actor_id, :actor_id] - @attrs @required_attrs + @optional_attrs [:notify] + @attrs @required_attrs ++ @optional_attrs @timestamps_opts [type: :utc_datetime] @@ -30,6 +32,7 @@ defmodule Mobilizon.Actors.Follower do schema "followers" do field(:approved, :boolean, default: false) field(:url, :string) + field(:notify, :boolean, default: true) timestamps() diff --git a/lib/mobilizon/followed_group_activity.ex b/lib/mobilizon/followed_group_activity.ex new file mode 100644 index 000000000..7ef7e7774 --- /dev/null +++ b/lib/mobilizon/followed_group_activity.ex @@ -0,0 +1,56 @@ +defmodule Mobilizon.FollowedGroupActivity do + @moduledoc """ + Provide recent elements from groups that profiles follow + """ + + import Ecto.Query + alias Mobilizon.Actors.{Actor, Follower, Member} + alias Mobilizon.Events.{Event, Participant} + alias Mobilizon.Storage.Page + + @spec user_followed_group_events( + integer() | String.t(), + DateTime.t() | nil, + integer() | nil, + integer() | nil + ) :: Page.t(Event.t()) + def user_followed_group_events(user_id, after_datetime, page \\ nil, limit \\ nil) do + Event + |> distinct([e], e.id) + |> join(:left, [e], p in Participant, on: e.id == p.event_id) + |> join(:inner, [_e, p], pa in Actor, on: p.actor_id == pa.id) + |> join(:inner, [e], g in Actor, on: e.attributed_to_id == g.id) + |> join(:left, [_e, _p, _pa, g], f in Follower, on: g.id == f.target_actor_id) + |> join(:left, [_e, _p, _pa, g], m in Member, on: g.id == m.parent_id) + |> join(:inner, [_e, _p, pa, _g, f, m], a in Actor, + on: a.id == f.actor_id or a.id == m.actor_id + ) + |> add_after_datetime_filter(after_datetime) + |> where( + [_e, p, pa, _g, f, m, a], + (f.approved or m.role in ^[:member, :moderator, :administrator, :creator]) and + a.user_id == ^user_id and + pa.user_id != ^user_id + ) + |> preload([ + :organizer_actor, + :attributed_to, + :tags, + :physical_address, + :picture + ]) + |> select([e, g, _f, _m, a], [ + e, + g, + a + ]) + |> Page.build_page(page, limit) + end + + @spec add_after_datetime_filter(Ecto.Query.t(), DateTime.t() | nil) :: Ecto.Query.t() + defp add_after_datetime_filter(query, nil), + do: where(query, [e], e.begins_on > ^DateTime.utc_now()) + + defp add_after_datetime_filter(query, %DateTime{} = datetime), + do: where(query, [e], e.begins_on > ^datetime) +end diff --git a/lib/mobilizon/users/users.ex b/lib/mobilizon/users/users.ex index 380d6ac3e..8462fd414 100644 --- a/lib/mobilizon/users/users.ex +++ b/lib/mobilizon/users/users.ex @@ -72,6 +72,12 @@ defmodule Mobilizon.Users do |> Repo.preload([:settings]) end + def get_user_with_activity_settings!(id) do + User + |> Repo.get(id) + |> Repo.preload([:settings, :activity_settings]) + end + @doc """ Gets an user by its email. """ @@ -250,19 +256,17 @@ defmodule Mobilizon.Users do Updates user's default actor. Raises `Ecto.NoResultsError` if the user does not exist. """ - @spec update_user_default_actor(integer | String.t(), Actor.t() | nil) :: User.t() - def update_user_default_actor(user_id, actor) do + @spec update_user_default_actor(User.t(), Actor.t() | nil) :: User.t() + def update_user_default_actor(%User{id: user_id} = user, actor) do actor_id = if is_nil(actor), do: nil, else: actor.id user_id - |> update_user_default_actor_query(actor_id) - |> Repo.update_all([]) + |> update_user_default_actor_query() + |> Repo.update_all(set: [default_actor_id: actor_id]) Cachex.put(:default_actors, to_string(user_id), actor) - user_id - |> get_user!() - |> Repo.preload([:default_actor]) + %User{user | default_actor: actor} end @doc """ @@ -434,12 +438,6 @@ defmodule Mobilizon.Users do |> Repo.all() end - def activity_setting(%User{id: user_id}, key, method) do - ActivitySetting - |> where([a], a.user_id == ^user_id and a.key == ^key and a.method == ^method) - |> Repo.one() - end - @doc """ Creates an activity setting. Overrides existing values if present @@ -524,13 +522,9 @@ defmodule Mobilizon.Users do from(a in Actor, where: a.user_id == ^user_id) end - @spec update_user_default_actor_query(integer | String.t(), integer | String.t() | nil) :: + @spec update_user_default_actor_query(integer | String.t()) :: Ecto.Query.t() - defp update_user_default_actor_query(user_id, actor_id) do - from( - u in User, - where: u.id == ^user_id, - update: [set: [default_actor_id: ^actor_id]] - ) + defp update_user_default_actor_query(user_id) do + where(User, [u], u.id == ^user_id) end end diff --git a/lib/service/actor_suspension.ex b/lib/service/actor_suspension.ex index 17d3b7492..838070259 100644 --- a/lib/service/actor_suspension.ex +++ b/lib/service/actor_suspension.ex @@ -211,7 +211,7 @@ defmodule Mobilizon.Service.ActorSuspension do end @spec reset_default_actor_id(Actor.t()) :: {:ok, User.t() | nil} | {:error, :user_not_found} - defp reset_default_actor_id(%Actor{type: :Person, user: %User{id: user_id} = user, id: actor_id}) do + defp reset_default_actor_id(%Actor{type: :Person, user: %User{} = user, id: actor_id}) do Logger.debug("reset_default_actor_id") new_actor = @@ -219,7 +219,7 @@ defmodule Mobilizon.Service.ActorSuspension do |> Users.get_actors_for_user() |> Enum.find(&(&1.id !== actor_id)) - {:ok, Users.update_user_default_actor(user_id, new_actor)} + {:ok, Users.update_user_default_actor(user, new_actor)} rescue _e in Ecto.NoResultsError -> {:error, :user_not_found} diff --git a/lib/service/notifier/filter.ex b/lib/service/notifier/filter.ex index c6af546c2..f794b77f3 100644 --- a/lib/service/notifier/filter.ex +++ b/lib/service/notifier/filter.ex @@ -3,25 +3,31 @@ defmodule Mobilizon.Service.Notifier.Filter do Module to filter activities to notify according to user's activity settings """ alias Mobilizon.Activities.Activity - alias Mobilizon.Users alias Mobilizon.Users.{ActivitySetting, User} @type method :: String.t() @spec can_send_activity?(Activity.t(), method(), User.t(), function()) :: boolean() - def can_send_activity?(%Activity{} = activity, method, %User{} = user, get_default) do + def can_send_activity?( + %Activity{} = activity, + method, + %User{activity_settings: activity_settings}, + get_default + ) do case map_activity_to_activity_setting(activity) do false -> false key when is_binary(key) -> - user |> Users.activity_setting(key, method) |> enabled?(key, get_default) + activity_settings + |> Enum.find(&(&1.key == key && &1.method == method)) + |> enabled?(key, get_default) end end @spec enabled?(ActivitySetting.t() | nil, String.t(), function()) :: boolean() defp enabled?(nil, activity_setting, get_default), do: get_default.(activity_setting) - defp enabled?(%ActivitySetting{enabled: enabled}, _activity_setting, _get_default), do: enabled + defp enabled?(%{enabled: enabled}, _activity_setting, _get_default), do: enabled # Mention defp map_activity_to_activity_setting(%Activity{subject: :event_comment_mention}), diff --git a/lib/service/site_map.ex b/lib/service/site_map.ex index d25820f0c..ff905f135 100644 --- a/lib/service/site_map.ex +++ b/lib/service/site_map.ex @@ -14,8 +14,8 @@ defmodule Mobilizon.Service.SiteMap do def generate_sitemap do static_routes = [ {Routes.page_url(Endpoint, :index, []), :daily}, + "#{Endpoint.url()}/search", "#{Endpoint.url()}/about/instance", - "#{Endpoint.url()}/about/mobilizon", "#{Endpoint.url()}/terms", "#{Endpoint.url()}/privacy", "#{Endpoint.url()}/rules", diff --git a/lib/service/workers/activity_builder.ex b/lib/service/workers/activity_builder.ex index 0dcc2a238..c8caee878 100644 --- a/lib/service/workers/activity_builder.ex +++ b/lib/service/workers/activity_builder.ex @@ -52,7 +52,7 @@ defmodule Mobilizon.Service.Workers.ActivityBuilder do |> Enum.map(& &1.user_id) |> Enum.filter(& &1) |> Enum.uniq() - |> Enum.map(&Users.get_user_with_settings!/1) + |> Enum.map(&Users.get_user_with_activity_settings!/1) end defp users_to_notify(_), do: [] diff --git a/lib/service/workers/legacy_notifier_builder.ex b/lib/service/workers/legacy_notifier_builder.ex index 86b8bafc4..8fe29e3ef 100644 --- a/lib/service/workers/legacy_notifier_builder.ex +++ b/lib/service/workers/legacy_notifier_builder.ex @@ -92,7 +92,7 @@ defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do |> Enum.map(& &1.user_id) |> Enum.filter(& &1) |> Enum.uniq() - |> Enum.map(&Users.get_user_with_settings!/1) + |> Enum.map(&Users.get_user_with_activity_settings!/1) end defp notify_anonymous_participants(nil, _activity), do: :ok diff --git a/lib/web/router.ex b/lib/web/router.ex index dec18e3aa..e4f0234b5 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -92,7 +92,7 @@ defmodule Mobilizon.Web.Router do forward("/", Absinthe.Plug, schema: Mobilizon.GraphQL.Schema, analyze_complexity: true, - max_complexity: 200 + max_complexity: 250 ) end diff --git a/mix.exs b/mix.exs index fbc443c54..fbdf2cecf 100644 --- a/mix.exs +++ b/mix.exs @@ -138,7 +138,7 @@ defmodule Mobilizon.Mixfile do {:phoenix_ecto, "~> 4.0"}, {:postgrex, ">= 0.15.3"}, {:phoenix_html, "~> 3.0"}, - {:phoenix_live_view, "~> 0.16.4"}, + {:phoenix_live_view, "~> 0.17.1"}, {:gettext, "~> 0.11"}, {:cowboy, "~> 2.6"}, {:guardian, "~> 2.0"}, @@ -195,24 +195,24 @@ defmodule Mobilizon.Mixfile do {:sitemapper, "~> 0.6"}, {:xml_builder, "~> 2.2"}, {:remote_ip, "~> 1.0.0"}, - {:ex_cldr_languages, "~> 0.2.1"}, + {:ex_cldr_languages, "~> 0.3.0"}, {:slugger, "~> 0.3"}, {:sentry, "~> 8.0"}, {:html_entities, "~> 0.5"}, {:sweet_xml, "~> 0.7"}, {:web_push_encryption, "~> 0.3"}, - {:eblurhash, "1.2.0"}, + {:eblurhash, "~> 1.2.0"}, {:struct_access, "~> 1.1.2"}, {:paasaa, "~> 0.5.0"}, {:nimble_csv, "~> 1.1"}, {:export, "~> 0.1.0"}, - {:tz_world, "~> 0.7.0"}, + {:tz_world, "~> 1.0"}, {:tzdata, "~> 1.1"}, # Dev and test dependencies {:phoenix_live_reload, "~> 1.2", only: [:dev, :e2e]}, {:ex_machina, "~> 2.3", only: [:dev, :test]}, {:excoveralls, "~> 0.14.0", only: :test}, - {:ex_doc, "~> 0.23", only: [:dev, :test], runtime: false}, + {:ex_doc, "~> 0.25", only: [:dev, :test], runtime: false}, {:mix_test_watch, "~> 1.0", only: :dev, runtime: false}, {:ex_unit_notifier, "~> 1.0", only: :test}, {:dialyxir, "~> 1.1", only: [:dev], runtime: false}, diff --git a/mix.lock b/mix.lock index bf8cc9000..4f2320016 100644 --- a/mix.lock +++ b/mix.lock @@ -10,7 +10,7 @@ "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, "cachex": {:hex, :cachex, "3.4.0", "868b2959ea4aeb328c6b60ff66c8d5123c083466ad3c33d3d8b5f142e13101fb", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "370123b1ab4fba4d2965fb18f87fd758325709787c8c5fce35b3fe80645ccbe5"}, "certifi": {:hex, :certifi, "2.8.0", "d4fb0a6bb20b7c9c3643e22507e42f356ac090a1dcea9ab99e27e0376d695eba", [:rebar3], [], "hexpm", "6ac7efc1c6f8600b08d625292d4bbf584e14847ce1b6b5c44d983d273e1097ea"}, - "cldr_utils": {:hex, :cldr_utils, "2.16.0", "5abd1835151e264f6f9a285ab8c7419954a45eec5ca5a356dea592faa23e80b9", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "3ef5dc0fdfe566a5a4b8bda726cf760ebada69c0600affc4cb02b5e8ae7f7b47"}, + "cldr_utils": {:hex, :cldr_utils, "2.17.0", "05453797e5b89f936c54c5602ac881e46b1ba4423a803c27a414466f4b598c94", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "6077ddaaa155f27755638225617bdc00c004f39b3c9355b688e52a3fc98d57e8"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.2", "5c2f893d05c56ae3f5e24c1b983c2d5dfb88c6d979c9287a76a7feb1e1d8d646", [:mix], [], "hexpm", "d0993402844c49539aeadb3fe46a3c9bd190f1ecf86b6f9ebd71957534c95f04"}, "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"}, @@ -25,31 +25,31 @@ "dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"}, "doctor": {:hex, :doctor, "0.18.0", "114934c1740239953208a39db617699b7e2660770e81129d7f95cdf7837ab766", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "829c88c365f72c0666e443ea670ffb6f180de7b90c23d536edabdd8c722b88f4"}, "earmark": {:hex, :earmark, "1.4.16", "2188754e590a3c379fdd2783bb44eedd8c54968fa0256b6f336f6d56b089d793", [:mix], [{:earmark_parser, ">= 1.4.16", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "46f853f7ae10bee06923430dca522ba9dcbdc6b7a9729748e8dd5344d21b8418"}, - "earmark_parser": {:hex, :earmark_parser, "1.4.16", "607709303e1d4e3e02f1444df0c821529af1c03b8578dfc81bb9cf64553d02b9", [:mix], [], "hexpm", "69fcf696168f5a274dd012e3e305027010658b2d1630cef68421d6baaeaccead"}, - "eblurhash": {:hex, :eblurhash, "1.2.0", "ff461979542fcb1bfd428aaba6ee56e544975f6d657aa3dfcf3e314b1d1c2517", [:rebar3], [], "hexpm", "8fa6b740f1630adc0a3e425dbbb4ff92d036e62eb973e7a06676226137a10aa7"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.17", "6f3c7e94170377ba45241d394389e800fb15adc5de51d0a3cd52ae766aafd63f", [:mix], [], "hexpm", "f93ac89c9feca61c165b264b5837bf82344d13bebc634cd575cb711e2e342023"}, + "eblurhash": {:hex, :eblurhash, "1.2.2", "7da4255aaea984b31bb71155f673257353b0e0554d0d30dcf859547e74602582", [:rebar3], [], "hexpm", "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c"}, "ecto": {:hex, :ecto, "3.7.1", "a20598862351b29f80f285b21ec5297da1181c0442687f9b8329f0445d228892", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d36e5b39fc479e654cffd4dbe1865d9716e4a9b6311faff799b6f90ab81b8638"}, "ecto_autoslug_field": {:hex, :ecto_autoslug_field, "3.0.0", "37fbc2f07e6691136afff246f2cf5b159ad395b665a55d06db918975fd2397db", [:mix], [{:ecto, ">= 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugger, ">= 0.3.0", [hex: :slugger, repo: "hexpm", optional: false]}], "hexpm", "8ec252c7cf85f13132062f56a484d6a0ef1f981f7be9ce4ad7e9546dd8c0cc0f"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_shortuuid": {:hex, :ecto_shortuuid, "0.1.3", "d36aede64edf256e4b769be2ad15a8ad5d9d1ff8ad46befe39e8cb4489abcd05", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:shortuuid, "~> 2.1.1", [hex: :shortuuid, repo: "hexpm", optional: false]}], "hexpm", "d215c8ced7125265de94d55abc696125942caef33439cf281fafded9744a4294"}, "ecto_sql": {:hex, :ecto_sql, "3.7.1", "8de624ef50b2a8540252d8c60506379fbbc2707be1606853df371cf53df5d053", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2b42a32e2ce92f64aba5c88617891ab3b0ba34f3f3a503fa20009eae1a401c81"}, "elixir_feed_parser": {:hex, :elixir_feed_parser, "2.1.0", "bb96fb6422158dc7ad59de62ef211cc69d264acbbe63941a64a5dce97bbbc2e6", [:mix], [{:timex, "~> 3.4", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "2d3c62fe7b396ee3b73d7160bc8fadbd78bfe9597c98c7d79b3f1038d9cba28f"}, - "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, + "elixir_make": {:hex, :elixir_make, "0.6.3", "bc07d53221216838d79e03a8019d0839786703129599e9619f4ab74c8c096eac", [:mix], [], "hexpm", "f5cbd651c5678bcaabdbb7857658ee106b12509cd976c2c2fca99688e1daf716"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "erlport": {:hex, :erlport, "0.10.1", "c96ffa51bbcab0298232fcdfe8c3e110f1598011de71ae6b9082b80c9e2e476a", [:rebar3], [], "hexpm", "34931e8cb62a131d1bc8a2bd04d4007c73c03e4f10e22ee4a218e7172227a918"}, "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, - "ex_cldr": {:hex, :ex_cldr, "2.23.2", "76c51b722cefdcd1a13eb5e7c7f4da5b9acfd64ff054424a977ff6e2d6a78981", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.15", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "d9ce03c8d3fdc7ab751bdb2be742b6972f94adc856d51dfe5bb06a51ac96b8f4"}, - "ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.16.0", "7f076c85b63b03cf2c5719b75a9c1ca1b177d6d164a94a1eaf4bfb1a5dca152a", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:earmark, "~> 1.0", [hex: :earmark, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.23", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.7", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "483d91a0fb4909efe211ae59a3620a28bf1a72d64dbf922ae940115e64f6138a"}, - "ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.11.1", "a6e56209d6f98082cd197aa424333e7a0e38e79253fce9589117719728de4fef", [:mix], [{:ex_cldr, "~> 2.23", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "99e8eb3f48a30127bb11ab70f484c124c9fe5b11bce710c94c53939032b0c58c"}, - "ex_cldr_dates_times": {:hex, :ex_cldr_dates_times, "2.9.4", "9ee780d2226f695fc80e45f61118c3feccc9ec47ef1685300b4c1a22a039111f", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr_calendars, "~> 1.15", [hex: :ex_cldr_calendars, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.19", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "0597172df5e7bcc7d79b5405adb1ee2b06c607a0879c66c768fba055b5c81434"}, - "ex_cldr_languages": {:hex, :ex_cldr_languages, "0.2.3", "3863f0e9f38c13b8822b5d998a0bc12941386f25fc6f6011313428784de40c44", [:mix], [{:ex_cldr, "~> 2.2 and >= 2.2.1", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "af0b10ff3d405190289b3defa130b07add5b24f8ffa3466ec07bc0575d97587e"}, - "ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.22.1", "c710abb30a89875a5e2aff5f8a5e073ffad8689c6e84034729f10c51d39c4dcf", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.23", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.11", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "2015161a54f583eede00f18cdf43ec2b27aecf53e22486f6158d787da1f02bb9"}, - "ex_doc": {:hex, :ex_doc, "0.25.3", "3edf6a0d70a39d2eafde030b8895501b1c93692effcbd21347296c18e47618ce", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "9ebebc2169ec732a38e9e779fd0418c9189b3ca93f4a676c961be6c1527913f5"}, + "ex_cldr": {:hex, :ex_cldr, "2.24.1", "159b55b29b2f32897689c4edfcf699761c28d626455642514794a4848c7092d5", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "82a44fab6a09f6481e8dd869c27f0cad783dfe5ff83cb7eef42d556a5134275e"}, + "ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.17.1", "1371b2769ea892aa1c85f60c1358bf3558c021d4e3e824e27efc89c5d5f121cd", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_lists, "~> 2.9", [hex: :ex_cldr_lists, repo: "hexpm", optional: true]}, {:ex_cldr_units, "~> 3.8", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "0d57e476e8042f240ed4b8baeef0f12b7b8a4e22e4da97a33e2a85b11adc7bb4"}, + "ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.12.0", "933b188d3a529e4a1140aac44d1d563b5ed0028d76c66983d85134b5e8f15393", [:mix], [{:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "245ee8fb459cdfaffbfbfe31f8924e8cc31f92a962640f14fc4c3ddaf1ab8f12"}, + "ex_cldr_dates_times": {:hex, :ex_cldr_dates_times, "2.10.0", "88ef1369839e5faaea163b663f22133a2e05ca9c7266b700d993140439507603", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr_calendars, "~> 1.17", [hex: :ex_cldr_calendars, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.23", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "1c2072dd2f798393c48bb61217b14af89b1833b7601dd29a73a9254125679695"}, + "ex_cldr_languages": {:hex, :ex_cldr_languages, "0.3.0", "91df38c2f5e89177e22dc70110ab3b131af381ad1063d3e6835ed30fddd42ed2", [:mix], [{:ex_cldr, "~> 2.24.0", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "6b473e4d91b37c6b7d09f8ea8127c3431f855b20c546c733a1c43a4ec914197e"}, + "ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.23.0", "f77f2bc7ba3a09c5491c8c0dec9485113beb03582578a7c6377f9519ab65fc76", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.24", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.12", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "163a5fb4ed374b8f0290ec1809db475f8f874aa456e7f9ea120fcdedc93b63f7"}, + "ex_doc": {:hex, :ex_doc, "0.25.5", "ac3c5425a80b4b7c4dfecdf51fa9c23a44877124dd8ca34ee45ff608b1c6deb9", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "688cfa538cdc146bc4291607764a7f1fcfa4cce8009ecd62de03b27197528350"}, "ex_ical": {:hex, :ex_ical, "0.2.0", "4b928b554614704016cc0c9ee226eb854da9327a1cc460457621ceacb1ac29a6", [:mix], [{:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "db76473b2ae0259e6633c6c479a5a4d8603f09497f55c88f9ef4d53d2b75befb"}, "ex_machina": {:hex, :ex_machina, "2.7.0", "b792cc3127fd0680fecdb6299235b4727a4944a09ff0fa904cc639272cd92dc7", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8"}, "ex_optimizer": {:hex, :ex_optimizer, "0.1.1", "62da37e206fc2233ff7a4e54e40eae365c40f96c81992fcd15b782eb25169b80", [:mix], [{:file_info, "~> 0.0.4", [hex: :file_info, repo: "hexpm", optional: false]}], "hexpm", "e6f5c059bcd58b66be2f6f257fdc4f69b74b0fa5c9ddd669486af012e4b52286"}, "ex_unit_notifier": {:hex, :ex_unit_notifier, "1.2.0", "73ced2ecee0f2da0705e372c21ce61e4e5d927ddb797f73928e52818b9cc1754", [:mix], [], "hexpm", "f38044c9d50de68ad7f0aec4d781a10d9f1c92c62b36bf0227ec0aaa96aee332"}, "exactor": {:hex, :exactor, "2.2.4", "5efb4ddeb2c48d9a1d7c9b465a6fffdd82300eb9618ece5d34c3334d5d7245b1", [:mix], [], "hexpm", "1222419f706e01bfa1095aec9acf6421367dcfab798a6f67c54cf784733cd6b5"}, - "excoveralls": {:hex, :excoveralls, "0.14.3", "d17dc249ad32e469afd2bc656b58e810109d4367ec6bd467bed57a84dc4a3e02", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b5aecdfdcf48e9d5e1c210841589b30981a5e7e66055cb8691a6f90b1601c108"}, + "excoveralls": {:hex, :excoveralls, "0.14.4", "295498f1ae47bdc6dce59af9a585c381e1aefc63298d48172efaaa90c3d251db", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e3ab02f2df4c1c7a519728a6f0a747e71d7d6e846020aae338173619217931c1"}, "exgravatar": {:hex, :exgravatar, "2.0.2", "638412896170409da114f98947d3f8d4f38e851b0e329c1cc4cd324d5e2ea081", [:mix], [], "hexpm", "f3deb5baa6fcf354a965d794ee73a956d95f1f79f41bddf69800c713cfb014a1"}, "exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm", "32e95820a97cffea67830e91514a2ad53b888850442d6d395f53a1ac60c82e07"}, "export": {:hex, :export, "0.1.1", "6dfd268b0692428f89b9285859a2dc02b6dcd2e8fdfbca34ac6e6a331351df91", [:mix], [{:erlport, "~> 0.9", [hex: :erlport, repo: "hexpm", optional: false]}], "hexpm", "3da7444ff4053f1824352f4bdb13fbd2c28c93c2011786fb686b649fdca1021f"}, @@ -107,15 +107,15 @@ "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, "phoenix": {:hex, :phoenix, "1.6.2", "6cbd5c8ed7a797f25a919a37fafbc2fb1634c9cdb12a4448d7a5d0b26926f005", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7bbee475acae0c3abc229b7f189e210ea788e63bd168e585f60c299a4b2f9133"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"}, - "phoenix_html": {:hex, :phoenix_html, "3.0.4", "232d41884fe6a9c42d09f48397c175cd6f0d443aaa34c7424da47604201df2e1", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "ce17fd3cf815b2ed874114073e743507704b1f5288bb03c304a77458485efc8b"}, + "phoenix_html": {:hex, :phoenix_html, "3.1.0", "0b499df05aad27160d697a9362f0e89fa0e24d3c7a9065c2bd9d38b4d1416c09", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "0c0a98a2cefa63433657983a2a594c7dee5927e4391e0f1bfd3a151d1def33fc"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"}, - "phoenix_live_view": {:hex, :phoenix_live_view, "0.16.4", "5692edd0bac247a9a816eee7394e32e7a764959c7d0cf9190662fc8b0cd24c97", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.9 or ~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "754ba49aa2e8601afd4f151492c93eb72df69b0b9856bab17711b8397e43bba0"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "0.17.5", "63f52a6f9f6983f04e424586ff897c016ecc5e4f8d1e2c22c2887af1c57215d8", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.9 or ~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c5586e6a3d4df71b8214c769d4f5eb8ece2b4001711a7ca0f97323c36958b0e3"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"}, "phoenix_view": {:hex, :phoenix_view, "1.0.0", "fea71ecaaed71178b26dd65c401607de5ec22e2e9ef141389c721b3f3d4d8011", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "82be3e2516f5633220246e2e58181282c71640dab7afc04f70ad94253025db0c"}, "plug": {:hex, :plug, "1.12.1", "645678c800601d8d9f27ad1aebba1fdb9ce5b2623ddb961a074da0b96c35187d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d57e799a777bc20494b784966dc5fbda91eb4a09f571f76545b72a634ce0d30b"}, "plug_cowboy": {:hex, :plug_cowboy, "2.5.2", "62894ccd601cf9597e2c23911ff12798a8a18d237e9739f58a6b04e4988899fe", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ea6e87f774c8608d60c8d34022a7d073bd7680a0a013f049fc62bf35efea1044"}, "plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"}, - "postgrex": {:hex, :postgrex, "0.15.12", "9ee623448310a6ea8543c1207379aea072d699b738b89549f05248b5807302d1", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "1234a9cda8803ca5026dd1512d9fa171c78dd9a27ed3ffd2ca2c5d5753af8922"}, + "postgrex": {:hex, :postgrex, "0.15.13", "7794e697481799aee8982688c261901de493eb64451feee6ea58207d7266d54a", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "3ffb76e1a97cfefe5c6a95632a27ffb67f28871c9741fb585f9d1c3cd2af70f1"}, "progress_bar": {:hex, :progress_bar, "2.0.1", "7b40200112ae533d5adceb80ff75fbe66dc753bca5f6c55c073bfc122d71896d", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "2519eb58a2f149a3a094e729378256d8cb6d96a259ec94841bd69fdc71f18f87"}, "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"}, "remote_ip": {:hex, :remote_ip, "1.0.0", "3d7fb45204a5704443f480cee9515e464997f52c35e0a60b6ece1f81484067ae", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9e9fcad4e50c43b5234bb6a9629ed6ab223f3ed07147bd35470e4ee5c8caf907"}, @@ -131,8 +131,8 @@ "telemetry": {:hex, :telemetry, "1.0.0", "0f453a102cdf13d506b7c0ab158324c337c41f1cc7548f0bc0e130bbf0ae9452", [:rebar3], [], "hexpm", "73bc09fa59b4a0284efb4624335583c528e07ec9ae76aca96ea0673850aec57a"}, "tesla": {:hex, :tesla, "1.4.3", "f5a494e08fb1abe4fd9c28abb17f3d9b62b8f6fc492860baa91efb1aab61c8a0", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.3", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "e0755bb664bf4d664af72931f320c97adbf89da4586670f4864bf259b5750386"}, "timex": {:hex, :timex, "3.7.6", "502d2347ec550e77fdf419bc12d15bdccd31266bb7d925b30bf478268098282f", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "a296327f79cb1ec795b896698c56e662ed7210cc9eb31f0ab365eb3a62e2c589"}, - "tz_world": {:hex, :tz_world, "0.7.1", "c6e2d7fe4ee8119563f7dc75808c7067d39441b143b6f26dbb7be31791ea5f41", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:geo, "~> 1.0 or ~> 2.0 or ~> 3.3", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8932d76b2e5b7113e6f5773465b75c3bb7d04693b59a842657c164cdb85b4bcf"}, - "tzdata": {:hex, :tzdata, "1.1.0", "72f5babaa9390d0f131465c8702fa76da0919e37ba32baa90d93c583301a8359", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "18f453739b48d3dc5bcf0e8906d2dc112bb40baafe2c707596d89f3c8dd14034"}, + "tz_world": {:hex, :tz_world, "1.0.0", "53366d7ec1d3fb11e1a34ce7c74d21c354195521b3309cdb9e6cc84b266cae83", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:geo, "~> 1.0 or ~> 2.0 or ~> 3.3", [hex: :geo, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "9d7aeaa078913b6d486d2a1bf3c1fd380cb16180b93415c7f3fde7cabff478f8"}, + "tzdata": {:hex, :tzdata, "1.1.1", "20c8043476dfda8504952d00adac41c6eda23912278add38edc140ae0c5bcc46", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787"}, "ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"}, "ueberauth_discord": {:hex, :ueberauth_discord, "0.6.0", "d6ec040e4195c4138b9a959c79024ab4c213ba1aed9fc08099ecff141a6486da", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6.3", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "c5ea960191c1d6c3a974947cae4d57efa565a9a0796b8e82bee45fac7ae2fabc"}, "ueberauth_facebook": {:hex, :ueberauth_facebook, "0.8.2", "fa31e095cf64c7255d755534154284115ca725c2cc05c8780476a352ba28b51f", [:mix], [{:oauth2, "~> 1.0 or ~> 2.0", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6.0", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "5cfdfba76706457cbd435740bbcb3a1e081ae012ac1444641a75a3edcf56e806"}, diff --git a/priv/repo/migrations/20211022093530_add_notify_to_followers.exs b/priv/repo/migrations/20211022093530_add_notify_to_followers.exs new file mode 100644 index 000000000..cd9ab1d1b --- /dev/null +++ b/priv/repo/migrations/20211022093530_add_notify_to_followers.exs @@ -0,0 +1,9 @@ +defmodule Mobilizon.Storage.Repo.Migrations.AddNotifyToFollowers do + use Ecto.Migration + + def change do + alter table(:followers) do + add(:notify, :boolean, default: true) + end + end +end diff --git a/test/graphql/resolvers/comment_test.exs b/test/graphql/resolvers/comment_test.exs index 9a26d766c..265b2c374 100644 --- a/test/graphql/resolvers/comment_test.exs +++ b/test/graphql/resolvers/comment_test.exs @@ -170,7 +170,7 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do # Change the current actor for user actor2 = insert(:actor, user: user) - Mobilizon.Users.update_user_default_actor(user.id, actor2) + Mobilizon.Users.update_user_default_actor(user, actor2) res = conn @@ -183,7 +183,7 @@ defmodule Mobilizon.GraphQL.Resolvers.CommentTest do assert hd(res["errors"])["message"] == "You cannot delete this comment" - Mobilizon.Users.update_user_default_actor(user.id, actor) + Mobilizon.Users.update_user_default_actor(user, actor) res = conn diff --git a/test/graphql/resolvers/discussion_test.exs b/test/graphql/resolvers/discussion_test.exs index 5b5b2cece..8b90ae9a4 100644 --- a/test/graphql/resolvers/discussion_test.exs +++ b/test/graphql/resolvers/discussion_test.exs @@ -448,7 +448,7 @@ defmodule Mobilizon.GraphQL.Resolvers.DiscussionTest do # # Change the current actor for user # actor2 = insert(:actor, user: user) - # Mobilizon.Users.update_user_default_actor(user.id, actor2) + # Mobilizon.Users.update_user_default_actor(user, actor2) # res = # conn @@ -461,7 +461,7 @@ defmodule Mobilizon.GraphQL.Resolvers.DiscussionTest do # assert hd(res["errors"])["message"] == # "You cannot delete this comment" - # Mobilizon.Users.update_user_default_actor(user.id, actor) + # Mobilizon.Users.update_user_default_actor(user, actor) # res = # conn diff --git a/test/graphql/resolvers/event_test.exs b/test/graphql/resolvers/event_test.exs index 0f5489b70..9badb50e8 100644 --- a/test/graphql/resolvers/event_test.exs +++ b/test/graphql/resolvers/event_test.exs @@ -1237,7 +1237,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do |> Map.put(:attributed_to_id, "#{group_id}") |> Map.put(:eventId, to_string(event.id)) - Users.update_user_default_actor(user.id, member_not_approved_actor) + Users.update_user_default_actor(user, member_not_approved_actor) res = conn @@ -1252,7 +1252,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do assert hd(res["errors"])["message"] == "This profile doesn't have permission to update an event on behalf of this group" - Users.update_user_default_actor(user.id, not_member_actor) + Users.update_user_default_actor(user, not_member_actor) res = conn @@ -1267,7 +1267,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do assert hd(res["errors"])["message"] == "This profile doesn't have permission to update an event on behalf of this group" - Users.update_user_default_actor(user.id, member_actor) + Users.update_user_default_actor(user, member_actor) res = conn @@ -1282,7 +1282,7 @@ defmodule Mobilizon.Web.Resolvers.EventTest do assert hd(res["errors"])["message"] == "This profile doesn't have permission to update an event on behalf of this group" - Users.update_user_default_actor(user.id, moderator_actor) + Users.update_user_default_actor(user, moderator_actor) res = conn diff --git a/test/graphql/resolvers/follower_test.exs b/test/graphql/resolvers/follower_test.exs index 682ef9dd2..15af8bffc 100644 --- a/test/graphql/resolvers/follower_test.exs +++ b/test/graphql/resolvers/follower_test.exs @@ -178,7 +178,7 @@ defmodule Mobilizon.Web.Resolvers.FollowerTest do } } """ - describe "update a follower update_follower/3" do + describe "approve a follower update_follower/3" do test "without being logged-in", %{ conn: conn, group: %Actor{} = group diff --git a/test/graphql/resolvers/group_test.exs b/test/graphql/resolvers/group_test.exs index 6143062cc..4803fcc8b 100644 --- a/test/graphql/resolvers/group_test.exs +++ b/test/graphql/resolvers/group_test.exs @@ -4,6 +4,7 @@ defmodule Mobilizon.Web.Resolvers.GroupTest do import Mobilizon.Factory + alias Mobilizon.Actors.{Actor, Follower} alias Mobilizon.GraphQL.AbsintheHelpers @non_existent_username "nonexistent" @@ -468,4 +469,192 @@ defmodule Mobilizon.Web.Resolvers.GroupTest do assert hd(res["errors"])["message"] =~ "not an administrator" end end + + describe "follow a group" do + @follow_group_mutation """ + mutation FollowGroup($groupId: ID!, $notify: Boolean) { + followGroup(groupId: $groupId, notify: $notify) { + id + } + } + """ + + test "when not authenticated", %{conn: conn, user: _user} do + %Actor{type: :Group} = group = insert(:group) + + res = + conn + |> AbsintheHelpers.graphql_query( + query: @follow_group_mutation, + variables: %{groupId: group.id} + ) + + assert hd(res["errors"])["message"] == "You need to be logged-in to follow a group" + end + + test "when group doesn't exist", %{conn: conn, user: user} do + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @follow_group_mutation, + variables: %{groupId: "89542"} + ) + + assert hd(res["errors"])["message"] == "Group not found" + end + + test "success", %{conn: conn, user: user} do + %Actor{type: :Group} = group = insert(:group) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @follow_group_mutation, + variables: %{groupId: group.id} + ) + + assert res["errors"] == nil + end + end + + describe "unfollow a group" do + @unfollow_group_mutation """ + mutation UnfollowGroup($groupId: ID!) { + unfollowGroup(groupId: $groupId) { + id + } + } + """ + + test "when not authenticated", %{conn: conn, user: _user} do + %Actor{type: :Group} = group = insert(:group) + + res = + conn + |> AbsintheHelpers.graphql_query( + query: @unfollow_group_mutation, + variables: %{groupId: group.id} + ) + + assert hd(res["errors"])["message"] == "You need to be logged-in to unfollow a group" + end + + test "when group doesn't exist", %{conn: conn, user: user} do + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @unfollow_group_mutation, + variables: %{groupId: "89542"} + ) + + assert hd(res["errors"])["message"] == "Group not found" + end + + test "when the profile is not following the group", %{conn: conn, user: user} do + %Actor{type: :Group} = group = insert(:group) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @unfollow_group_mutation, + variables: %{groupId: group.id} + ) + + assert hd(res["errors"])["message"] =~ "Could not unfollow actor: you are not following" + end + + test "success", %{conn: conn, user: user, actor: actor} do + %Actor{type: :Group} = group = insert(:group) + + Mobilizon.Actors.follow(group, actor) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @unfollow_group_mutation, + variables: %{groupId: group.id} + ) + + assert res["errors"] == nil + assert Mobilizon.Actors.get_follower_by_followed_and_following(group, actor) == nil + end + end + + describe "update a group follow" do + @update_group_follow_mutation """ + mutation UpdateGroupFollow($followId: ID!, $notify: Boolean) { + updateGroupFollow(followId: $followId, notify: $notify) { + id + notify + } + } + """ + test "when not authenticated", %{conn: conn, user: _user, actor: actor} do + %Actor{type: :Group} = group = insert(:group) + follow = insert(:follower, target_actor: group, actor: actor) + + res = + conn + |> AbsintheHelpers.graphql_query( + query: @update_group_follow_mutation, + variables: %{followId: follow.id} + ) + + assert hd(res["errors"])["message"] == "You need to be logged-in to update a group follow" + end + + test "when follow doesn't exist", %{conn: conn, user: user} do + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @update_group_follow_mutation, + variables: %{followId: "d7c83493-e4a0-42a2-a15d-a469e955e80a"} + ) + + assert hd(res["errors"])["message"] == "Follow not found" + end + + test "when follow does not match the current actor", %{conn: conn, user: user} do + %Actor{type: :Group} = group = insert(:group) + follow = insert(:follower, target_actor: group) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @update_group_follow_mutation, + variables: %{followId: follow.id} + ) + + assert hd(res["errors"])["message"] == "Follow does not match your account" + end + + test "success", %{conn: conn, user: user, actor: actor} do + %Actor{type: :Group} = group = insert(:group) + follow = insert(:follower, target_actor: group, actor: actor) + + assert %Follower{notify: true} = + Mobilizon.Actors.get_follower_by_followed_and_following(group, actor) + + res = + conn + |> auth_conn(user) + |> AbsintheHelpers.graphql_query( + query: @update_group_follow_mutation, + variables: %{followId: follow.id, notify: false} + ) + + assert res["errors"] == nil + assert res["data"]["updateGroupFollow"]["notify"] == false + + assert %Follower{notify: false} = + Mobilizon.Actors.get_follower_by_followed_and_following(group, actor) + end + end end diff --git a/test/graphql/resolvers/member_test.exs b/test/graphql/resolvers/member_test.exs index db2a42f08..80ec3f545 100644 --- a/test/graphql/resolvers/member_test.exs +++ b/test/graphql/resolvers/member_test.exs @@ -423,7 +423,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do } do user = insert(:user) actor = insert(:actor, user: user) - Mobilizon.Users.update_user_default_actor(user.id, actor) + Mobilizon.Users.update_user_default_actor(user, actor) %Member{id: member_id} = insert(:member, %{actor: target_actor, parent: group, role: :member}) @@ -449,7 +449,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do group: group, target_actor: target_actor } do - Mobilizon.Users.update_user_default_actor(user.id, actor) + Mobilizon.Users.update_user_default_actor(user, actor) insert(:member, actor: actor, parent: group, role: :administrator) %Member{id: member_id} = @@ -504,7 +504,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do actor: actor, group: group } do - Mobilizon.Users.update_user_default_actor(user.id, actor) + Mobilizon.Users.update_user_default_actor(user, actor) %Member{id: member_id} = insert(:member, actor: actor, parent: group, role: :administrator) res = diff --git a/test/service/notifier/email_test.exs b/test/service/notifier/email_test.exs index 07045a0f0..6e841db0b 100644 --- a/test/service/notifier/email_test.exs +++ b/test/service/notifier/email_test.exs @@ -29,7 +29,7 @@ defmodule Mobilizon.Service.Notifier.EmailTest do describe "sending email for activities" do test "when the user doesn't allow it" do %Activity{} = activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now()) - %User{} = user = insert(:user) + %User{} = user = insert(:user, activity_settings: []) %Setting{} = user_settings = insert(:settings, user_id: user.id, group_notifications: :none) user = %User{user | settings: user_settings} diff --git a/test/service/notifier/push_test.exs b/test/service/notifier/push_test.exs index ff2c6a08d..0bb198052 100644 --- a/test/service/notifier/push_test.exs +++ b/test/service/notifier/push_test.exs @@ -28,7 +28,7 @@ defmodule Mobilizon.Service.Notifier.PushTest do describe "sending push notification for activities" do test "when the user doesn't allow it" do %Activity{} = activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now()) - %User{} = user = insert(:user) + %User{} = user = insert(:user, activity_settings: []) %Setting{} = user_settings = insert(:settings, user_id: user.id) user = %User{user | settings: user_settings}