From 7b432911909343196ce251a506597c6134e75cf9 Mon Sep 17 00:00:00 2001 From: Lera24 Date: Wed, 17 Apr 2024 15:06:06 +0300 Subject: [PATCH 01/28] feature: timeline[WTEL-3534] --- package-lock.json | 14 +- package.json | 2 +- src/app/locale/en/en.js | 35 +++ src/app/locale/ru/ru.js | 35 +++ src/app/locale/ua/ua.js | 35 +++ src/app/router/index.js | 8 +- .../components/opened-contact-tabs.vue | 9 +- .../contacts/components/the-contacts.vue | 4 +- .../modules/timeline/api/HistoryAPI.js | 201 +++++++++++++++ .../modules/timeline/api/TimelineAPI.js | 50 ++++ .../timeline/assets/timeline-dummy-dark.svg | 162 ++++++++++++ .../timeline/assets/timeline-dummy-light.svg | 162 ++++++++++++ .../enums/timelineEventTypes.enum.js | 14 ++ .../components/opened-timeline-call.vue | 19 ++ .../components/opened-timeline-chat.vue | 0 .../components/opened-timeline-day.vue | 237 ++++++++++++++++++ .../timeline/components/the-timeline.vue | 72 ++++++ .../timeline/components/timeline-day.vue | 96 +++++++ .../timeline/components/timeline-header.vue | 116 +++++++++ .../components/utils/event-initiator-name.vue | 56 +++++ .../components/utils/event-record.vue | 23 ++ .../components/utils/event-status-detail.vue | 60 +++++ .../components/utils/event-type-filter.vue | 46 ++++ .../timeline/modules/filters/store/filters.js | 29 +++ .../timeline/store/_internals/headers.js | 22 ++ .../modules/timeline/store/timeline.js | 28 +++ src/modules/contacts/store/contacts.js | 3 +- 27 files changed, 1522 insertions(+), 16 deletions(-) create mode 100644 src/modules/contacts/modules/timeline/api/HistoryAPI.js create mode 100644 src/modules/contacts/modules/timeline/api/TimelineAPI.js create mode 100644 src/modules/contacts/modules/timeline/assets/timeline-dummy-dark.svg create mode 100644 src/modules/contacts/modules/timeline/assets/timeline-dummy-light.svg create mode 100644 src/modules/contacts/modules/timeline/components/enums/timelineEventTypes.enum.js create mode 100644 src/modules/contacts/modules/timeline/components/opened-timeline-call.vue create mode 100644 src/modules/contacts/modules/timeline/components/opened-timeline-chat.vue create mode 100644 src/modules/contacts/modules/timeline/components/opened-timeline-day.vue create mode 100644 src/modules/contacts/modules/timeline/components/the-timeline.vue create mode 100644 src/modules/contacts/modules/timeline/components/timeline-day.vue create mode 100644 src/modules/contacts/modules/timeline/components/timeline-header.vue create mode 100644 src/modules/contacts/modules/timeline/components/utils/event-initiator-name.vue create mode 100644 src/modules/contacts/modules/timeline/components/utils/event-record.vue create mode 100644 src/modules/contacts/modules/timeline/components/utils/event-status-detail.vue create mode 100644 src/modules/contacts/modules/timeline/components/utils/event-type-filter.vue create mode 100644 src/modules/contacts/modules/timeline/modules/filters/store/filters.js create mode 100644 src/modules/contacts/modules/timeline/store/_internals/headers.js create mode 100644 src/modules/contacts/modules/timeline/store/timeline.js diff --git a/package-lock.json b/package-lock.json index 7bfa52a9..d27db990 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "vue-i18n": "^9.2.2", "vue-router": "^4.0.3", "vuex": "^4.1.0", - "webitel-sdk": "^24.2.4" + "webitel-sdk": "^24.2.6" }, "devDependencies": { "@vitejs/plugin-vue": "5.0.3", @@ -9594,9 +9594,9 @@ } }, "node_modules/webitel-sdk": { - "version": "24.2.4", - "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.4.tgz", - "integrity": "sha512-7lg2CKR4iAdAQOOexi8A/5QqizK0mZ0JgV4E1x0L3hCZb6hP2UTapvwjUXx8Sie4WbJlq0wamIPuRVqoB/2r0Q==", + "version": "24.2.6", + "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.6.tgz", + "integrity": "sha512-pesFApYZJwKXSTAzxuFhkt/aVGqodEbOn0zUlDkALdj/6Za0/dZmAAZ4iBXar8YDUOeLxCnLRLrJxsQVAC7i1w==", "dependencies": { "@types/webrtc": "~0.0.41", "deep-copy": "1.4.2", @@ -16860,9 +16860,9 @@ "peer": true }, "webitel-sdk": { - "version": "24.2.4", - "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.4.tgz", - "integrity": "sha512-7lg2CKR4iAdAQOOexi8A/5QqizK0mZ0JgV4E1x0L3hCZb6hP2UTapvwjUXx8Sie4WbJlq0wamIPuRVqoB/2r0Q==", + "version": "24.2.6", + "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.6.tgz", + "integrity": "sha512-pesFApYZJwKXSTAzxuFhkt/aVGqodEbOn0zUlDkALdj/6Za0/dZmAAZ4iBXar8YDUOeLxCnLRLrJxsQVAC7i1w==", "requires": { "@types/webrtc": "~0.0.41", "deep-copy": "1.4.2", diff --git a/package.json b/package.json index 0d4309b8..5bc01cd1 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "vue-i18n": "^9.2.2", "vue-router": "^4.0.3", "vuex": "^4.1.0", - "webitel-sdk": "^24.2.4" + "webitel-sdk": "^24.2.6" }, "devDependencies": { "@vitejs/plugin-vue": "5.0.3", diff --git a/src/app/locale/en/en.js b/src/app/locale/en/en.js index f9168308..e3b6551a 100644 --- a/src/app/locale/en/en.js +++ b/src/app/locale/en/en.js @@ -9,8 +9,43 @@ export default { contact: 'Contact | Contacts', manager: 'Owner | Owners', destination: 'Destination', + collapseAll: 'Collapse all', timeline: { timeline: 'Timeline', + actions: { + openInHistory: 'Open in history', + playRecording: 'Play Recording', + transcription: 'Transcription', + }, + status: { + started: 'Started', + missed: 'Missed', + transferred: 'Transferred', + ended: 'Ended', + }, + mouth: { + jan: 'January', + feb: 'February', + mar: 'March', + apr: 'April', + may: 'May', + jun: 'June', + jul: 'July', + aug: 'August', + sep: 'September', + oct: 'October', + nov: 'November', + dec: 'December', + }, + dayWeek: { + mon: 'Monday', + tue: 'Tuesday', + wed: 'Wednesday', + thu: 'Thursday', + fri: 'Friday', + sat: 'Saturday', + sun: 'Sunday', + }, }, communications: { communications: 'Communication option | Communication options', diff --git a/src/app/locale/ru/ru.js b/src/app/locale/ru/ru.js index 4fd04498..016e36ca 100644 --- a/src/app/locale/ru/ru.js +++ b/src/app/locale/ru/ru.js @@ -9,8 +9,43 @@ export default { contact: 'Контакт | Контакты', manager: 'Владелец | Владельцы', destination: 'Назначение', + collapseAll: 'Свернуть все', timeline: { timeline: 'Хронология', + actions: { + openInHistory: 'Открыть в истории', + playRecording: 'Проиграть запись', + transcription: 'Транскрипция', + }, + status: { + started: 'Початок', + missed: 'Пропущений', + transferred: 'Переведено', + ended: 'Кінець', + }, + mouth: { + jan: 'Январь', + feb: 'Февраль', + mar: 'Март', + apr: 'Апрель', + may: 'Май', + jun: 'Июнь', + jul: 'Июль', + aug: 'Август', + sep: 'Сентябрь', + oct: 'Октябрь', + nov: 'Ноябрь', + dec: 'Декабрь', + }, + dayWeek: { + mon: 'Понедельник', + tue: 'Вторник', + wed: 'Среда', + thu: 'Четверг', + fri: 'Пятница', + sat: 'Суббота', + syn: 'Воскресенье', + }, }, communications: { communications: 'Средство связи | Средства связи', diff --git a/src/app/locale/ua/ua.js b/src/app/locale/ua/ua.js index a5db7c45..5a97fcbe 100644 --- a/src/app/locale/ua/ua.js +++ b/src/app/locale/ua/ua.js @@ -9,8 +9,43 @@ export default { contact: 'Контакт | Контакти', manager: 'Власник | Власники', destination: 'Призначення', + collapseAll: 'Згорнути все', timeline: { timeline: 'Хронологія', + actions: { + openInHistory: 'Відкрити в історії', + playRecording: 'Програти запис', + transcription: 'Транскрипція', + }, + status: { + started: 'Начало', + missed: 'Пропущен', + transferred: 'Переведено', + ended: 'Конец', + }, + mouth: { + jan: 'Січень', + feb: 'Лютий', + mar: 'Березень', + apr: 'квітень', + may: 'Травень', + jun: 'Червень', + jul: 'Липень', + aug: 'Серпень', + sep: 'Вересень', + oct: 'Жовтень', + nov: 'Листопад', + dec: 'Грудень', + }, + dayWeek: { + mon: 'Понеділок', + tue: 'Вівторок', + wed: 'Середа', + thu: 'Четвер', + fri: 'П\'ятниця', + sat: 'Субота', + syn: 'Неділя', + }, }, communications: { communications: 'Засіб зв\'язку | Засоби зв\'язку', diff --git a/src/app/router/index.js b/src/app/router/index.js index 4531231a..08d553dc 100644 --- a/src/app/router/index.js +++ b/src/app/router/index.js @@ -7,6 +7,7 @@ import TheContacts from '../../modules/contacts/components/the-contacts.vue'; import OpenedContact from '../../modules/contacts/components/opened-contact.vue'; import AccessDenied from '../components/utils/access-denied-component.vue'; +import ContactTimeline from '../../modules/contacts/modules/timeline/components/the-timeline.vue'; import ContactCommunications from '../../modules/contacts/components/opened-contact-communications.vue'; import ContactPermissions @@ -53,8 +54,13 @@ const routes = [ name: `${CrmSections.CONTACTS}-edit`, component: OpenedContact, beforeEnter: checkRouteAccess, - redirect: { name: `${CrmSections.CONTACTS}-communications` }, + redirect: { name: `${CrmSections.CONTACTS}-timeline` }, children: [ + { + path: 'timeline', + name: `${CrmSections.CONTACTS}-timeline`, + component: ContactTimeline, + }, { path: 'communications', redirect: { diff --git a/src/modules/contacts/components/opened-contact-tabs.vue b/src/modules/contacts/components/opened-contact-tabs.vue index ead9c819..2515664c 100644 --- a/src/modules/contacts/components/opened-contact-tabs.vue +++ b/src/modules/contacts/components/opened-contact-tabs.vue @@ -30,10 +30,11 @@ const router = useRouter(); const route = useRoute(); const tabs = computed(() => [ - // { - // text: t('contacts.timeline.timeline'), - // value: 'timeline', - // }, + { + text: t('contacts.timeline.timeline'), + value: 'timeline', + pathName: `${CrmSections.CONTACTS}-timeline`, + }, { text: t('contacts.communications.communications', 2), value: 'communications', diff --git a/src/modules/contacts/components/the-contacts.vue b/src/modules/contacts/components/the-contacts.vue index 752510d9..3c2a18ed 100644 --- a/src/modules/contacts/components/the-contacts.vue +++ b/src/modules/contacts/components/the-contacts.vue @@ -216,11 +216,11 @@ function edit({ id }) { function communicationsLink({ id }) { const routeName = CrmSections.CONTACTS; - return { name: `${routeName}-communications`, params: { id } }; + return { name: `${routeName}-timeline`, params: { id } }; } function saved(id) { - router.push(`/${CrmSections.CONTACTS}/${id}/communications`); + router.push(`/${CrmSections.CONTACTS}/${id}/timeline`); } function closeContactPopup() { diff --git a/src/modules/contacts/modules/timeline/api/HistoryAPI.js b/src/modules/contacts/modules/timeline/api/HistoryAPI.js new file mode 100644 index 00000000..3ba08022 --- /dev/null +++ b/src/modules/contacts/modules/timeline/api/HistoryAPI.js @@ -0,0 +1,201 @@ +import { + camelToSnake, notify, + starToSearch, snakeToCamel, + merge, mergeEach, +} from '@webitel/ui-sdk/src/api/transformers'; +import applyTransform + from '@webitel/ui-sdk/src/api/transformers/applyTransform'; +import { getDefaultGetListResponse } from '@webitel/ui-sdk/src/api/defaults'; +import convertDuration from '@webitel/ui-sdk/src/scripts/convertDuration'; +import { CallServiceApiFactory } from 'webitel-sdk'; +import * as converters from '@webitel/ui-sdk/src/scripts/caseConverters'; +import configuration from '../../../../../app/api/openAPIConfig'; +import instance from '../../../../../app/api/instance'; + +const callService = new CallServiceApiFactory(configuration, '', instance); + +const computeDate = (timestamp) => { + if (!timestamp) return null; + const date = new Date(+timestamp); + return date.toLocaleDateString(); +}; + +const computeTime = (timestamp) => { + if (!timestamp) return null; + const date = new Date(+timestamp); + return date.toLocaleTimeString(); +}; + +const computeDateAndTime = (timestamp) => { + if (!timestamp) return null; + const date = new Date(+timestamp); + return date.toLocaleString('en-GB'); +}; + +const mapDefaultComments = (item) => { + const defaultComment = { + startSec: 0, + endSec: 0, + note: '', + }; + + return item.annotations ? item.annotations.map((comment) => ({ + ...defaultComment, + ...comment, + })) : []; +}; + +const transformResponseItems = (items) => { + const defaultObject = { + _isSelected: false, + }; + return items.map((item) => ({ + ...defaultObject, + ...item, + date: computeDate(item.createdAt), + time: computeTime(item.createdAt), + bridgedAt: computeTime(item.bridgedAt), + queueBridgedAt: computeTime(item.queueBridgedAt), + createdAt: computeDateAndTime(item.createdAt), + answeredAt: computeTime(item.answeredAt), + joinedAt: computeTime(item.joinedAt), + leavingAt: computeTime(item.leavingAt), + hangupAt: computeTime(item.hangupAt), + reportingAt: computeTime(item.reportingAt), + duration: convertDuration(item.duration), + holdSec: convertDuration(item.holdSec), + waitSec: convertDuration(item.waitSec), + billSec: convertDuration(item.billSec), + talkSec: convertDuration(item.talkSec), + reportingSec: convertDuration(item.reportingSec), + queueWaitSec: convertDuration(item.queueWaitSec), + queueDurationSec: convertDuration(item.queueDurationSec), + annotations: mapDefaultComments(item), + hangupDisposition: item.hangupDisposition + ? converters.snakeToCamel(item.hangupDisposition) + : '', + score: item.scoreRequired ? item.scoreRequired.toFixed(2) : null, + })); +}; + +const getList = ({ + paramsTransformers = [], + responseTransformers = [], + responseItemsTransformers = [], + }) => async (params) => { + const { + page, + size, + from, + to, + user, + rated, + ratedBy, + agent, + queue, + team, + gateway, + member, + duration, + skipParent, + parentId, + cause, + fields = ['to','transfer_to','created_at','duration'], + sort = '-created_at', + direction, + search, + id, + dependencyId, + tags, + amdResult, + fts, + hangupDisposition, + hasFile, + hasTranscription, + description, + grantee, + talkSec, + score, + variable, + contact, + } = applyTransform(params, paramsTransformers); + try { + const variables = variable + && variable.split('&') + .reduce((vars, currVar) => { + const [key, value] = currVar.split('='); + return { + ...vars, + /* + This if else statement is needed for sending '' + to backend when user writes not valid variableSearch, so we can display dummy image. + */ + [key]: value !== undefined ? value : '', + }; + }, {}); + + const response = await callService.searchHistoryCallPost({ + page, + size, + sort, + fields, + created_at: { + from, + to, + }, + user_id: user, + agent_id: agent, + queue_id: queue, + team_id: team, + member_id: member, + gateway_id: gateway, + duration, + skip_parent: skipParent, + parent_id: parentId, + cause, + has_file: hasFile === 'true' ? true : hasFile === 'false' ? false : undefined, + number: search, + direction, + id, + dependency_id: dependencyId, + tags, + amd_result: amdResult, + fts, + directions: hangupDisposition, + has_transcript: hasTranscription === 'true' ? true : hasTranscription === 'false' ? false : undefined, + agent_description: description, + grantee_id: grantee, + talk: talkSec, + rated: rated === 'true' ? true : rated === 'false' ? false : undefined, + rated_by: ratedBy, + score_required: score, + variables, + contact_id: contact, + }); + const { + items, + next, + } = applyTransform(response.data, responseTransformers); + return { + items: applyTransform(items, responseItemsTransformers), + next, + }; + } catch (err) { + throw applyTransform(err, [ + notify, + ]); + } +}; + +const getHistory = getList({ + paramsTransformers: [], + responseTransformers: [ + snakeToCamel(['variables']), + merge(getDefaultGetListResponse()), + ], + responseItemsTransformers: [ + transformResponseItems, + ], +}); + +export default { getHistory } diff --git a/src/modules/contacts/modules/timeline/api/TimelineAPI.js b/src/modules/contacts/modules/timeline/api/TimelineAPI.js new file mode 100644 index 00000000..76c704b4 --- /dev/null +++ b/src/modules/contacts/modules/timeline/api/TimelineAPI.js @@ -0,0 +1,50 @@ +import { getDefaultGetParams } from '@webitel/ui-sdk/src/api/defaults'; +import applyTransform, { + camelToSnake, + merge, notify, + sanitize, snakeToCamel, starToSearch, mergeEach, +} from '@webitel/ui-sdk/src/api/transformers'; +import { TimelineApiFactory } from 'webitel-sdk'; +import getDefaultGetListResponse + from '../../../../../app/api/defaults/getDefaultGetListResponse'; +import configuration from '../../../../../app/api/openAPIConfig'; +import instance from '../../../../../app/api/instance'; + +const timeline = new TimelineApiFactory(configuration, '', instance); + +const getList = async (params) => { + const fieldsToSend = ['parentId', 'dateFrom', 'dateTo', 'type']; + const { + parentId, + dateFrom, + dateTo, + type, + } = applyTransform(params, [ + sanitize(fieldsToSend), + merge(getDefaultGetParams()), + ]); + try { + const response = await timeline.getTimeline( + parentId, + dateFrom, + dateTo, + type, + ); + const { days, next } = applyTransform(response.data, [ + snakeToCamel(), + merge(getDefaultGetListResponse()), + ]); + return { + items: applyTransform(days, [ + ]), + next, + }; + } catch (err) { + throw applyTransform(err, [ + notify, + ]); + } +}; + + +export default {getList} diff --git a/src/modules/contacts/modules/timeline/assets/timeline-dummy-dark.svg b/src/modules/contacts/modules/timeline/assets/timeline-dummy-dark.svg new file mode 100644 index 00000000..ece507ec --- /dev/null +++ b/src/modules/contacts/modules/timeline/assets/timeline-dummy-dark.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/contacts/modules/timeline/assets/timeline-dummy-light.svg b/src/modules/contacts/modules/timeline/assets/timeline-dummy-light.svg new file mode 100644 index 00000000..469f7705 --- /dev/null +++ b/src/modules/contacts/modules/timeline/assets/timeline-dummy-light.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/contacts/modules/timeline/components/enums/timelineEventTypes.enum.js b/src/modules/contacts/modules/timeline/components/enums/timelineEventTypes.enum.js new file mode 100644 index 00000000..ba4d2ef6 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/enums/timelineEventTypes.enum.js @@ -0,0 +1,14 @@ +const timelineEventTypes = Object.freeze([ + { + type: 'calls', + iconName: 'call', + countName: 'callsCount', + }, + { + type: 'chats', + iconName: 'chat', + countName: 'chatsCount', + }, +]); + +export default timelineEventTypes; diff --git a/src/modules/contacts/modules/timeline/components/opened-timeline-call.vue b/src/modules/contacts/modules/timeline/components/opened-timeline-call.vue new file mode 100644 index 00000000..ee68f187 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/opened-timeline-call.vue @@ -0,0 +1,19 @@ + + + + diff --git a/src/modules/contacts/modules/timeline/components/opened-timeline-chat.vue b/src/modules/contacts/modules/timeline/components/opened-timeline-chat.vue new file mode 100644 index 00000000..e69de29b diff --git a/src/modules/contacts/modules/timeline/components/opened-timeline-day.vue b/src/modules/contacts/modules/timeline/components/opened-timeline-day.vue new file mode 100644 index 00000000..dce1df19 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/opened-timeline-day.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/the-timeline.vue b/src/modules/contacts/modules/timeline/components/the-timeline.vue new file mode 100644 index 00000000..4983477d --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/the-timeline.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/timeline-day.vue b/src/modules/contacts/modules/timeline/components/timeline-day.vue new file mode 100644 index 00000000..bd7fa9c1 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/timeline-day.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/timeline-header.vue b/src/modules/contacts/modules/timeline/components/timeline-header.vue new file mode 100644 index 00000000..a0d8d018 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/timeline-header.vue @@ -0,0 +1,116 @@ + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/event-initiator-name.vue b/src/modules/contacts/modules/timeline/components/utils/event-initiator-name.vue new file mode 100644 index 00000000..8e4d570f --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/event-initiator-name.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/event-record.vue b/src/modules/contacts/modules/timeline/components/utils/event-record.vue new file mode 100644 index 00000000..f9840068 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/event-record.vue @@ -0,0 +1,23 @@ + + diff --git a/src/modules/contacts/modules/timeline/components/utils/event-status-detail.vue b/src/modules/contacts/modules/timeline/components/utils/event-status-detail.vue new file mode 100644 index 00000000..8308437e --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/event-status-detail.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/event-type-filter.vue b/src/modules/contacts/modules/timeline/components/utils/event-type-filter.vue new file mode 100644 index 00000000..34b9bffb --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/event-type-filter.vue @@ -0,0 +1,46 @@ + + + + diff --git a/src/modules/contacts/modules/timeline/modules/filters/store/filters.js b/src/modules/contacts/modules/timeline/modules/filters/store/filters.js new file mode 100644 index 00000000..996e8d1f --- /dev/null +++ b/src/modules/contacts/modules/timeline/modules/filters/store/filters.js @@ -0,0 +1,29 @@ +import BaseFilterSchema + from '@webitel/ui-sdk/src/modules/Filters/classes/BaseFilterSchema'; +import FiltersStoreModule + from '@webitel/ui-sdk/src/modules/Filters/store/FiltersStoreModule'; +import router from '../../../../../../../app/router'; + +const state = { + page: new BaseFilterSchema({ + value: 1, + defaultValue: 1, + }), + size: new BaseFilterSchema({ + value: 10, + defaultValue: 10, + }), + type: new BaseFilterSchema({ + value: null, + defaultValue: null, + }), +}; + +const getters = { + ROUTER: () => router, + TABLE_NAMESPACE: () => 'contacts/card/timeline/table', +}; + +const filters = new FiltersStoreModule().getModule({ state, getters }); + +export default filters; diff --git a/src/modules/contacts/modules/timeline/store/_internals/headers.js b/src/modules/contacts/modules/timeline/store/_internals/headers.js new file mode 100644 index 00000000..44487be4 --- /dev/null +++ b/src/modules/contacts/modules/timeline/store/_internals/headers.js @@ -0,0 +1,22 @@ +import { SortSymbols } from '@webitel/ui-sdk/src/scripts/sortQueryAdapters'; + +export default [ + // { + // value: 'dateFrom', + // show: true, + // field: 'date_from', + // sort: SortSymbols.NONE, + // }, + // { + // value: 'dateTo', + // show: true, + // field: 'date_to', + // sort: SortSymbols.NONE, + // }, + // { + // value: 'type', + // show: true, + // field: 'type', + // sort: SortSymbols.NONE, + // }, +]; diff --git a/src/modules/contacts/modules/timeline/store/timeline.js b/src/modules/contacts/modules/timeline/store/timeline.js new file mode 100644 index 00000000..acf82e7d --- /dev/null +++ b/src/modules/contacts/modules/timeline/store/timeline.js @@ -0,0 +1,28 @@ +import TableStoreModule + from '@webitel/ui-sdk/src/modules/TableStoreModule/store/TableStoreModule'; +import ApiStoreModule + from '@webitel/ui-sdk/src/store/BaseStoreModules/ApiStoreModule'; +import BaseStoreModule + from '@webitel/ui-sdk/src/store/BaseStoreModules/BaseStoreModule'; +import filters from '../modules/filters/store/filters'; +import headers from './_internals/headers'; +import TimelineAPI from '../api/TimelineAPI'; + +const getters = { + PARENT_ID: (state, getters, rootState) => rootState.contacts.card.itemId, +}; + +const api = new ApiStoreModule() +.generateAPIActions(TimelineAPI) +.getModule(); + +const table = new TableStoreModule({ headers }) +.setChildModules({ api, filters }) +.getModule({getters}); + + +const timeline = new BaseStoreModule() +.setChildModules({table}) +.getModule(); + +export default timeline; diff --git a/src/modules/contacts/store/contacts.js b/src/modules/contacts/store/contacts.js index 2a084708..16be9a81 100644 --- a/src/modules/contacts/store/contacts.js +++ b/src/modules/contacts/store/contacts.js @@ -9,6 +9,7 @@ import ApiStoreModule import ContactsAPI from '../api/ContactsAPI'; import headers from './_internals/headers'; import filters from '../modules/filters/store/filters'; +import timeline from '../modules/timeline/store/timeline'; import emails from '../modules/emails/store/emails'; import phones from '../modules/phones/store/phones'; import messaging from '../modules/messaging/store/messaging'; @@ -40,7 +41,7 @@ const table = new TableStoreModule({ headers }) .getModule({ getters: tableGetters }); const card = new CardStoreModule() - .setChildModules({ api, emails, phones, messaging, variables, permissions }) + .setChildModules({ api, timeline, emails, phones, messaging, variables, permissions }) .getModule({ state: cardState }); const contacts = new BaseStoreModule() From 523240b092f5f6ef87df89f111699a32c8f98ab3 Mon Sep 17 00:00:00 2001 From: dlohvinov Date: Fri, 19 Apr 2024 14:28:32 +0300 Subject: [PATCH 02/28] refactor: timeline restructurization [WTEL-3534] --- package.json | 1 + .../day-row/day-timeline-row-counters.vue | 34 +++ .../day-row/day-timeline-row-section.vue | 68 +++++ .../components/day-row/day-timeline-row.vue | 88 ++++++ .../{utils => }/event-status-detail.vue | 0 .../{utils => }/event-type-filter.vue | 0 .../components/opened-timeline-call.vue | 19 -- .../components/opened-timeline-chat.vue | 0 .../components/opened-timeline-day.vue | 237 ---------------- .../task-row/call-task-timeline-row.vue | 11 + .../task-row/chat-task-timeline-row.vue | 255 ++++++++++++++++++ .../components/task-row/task-timeline-row.vue | 33 +++ .../timeline/components/the-timeline.vue | 56 ++-- .../components/timeline-container.vue | 31 +++ .../timeline/components/timeline-day.vue | 96 ------- .../timeline/components/timeline-header.vue | 2 +- .../components/utils/event-record.vue | 23 -- .../components/utils/timeline-pin.vue | 68 +++++ .../utils/timeline-row-duration.vue | 18 ++ .../components/utils/timeline-row-info.vue | 60 +++++ ...or-name.vue => timeline-row-initiator.vue} | 0 .../components/utils/timeline-row.vue | 68 +++++ .../timeline/enums/TimelinePinType.enum.js | 10 + 23 files changed, 773 insertions(+), 405 deletions(-) create mode 100644 src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue create mode 100644 src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue create mode 100644 src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue rename src/modules/contacts/modules/timeline/components/{utils => }/event-status-detail.vue (100%) rename src/modules/contacts/modules/timeline/components/{utils => }/event-type-filter.vue (100%) delete mode 100644 src/modules/contacts/modules/timeline/components/opened-timeline-call.vue delete mode 100644 src/modules/contacts/modules/timeline/components/opened-timeline-chat.vue delete mode 100644 src/modules/contacts/modules/timeline/components/opened-timeline-day.vue create mode 100644 src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue create mode 100644 src/modules/contacts/modules/timeline/components/task-row/chat-task-timeline-row.vue create mode 100644 src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue create mode 100644 src/modules/contacts/modules/timeline/components/timeline-container.vue delete mode 100644 src/modules/contacts/modules/timeline/components/timeline-day.vue delete mode 100644 src/modules/contacts/modules/timeline/components/utils/event-record.vue create mode 100644 src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue create mode 100644 src/modules/contacts/modules/timeline/components/utils/timeline-row-duration.vue create mode 100644 src/modules/contacts/modules/timeline/components/utils/timeline-row-info.vue rename src/modules/contacts/modules/timeline/components/utils/{event-initiator-name.vue => timeline-row-initiator.vue} (100%) create mode 100644 src/modules/contacts/modules/timeline/components/utils/timeline-row.vue create mode 100644 src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js diff --git a/package.json b/package.json index 5bc01cd1..d1c65e6a 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "test:unit": "vitest", "lint:fix": "eslint --fix --ext .js,.vue src" }, + "type": "module", "dependencies": { "@vue/compat": "^3.3.9", "@vuelidate/core": "^2.0.0", diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue new file mode 100644 index 00000000..2ca47192 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue new file mode 100644 index 00000000..697bca4d --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue new file mode 100644 index 00000000..83f8d79f --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/event-status-detail.vue b/src/modules/contacts/modules/timeline/components/event-status-detail.vue similarity index 100% rename from src/modules/contacts/modules/timeline/components/utils/event-status-detail.vue rename to src/modules/contacts/modules/timeline/components/event-status-detail.vue diff --git a/src/modules/contacts/modules/timeline/components/utils/event-type-filter.vue b/src/modules/contacts/modules/timeline/components/event-type-filter.vue similarity index 100% rename from src/modules/contacts/modules/timeline/components/utils/event-type-filter.vue rename to src/modules/contacts/modules/timeline/components/event-type-filter.vue diff --git a/src/modules/contacts/modules/timeline/components/opened-timeline-call.vue b/src/modules/contacts/modules/timeline/components/opened-timeline-call.vue deleted file mode 100644 index ee68f187..00000000 --- a/src/modules/contacts/modules/timeline/components/opened-timeline-call.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/src/modules/contacts/modules/timeline/components/opened-timeline-chat.vue b/src/modules/contacts/modules/timeline/components/opened-timeline-chat.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/src/modules/contacts/modules/timeline/components/opened-timeline-day.vue b/src/modules/contacts/modules/timeline/components/opened-timeline-day.vue deleted file mode 100644 index dce1df19..00000000 --- a/src/modules/contacts/modules/timeline/components/opened-timeline-day.vue +++ /dev/null @@ -1,237 +0,0 @@ - - - - - diff --git a/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue new file mode 100644 index 00000000..762e8b79 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/task-row/chat-task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/chat-task-timeline-row.vue new file mode 100644 index 00000000..08962e92 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/task-row/chat-task-timeline-row.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue new file mode 100644 index 00000000..f217fc29 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/the-timeline.vue b/src/modules/contacts/modules/timeline/components/the-timeline.vue index 4983477d..9fa6f76b 100644 --- a/src/modules/contacts/modules/timeline/components/the-timeline.vue +++ b/src/modules/contacts/modules/timeline/components/the-timeline.vue @@ -1,38 +1,45 @@ diff --git a/src/modules/contacts/modules/timeline/components/timeline-container.vue b/src/modules/contacts/modules/timeline/components/timeline-container.vue new file mode 100644 index 00000000..c73e5b74 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/timeline-container.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/timeline-day.vue b/src/modules/contacts/modules/timeline/components/timeline-day.vue deleted file mode 100644 index bd7fa9c1..00000000 --- a/src/modules/contacts/modules/timeline/components/timeline-day.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - diff --git a/src/modules/contacts/modules/timeline/components/timeline-header.vue b/src/modules/contacts/modules/timeline/components/timeline-header.vue index a0d8d018..001c4854 100644 --- a/src/modules/contacts/modules/timeline/components/timeline-header.vue +++ b/src/modules/contacts/modules/timeline/components/timeline-header.vue @@ -22,7 +22,7 @@ import getNamespacedState from '@webitel/ui-sdk/src/store/helpers/getNamespacedS import { computed } from 'vue'; import { useI18n } from 'vue-i18n'; import { useStore } from 'vuex'; -import EventTypeFilter from './utils/event-type-filter.vue'; +import EventTypeFilter from './event-type-filter.vue'; import timelineEventTypes from './enums/timelineEventTypes.enum'; const props = defineProps({ diff --git a/src/modules/contacts/modules/timeline/components/utils/event-record.vue b/src/modules/contacts/modules/timeline/components/utils/event-record.vue deleted file mode 100644 index f9840068..00000000 --- a/src/modules/contacts/modules/timeline/components/utils/event-record.vue +++ /dev/null @@ -1,23 +0,0 @@ - - diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue new file mode 100644 index 00000000..dc4bddf2 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-row-duration.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row-duration.vue new file mode 100644 index 00000000..7ddf5be0 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-row-duration.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-row-info.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row-info.vue new file mode 100644 index 00000000..74aad991 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-row-info.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/event-initiator-name.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue similarity index 100% rename from src/modules/contacts/modules/timeline/components/utils/event-initiator-name.vue rename to src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue new file mode 100644 index 00000000..a8ccaf74 --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js new file mode 100644 index 00000000..255afcaa --- /dev/null +++ b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js @@ -0,0 +1,10 @@ +const TimelinePinType = Object.freeze({ + CALL_INBOUND: 'CALL_INBOUND', + DAY: 'DAY', + CALL_TRANSFER: 'CALL_TRANSFER', + CHAT_INVITE: 'CHAT_INVITE', + CLOSE: 'CLOSE', + // TODO ... +}); + +export default TimelinePinType; From 627cc2572c3acdfc0e2df97200740b5566c6b974 Mon Sep 17 00:00:00 2001 From: Lera24 Date: Mon, 22 Apr 2024 12:58:55 +0300 Subject: [PATCH 03/28] fix: refactor components[WTEL-4418] --- .../day-row/day-timeline-row-counters.vue | 16 +- .../day-row/day-timeline-row-section.vue | 70 ++--- .../components/day-row/day-timeline-row.vue | 39 +-- .../enums/timelineEventTypes.enum.js | 16 +- .../task-row/call-task-timeline-row.vue | 251 +++++++++++++++++- .../task-row/chat-task-timeline-row.vue | 250 +---------------- .../components/task-row/task-timeline-row.vue | 7 +- .../timeline/components/the-timeline.vue | 19 +- .../timeline/components/timeline-header.vue | 90 ++----- .../components/utils/timeline-pin.vue | 45 +++- .../components/utils/timeline-row-info.vue | 10 +- .../timeline/enums/TimelinePinType.enum.js | 11 +- .../timeline-task-filter-container.vue | 89 +++++++ .../components/timeline-task-filter.vue} | 8 +- 14 files changed, 493 insertions(+), 428 deletions(-) create mode 100644 src/modules/contacts/modules/timeline/modules/filters/components/timeline-task-filter-container.vue rename src/modules/contacts/modules/timeline/{components/event-type-filter.vue => modules/filters/components/timeline-task-filter.vue} (83%) diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue index 2ca47192..3e1eb246 100644 --- a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue @@ -1,13 +1,15 @@ diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue index 697bca4d..d8816d0b 100644 --- a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue @@ -1,13 +1,16 @@ diff --git a/src/modules/contacts/modules/timeline/components/event-type-filter.vue b/src/modules/contacts/modules/timeline/modules/filters/components/timeline-task-filter.vue similarity index 83% rename from src/modules/contacts/modules/timeline/components/event-type-filter.vue rename to src/modules/contacts/modules/timeline/modules/filters/components/timeline-task-filter.vue index 34b9bffb..978b5a71 100644 --- a/src/modules/contacts/modules/timeline/components/event-type-filter.vue +++ b/src/modules/contacts/modules/timeline/modules/filters/components/timeline-task-filter.vue @@ -1,10 +1,10 @@ - - diff --git a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue index 615d5f90..830e7df9 100644 --- a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue @@ -1,7 +1,7 @@ diff --git a/src/modules/contacts/modules/timeline/components/the-timeline.vue b/src/modules/contacts/modules/timeline/components/the-timeline.vue index ec5238f9..86430f1b 100644 --- a/src/modules/contacts/modules/timeline/components/the-timeline.vue +++ b/src/modules/contacts/modules/timeline/components/the-timeline.vue @@ -28,10 +28,9 @@ diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue index 8e4d570f..6b82d817 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue @@ -1,50 +1,45 @@ diff --git a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue index 830e7df9..34d9fa73 100644 --- a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue @@ -7,7 +7,7 @@ diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-points-row-section.vue b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-points-row-section.vue new file mode 100644 index 00000000..d05a0b65 --- /dev/null +++ b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-points-row-section.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue b/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue new file mode 100644 index 00000000..ca8e5b71 --- /dev/null +++ b/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/modules/chats/store/chats.js b/src/modules/contacts/modules/timeline/modules/chats/store/chats.js index a91d4411..baf778d6 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/store/chats.js +++ b/src/modules/contacts/modules/timeline/modules/chats/store/chats.js @@ -19,12 +19,6 @@ const actions = { }); context.commit('SET_TO_HISTORY', { chatId, data: items }); }, - GET_HISTORY_BY_CHAT_ID: async (context, { chatId }) => { - const history = context.getters.HISTORY_BY_CHAT_ID(chatId); - if (history) return history; - await context.dispatch('LOAD_HISTORY', { chatId }); - return context.getters.HISTORY_BY_CHAT_ID(chatId); - }, }; const mutations = { From ee9010d27bcaebfdd361f34a2c2dc656f292994a Mon Sep 17 00:00:00 2001 From: dlohvinov Date: Wed, 24 Apr 2024 13:49:23 +0300 Subject: [PATCH 11/28] feat: enabled timeline filters [WTEL-4465] --- package-lock.json | 14 +++++++------- package.json | 2 +- .../contacts/modules/timeline/api/TimelineAPI.js | 2 +- .../point-row/chat-point-row-dropdown.vue | 13 +++++++++++++ .../chats/components/point-row/chat-point-row.vue | 7 +++---- .../timeline/modules/filters/store/filters.js | 1 + 6 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row-dropdown.vue diff --git a/package-lock.json b/package-lock.json index 27e0a4ec..b0065d34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "vue-i18n": "^9.2.2", "vue-router": "^4.0.3", "vuex": "^4.1.0", - "webitel-sdk": "^24.2.6" + "webitel-sdk": "^24.2.7" }, "devDependencies": { "@vitejs/plugin-vue": "5.0.3", @@ -9538,9 +9538,9 @@ } }, "node_modules/webitel-sdk": { - "version": "24.2.6", - "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.6.tgz", - "integrity": "sha512-pesFApYZJwKXSTAzxuFhkt/aVGqodEbOn0zUlDkALdj/6Za0/dZmAAZ4iBXar8YDUOeLxCnLRLrJxsQVAC7i1w==", + "version": "24.2.7", + "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.7.tgz", + "integrity": "sha512-G258YxHx91uISDrRX7s2jQi0jrWiTP6wv2ZgjPCauUwj53ggotaMY6NHvtu8i1uHU2YA9Vr8wAENIpNee2Q8rw==", "dependencies": { "@types/webrtc": "~0.0.41", "deep-copy": "1.4.2", @@ -16764,9 +16764,9 @@ "peer": true }, "webitel-sdk": { - "version": "24.2.6", - "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.6.tgz", - "integrity": "sha512-pesFApYZJwKXSTAzxuFhkt/aVGqodEbOn0zUlDkALdj/6Za0/dZmAAZ4iBXar8YDUOeLxCnLRLrJxsQVAC7i1w==", + "version": "24.2.7", + "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.7.tgz", + "integrity": "sha512-G258YxHx91uISDrRX7s2jQi0jrWiTP6wv2ZgjPCauUwj53ggotaMY6NHvtu8i1uHU2YA9Vr8wAENIpNee2Q8rw==", "requires": { "@types/webrtc": "~0.0.41", "deep-copy": "1.4.2", diff --git a/package.json b/package.json index 6f28829d..55194e67 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "vue-i18n": "^9.2.2", "vue-router": "^4.0.3", "vuex": "^4.1.0", - "webitel-sdk": "^24.2.6" + "webitel-sdk": "^24.2.7" }, "devDependencies": { "@vitejs/plugin-vue": "5.0.3", diff --git a/src/modules/contacts/modules/timeline/api/TimelineAPI.js b/src/modules/contacts/modules/timeline/api/TimelineAPI.js index 73fc6151..65720689 100644 --- a/src/modules/contacts/modules/timeline/api/TimelineAPI.js +++ b/src/modules/contacts/modules/timeline/api/TimelineAPI.js @@ -39,7 +39,7 @@ const listHandler = (items) => { parentId, dateFrom, dateTo, - // type, + type, ); const { days, next } = applyTransform(response.data, [ snakeToCamel(), diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row-dropdown.vue b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row-dropdown.vue new file mode 100644 index 00000000..0b8b21da --- /dev/null +++ b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row-dropdown.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row.vue b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row.vue index 7fb679f0..34f6abdc 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row.vue +++ b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-row.vue @@ -25,10 +25,8 @@ /> - @@ -40,6 +38,7 @@ import TimelineRow from '../../../../components/utils/timeline-row.vue'; import TimelinePin from '../../../../components/utils/timeline-pin.vue'; import TimelineRowInitiator from '../../../../components/utils/timeline-row-initiator.vue'; import TimelinePinType from '../../../../enums/TimelinePinType.enum.js'; +import ChatPointRowDropdown from './chat-point-row-dropdown.vue'; const props = defineProps({ point: { diff --git a/src/modules/contacts/modules/timeline/modules/filters/store/filters.js b/src/modules/contacts/modules/timeline/modules/filters/store/filters.js index 4121f359..7ea741ca 100644 --- a/src/modules/contacts/modules/timeline/modules/filters/store/filters.js +++ b/src/modules/contacts/modules/timeline/modules/filters/store/filters.js @@ -10,6 +10,7 @@ const state = { value: [WebitelContactsTimelineEventType.Call, WebitelContactsTimelineEventType.Chat], defaultValue: [WebitelContactsTimelineEventType.Call, WebitelContactsTimelineEventType.Chat], }), + page: {}, // FIXME WTF }; const getters = { From 66fa2f1d2593e527db9f0ea1fcf5a029efd84de3 Mon Sep 17 00:00:00 2001 From: Lera24 Date: Wed, 24 Apr 2024 13:52:32 +0300 Subject: [PATCH 12/28] fix: style, classes and locale[WTEL-4418] --- package-lock.json | 14 +++++----- package.json | 2 +- src/app/locale/en/en.js | 5 ++++ src/app/locale/ru/ru.js | 5 ++++ src/app/locale/ua/ua.js | 5 ++++ .../day-row/day-timeline-row-counters.vue | 5 ++-- .../day-row/day-timeline-row-section.vue | 28 ------------------- .../task-row/call-task-timeline-row.vue | 4 +-- .../components/task-row/task-timeline-row.vue | 3 +- .../components/timeline-container.vue | 3 +- .../timeline/components/timeline-header.vue | 14 +++++----- .../components/utils/timeline-pin.vue | 4 ++- .../components/utils/timeline-row-info.vue | 2 +- .../components/timeline-task-type-filter.vue | 18 ++++++------ 14 files changed, 51 insertions(+), 61 deletions(-) diff --git a/package-lock.json b/package-lock.json index b0065d34..b9101972 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@vue/compat": "^3.3.9", "@vuelidate/core": "^2.0.0", "@vuelidate/validators": "^2.0.2", - "@webitel/ui-sdk": "^24.4.25", + "@webitel/ui-sdk": "^24.4.28", "axios": "^1.6.5", "core-js": "^3.8.3", "deep-equal": "^2.2.1", @@ -1794,9 +1794,9 @@ } }, "node_modules/@webitel/ui-sdk": { - "version": "24.4.25", - "resolved": "https://registry.npmjs.org/@webitel/ui-sdk/-/ui-sdk-24.4.25.tgz", - "integrity": "sha512-z2jPqS0Q8igKZ1pCG9SXrtZm9eZ4eLRYwZmkwQN8d11FQ6YUT+qInTWI8LlrIkXdJhiNlqC/HcRaa+yJLiwWVQ==", + "version": "24.4.28", + "resolved": "https://registry.npmjs.org/@webitel/ui-sdk/-/ui-sdk-24.4.28.tgz", + "integrity": "sha512-LRDfoIhYiyWts8jnDU6ZlXwyrM8OgaXoCwuVHeEouaSsHQhxHIX6etid+BE13Nkdr954Xbx1QJ/BCID5eDeHqw==", "dependencies": { "@floating-ui/vue": "^1.0.1", "@vuelidate/core": "^2.0.3", @@ -10864,9 +10864,9 @@ } }, "@webitel/ui-sdk": { - "version": "24.4.25", - "resolved": "https://registry.npmjs.org/@webitel/ui-sdk/-/ui-sdk-24.4.25.tgz", - "integrity": "sha512-z2jPqS0Q8igKZ1pCG9SXrtZm9eZ4eLRYwZmkwQN8d11FQ6YUT+qInTWI8LlrIkXdJhiNlqC/HcRaa+yJLiwWVQ==", + "version": "24.4.28", + "resolved": "https://registry.npmjs.org/@webitel/ui-sdk/-/ui-sdk-24.4.28.tgz", + "integrity": "sha512-LRDfoIhYiyWts8jnDU6ZlXwyrM8OgaXoCwuVHeEouaSsHQhxHIX6etid+BE13Nkdr954Xbx1QJ/BCID5eDeHqw==", "requires": { "@floating-ui/vue": "^1.0.1", "@vuelidate/core": "^2.0.3", diff --git a/package.json b/package.json index 55194e67..28a7ce1b 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "@vue/compat": "^3.3.9", "@vuelidate/core": "^2.0.0", "@vuelidate/validators": "^2.0.2", - "@webitel/ui-sdk": "^24.4.25", + "@webitel/ui-sdk": "^24.4.28", "axios": "^1.6.5", "core-js": "^3.8.3", "deep-equal": "^2.2.1", diff --git a/src/app/locale/en/en.js b/src/app/locale/en/en.js index a304ca07..b3148a9c 100644 --- a/src/app/locale/en/en.js +++ b/src/app/locale/en/en.js @@ -4,6 +4,7 @@ import AccessMode from '../../../modules/contacts/modules/permissions/enums/AccessMode.enum'; import TimelineTaskStatusEnum from '../../../modules/contacts/modules/timeline/enums/TimelineTaskStatus.enum.js'; +import { WebitelContactsTimelineEventType } from 'webitel-sdk'; export default { crm: 'CRM', @@ -25,6 +26,10 @@ export default { [TimelineTaskStatusEnum.TRANSFERRED]: 'Transferred', [TimelineTaskStatusEnum.ENDED]: 'Ended', }, + eventType: { + [WebitelContactsTimelineEventType.Call]: 'Call | Calls', + [WebitelContactsTimelineEventType.Chat]: 'Chat | Chats', + }, }, communications: { communications: 'Communication option | Communication options', diff --git a/src/app/locale/ru/ru.js b/src/app/locale/ru/ru.js index 8141d0c7..88be35a8 100644 --- a/src/app/locale/ru/ru.js +++ b/src/app/locale/ru/ru.js @@ -1,5 +1,6 @@ import ChatGatewayProvider from '@webitel/ui-sdk/src/enums/ChatGatewayProvider/ChatGatewayProvider.enum'; +import { WebitelContactsTimelineEventType } from 'webitel-sdk'; import AccessMode from '../../../modules/contacts/modules/permissions/enums/AccessMode.enum'; import TimelineTaskStatusEnum @@ -25,6 +26,10 @@ export default { [TimelineTaskStatusEnum.TRANSFERRED]: 'Переведено', [TimelineTaskStatusEnum.ENDED]: 'Кінець', }, + eventType: { + [WebitelContactsTimelineEventType.Call]: 'Звонок | Звонки', + [WebitelContactsTimelineEventType.Chat]: 'Чат | Чаты', + }, }, communications: { communications: 'Средство связи | Средства связи', diff --git a/src/app/locale/ua/ua.js b/src/app/locale/ua/ua.js index a232bce7..34c95e6a 100644 --- a/src/app/locale/ua/ua.js +++ b/src/app/locale/ua/ua.js @@ -1,5 +1,6 @@ import ChatGatewayProvider from '@webitel/ui-sdk/src/enums/ChatGatewayProvider/ChatGatewayProvider.enum'; +import { WebitelContactsTimelineEventType } from 'webitel-sdk'; import AccessMode from '../../../modules/contacts/modules/permissions/enums/AccessMode.enum'; import TimelineTaskStatusEnum @@ -25,6 +26,10 @@ export default { [TimelineTaskStatusEnum.TRANSFERRED]: 'Переведено', [TimelineTaskStatusEnum.ENDED]: 'Конец', }, + eventType: { + [WebitelContactsTimelineEventType.Call]: 'Дзвінок | Дзвінки', + [WebitelContactsTimelineEventType.Chat]: 'Чат | Чати', + }, }, communications: { communications: 'Засіб зв\'язку | Засоби зв\'язку', diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue index e4993058..f4313236 100644 --- a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue @@ -1,14 +1,15 @@ diff --git a/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue index 4a98cf71..8fc09489 100644 --- a/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue @@ -22,7 +22,7 @@ + @@ -71,7 +74,7 @@ import TimelineTaskStatus from '../utils/timeline-task-status.vue'; import CallTaskTimelineActions from '../call-task-actions/call-task-timeline-actions.vue'; const props = defineProps({ - item: { + task: { type: Object, required: true, }, @@ -86,10 +89,9 @@ const { flowScheme, queue, id, -} = toRefs(props.item); +} = toRefs(props.task); const openHiddenUsers = ref(false); -const hiddenUsers = computed(() => participants.value.filter((participant, idx) => idx)); const taskType = computed(() => { if (type.value === WebitelContactsTimelineEventType.Chat) { @@ -113,23 +115,35 @@ const taskStatus = computed(() => taskType.value.includes(TimelinePinTypeEnum.CA const taskInitiator = computed(() => { switch (taskType.value) { case TimelinePinTypeEnum.CALL_INBOUND_ON_IVR: - return flowScheme.value.name; + return flowScheme.value; case TimelinePinTypeEnum.CALL_MISSED_ON_QUEUE: - return queue.value.name; + return queue.value; default: - return participants.value[0].name; + return participants.value[0]; } }); + +const hiddenUsers = computed(() => participants.value.filter(participant => participant.id !== taskInitiator.value.id)); diff --git a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue index b0e65b88..6915d117 100644 --- a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue @@ -1,7 +1,7 @@ @@ -12,17 +12,17 @@ import CallTaskTimelineRow from './call-task-timeline-row.vue'; import { WebitelContactsTimelineEventType } from 'webitel-sdk'; const props = defineProps({ - item: { + task: { type: Object, required: true, }, }); const component = computed(() => { - switch (props.item.type) { + switch (props.task.type) { case WebitelContactsTimelineEventType.Chat: return ChatTaskTimelineRow; case WebitelContactsTimelineEventType.Call: return CallTaskTimelineRow; - default: throw new Error(`Unknown item type, ${props.item.type}!`); + default: throw new Error(`Unknown item type, ${props.task.type}!`); } }); diff --git a/src/modules/contacts/modules/timeline/components/timeline-header.vue b/src/modules/contacts/modules/timeline/components/timeline-header.vue index 638317a7..06b80daa 100644 --- a/src/modules/contacts/modules/timeline/components/timeline-header.vue +++ b/src/modules/contacts/modules/timeline/components/timeline-header.vue @@ -50,20 +50,19 @@ const taskCounters = computed(() => { }) }); -const dateFrom = computed(() => props.list[props.list.length - 1]?.dayTimestamp); -const dateTo = computed(() => props.list[0]?.dayTimestamp); - -const displayedDateFrom = computed(() => dateFrom.value || (new Date().setMonth(new Date().getMonth() - 1))); -const displayedDateTo = computed(() => dateTo.value || (new Date().getTime())); +const durationTimeline = computed(() => { + const formatDate = (date) => { + const fullDate = new Date(+date); + const mouth = d(fullDate, { month: 'long' }); + const year = d(fullDate, { year: 'numeric' }); + return `${mouth} ${year}`; + } -const durationTimeline = computed(() => `${formatDate(displayedDateFrom.value)} - ${formatDate(displayedDateTo.value)}`); + const from = props.list.at(-1)?.dayTimestamp || (new Date().setMonth(new Date().getMonth() - 1)); + const to = props.list.at(1)?.dayTimestamp || new Date().getTime(); -function formatDate(date) { - const fullDate = new Date(+date); - const mouth = d(fullDate, { month: 'long' }); - const year = d(fullDate, { year: 'numeric' }); - return `${mouth} ${year}`; -} + return `${formatDate(from)} - ${formatDate(to)}` +}) diff --git a/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js index 906c4e15..9073d44b 100644 --- a/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js +++ b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js @@ -2,10 +2,11 @@ const TimelinePinType = Object.freeze({ DAY: 'DAY', CLOSE: 'CLOSE', CHAT: 'CHAT', + CHAT_GATEWAY: 'CHAT_GATEWAY', CALL_INBOUND: 'CALL_INBOUND', + CALL_INBOUND_ON_IVR: 'CALL_INBOUND_ON_IVR', CALL_OUTBOUND: 'CALL_OUTBOUND', CALL_MISSED: 'CALL_MISSED', - CALL_INBOUND_ON_IVR: 'CALL_INBOUND_ON_IVR', CALL_MISSED_ON_QUEUE: 'CALL_MISSED_ON_QUEUE', CALL_TRANSFER: 'CALL_TRANSFER', diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue b/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue index 96484199..4c8baec4 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue @@ -4,13 +4,13 @@ - + @@ -18,25 +18,35 @@ From c4a755e44c7f2a037e8f94e3be7907d59d651984 Mon Sep 17 00:00:00 2001 From: dlohvinov Date: Thu, 25 Apr 2024 15:36:59 +0300 Subject: [PATCH 15/28] refactor: refactoring timelines in progress [WTEL-4465] --- package-lock.json | 2833 ++++++++++------- package.json | 28 +- .../day-row/day-timeline-row-counters.vue | 8 +- .../day-row/day-timeline-row-section.vue | 35 - .../components/day-row/day-timeline-row.vue | 34 +- .../timeline/components/the-timeline.vue | 19 +- .../timeline/components/timeline-header.vue | 30 +- .../components/utils/timeline-row-info.vue | 2 +- .../components/utils/timeline-task-status.vue | 16 +- .../timeline/enums/TimelineTaskStatus.enum.js | 5 + .../task-row/chat-task-timeline-row.vue | 7 +- .../components/timeline-task-type-filter.vue | 4 +- 12 files changed, 1758 insertions(+), 1263 deletions(-) delete mode 100644 src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue diff --git a/package-lock.json b/package-lock.json index b9101972..ee0d90e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,36 +8,34 @@ "name": "crm", "version": "24.02.0", "dependencies": { - "@vue/compat": "^3.3.9", + "@vue/compat": "^3.4.25", "@vuelidate/core": "^2.0.0", "@vuelidate/validators": "^2.0.2", "@webitel/ui-sdk": "^24.4.28", - "axios": "^1.6.5", - "core-js": "^3.8.3", + "axios": "^1.6.8", "deep-equal": "^2.2.1", "lodash": "^4.17.21", - "vue": "^3.3.9", - "vue-i18n": "^9.2.2", - "vue-router": "^4.0.3", + "vue": "^3.4.25", + "vue-i18n": "^9.13.1", + "vue-router": "^4.3.2", "vuex": "^4.1.0", - "webitel-sdk": "^24.2.7" + "webitel-sdk": "^24.2.9" }, "devDependencies": { "@vitejs/plugin-vue": "5.0.3", "@vitest/coverage-v8": "^1.1.3", - "@vue/test-utils": "^2.0.0-0", + "@vue/test-utils": "^2.4.5", "deep-copy": "^1.4.2", "eslint": "^8.56.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-vue": "^9.20.0", "happy-dom": "^13.0.0", - "husky": "^8.0.3", - "sass": "^1.32.7", + "sass": "^1.75.0", "tslib": "^2.6.2", - "vite": "^5.0.11", - "vite-plugin-node-polyfills": "^0.19.0", + "vite": "=5.1", + "vite-plugin-node-polyfills": "^0.21.0", "vite-plugin-svg-sprite": "^0.5.1", - "vitest": "^1.1.3" + "vitest": "^1.5.2" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -81,9 +79,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -684,60 +682,88 @@ "dev": true }, "node_modules/@intlify/core-base": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz", - "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.13.1.tgz", + "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", "dependencies": { - "@intlify/devtools-if": "9.2.2", - "@intlify/message-compiler": "9.2.2", - "@intlify/shared": "9.2.2", - "@intlify/vue-devtools": "9.2.2" + "@intlify/message-compiler": "9.13.1", + "@intlify/shared": "9.13.1" }, "engines": { - "node": ">= 14" + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@intlify/devtools-if": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", - "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "node_modules/@intlify/message-compiler": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", + "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", "dependencies": { - "@intlify/shared": "9.2.2" + "@intlify/shared": "9.13.1", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">= 14" + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@intlify/message-compiler": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", - "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "node_modules/@intlify/shared": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.13.1.tgz", + "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { - "@intlify/shared": "9.2.2", - "source-map": "0.6.1" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">= 14" + "node": ">=12" } }, - "node_modules/@intlify/shared": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz", - "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@intlify/vue-devtools": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", - "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { - "@intlify/core-base": "9.2.2", - "@intlify/shared": "9.2.2" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@istanbuljs/schema": { @@ -861,6 +887,22 @@ "node": ">= 8" } }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", @@ -1201,13 +1243,13 @@ } }, "node_modules/@vitest/expect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.1.3.tgz", - "integrity": "sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.5.2.tgz", + "integrity": "sha512-rf7MTD1WCoDlN3FfYJ9Llfp0PbdtOMZ3FIF0AVkDnKbp3oiMW1c8AmvRZBcqbAhDUAvF52e9zx4WQM1r3oraVA==", "dev": true, "dependencies": { - "@vitest/spy": "1.1.3", - "@vitest/utils": "1.1.3", + "@vitest/spy": "1.5.2", + "@vitest/utils": "1.5.2", "chai": "^4.3.10" }, "funding": { @@ -1215,12 +1257,12 @@ } }, "node_modules/@vitest/runner": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.1.3.tgz", - "integrity": "sha512-Va2XbWMnhSdDEh/OFxyUltgQuuDRxnarK1hW5QNN4URpQrqq6jtt8cfww/pQQ4i0LjoYxh/3bYWvDFlR9tU73g==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.5.2.tgz", + "integrity": "sha512-7IJ7sJhMZrqx7HIEpv3WrMYcq8ZNz9L6alo81Y6f8hV5mIE6yVZsFoivLZmr0D777klm1ReqonE9LyChdcmw6g==", "dev": true, "dependencies": { - "@vitest/utils": "1.1.3", + "@vitest/utils": "1.5.2", "p-limit": "^5.0.0", "pathe": "^1.1.1" }, @@ -1228,37 +1270,10 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@vitest/snapshot": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.1.3.tgz", - "integrity": "sha512-U0r8pRXsLAdxSVAyGNcqOU2H3Z4Y2dAAGGelL50O0QRMdi1WWeYHdrH/QWpN1e8juWfVKsb8B+pyJwTC+4Gy9w==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.2.tgz", + "integrity": "sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==", "dev": true, "dependencies": { "magic-string": "^0.30.5", @@ -1269,42 +1284,10 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@vitest/snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@vitest/snapshot/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/@vitest/spy": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.1.3.tgz", - "integrity": "sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.2.tgz", + "integrity": "sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==", "dev": true, "dependencies": { "tinyspy": "^2.2.0" @@ -1314,9 +1297,9 @@ } }, "node_modules/@vitest/utils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.1.3.tgz", - "integrity": "sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.5.2.tgz", + "integrity": "sha512-sWOmyofuXLJ85VvXNsroZur7mOJGiQeM0JN3/0D1uU8U9bGFM69X1iqHaRXl6R8BwaLY6yPCogP257zxTzkUdA==", "dev": true, "dependencies": { "diff-sequences": "^29.6.3", @@ -1328,27 +1311,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@vitest/utils/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@vitest/utils/node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -1358,222 +1320,122 @@ "@types/estree": "^1.0.0" } }, - "node_modules/@vitest/utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@vitest/utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/@vue/compat": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compat/-/compat-3.3.9.tgz", - "integrity": "sha512-Ut7sKNk9o/ApJCr4SppyMlUbwy+5n/CCcmJKCvnsoJSOe3WfX2/dBJYVZZQzJtB2e2XV7jRrya4aKRkOp5+KfQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compat/-/compat-3.4.25.tgz", + "integrity": "sha512-Gnl8h5LXzf0nVA82j2hBSi61aiMec/h0uduZmOWfTrBbREgHIPpbfpJrl3XRNbJQX6joMyEwkZr8uL0tClZS+w==", "dependencies": { - "@babel/parser": "^7.23.3", + "@babel/parser": "^7.24.4", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "peerDependencies": { - "vue": "3.3.9" + "vue": "3.4.25" } }, "node_modules/@vue/compiler-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", - "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.25.tgz", + "integrity": "sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==", "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/shared": "3.3.9", + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.25", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", - "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.25.tgz", + "integrity": "sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg==", "dependencies": { - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-core": "3.4.25", + "@vue/shared": "3.4.25" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", - "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", - "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-ssr": "3.3.9", - "@vue/reactivity-transform": "3.3.9", - "@vue/shared": "3.3.9", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.25.tgz", + "integrity": "sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.25", + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25", "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", - "source-map-js": "^1.0.2" + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", - "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.25.tgz", + "integrity": "sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==", "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-dom": "3.4.25", + "@vue/shared": "3.4.25" } }, "node_modules/@vue/devtools-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" }, "node_modules/@vue/reactivity": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", - "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", - "dependencies": { - "@vue/shared": "3.3.9" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", - "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.25.tgz", + "integrity": "sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==", "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" + "@vue/shared": "3.4.25" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", - "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.25.tgz", + "integrity": "sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==", "dependencies": { - "@vue/reactivity": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/reactivity": "3.4.25", + "@vue/shared": "3.4.25" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", - "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.25.tgz", + "integrity": "sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==", "dependencies": { - "@vue/runtime-core": "3.3.9", - "@vue/shared": "3.3.9", - "csstype": "^3.1.2" + "@vue/runtime-core": "3.4.25", + "@vue/shared": "3.4.25", + "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", - "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.25.tgz", + "integrity": "sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==", "dependencies": { - "@vue/compiler-ssr": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25" }, "peerDependencies": { - "vue": "3.3.9" + "vue": "3.4.25" } }, "node_modules/@vue/shared": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", - "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==" + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.25.tgz", + "integrity": "sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==" }, "node_modules/@vue/test-utils": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.3.2.tgz", - "integrity": "sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==", - "dev": true, - "dependencies": { - "js-beautify": "1.14.6" - }, - "optionalDependencies": { - "@vue/compiler-dom": "^3.0.1", - "@vue/server-renderer": "^3.0.1" - }, - "peerDependencies": { - "@vue/compiler-dom": "^3.0.1", - "@vue/server-renderer": "^3.0.1", - "vue": "^3.0.1" - } - }, - "node_modules/@vue/test-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@vue/test-utils/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vue/test-utils/node_modules/js-beautify": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", - "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.13", - "editorconfig": "^0.15.3", - "glob": "^8.0.3", - "nopt": "^6.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@vue/test-utils/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.5.tgz", + "integrity": "sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^2.0.0" } }, "node_modules/@vuelidate/core": { @@ -1964,10 +1826,13 @@ "peer": true }, "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/acorn": { "version": "8.11.3", @@ -2075,6 +1940,18 @@ "node": ">=8" } }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -2281,11 +2158,11 @@ } }, "node_modules/axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -2575,12 +2452,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2596,9 +2479,9 @@ } }, "node_modules/chai": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.0.tgz", - "integrity": "sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", @@ -2780,6 +2663,24 @@ "node": ">=0.10.0" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -3070,9 +2971,9 @@ "peer": true }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/csv-stringify": { "version": "5.6.5", @@ -3222,6 +3123,22 @@ "node": ">=0.10.0" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -3276,7 +3193,16 @@ "wrappy": "1" } }, - "node_modules/diffie-hellman": { + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", @@ -3397,52 +3323,78 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", "dev": true, "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" }, "bin": { "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/editorconfig/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } }, - "node_modules/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, "node_modules/ee-ts": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ee-ts/-/ee-ts-1.0.1.tgz", @@ -3475,6 +3427,12 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -3488,7 +3446,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "engines": { "node": ">=0.12" }, @@ -3544,6 +3501,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -3857,18 +3833,6 @@ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-plugin-vue/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-plugin-vue/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -3893,12 +3857,6 @@ "node": ">=12" } }, - "node_modules/eslint-plugin-vue/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -3936,24 +3894,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -4331,18 +4271,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/execa/node_modules/strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -4539,6 +4467,14 @@ "node": ">=8" } }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -4559,9 +4495,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -4594,6 +4530,22 @@ "node": ">=0.10.0" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -4611,9 +4563,9 @@ } }, "node_modules/formidable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", - "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", "dependencies": { "dezalgo": "^1.0.4", "hexoid": "^1.0.0", @@ -4657,9 +4609,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -4697,14 +4652,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4916,11 +4875,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5049,6 +5008,17 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -5134,21 +5104,6 @@ "node": ">= 6" } }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5475,6 +5430,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -5831,12 +5795,112 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/js-base64": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", "dev": true }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true + }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -5931,14 +5995,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" }, - "node_modules/json-refs/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "engines": { - "node": ">=6" - } - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -6114,15 +6170,23 @@ "get-func-name": "^2.0.1" } }, - "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" } }, "node_modules/magicast": { @@ -6151,25 +6215,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/make-dir/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" + "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" @@ -6178,12 +6230,6 @@ "node": ">=10" } }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6289,6 +6335,17 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6341,6 +6398,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -6598,18 +6664,18 @@ "dev": true }, "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", "dev": true, "dependencies": { - "abbrev": "^1.0.0" + "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/normalize-path": { @@ -6751,9 +6817,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6872,6 +6938,33 @@ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, + "node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -6959,6 +7052,31 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/pathe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", @@ -7040,9 +7158,9 @@ } }, "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -7060,7 +7178,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -7240,6 +7358,20 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -7265,12 +7397,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -7308,11 +7434,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -7338,14 +7464,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/query-string/node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -7417,6 +7535,12 @@ "resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.1.tgz", "integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==" }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -7699,9 +7823,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.63.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.3.tgz", - "integrity": "sha512-ySdXN+DVpfwq49jG1+hmtDslYqpS7SkOR5GpF6o2bmb1RL/xS+wvPmegMvMywyfsmAV6p7TgwXYGrCZIFFbAHg==", + "version": "1.75.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz", + "integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -7746,6 +7870,22 @@ "semver": "bin/semver.js" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -7801,13 +7941,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7819,11 +7963,25 @@ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", - "dev": true + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } }, "node_modules/snapdragon": { "version": "0.8.2", @@ -7962,14 +8120,15 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -8190,6 +8349,71 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -8247,6 +8471,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -8260,12 +8497,12 @@ } }, "node_modules/strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, "dependencies": { - "acorn": "^8.10.0" + "js-tokens": "^9.0.0" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -8275,7 +8512,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz", "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==", - "deprecated": "Please downgrade to v7.1.5 if you need IE/ActiveXObject support OR upgrade to v8.0.0 as we no longer support IE and published an incorrect patch version (see https://github.com/visionmedia/superagent/issues/1731)", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dependencies": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.3", @@ -8306,32 +8543,10 @@ "node": ">= 6" } }, - "node_modules/superagent/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/superagent/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8342,11 +8557,6 @@ "node": ">=10" } }, - "node_modules/superagent/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -8728,18 +8938,18 @@ "dev": true }, "node_modules/tinypool": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz", - "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true, "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", - "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true, "engines": { "node": ">=14.0.0" @@ -9157,13 +9367,13 @@ "dev": true }, "node_modules/vite": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", - "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", + "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", "dev": true, "dependencies": { "esbuild": "^0.19.3", - "postcss": "^8.4.32", + "postcss": "^8.4.35", "rollup": "^4.2.0" }, "bin": { @@ -9212,9 +9422,9 @@ } }, "node_modules/vite-node": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.1.3.tgz", - "integrity": "sha512-BLSO72YAkIUuNrOx+8uznYICJfTEbvBAmWClY3hpath5+h1mbPS5OMn42lrTxXuyCazVyZoDkSRnju78GiVCqA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.5.2.tgz", + "integrity": "sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -9234,9 +9444,9 @@ } }, "node_modules/vite-plugin-node-polyfills": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.19.0.tgz", - "integrity": "sha512-AhdVxAmVnd1doUlIRGUGV6ZRPfB9BvIwDF10oCOmL742IsvsFIAV4tSMxSfu5e0Px0QeJLgWVOSbtHIvblzqMw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", "dev": true, "dependencies": { "@rollup/plugin-inject": "^5.0.5", @@ -9265,18 +9475,17 @@ } }, "node_modules/vitest": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.1.3.tgz", - "integrity": "sha512-2l8om1NOkiA90/Y207PsEvJLYygddsOyr81wLQ20Ra8IlLKbyQncWsGZjnbkyG2KwwuTXLQjEPOJuxGMG8qJBQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.5.2.tgz", + "integrity": "sha512-l9gwIkq16ug3xY7BxHwcBQovLZG75zZL0PlsiYQbf76Rz6QGs54416UWMtC0jXeihvHvcHrf2ROEjkQRVpoZYw==", "dev": true, "dependencies": { - "@vitest/expect": "1.1.3", - "@vitest/runner": "1.1.3", - "@vitest/snapshot": "1.1.3", - "@vitest/spy": "1.1.3", - "@vitest/utils": "1.1.3", - "acorn-walk": "^8.3.1", - "cac": "^6.7.14", + "@vitest/expect": "1.5.2", + "@vitest/runner": "1.5.2", + "@vitest/snapshot": "1.5.2", + "@vitest/spy": "1.5.2", + "@vitest/utils": "1.5.2", + "acorn-walk": "^8.3.2", "chai": "^4.3.10", "debug": "^4.3.4", "execa": "^8.0.1", @@ -9285,11 +9494,11 @@ "pathe": "^1.1.1", "picocolors": "^1.0.0", "std-env": "^3.5.0", - "strip-literal": "^1.3.0", + "strip-literal": "^2.0.0", "tinybench": "^2.5.1", - "tinypool": "^0.8.1", + "tinypool": "^0.8.3", "vite": "^5.0.0", - "vite-node": "1.1.3", + "vite-node": "1.5.2", "why-is-node-running": "^2.2.2" }, "bin": { @@ -9304,8 +9513,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "^1.0.0", - "@vitest/ui": "^1.0.0", + "@vitest/browser": "1.5.2", + "@vitest/ui": "1.5.2", "happy-dom": "*", "jsdom": "*" }, @@ -9337,15 +9546,15 @@ "dev": true }, "node_modules/vue": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", - "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.25.tgz", + "integrity": "sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==", "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-sfc": "3.3.9", - "@vue/runtime-dom": "3.3.9", - "@vue/server-renderer": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-sfc": "3.4.25", + "@vue/runtime-dom": "3.4.25", + "@vue/server-renderer": "3.4.25", + "@vue/shared": "3.4.25" }, "peerDependencies": { "typescript": "*" @@ -9356,6 +9565,12 @@ } } }, + "node_modules/vue-component-type-helpers": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.14.tgz", + "integrity": "sha512-DInfgOyXlMyliyqAAD9frK28tTfch0+tMi4qoWJcZlRxUf+NFAtraJBnAsKLep+FOyLMiajkhfyEb3xLK08i7w==", + "dev": true + }, "node_modules/vue-eslint-parser": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.0.tgz", @@ -9408,18 +9623,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/vue-eslint-parser/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/vue-eslint-parser/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -9435,24 +9638,20 @@ "node": ">=10" } }, - "node_modules/vue-eslint-parser/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/vue-i18n": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz", - "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.13.1.tgz", + "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==", "dependencies": { - "@intlify/core-base": "9.2.2", - "@intlify/shared": "9.2.2", - "@intlify/vue-devtools": "9.2.2", - "@vue/devtools-api": "^6.2.1" + "@intlify/core-base": "9.13.1", + "@intlify/shared": "9.13.1", + "@vue/devtools-api": "^6.5.0" }, "engines": { - "node": ">= 14" + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" }, "peerDependencies": { "vue": "^3.0.0" @@ -9476,11 +9675,11 @@ } }, "node_modules/vue-router": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.2.tgz", - "integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", + "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==", "dependencies": { - "@vue/devtools-api": "^6.5.0" + "@vue/devtools-api": "^6.5.1" }, "funding": { "url": "https://github.com/sponsors/posva" @@ -9538,9 +9737,9 @@ } }, "node_modules/webitel-sdk": { - "version": "24.2.7", - "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.7.tgz", - "integrity": "sha512-G258YxHx91uISDrRX7s2jQi0jrWiTP6wv2ZgjPCauUwj53ggotaMY6NHvtu8i1uHU2YA9Vr8wAENIpNee2Q8rw==", + "version": "24.2.9", + "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.9.tgz", + "integrity": "sha512-R9Clg4m9d1nPkcc4boIQCJZ/yvtC7YPH7bRizej/QDQSM3fqJFozS0xMxJHEZKbF77QyQN95Yt6VXMXjJjfOFQ==", "dependencies": { "@types/webrtc": "~0.0.41", "deep-copy": "1.4.2", @@ -9550,7 +9749,7 @@ "query-string": "7.0.0" }, "peerDependencies": { - "axios": "1.6.5", + "axios": "^1.6.5", "ee-ts": "1.0.1" } }, @@ -9646,37 +9845,146 @@ "is-typed-array": "^1.1.10" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "optional": true, - "peer": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/wrappy": { @@ -9732,6 +10040,11 @@ "node": ">=0.4" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -9775,9 +10088,9 @@ "dev": true }, "@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==" + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==" }, "@babel/runtime": { "version": "7.22.5", @@ -10097,45 +10410,57 @@ "dev": true }, "@intlify/core-base": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz", - "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", - "requires": { - "@intlify/devtools-if": "9.2.2", - "@intlify/message-compiler": "9.2.2", - "@intlify/shared": "9.2.2", - "@intlify/vue-devtools": "9.2.2" - } - }, - "@intlify/devtools-if": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", - "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.13.1.tgz", + "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", "requires": { - "@intlify/shared": "9.2.2" + "@intlify/message-compiler": "9.13.1", + "@intlify/shared": "9.13.1" } }, "@intlify/message-compiler": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", - "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", + "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", "requires": { - "@intlify/shared": "9.2.2", - "source-map": "0.6.1" + "@intlify/shared": "9.13.1", + "source-map-js": "^1.0.2" } }, "@intlify/shared": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz", - "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==" + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.13.1.tgz", + "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==" }, - "@intlify/vue-devtools": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", - "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "requires": { - "@intlify/core-base": "9.2.2", - "@intlify/shared": "9.2.2" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } } }, "@istanbuljs/schema": { @@ -10237,6 +10562,19 @@ "fastq": "^1.6.0" } }, + "@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", @@ -10459,93 +10797,51 @@ } }, "@vitest/expect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.1.3.tgz", - "integrity": "sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.5.2.tgz", + "integrity": "sha512-rf7MTD1WCoDlN3FfYJ9Llfp0PbdtOMZ3FIF0AVkDnKbp3oiMW1c8AmvRZBcqbAhDUAvF52e9zx4WQM1r3oraVA==", "dev": true, "requires": { - "@vitest/spy": "1.1.3", - "@vitest/utils": "1.1.3", + "@vitest/spy": "1.5.2", + "@vitest/utils": "1.5.2", "chai": "^4.3.10" } }, "@vitest/runner": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.1.3.tgz", - "integrity": "sha512-Va2XbWMnhSdDEh/OFxyUltgQuuDRxnarK1hW5QNN4URpQrqq6jtt8cfww/pQQ4i0LjoYxh/3bYWvDFlR9tU73g==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.5.2.tgz", + "integrity": "sha512-7IJ7sJhMZrqx7HIEpv3WrMYcq8ZNz9L6alo81Y6f8hV5mIE6yVZsFoivLZmr0D777klm1ReqonE9LyChdcmw6g==", "dev": true, "requires": { - "@vitest/utils": "1.1.3", + "@vitest/utils": "1.5.2", "p-limit": "^5.0.0", "pathe": "^1.1.1" - }, - "dependencies": { - "p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true - } } }, "@vitest/snapshot": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.1.3.tgz", - "integrity": "sha512-U0r8pRXsLAdxSVAyGNcqOU2H3Z4Y2dAAGGelL50O0QRMdi1WWeYHdrH/QWpN1e8juWfVKsb8B+pyJwTC+4Gy9w==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.2.tgz", + "integrity": "sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==", "dev": true, "requires": { "magic-string": "^0.30.5", "pathe": "^1.1.1", "pretty-format": "^29.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } } }, "@vitest/spy": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.1.3.tgz", - "integrity": "sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.2.tgz", + "integrity": "sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==", "dev": true, "requires": { "tinyspy": "^2.2.0" } }, "@vitest/utils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.1.3.tgz", - "integrity": "sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.5.2.tgz", + "integrity": "sha512-sWOmyofuXLJ85VvXNsroZur7mOJGiQeM0JN3/0D1uU8U9bGFM69X1iqHaRXl6R8BwaLY6yPCogP257zxTzkUdA==", "dev": true, "requires": { "diff-sequences": "^29.6.3", @@ -10554,18 +10850,6 @@ "pretty-format": "^29.7.0" }, "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true - }, "estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -10574,194 +10858,119 @@ "requires": { "@types/estree": "^1.0.0" } - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true } } }, "@vue/compat": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compat/-/compat-3.3.9.tgz", - "integrity": "sha512-Ut7sKNk9o/ApJCr4SppyMlUbwy+5n/CCcmJKCvnsoJSOe3WfX2/dBJYVZZQzJtB2e2XV7jRrya4aKRkOp5+KfQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compat/-/compat-3.4.25.tgz", + "integrity": "sha512-Gnl8h5LXzf0nVA82j2hBSi61aiMec/h0uduZmOWfTrBbREgHIPpbfpJrl3XRNbJQX6joMyEwkZr8uL0tClZS+w==", "requires": { - "@babel/parser": "^7.23.3", + "@babel/parser": "^7.24.4", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "@vue/compiler-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", - "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.25.tgz", + "integrity": "sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==", "requires": { - "@babel/parser": "^7.23.3", - "@vue/shared": "3.3.9", + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.25", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "@vue/compiler-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", - "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.25.tgz", + "integrity": "sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg==", "requires": { - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-core": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/compiler-sfc": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", - "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", - "requires": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-ssr": "3.3.9", - "@vue/reactivity-transform": "3.3.9", - "@vue/shared": "3.3.9", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.25.tgz", + "integrity": "sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==", + "requires": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.25", + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25", "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", - "source-map-js": "^1.0.2" + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" } }, "@vue/compiler-ssr": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", - "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.25.tgz", + "integrity": "sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==", "requires": { - "@vue/compiler-dom": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-dom": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/devtools-api": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" }, "@vue/reactivity": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", - "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", - "requires": { - "@vue/shared": "3.3.9" - } - }, - "@vue/reactivity-transform": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", - "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.25.tgz", + "integrity": "sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==", "requires": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" + "@vue/shared": "3.4.25" } }, "@vue/runtime-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", - "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.25.tgz", + "integrity": "sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==", "requires": { - "@vue/reactivity": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/reactivity": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/runtime-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", - "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.25.tgz", + "integrity": "sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==", "requires": { - "@vue/runtime-core": "3.3.9", - "@vue/shared": "3.3.9", - "csstype": "^3.1.2" + "@vue/runtime-core": "3.4.25", + "@vue/shared": "3.4.25", + "csstype": "^3.1.3" } }, "@vue/server-renderer": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", - "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.25.tgz", + "integrity": "sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==", "requires": { - "@vue/compiler-ssr": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/shared": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", - "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==" + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.25.tgz", + "integrity": "sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==" }, "@vue/test-utils": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.3.2.tgz", - "integrity": "sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.5.tgz", + "integrity": "sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==", "dev": true, "requires": { - "@vue/compiler-dom": "^3.0.1", - "@vue/server-renderer": "^3.0.1", - "js-beautify": "1.14.6" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "js-beautify": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", - "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", - "dev": true, - "requires": { - "config-chain": "^1.1.13", - "editorconfig": "^0.15.3", - "glob": "^8.0.3", - "nopt": "^6.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^2.0.0" } }, "@vuelidate/core": { @@ -10873,7 +11082,7 @@ "@vuelidate/validators": "^2.0.4", "@vuepic/vue-datepicker": "^4.4.0", "@vueuse/components": "^10.7.2", - "axios": "^1.6.5", + "axios": "^1.6.8", "clipboard-copy": "^4.0.1", "csv-stringify": "^5.5.3", "deep-copy": "^1.4.2", @@ -10963,9 +11172,9 @@ "peer": true }, "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true }, "acorn": { @@ -11046,6 +11255,12 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -11200,11 +11415,11 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "requires": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" }, @@ -11447,12 +11662,15 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -11462,9 +11680,9 @@ "dev": true }, "chai": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.0.tgz", - "integrity": "sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -11597,6 +11815,21 @@ "object-visit": "^1.0.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -11844,9 +12077,9 @@ } }, "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "csv-stringify": { "version": "5.6.5", @@ -11963,6 +12196,16 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -12005,6 +12248,12 @@ "wrappy": "1" } }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -12097,45 +12346,56 @@ "domhandler": "^5.0.3" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", "dev": true, "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "brace-expansion": "^2.0.1" } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -12168,6 +12428,12 @@ } } }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -12177,8 +12443,7 @@ "entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" }, "es-abstract": { "version": "1.21.2", @@ -12222,6 +12487,19 @@ "which-typed-array": "^1.1.9" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -12405,21 +12683,6 @@ "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -12659,15 +12922,6 @@ "xml-name-validator": "^4.0.0" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -12682,12 +12936,6 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -12803,12 +13051,6 @@ "mimic-fn": "^4.0.0" } }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, "strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -12975,6 +13217,11 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -12992,9 +13239,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "for-each": { "version": "0.3.3", @@ -13010,6 +13257,16 @@ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -13024,9 +13281,9 @@ } }, "formidable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", - "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", "requires": { "dezalgo": "^1.0.4", "hexoid": "^1.0.0", @@ -13057,9 +13314,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.5", @@ -13085,14 +13342,15 @@ "dev": true }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-stream": { @@ -13248,11 +13506,11 @@ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, "has-proto": { @@ -13346,6 +13604,14 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -13416,12 +13682,6 @@ "debug": "4" } }, - "husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -13655,6 +13915,12 @@ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -13902,12 +14168,80 @@ "istanbul-lib-report": "^3.0.0" } }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "js-base64": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", "dev": true }, + "js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true + }, + "js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -13983,11 +14317,6 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" } } }, @@ -14152,10 +14481,18 @@ "get-func-name": "^2.0.1" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "requires": { "@jridgewell/sourcemap-codec": "^1.4.15" } @@ -14180,15 +14517,6 @@ "semver": "^7.5.3" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -14197,12 +14525,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -14294,6 +14616,11 @@ } } }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -14334,6 +14661,12 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -14534,12 +14867,12 @@ } }, "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", "dev": true, "requires": { - "abbrev": "^1.0.0" + "abbrev": "^2.0.0" } }, "normalize-path": { @@ -14648,9 +14981,9 @@ } }, "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { "version": "1.1.5", @@ -14736,6 +15069,23 @@ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, + "p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + }, + "dependencies": { + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -14808,6 +15158,24 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + } + } + }, "pathe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", @@ -14874,13 +15242,13 @@ "dev": true }, "postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "requires": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "postcss-prefix-selector": { @@ -15035,6 +15403,17 @@ "optional": true, "peer": true }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -15057,12 +15436,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -15099,11 +15472,11 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } }, "query-string": { @@ -15115,13 +15488,6 @@ "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" - }, - "dependencies": { - "filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==" - } } }, "querystring": { @@ -15174,6 +15540,12 @@ "resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.1.tgz", "integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==" }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -15371,9 +15743,9 @@ "dev": true }, "sass": { - "version": "1.63.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.3.tgz", - "integrity": "sha512-ySdXN+DVpfwq49jG1+hmtDslYqpS7SkOR5GpF6o2bmb1RL/xS+wvPmegMvMywyfsmAV6p7TgwXYGrCZIFFbAHg==", + "version": "1.75.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz", + "integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -15403,6 +15775,19 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -15446,13 +15831,14 @@ "dev": true }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "siginfo": { @@ -15461,12 +15847,17 @@ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -15580,12 +15971,13 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" }, "source-map-resolve": { "version": "0.5.3", @@ -15771,6 +16163,53 @@ "safe-buffer": "~5.2.0" } }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } + } + }, "string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -15813,6 +16252,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -15820,12 +16268,12 @@ "dev": true }, "strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, "requires": { - "acorn": "^8.10.0" + "js-tokens": "^9.0.0" } }, "superagent": { @@ -15856,31 +16304,13 @@ "mime-types": "^2.1.12" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - }, "semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -16188,15 +16618,15 @@ "dev": true }, "tinypool": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz", - "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true }, "tinyspy": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", - "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true }, "to-fast-properties": { @@ -16545,21 +16975,21 @@ } }, "vite": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", - "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", + "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", "dev": true, "requires": { "esbuild": "^0.19.3", "fsevents": "~2.3.3", - "postcss": "^8.4.32", + "postcss": "^8.4.35", "rollup": "^4.2.0" } }, "vite-node": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.1.3.tgz", - "integrity": "sha512-BLSO72YAkIUuNrOx+8uznYICJfTEbvBAmWClY3hpath5+h1mbPS5OMn42lrTxXuyCazVyZoDkSRnju78GiVCqA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.5.2.tgz", + "integrity": "sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==", "dev": true, "requires": { "cac": "^6.7.14", @@ -16570,9 +17000,9 @@ } }, "vite-plugin-node-polyfills": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.19.0.tgz", - "integrity": "sha512-AhdVxAmVnd1doUlIRGUGV6ZRPfB9BvIwDF10oCOmL742IsvsFIAV4tSMxSfu5e0Px0QeJLgWVOSbtHIvblzqMw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", "dev": true, "requires": { "@rollup/plugin-inject": "^5.0.5", @@ -16592,18 +17022,17 @@ } }, "vitest": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.1.3.tgz", - "integrity": "sha512-2l8om1NOkiA90/Y207PsEvJLYygddsOyr81wLQ20Ra8IlLKbyQncWsGZjnbkyG2KwwuTXLQjEPOJuxGMG8qJBQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.5.2.tgz", + "integrity": "sha512-l9gwIkq16ug3xY7BxHwcBQovLZG75zZL0PlsiYQbf76Rz6QGs54416UWMtC0jXeihvHvcHrf2ROEjkQRVpoZYw==", "dev": true, "requires": { - "@vitest/expect": "1.1.3", - "@vitest/runner": "1.1.3", - "@vitest/snapshot": "1.1.3", - "@vitest/spy": "1.1.3", - "@vitest/utils": "1.1.3", - "acorn-walk": "^8.3.1", - "cac": "^6.7.14", + "@vitest/expect": "1.5.2", + "@vitest/runner": "1.5.2", + "@vitest/snapshot": "1.5.2", + "@vitest/spy": "1.5.2", + "@vitest/utils": "1.5.2", + "acorn-walk": "^8.3.2", "chai": "^4.3.10", "debug": "^4.3.4", "execa": "^8.0.1", @@ -16612,11 +17041,11 @@ "pathe": "^1.1.1", "picocolors": "^1.0.0", "std-env": "^3.5.0", - "strip-literal": "^1.3.0", + "strip-literal": "^2.0.0", "tinybench": "^2.5.1", - "tinypool": "^0.8.1", + "tinypool": "^0.8.3", "vite": "^5.0.0", - "vite-node": "1.1.3", + "vite-node": "1.5.2", "why-is-node-running": "^2.2.2" } }, @@ -16627,17 +17056,23 @@ "dev": true }, "vue": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", - "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.25.tgz", + "integrity": "sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==", "requires": { - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-sfc": "3.3.9", - "@vue/runtime-dom": "3.3.9", - "@vue/server-renderer": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-sfc": "3.4.25", + "@vue/runtime-dom": "3.4.25", + "@vue/server-renderer": "3.4.25", + "@vue/shared": "3.4.25" } }, + "vue-component-type-helpers": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.14.tgz", + "integrity": "sha512-DInfgOyXlMyliyqAAD9frK28tTfch0+tMi4qoWJcZlRxUf+NFAtraJBnAsKLep+FOyLMiajkhfyEb3xLK08i7w==", + "dev": true + }, "vue-eslint-parser": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.0.tgz", @@ -16669,15 +17104,6 @@ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -16686,24 +17112,17 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, "vue-i18n": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz", - "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.13.1.tgz", + "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==", "requires": { - "@intlify/core-base": "9.2.2", - "@intlify/shared": "9.2.2", - "@intlify/vue-devtools": "9.2.2", - "@vue/devtools-api": "^6.2.1" + "@intlify/core-base": "9.13.1", + "@intlify/shared": "9.13.1", + "@vue/devtools-api": "^6.5.0" } }, "vue-multiselect": { @@ -16718,11 +17137,11 @@ "requires": {} }, "vue-router": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.2.tgz", - "integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", + "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==", "requires": { - "@vue/devtools-api": "^6.5.0" + "@vue/devtools-api": "^6.5.1" } }, "vuex": { @@ -16764,9 +17183,9 @@ "peer": true }, "webitel-sdk": { - "version": "24.2.7", - "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.7.tgz", - "integrity": "sha512-G258YxHx91uISDrRX7s2jQi0jrWiTP6wv2ZgjPCauUwj53ggotaMY6NHvtu8i1uHU2YA9Vr8wAENIpNee2Q8rw==", + "version": "24.2.9", + "resolved": "https://registry.npmjs.org/webitel-sdk/-/webitel-sdk-24.2.9.tgz", + "integrity": "sha512-R9Clg4m9d1nPkcc4boIQCJZ/yvtC7YPH7bRizej/QDQSM3fqJFozS0xMxJHEZKbF77QyQN95Yt6VXMXjJjfOFQ==", "requires": { "@types/webrtc": "~0.0.41", "deep-copy": "1.4.2", @@ -16871,6 +17290,79 @@ "optional": true, "peer": true }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -16907,6 +17399,11 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 28a7ce1b..7f695917 100644 --- a/package.json +++ b/package.json @@ -11,39 +11,33 @@ }, "type": "module", "dependencies": { - "@vue/compat": "^3.3.9", + "@vue/compat": "^3.4.25", "@vuelidate/core": "^2.0.0", "@vuelidate/validators": "^2.0.2", "@webitel/ui-sdk": "^24.4.28", - "axios": "^1.6.5", - "core-js": "^3.8.3", + "axios": "^1.6.8", "deep-equal": "^2.2.1", "lodash": "^4.17.21", - "vue": "^3.3.9", - "vue-i18n": "^9.2.2", - "vue-router": "^4.0.3", + "vue": "^3.4.25", + "vue-i18n": "^9.13.1", + "vue-router": "^4.3.2", "vuex": "^4.1.0", - "webitel-sdk": "^24.2.7" + "webitel-sdk": "^24.2.9" }, "devDependencies": { "@vitejs/plugin-vue": "5.0.3", "@vitest/coverage-v8": "^1.1.3", - "@vue/test-utils": "^2.0.0-0", + "@vue/test-utils": "^2.4.5", "deep-copy": "^1.4.2", "eslint": "^8.56.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-vue": "^9.20.0", "happy-dom": "^13.0.0", - "husky": "^8.0.3", - "sass": "^1.32.7", + "sass": "^1.75.0", "tslib": "^2.6.2", - "vite": "^5.0.11", - "vite-plugin-node-polyfills": "^0.19.0", + "vite": "=5.1", + "vite-plugin-node-polyfills": "^0.21.0", "vite-plugin-svg-sprite": "^0.5.1", - "vitest": "^1.1.3" - }, - "overrides": { - "url": "^0.11.0", - "axios": "^1.6.5" + "vitest": "^1.5.2" } } diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue index f4313236..61c65751 100644 --- a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-counters.vue @@ -1,8 +1,12 @@ diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue deleted file mode 100644 index 0fa98df3..00000000 --- a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row-section.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - - diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue index 76be6130..e98486a5 100644 --- a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue @@ -4,29 +4,45 @@ - - + + - diff --git a/src/modules/contacts/modules/timeline/components/the-timeline.vue b/src/modules/contacts/modules/timeline/components/the-timeline.vue index 4ad6df35..673d9aa7 100644 --- a/src/modules/contacts/modules/timeline/components/the-timeline.vue +++ b/src/modules/contacts/modules/timeline/components/the-timeline.vue @@ -2,7 +2,6 @@ @@ -17,11 +16,14 @@ :src="darkMode ? dummyDark : dummyLight" /> - + @@ -31,10 +33,10 @@ import { computed, provide } from 'vue'; import { useStore } from 'vuex'; import getNamespacedState from '@webitel/ui-sdk/src/store/helpers/getNamespacedState'; +import DayTimelineRow from './day-row/day-timeline-row.vue'; import TimelineContainer from './timeline-container.vue'; import dummyDark from '../assets/timeline-dummy-dark.svg'; import dummyLight from '../assets/timeline-dummy-light.svg'; -import DayTimelineRowSection from './day-row/day-timeline-row-section.vue'; import TimelineHeader from './timeline-header.vue'; const props = defineProps({ @@ -59,7 +61,8 @@ function initializeList() { return store.dispatch(`${timelineNamespace}/INITIALIZE_LIST`); } -initializeList(); +// TODO: uncomment me after fixing filters module +// initializeList(); diff --git a/src/modules/contacts/modules/timeline/modules/chats/store/chats.js b/src/modules/contacts/modules/timeline/modules/chats/store/chats.js index baf778d6..6cab8dee 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/store/chats.js +++ b/src/modules/contacts/modules/timeline/modules/chats/store/chats.js @@ -7,23 +7,21 @@ const state = { }; const getters = { - CONTACT_ID: (s, g, rS, rootGetters) => rootGetters['contacts/card/timeline/PARENT_ID'], - HISTORY_BY_CHAT_ID: (state) => (chatId) => state.historyById[chatId], + HISTORY_BY_CHAT_ID: (state) => (taskId) => state.historyById[taskId], }; const actions = { - LOAD_HISTORY: async (context, { chatId }) => { + LOAD_HISTORY: async (context, { taskId }) => { const { items } = await MessageHistoryAPI.getList({ - contactId: context.getters.CONTACT_ID, - chatId, + taskId, }); - context.commit('SET_TO_HISTORY', { chatId, data: items }); + context.commit('SET_TO_HISTORY', { taskId, data: items }); }, }; const mutations = { - SET_TO_HISTORY: (state, { chatId, data }) => { - state.historyById[chatId] = data; + SET_TO_HISTORY: (state, { taskId, data }) => { + state.historyById[taskId] = data; }, }; From 031de5b7b4c0f5770ec23ecf2ec4846c1abdc7bc Mon Sep 17 00:00:00 2001 From: dlohvinov Date: Thu, 25 Apr 2024 17:21:36 +0300 Subject: [PATCH 17/28] feat: TaskKind enum [WTEL-4465] --- .../timeline/enums/TimelinePinType.enum.js | 29 ++++++++++++++----- .../timeline/enums/TimelineTaskKind.enum.js | 16 ++++++++++ .../chat-point-timeline-row-dropdown.vue | 4 +-- 3 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 src/modules/contacts/modules/timeline/enums/TimelineTaskKind.enum.js diff --git a/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js index 9073d44b..65db7b3a 100644 --- a/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js +++ b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js @@ -1,18 +1,31 @@ +/** + * @name TimelinePinType + * @description Enumerates (ONLY!) the types of timeline pins. + */ + const TimelinePinType = Object.freeze({ - DAY: 'DAY', + // close expanded CLOSE: 'CLOSE', + + // day pin + DAY: 'DAY', + + // reusable icon pins for points inside tasks + USER: 'CONTACT', + AGENT: 'AGENT', + BOT: 'BOT', + + // chat-related pins CHAT: 'CHAT', - CHAT_GATEWAY: 'CHAT_GATEWAY', + CHAT_TRANSFER: 'CHAT_TRANSFER', + CHAT_END: 'CHAT_END', + + + // call-related pins CALL_INBOUND: 'CALL_INBOUND', - CALL_INBOUND_ON_IVR: 'CALL_INBOUND_ON_IVR', CALL_OUTBOUND: 'CALL_OUTBOUND', CALL_MISSED: 'CALL_MISSED', - CALL_MISSED_ON_QUEUE: 'CALL_MISSED_ON_QUEUE', - CALL_TRANSFER: 'CALL_TRANSFER', - CHAT_INVITE: 'CHAT_INVITE', - - // TODO ... }); export default TimelinePinType; diff --git a/src/modules/contacts/modules/timeline/enums/TimelineTaskKind.enum.js b/src/modules/contacts/modules/timeline/enums/TimelineTaskKind.enum.js new file mode 100644 index 00000000..c58520a4 --- /dev/null +++ b/src/modules/contacts/modules/timeline/enums/TimelineTaskKind.enum.js @@ -0,0 +1,16 @@ +/** + * @name TimelineTaskKind + * @description Enumerates kind of task, which is sub-category of task type, like chat, call, email, etc. + */ + +const TimelineTaskKind = Object.freeze({ + CALL_INBOUND: 'CALL_INBOUND', + CALL_OUTBOUND: 'CALL_OUTBOUND', + CALL_MISSED: 'CALL_MISSED', + + CHAT_INBOUND: 'CHAT_INBOUND', + // CHAT_OUTBOUND: 'CHAT_OUTBOUND', + CHAT_ENDED: 'CHAT_ENDED', +}); + +export default TimelineTaskKind; diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row-dropdown.vue b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row-dropdown.vue index 0b8b21da..bd398352 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row-dropdown.vue +++ b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row-dropdown.vue @@ -1,7 +1,7 @@ diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue index 61f5c652..24250678 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue @@ -3,7 +3,6 @@ :is="state.component" :color="state.color" :icon="state.icon" - rounded @click="state.handler && state.handler()" > {{ text }} @@ -17,6 +16,7 @@ import { computed } from 'vue'; import TimelinePinType from '../../enums/TimelinePinType.enum.js'; import TimelineFlowLine from './timeline-flow-line.vue'; +import TimelineRoundedAction from './timeline-rounded-action.vue'; const props = defineProps({ type: { @@ -44,7 +44,7 @@ const handleClick = () => { const stateMap = { [TimelinePinType.CLOSE]: { - component: 'wt-rounded-action', + component: TimelineRoundedAction, icon: 'close', handler: handleClick, }, @@ -70,9 +70,8 @@ const stateMap = { color: 'default', icon: 'bot', }, - [TimelinePinType.CHAT_INBOUND]: { - component: 'wt-rounded-action', + component: TimelineRoundedAction, color: 'chat', icon: 'chat', handler: handleClick, @@ -87,27 +86,20 @@ const stateMap = { color: 'error', icon: 'chat-end', }, - [TimelinePinType.CALL_INBOUND]: { - component: 'wt-rounded-action', - color: 'warning', + component: TimelineRoundedAction, + color: 'primary', icon: 'call-inbound', handler: handleClick, }, [TimelinePinType.CALL_OUTBOUND]: { - component: 'wt-rounded-action', - color: 'success', - icon: 'call-outbound', - handler: handleClick, - }, - [TimelinePinType.CALL_OUTBOUND]: { - component: 'wt-rounded-action', + component: TimelineRoundedAction, color: 'success', icon: 'call-outbound', handler: handleClick, }, [TimelinePinType.CALL_MISSED]: { - component: 'wt-rounded-action', + component: TimelineRoundedAction, color: 'error', icon: 'call-missed', }, diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-rounded-action.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-rounded-action.vue new file mode 100644 index 00000000..bf3eb9bb --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-rounded-action.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue index 2e91f5a0..b598b0d5 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue @@ -26,12 +26,14 @@ -
- -
+ +
+ +
+
@@ -54,38 +56,41 @@ const toggle = () => { }; - From 45373361d5af62b1d4dbfb27631fbde7ad935d72 Mon Sep 17 00:00:00 2001 From: Lera24 Date: Fri, 26 Apr 2024 13:04:33 +0300 Subject: [PATCH 20/28] fix: small refactor[WYEL-4428] --- .../contacts/modules/timeline/components/timeline-header.vue | 3 ++- .../chats/components/task-row/chat-task-timeline-row.vue | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/contacts/modules/timeline/components/timeline-header.vue b/src/modules/contacts/modules/timeline/components/timeline-header.vue index fbf8d2c1..5e2478e0 100644 --- a/src/modules/contacts/modules/timeline/components/timeline-header.vue +++ b/src/modules/contacts/modules/timeline/components/timeline-header.vue @@ -75,7 +75,8 @@ const timelineInterval = computed(() => { justify-content: space-between; align-items: center; padding: var(--spacing-xs) var(--spacing-sm); - background-color: var(--secondary-light-color); + border: 1px solid var(--grey-lighten-1); + border-radius: var(--border-radius); &__duration { @extend %typo-subtitle-2; diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue b/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue index 92eddd22..548fab00 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/modules/chats/components/task-row/chat-task-timeline-row.vue @@ -108,8 +108,8 @@ const pinType = computed(() => { }); const initiator = computed(() => { + if (participants) return participants.value.at(0); if (gateway.value) return gateway.value; - if (participants.value.length) return participants.value.at(0); throw new Error(`No initiator found: ${JSON.stringify(props.task)}`); }); From 3a191527ebc3c64ff6597200e79801d478390e14 Mon Sep 17 00:00:00 2001 From: dlohvinov Date: Fri, 26 Apr 2024 15:33:46 +0300 Subject: [PATCH 21/28] refactor: timeline call components [WTEL-4465] --- .../task-row/call-task-timeline-row.vue | 145 ---------------- .../components/task-row/task-timeline-row.vue | 2 +- .../utils/timeline-rounded-action.vue | 28 ++-- .../utils/timeline-row-duration.vue | 9 +- .../utils/timeline-row-initiator.vue | 79 ++++----- .../components/utils/timeline-task-status.vue | 19 +-- .../enums/TimelineInitiatorType.enum.js | 8 + .../timeline/enums/TimelinePinType.enum.js | 1 + .../{ => modules/calls}/api/HistoryAPI.js | 4 +- .../task-row}/call-task-timeline-actions.vue | 7 +- .../task-row/call-task-timeline-row.vue | 157 ++++++++++++++++++ 11 files changed, 228 insertions(+), 231 deletions(-) delete mode 100644 src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue create mode 100644 src/modules/contacts/modules/timeline/enums/TimelineInitiatorType.enum.js rename src/modules/contacts/modules/timeline/{ => modules/calls}/api/HistoryAPI.js (97%) rename src/modules/contacts/modules/timeline/{components/call-task-actions => modules/calls/components/task-row}/call-task-timeline-actions.vue (94%) create mode 100644 src/modules/contacts/modules/timeline/modules/calls/components/task-row/call-task-timeline-row.vue diff --git a/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue deleted file mode 100644 index efda6413..00000000 --- a/src/modules/contacts/modules/timeline/components/task-row/call-task-timeline-row.vue +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - diff --git a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue index 6915d117..a33e0fc4 100644 --- a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue @@ -8,7 +8,7 @@ - diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-task-status.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-task-status.vue index d3affffb..64217ec4 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-task-status.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-task-status.vue @@ -1,13 +1,9 @@ diff --git a/src/modules/contacts/modules/timeline/enums/TimelineInitiatorType.enum.js b/src/modules/contacts/modules/timeline/enums/TimelineInitiatorType.enum.js new file mode 100644 index 00000000..291e4604 --- /dev/null +++ b/src/modules/contacts/modules/timeline/enums/TimelineInitiatorType.enum.js @@ -0,0 +1,8 @@ +const TimelineInitiatorType = Object.freeze({ + AGENT: 'agent', + CONTACT: 'contact', + BOT: 'bot', + FLOW: 'flow', +}); + +export default TimelineInitiatorType; diff --git a/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js index 2f9e24cb..19c03196 100644 --- a/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js +++ b/src/modules/contacts/modules/timeline/enums/TimelinePinType.enum.js @@ -25,6 +25,7 @@ const TimelinePinType = Object.freeze({ CALL_INBOUND: 'CALL_INBOUND', CALL_OUTBOUND: 'CALL_OUTBOUND', CALL_MISSED: 'CALL_MISSED', + CALL_INBOUND_ON_IVR: 'CALL_INBOUND_ON_IVR', CALL_TRANSFER: 'CALL_TRANSFER', }); diff --git a/src/modules/contacts/modules/timeline/api/HistoryAPI.js b/src/modules/contacts/modules/timeline/modules/calls/api/HistoryAPI.js similarity index 97% rename from src/modules/contacts/modules/timeline/api/HistoryAPI.js rename to src/modules/contacts/modules/timeline/modules/calls/api/HistoryAPI.js index 3ba08022..4bdcc8f9 100644 --- a/src/modules/contacts/modules/timeline/api/HistoryAPI.js +++ b/src/modules/contacts/modules/timeline/modules/calls/api/HistoryAPI.js @@ -9,8 +9,8 @@ import { getDefaultGetListResponse } from '@webitel/ui-sdk/src/api/defaults'; import convertDuration from '@webitel/ui-sdk/src/scripts/convertDuration'; import { CallServiceApiFactory } from 'webitel-sdk'; import * as converters from '@webitel/ui-sdk/src/scripts/caseConverters'; -import configuration from '../../../../../app/api/openAPIConfig'; -import instance from '../../../../../app/api/instance'; +import configuration from '../../../../../../../app/api/openAPIConfig.js'; +import instance from '../../../../../../../app/api/instance.js'; const callService = new CallServiceApiFactory(configuration, '', instance); diff --git a/src/modules/contacts/modules/timeline/components/call-task-actions/call-task-timeline-actions.vue b/src/modules/contacts/modules/timeline/modules/calls/components/task-row/call-task-timeline-actions.vue similarity index 94% rename from src/modules/contacts/modules/timeline/components/call-task-actions/call-task-timeline-actions.vue rename to src/modules/contacts/modules/timeline/modules/calls/components/task-row/call-task-timeline-actions.vue index 3811cfd3..8a0aad30 100644 --- a/src/modules/contacts/modules/timeline/components/call-task-actions/call-task-timeline-actions.vue +++ b/src/modules/contacts/modules/timeline/modules/calls/components/task-row/call-task-timeline-actions.vue @@ -27,13 +27,14 @@ import { computed } from 'vue'; import { useI18n } from 'vue-i18n'; const props = defineProps({ - id: { - type: String, + task: { + type: Object, + required: true, }, }); const { t } = useI18n(); -const historyLink = `${import.meta.env.VITE_HISTORY_URL}/${props.id}`; +const historyLink = `${import.meta.env.VITE_HISTORY_URL}/${props.task.id}`; const options = computed(() => { const openHistory = { diff --git a/src/modules/contacts/modules/timeline/modules/calls/components/task-row/call-task-timeline-row.vue b/src/modules/contacts/modules/timeline/modules/calls/components/task-row/call-task-timeline-row.vue new file mode 100644 index 00000000..42ba86ac --- /dev/null +++ b/src/modules/contacts/modules/timeline/modules/calls/components/task-row/call-task-timeline-row.vue @@ -0,0 +1,157 @@ + + + + + + From 06fbde236cd54ba774c035c92c3930a7c2af97f4 Mon Sep 17 00:00:00 2001 From: dlohvinov Date: Mon, 29 Apr 2024 13:42:12 +0300 Subject: [PATCH 22/28] feat: timeline call points in progress [WTEL-4465] --- .../utils/timeline-row-initiator.vue | 10 +++-- .../point-row/call-point-timeline-row.vue | 22 ++++++++++ .../call-points-timeline-row-section.vue | 44 +++++++++++++++++++ .../task-row/call-task-timeline-row.vue | 9 +++- .../timeline/modules/calls/store/calls.js | 8 ++++ .../timeline/modules/chats/store/chats.js | 35 ++------------- .../store/TimelineTaskPointsModule.js | 40 +++++++++++++++++ .../modules/timeline/store/timeline.js | 2 + 8 files changed, 135 insertions(+), 35 deletions(-) create mode 100644 src/modules/contacts/modules/timeline/modules/calls/components/point-row/call-point-timeline-row.vue create mode 100644 src/modules/contacts/modules/timeline/modules/calls/components/point-row/call-points-timeline-row-section.vue create mode 100644 src/modules/contacts/modules/timeline/modules/calls/store/calls.js create mode 100644 src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue index 8ac75ec5..4b6d5688 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-row-initiator.vue @@ -1,8 +1,8 @@ + + @@ -76,6 +82,7 @@ import TimelinePinType from '../../../../enums/TimelinePinType.enum.js'; import TimelineTaskKind from '../../../../enums/TimelineTaskKind.enum.js'; import TimelineTaskStatusEnum from '../../../../enums/TimelineTaskStatus.enum.js'; import CallTaskTimelineActions from './call-task-timeline-actions.vue'; +import CallPointsTimelineRowSection from '../point-row/call-points-timeline-row-section.vue'; const props = defineProps({ task: { @@ -92,7 +99,7 @@ const { duration, flowScheme, queue, - id, + id: taskId, } = toRefs(props.task); const taskType = computed(() => { diff --git a/src/modules/contacts/modules/timeline/modules/calls/store/calls.js b/src/modules/contacts/modules/timeline/modules/calls/store/calls.js new file mode 100644 index 00000000..a0508ba0 --- /dev/null +++ b/src/modules/contacts/modules/timeline/modules/calls/store/calls.js @@ -0,0 +1,8 @@ +import TimelineTaskPointsModule + from '../../../store/TimelineTaskPointsModule.js'; +import HistoryAPI from '../api/HistoryAPI.js'; + +const calls = new TimelineTaskPointsModule({ apiModule: HistoryAPI }) +.getModule(); + +export default calls; diff --git a/src/modules/contacts/modules/timeline/modules/chats/store/chats.js b/src/modules/contacts/modules/timeline/modules/chats/store/chats.js index 6cab8dee..8c87214c 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/store/chats.js +++ b/src/modules/contacts/modules/timeline/modules/chats/store/chats.js @@ -1,35 +1,8 @@ -import BaseStoreModule - from '@webitel/ui-sdk/src/store/BaseStoreModules/BaseStoreModule'; +import TimelineTaskPointsModule + from '../../../store/TimelineTaskPointsModule.js'; import MessageHistoryAPI from '../api/MessageHistoryAPI.js'; -const state = { - historyById: {}, // by chatId -}; - -const getters = { - HISTORY_BY_CHAT_ID: (state) => (taskId) => state.historyById[taskId], -}; - -const actions = { - LOAD_HISTORY: async (context, { taskId }) => { - const { items } = await MessageHistoryAPI.getList({ - taskId, - }); - context.commit('SET_TO_HISTORY', { taskId, data: items }); - }, -}; - -const mutations = { - SET_TO_HISTORY: (state, { taskId, data }) => { - state.historyById[taskId] = data; - }, -}; - -const chats = new BaseStoreModule().getModule({ - state, - getters, - actions, - mutations, -}); +const chats = new TimelineTaskPointsModule({ apiModule: MessageHistoryAPI }) +.getModule(); export default chats; diff --git a/src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js b/src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js new file mode 100644 index 00000000..f0c27958 --- /dev/null +++ b/src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js @@ -0,0 +1,40 @@ +import BaseStoreModule + from '@webitel/ui-sdk/src/store/BaseStoreModules/BaseStoreModule'; +import MessageHistoryAPI from '../modules/chats/api/MessageHistoryAPI.js'; + +export default class TimelineTaskPointsModule extends BaseStoreModule { + apiModule = null; + + state = { + historyById: {}, // by chatId + }; + + getters = { + HISTORY_BY_CHAT_ID: (state) => (taskId) => state.historyById[taskId], + }; + + actions = { + LOAD_HISTORY: async (context, { taskId }) => { + const { items } = await this.apiModule.getList({ + taskId, + }); + context.commit('SET_TO_HISTORY', { taskId, data: items }); + }, + }; + + mutations = { + SET_TO_HISTORY: (state, { taskId, data }) => { + state.historyById[taskId] = data; + }, + }; + + constructor({ apiModule }) { + super(); + + if (!apiModule) { + throw new Error('TimelineTaskPointsModule: apiModule is required'); + } + + this.apiModule = apiModule; + } +} diff --git a/src/modules/contacts/modules/timeline/store/timeline.js b/src/modules/contacts/modules/timeline/store/timeline.js index a24af8ba..7001ba25 100644 --- a/src/modules/contacts/modules/timeline/store/timeline.js +++ b/src/modules/contacts/modules/timeline/store/timeline.js @@ -6,6 +6,7 @@ import set from 'lodash/set.js'; import TimelineAPI from '../api/TimelineAPI'; import filters from '../modules/filters/store/filters'; import chats from '../modules/chats/store/chats.js'; +import calls from '../modules/calls/store/calls.js'; const state = { dataList: [], @@ -63,6 +64,7 @@ const timeline = new BaseStoreModule() mutations, modules: { chats, + calls, api, filters, }, From a10e9b0ff79ac85850689764d93240cd00e54a71 Mon Sep 17 00:00:00 2001 From: Lera24 Date: Mon, 29 Apr 2024 14:00:20 +0300 Subject: [PATCH 23/28] feature: add eventBus[WTEL-4418] --- .../modules/timeline/components/timeline-header.vue | 12 +++++++++++- .../timeline/components/utils/timeline-row.vue | 13 ++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/modules/contacts/modules/timeline/components/timeline-header.vue b/src/modules/contacts/modules/timeline/components/timeline-header.vue index 5e2478e0..d4d57dc8 100644 --- a/src/modules/contacts/modules/timeline/components/timeline-header.vue +++ b/src/modules/contacts/modules/timeline/components/timeline-header.vue @@ -12,7 +12,10 @@ :calls-count="taskCounters[WebitelContactsTimelineEventType.Call]" :chats-count="taskCounters[WebitelContactsTimelineEventType.Chat]" /> - @@ -25,6 +28,7 @@ import { useI18n } from 'vue-i18n'; import { WebitelContactsTimelineEventType } from 'webitel-sdk'; import { useTableFilters } from '@webitel/ui-sdk/src/modules/Filters/composables/useTableFilters.js'; import TimelineTaskTypeFilter from '../modules/filters/components/timeline-task-type-filter.vue'; +import eventBus from '@webitel/ui-sdk/src/scripts/eventBus'; const props = defineProps({ list: { @@ -34,6 +38,7 @@ const props = defineProps({ }); const namespace = inject('namespace'); +const eventBusObj = inject('eventBusObj', eventBus); const { d, t } = useI18n(); @@ -67,6 +72,11 @@ const timelineInterval = computed(() => { return `${formatDate(from)} - ${formatDate(to)}`; }) + +function closeOpenRows () { + return eventBusObj.$emit('collapse-all') +} + diff --git a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue index e98486a5..a3cbc1ba 100644 --- a/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/day-row/day-timeline-row.vue @@ -24,8 +24,8 @@ diff --git a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row-content-wrapper.vue b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row-content-wrapper.vue new file mode 100644 index 00000000..54d02f4c --- /dev/null +++ b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row-content-wrapper.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue index a33e0fc4..b887fc36 100644 --- a/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/task-row/task-timeline-row.vue @@ -7,9 +7,9 @@ diff --git a/src/modules/contacts/modules/timeline/components/the-timeline.vue b/src/modules/contacts/modules/timeline/components/the-timeline.vue index 7ff8f0e3..bd0e823c 100644 --- a/src/modules/contacts/modules/timeline/components/the-timeline.vue +++ b/src/modules/contacts/modules/timeline/components/the-timeline.vue @@ -1,5 +1,5 @@ diff --git a/src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js b/src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js index f0c27958..125dbbd7 100644 --- a/src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js +++ b/src/modules/contacts/modules/timeline/store/TimelineTaskPointsModule.js @@ -10,7 +10,7 @@ export default class TimelineTaskPointsModule extends BaseStoreModule { }; getters = { - HISTORY_BY_CHAT_ID: (state) => (taskId) => state.historyById[taskId], + GET_HISTORY_BY_ID: (state) => (taskId) => state.historyById[taskId], }; actions = { From a9d14d526fcb3fa55acd3d89ad50f2b41e0e02d4 Mon Sep 17 00:00:00 2001 From: dlohvinov Date: Tue, 30 Apr 2024 13:43:26 +0300 Subject: [PATCH 26/28] refactor: timeline chat points in progress [WTEL-4465] --- .../components/utils/timeline-flow-line.vue | 4 +- .../components/utils/timeline-pin.vue | 3 +- .../components/utils/timeline-row.vue | 2 +- .../timeline/composables/useTaskPoints.js | 23 ++++++++++ .../point-row/chat-point-timeline-row.vue | 43 +++++++++++++------ .../chat-points-timeline-row-section.vue | 20 +++------ 6 files changed, 64 insertions(+), 31 deletions(-) create mode 100644 src/modules/contacts/modules/timeline/composables/useTaskPoints.js diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-flow-line.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-flow-line.vue index d56c48b1..de3184ce 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-flow-line.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-flow-line.vue @@ -11,7 +11,7 @@ const props = defineProps({ color: { type: String, validator: (v) => [ - 'default', // icon color + 'default', // divider color 'success', 'primary', 'error', @@ -28,7 +28,7 @@ const props = defineProps({ width: 1px; &--default { - background-color: var(--icon-color); + background-color: var(--divider-border-color); } &--secondary { diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue index 397d974c..78fe4e29 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-pin.vue @@ -9,7 +9,7 @@ {{ text }} @@ -49,6 +49,7 @@ const stateMap = { component: TimelineRoundedAction, icon: 'close', color: 'secondary', + lineColor: 'default', handler: handleClick, }, diff --git a/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue b/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue index b3f800b2..413b80f0 100644 --- a/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue +++ b/src/modules/contacts/modules/timeline/components/utils/timeline-row.vue @@ -14,7 +14,7 @@
- +
{ + + const store = useStore(); + + const points = computed(() => { + return store.getters[`${namespace}/GET_HISTORY_BY_ID`](taskId); + }); + + function loadHistory() { + return store.dispatch(`${namespace}/LOAD_HISTORY`, { taskId }); + } + + if (!points.value) { + loadHistory(); + } + + return { + points, + }; +}; diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row.vue b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row.vue index 2ce0fed8..615b642a 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row.vue +++ b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-point-timeline-row.vue @@ -2,25 +2,38 @@ + + - @@ -29,33 +29,26 @@ /> - - - diff --git a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-points-timeline-row-section.vue b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-points-timeline-row-section.vue index cf733278..a4fa3d6e 100644 --- a/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-points-timeline-row-section.vue +++ b/src/modules/contacts/modules/timeline/modules/chats/components/point-row/chat-points-timeline-row-section.vue @@ -5,12 +5,17 @@ :key="point.id" :point="point" /> +