From 5b6a526932b0bdc232fd8ac8a05f5c0da378f9c3 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Mon, 29 Jan 2024 15:12:30 +0100 Subject: [PATCH 01/54] refs #5509 feat: VnDms feat: EntryDms --- src/components/FormModel.vue | 2 +- src/components/common/VnDms.vue | 75 ++++++++++++++++++++++++++++++ src/components/ui/VnRow.vue | 8 +++- src/components/ui/VnSubToolbar.vue | 2 +- src/i18n/en/index.js | 4 ++ src/i18n/es/index.js | 4 ++ src/pages/Entry/Card/EntryDms.vue | 6 +++ src/router/modules/entry.js | 11 ++++- 8 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 src/components/common/VnDms.vue create mode 100644 src/pages/Entry/Card/EntryDms.vue diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 4ad566bf8..153c086bb 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -128,7 +128,7 @@ async function save() { try { const body = $props.mapper ? $props.mapper(formData.value) : formData.value; - let response + let response; if ($props.urlCreate) { response = await axios.post($props.urlCreate, body); notify('globals.dataCreated', 'positive'); diff --git a/src/components/common/VnDms.vue b/src/components/common/VnDms.vue new file mode 100644 index 000000000..cdc54b786 --- /dev/null +++ b/src/components/common/VnDms.vue @@ -0,0 +1,75 @@ +<script setup> +import { ref } from 'vue'; +import { useRoute } from 'vue-router'; +import { useI18n } from 'vue-i18n'; + +import FetchData from 'components/FetchData.vue'; +import FormModel from 'components/FormModel.vue'; +import VnRow from 'components/ui/VnRow.vue'; +import VnSelectFilter from 'src/components/common/VnSelectFilter.vue'; +import VnInput from 'src/components/common/VnInput.vue'; + +const route = useRoute(); +const { t } = useI18n(); + +const warehouses = ref(); +const companies = ref(); +const dmsTypes = ref(); +</script> +<template> + <FetchData url="Warehouses" @on-fetch="(data) => (warehouses = data)" auto-load /> + <FetchData url="Companies" @on-fetch="(data) => (companies = data)" auto-load /> + <FetchData url="DmsTypes" @on-fetch="(data) => (dmsTypes = data)" auto-load /> + <FormModel + :url="`Dms/${route.params.id}`" + :url-update="`Claims/updateClaim/${route.params.id}`" + model="dms" + > + <template #form="{ data }"> + <div class="q-gutter-y-ms"> + <VnRow> + <VnInput :label="t('Reference')" v-model="data.reference" /> + <VnSelectFilter + :label="t('globals.company')" + v-model="data.companyFk" + :options="companies" + option-value="id" + option-label="code" + input-debounce="0" + /> + </VnRow> + <VnRow> + <VnSelectFilter + :label="t('globals.warehouse')" + v-model="data.warehouseFk" + :options="warehouses" + option-value="id" + option-label="name" + input-debounce="0" + /> + <VnSelectFilter + :label="t('globals.type')" + v-model="data.dmsTypeFk" + :options="dmsTypes" + option-value="id" + option-label="name" + input-debounce="0" + /> + </VnRow> + <VnRow> + <QInput + :label="t('globals.description')" + v-model="data.description" + type="textarea" + /> + </VnRow> + </div> + </template> + </FormModel> +</template> +<style scoped> +.q-gutter-y-ms { + display: grid; + row-gap: 20px; +} +</style> diff --git a/src/components/ui/VnRow.vue b/src/components/ui/VnRow.vue index c3c951528..e13730e62 100644 --- a/src/components/ui/VnRow.vue +++ b/src/components/ui/VnRow.vue @@ -1,12 +1,16 @@ <template> - <div id="row"> + <div id="row" class="q-gutter-md"> <slot></slot> </div> </template> <style lang="scss" scopped> +#row { + display: grid; + grid-template-columns: 1fr 1fr; +} @media screen and (max-width: 800px) { #row { - flex-direction: column; + grid-template-columns: 1fr; } } </style> diff --git a/src/components/ui/VnSubToolbar.vue b/src/components/ui/VnSubToolbar.vue index 81a1820f1..b314716ce 100644 --- a/src/components/ui/VnSubToolbar.vue +++ b/src/components/ui/VnSubToolbar.vue @@ -1,5 +1,5 @@ <script setup> -import { onMounted, onUnmounted, ref } from 'vue'; +import { onMounted, onUnmounted } from 'vue'; import { useStateStore } from 'stores/useStateStore'; const stateStore = useStateStore(); diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js index 1a7a4c27e..2f680280c 100644 --- a/src/i18n/en/index.js +++ b/src/i18n/en/index.js @@ -64,6 +64,9 @@ export default { markAll: 'Mark all', noResults: 'No results', system: 'System', + warehouse: 'Warehouse', + company: 'Company', + type: 'Type', }, errors: { statusUnauthorized: 'Access denied', @@ -265,6 +268,7 @@ export default { basicData: 'Basic data', buys: 'Buys', notes: 'Notes', + dms: 'File management', log: 'Log', }, list: { diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js index 83de42ee0..023c339a4 100644 --- a/src/i18n/es/index.js +++ b/src/i18n/es/index.js @@ -64,6 +64,9 @@ export default { markAll: 'Marcar todo', noResults: 'Sin resultados', system: 'Sistema', + warehouse: 'Almacén', + company: 'Empresa', + type: 'Tipo', }, errors: { statusUnauthorized: 'Acceso denegado', @@ -264,6 +267,7 @@ export default { basicData: 'Datos básicos', buys: 'Compras', notes: 'Notas', + dms: 'Gestión documental', log: 'Historial', }, list: { diff --git a/src/pages/Entry/Card/EntryDms.vue b/src/pages/Entry/Card/EntryDms.vue new file mode 100644 index 000000000..57e6eff53 --- /dev/null +++ b/src/pages/Entry/Card/EntryDms.vue @@ -0,0 +1,6 @@ +<script setup> +import VnDms from 'src/components/common/VnDms.vue'; +</script> +<template> + <VnDms model="Entry" /> +</template> diff --git a/src/router/modules/entry.js b/src/router/modules/entry.js index 8d25a8e0c..3ac12d953 100644 --- a/src/router/modules/entry.js +++ b/src/router/modules/entry.js @@ -11,7 +11,7 @@ export default { redirect: { name: 'EntryMain' }, menus: { main: ['EntryList'], - card: ['EntryBasicData', 'EntryBuys', 'EntryNotes', 'EntryLog'], + card: ['EntryBasicData', 'EntryBuys', 'EntryNotes', 'EntryDms', 'EntryLog'], }, children: [ { @@ -86,6 +86,15 @@ export default { }, component: () => import('src/pages/Entry/Card/EntryNotes.vue'), }, + { + path: 'dms', + name: 'EntryDms', + meta: { + title: 'dms', + icon: 'cloud_upload', + }, + component: () => import('src/pages/Entry/Card/EntryDms.vue'), + }, { path: 'log', name: 'EntryLog', From 78877556cf5798dc17716c079a3af07d58ad4597 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 31 Jan 2024 12:52:50 +0100 Subject: [PATCH 02/54] refs #6763 click --- src/components/ui/VnTree.vue | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index c382ef9f2..3998135ca 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -1,7 +1,8 @@ <script setup> -import { ref } from 'vue'; +import { ref,computed, } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRouter } from 'vue-router'; +import { useState } from 'src/composables/useState'; import { useQuasar } from 'quasar'; import CreateDepartmentChild from '../CreateDepartmentChild.vue'; @@ -13,6 +14,7 @@ const quasar = useQuasar(); const { t } = useI18n(); const router = useRouter(); const { notify } = useNotify(); +const state = useState(); const treeRef = ref(null); const showCreateNodeFormVal = ref(false); @@ -22,6 +24,7 @@ const expanded = ref([]); const nodes = ref([{ id: null, name: t('Departments'), sons: true, children: [{}] }]); const fetchedChildrensSet = ref(new Set()); +const formData = computed(() => state.get('Tree')); const onNodeExpanded = (nodeKeysArray) => { // Verificar si el nodo ya fue expandido @@ -29,6 +32,7 @@ const onNodeExpanded = (nodeKeysArray) => { fetchedChildrensSet.value.add(nodeKeysArray.at(-1)); fetchNodeLeaves(nodeKeysArray.at(-1)); // Llamar a la función para obtener los nodos hijos } + state.set('Tree', nodeKeysArray.at(-1)); }; const fetchNodeLeaves = async (nodeKey) => { @@ -105,9 +109,12 @@ const redirectToDepartmentSummary = (id) => { class="row justify-between full-width q-pr-md cursor-pointer" @click.stop="redirectToDepartmentSummary(node.id)" > - <span class="text-uppercase"> + <a + :href="`#/department/department/${node.id}/summary`" + color: inherit + > {{ node.name }} - </span> + </a> <div class="row justify-between" style="max-width: max-content"> <QIcon v-if="node.id" @@ -149,6 +156,12 @@ const redirectToDepartmentSummary = (id) => { </QCard> </template> +<style lang="scss" scoped> +a { + color: inherit; + text-decoration: none; +} +</style> <i18n> es: Departments: Departamentos @@ -157,3 +170,4 @@ const redirectToDepartmentSummary = (id) => { Are you sure you want to delete it?: ¿Seguro que quieres eliminarlo? Delete department: Eliminar departamento </i18n> + From 5450f948a3d2714ba011078efdcd0022c29a67c5 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Thu, 1 Feb 2024 12:35:20 +0100 Subject: [PATCH 03/54] refs #6763 fix tree --- src/components/ui/VnTree.vue | 57 +++++++++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 3998135ca..72972de66 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -1,5 +1,5 @@ <script setup> -import { ref,computed, } from 'vue'; +import { onMounted, ref,computed, watch, } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRouter } from 'vue-router'; import { useState } from 'src/composables/useState'; @@ -27,14 +27,45 @@ const fetchedChildrensSet = ref(new Set()); const formData = computed(() => state.get('Tree')); const onNodeExpanded = (nodeKeysArray) => { + console.log('ENTRY',nodeKeysArray) + // Verificar si el nodo ya fue expandido if (!fetchedChildrensSet.value.has(nodeKeysArray.at(-1))) { fetchedChildrensSet.value.add(nodeKeysArray.at(-1)); fetchNodeLeaves(nodeKeysArray.at(-1)); // Llamar a la función para obtener los nodos hijos } - state.set('Tree', nodeKeysArray.at(-1)); + + console.log(expanded.value) + console.log(nodes.value) + console.log(nodes.value[0].children) }; +watch( + ()=> nodes.value, + async(n) => { + console.log('ha entrado',n) + addTree({nodes: n}); + }, + {deep: true} +) + +watch( + ()=> expanded.value, + async(n) => { + console.log('ha entrado', n) + addTree({nodeKeys: n}); + }, + {deep: true} +) + +function addTree(tree){ + const currentTree = state.get('Tree'); + console.log('current', currentTree) + Object.assign(currentTree ?? {}, tree) + console.log('current assign', currentTree) + + state.set('Tree', tree); +} const fetchNodeLeaves = async (nodeKey) => { try { const node = treeRef.value.getNodeByKey(nodeKey); @@ -88,10 +119,19 @@ const onNodeCreated = async () => { await fetchNodeLeaves(creationNodeSelectedId.value); }; -const redirectToDepartmentSummary = (id) => { - if (!id) return; - router.push({ name: 'DepartmentSummary', params: { id } }); -}; +onMounted(async () => { + const tree = state.get('Tree') + if(tree) { + const {nodeKeys, nodes } = tree + console.log(tree, nodeKeys, nodes) + console.log('onMounted', Object.values(nodeKeys)) + console.log('onMounted2', nodes) + nodes.value = nodes + onNodeExpanded(Object.values(nodeKeys)) + expanded.value = nodeKeys + } +}); + </script> <template> @@ -105,12 +145,13 @@ const redirectToDepartmentSummary = (id) => { @update:expanded="onNodeExpanded($event)" > <template #default-header="{ node }"> + {{ node }} <div class="row justify-between full-width q-pr-md cursor-pointer" - @click.stop="redirectToDepartmentSummary(node.id)" + @click.stop="" > <a - :href="`#/department/department/${node.id}/summary`" + :href="node.id && `#/department/department/${node.id}/summary`" color: inherit > {{ node.name }} From c6a9ec54152abf9508eabc39aa16ea1d8334c704 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Fri, 2 Feb 2024 09:55:38 +0100 Subject: [PATCH 04/54] refs #6763 fix changes --- src/components/ui/VnTree.vue | 49 ++++++------------------------------ 1 file changed, 8 insertions(+), 41 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 72972de66..33d096453 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -16,7 +16,7 @@ const router = useRouter(); const { notify } = useNotify(); const state = useState(); -const treeRef = ref(null); +const treeRef = ref(); const showCreateNodeFormVal = ref(false); const creationNodeSelectedId = ref(null); const expanded = ref([]); @@ -24,10 +24,9 @@ const expanded = ref([]); const nodes = ref([{ id: null, name: t('Departments'), sons: true, children: [{}] }]); const fetchedChildrensSet = ref(new Set()); -const formData = computed(() => state.get('Tree')); +// const formData = computed(() => state.get('Tree')); const onNodeExpanded = (nodeKeysArray) => { - console.log('ENTRY',nodeKeysArray) // Verificar si el nodo ya fue expandido if (!fetchedChildrensSet.value.has(nodeKeysArray.at(-1))) { @@ -35,40 +34,13 @@ const onNodeExpanded = (nodeKeysArray) => { fetchNodeLeaves(nodeKeysArray.at(-1)); // Llamar a la función para obtener los nodos hijos } - console.log(expanded.value) - console.log(nodes.value) - console.log(nodes.value[0].children) + state.set('Tree', nodeKeysArray); }; -watch( - ()=> nodes.value, - async(n) => { - console.log('ha entrado',n) - addTree({nodes: n}); - }, - {deep: true} -) - -watch( - ()=> expanded.value, - async(n) => { - console.log('ha entrado', n) - addTree({nodeKeys: n}); - }, - {deep: true} -) - -function addTree(tree){ - const currentTree = state.get('Tree'); - console.log('current', currentTree) - Object.assign(currentTree ?? {}, tree) - console.log('current assign', currentTree) - - state.set('Tree', tree); -} const fetchNodeLeaves = async (nodeKey) => { try { const node = treeRef.value.getNodeByKey(nodeKey); + if (!node || node.sons === 0) return; const params = { parentId: node.id }; @@ -122,13 +94,10 @@ const onNodeCreated = async () => { onMounted(async () => { const tree = state.get('Tree') if(tree) { - const {nodeKeys, nodes } = tree - console.log(tree, nodeKeys, nodes) - console.log('onMounted', Object.values(nodeKeys)) - console.log('onMounted2', nodes) - nodes.value = nodes - onNodeExpanded(Object.values(nodeKeys)) - expanded.value = nodeKeys + for (let n of tree){ + await fetchNodeLeaves(n) + } + expanded.value = tree } }); @@ -145,10 +114,8 @@ onMounted(async () => { @update:expanded="onNodeExpanded($event)" > <template #default-header="{ node }"> - {{ node }} <div class="row justify-between full-width q-pr-md cursor-pointer" - @click.stop="" > <a :href="node.id && `#/department/department/${node.id}/summary`" From 64b7a07d4199353861e86fbd3e8bf119e2a77fea Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Mon, 5 Feb 2024 15:04:13 +0100 Subject: [PATCH 05/54] refs #5509 feat: VnDms FormModel --- src/components/FetchData.vue | 7 --- src/components/FormModel.vue | 9 +++- src/components/common/VnDms.vue | 89 ++++++++++++++++++++++++++----- src/pages/Entry/Card/EntryDms.vue | 3 +- 4 files changed, 86 insertions(+), 22 deletions(-) diff --git a/src/components/FetchData.vue b/src/components/FetchData.vue index 4f5d7a57d..5b3dcbea7 100644 --- a/src/components/FetchData.vue +++ b/src/components/FetchData.vue @@ -59,11 +59,4 @@ async function fetch(fetchFilter = {}) { // } } - -const render = () => { - return h('div', []); -}; </script> -<template> - <render /> -</template> diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 594780220..c3ca8fe98 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -59,6 +59,10 @@ const $props = defineProps({ type: Function, default: null, }, + updateType: { + type: String, + default: 'patch', + }, }); const emit = defineEmits(['onFetch', 'onDataSaved']); @@ -136,7 +140,10 @@ async function save() { response = await axios.post($props.urlCreate, body); notify('globals.dataCreated', 'positive'); } else { - response = await axios.patch($props.urlUpdate || $props.url, body); + response = await axios[$props.updateType]( + $props.urlUpdate || $props.url, + body + ); } emit('onDataSaved', formData.value, response?.data); originalData.value = JSON.parse(JSON.stringify(formData.value)); diff --git a/src/components/common/VnDms.vue b/src/components/common/VnDms.vue index cdc54b786..a3a5dab21 100644 --- a/src/components/common/VnDms.vue +++ b/src/components/common/VnDms.vue @@ -12,26 +12,58 @@ import VnInput from 'src/components/common/VnInput.vue'; const route = useRoute(); const { t } = useI18n(); +const props = defineProps({ + model: { + type: String, + required: true, + }, +}); + const warehouses = ref(); const companies = ref(); const dmsTypes = ref(); +const allowedContentTypes = ref(); +const dms = ref({}); + +function onFileChange(files) { + dms.value.hasFileAttached = !!files; + dms.value.file = files?.name; +} + +function parseDms(data) { + const defaultDms = {}; + + for (let prop in data) { + if (prop.endsWith('Fk')) data[prop.replace('Fk', 'Id')] = data[prop]; + } + console.log(data); + dms.value = data; +} </script> <template> <FetchData url="Warehouses" @on-fetch="(data) => (warehouses = data)" auto-load /> <FetchData url="Companies" @on-fetch="(data) => (companies = data)" auto-load /> <FetchData url="DmsTypes" @on-fetch="(data) => (dmsTypes = data)" auto-load /> + <FetchData + url="DmsContainers/allowedContentTypes" + @on-fetch="(data) => (allowedContentTypes = data.join(','))" + auto-load + /> <FormModel :url="`Dms/${route.params.id}`" - :url-update="`Claims/updateClaim/${route.params.id}`" + update-type="post" + :url-update="`${props.model}/${route.params.id}/uploadFile`" + @on-fetch="parseDms" model="dms" + :auto-load="!!route.params.id" > - <template #form="{ data }"> + <template #form> <div class="q-gutter-y-ms"> <VnRow> - <VnInput :label="t('Reference')" v-model="data.reference" /> + <VnInput :label="t('Reference')" v-model="dms.reference" /> <VnSelectFilter :label="t('globals.company')" - v-model="data.companyFk" + v-model="dms.companyFk" :options="companies" option-value="id" option-label="code" @@ -41,7 +73,7 @@ const dmsTypes = ref(); <VnRow> <VnSelectFilter :label="t('globals.warehouse')" - v-model="data.warehouseFk" + v-model="dms.warehouseFk" :options="warehouses" option-value="id" option-label="name" @@ -49,20 +81,44 @@ const dmsTypes = ref(); /> <VnSelectFilter :label="t('globals.type')" - v-model="data.dmsTypeFk" + v-model="dms.dmsTypeFk" :options="dmsTypes" option-value="id" option-label="name" input-debounce="0" /> </VnRow> - <VnRow> - <QInput - :label="t('globals.description')" - v-model="data.description" - type="textarea" - /> - </VnRow> + <QInput + :label="t('globals.description')" + v-model="dms.description" + type="textarea" + /> + <QFile + :label="t('entry.buys.file')" + v-model="dms.files" + :multiple="false" + accept=".json" + @update:model-value="onFileChange(dms.files)" + class="required" + :display-value="dms.file" + > + <template #prepend> + <QIcon name="vn:attach" class="cursor-pointer"> + <QTooltip>{{ t('Select a file') }}</QTooltip> + </QIcon> + </template> + <template #append> + <QIcon name="info" class="cursor-pointer"> + <QTooltip>{{ + t('contentTypesInfo', { allowedContentTypes }) + }}</QTooltip> + </QIcon> + </template> + </QFile> + <QCheckbox + v-model="dms.hasFile" + :label="t('Generate identifier for original file')" + /> </div> </template> </FormModel> @@ -73,3 +129,10 @@ const dmsTypes = ref(); row-gap: 20px; } </style> +<i18n> +en: + contentTypesInfo: Allowed file types {allowedContentTypes} +es: + contentTypesInfo: Tipos de archivo permitidos {allowedContentTypes} + Generate identifier for original file: Generar identificador para archivo original +</i18n> diff --git a/src/pages/Entry/Card/EntryDms.vue b/src/pages/Entry/Card/EntryDms.vue index 57e6eff53..696c49a34 100644 --- a/src/pages/Entry/Card/EntryDms.vue +++ b/src/pages/Entry/Card/EntryDms.vue @@ -2,5 +2,6 @@ import VnDms from 'src/components/common/VnDms.vue'; </script> <template> - <VnDms model="Entry" /> + <VnDms model="Clients" /> + <!-- CHANGE ME--> </template> From 7175c50bd6ca46830801bfc3a6016de57f69c7a4 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Tue, 6 Feb 2024 09:50:18 +0100 Subject: [PATCH 06/54] refs #6763 popup fix click --- src/components/ui/VnTree.vue | 9 +++++- .../Card/DepartmentDescriptorProxy.vue | 21 ++++++++++++++ .../Card/DepartmentSummaryDialog.vue | 29 +++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/pages/Department/Card/DepartmentDescriptorProxy.vue create mode 100644 src/pages/Department/Card/DepartmentSummaryDialog.vue diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 33d096453..631b501b6 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -4,7 +4,8 @@ import { useI18n } from 'vue-i18n'; import { useRouter } from 'vue-router'; import { useState } from 'src/composables/useState'; import { useQuasar } from 'quasar'; - +import DepartmentSummaryDialog from 'src/pages/Department/Card/DepartmentSummaryDialog.vue'; +import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue'; import CreateDepartmentChild from '../CreateDepartmentChild.vue'; import axios from 'axios'; @@ -116,13 +117,19 @@ onMounted(async () => { <template #default-header="{ node }"> <div class="row justify-between full-width q-pr-md cursor-pointer" + > <a :href="node.id && `#/department/department/${node.id}/summary`" color: inherit + @click.stop.exact="`#/department/department/${node.id}/summary`" + @click.ctrl.stop="`#/department/department/${node.id}/summary`" > {{ node.name }} + </a> + <DepartmentSummaryDialog :id="node.id" /> + <div class="row justify-between" style="max-width: max-content"> <QIcon v-if="node.id" diff --git a/src/pages/Department/Card/DepartmentDescriptorProxy.vue b/src/pages/Department/Card/DepartmentDescriptorProxy.vue new file mode 100644 index 000000000..07a6b6af1 --- /dev/null +++ b/src/pages/Department/Card/DepartmentDescriptorProxy.vue @@ -0,0 +1,21 @@ +<script setup> +import DepartmentDescriptor from './DepartmentDescriptor.vue'; +import DepartmentSummaryDialog from './DepartmentSummaryDialog.vue'; + +const $props = defineProps({ + id: { + type: Number, + required: true, + }, +}); +</script> + +<template> + <QPopupProxy> + <DepartmentDescriptor + v-if="$props.id" + :id="$props.id" + :summary="DepartmentSummaryDialog" + /> + </QPopupProxy> +</template> diff --git a/src/pages/Department/Card/DepartmentSummaryDialog.vue b/src/pages/Department/Card/DepartmentSummaryDialog.vue new file mode 100644 index 000000000..3bf4d7a26 --- /dev/null +++ b/src/pages/Department/Card/DepartmentSummaryDialog.vue @@ -0,0 +1,29 @@ +<script setup> +import { useDialogPluginComponent } from 'quasar'; +import DepartmentSummary from './DepartmentSummary.vue'; + +const $props = defineProps({ + id: { + type: Number, + required: true, + }, +}); + +defineEmits([...useDialogPluginComponent.emits]); + +const { dialogRef, onDialogHide } = useDialogPluginComponent(); +</script> + +<template> + <QDialog ref="dialogRef" @hide="onDialogHide"> + <DepartmentSummary v-if="$props.id" :id="$props.id" /> + </QDialog> +</template> + +<style lang="scss"> +.q-dialog .summary .header { + position: sticky; + z-index: $z-max; + top: 0; +} +</style> From 18b76e5e129f7bb1b4a510640868d2b713947820 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Thu, 8 Feb 2024 07:25:23 +0100 Subject: [PATCH 07/54] refs #5509 feat: VnDmsList --- src/components/common/VnDms.vue | 33 ++++- src/components/common/VnDmsList.vue | 181 ++++++++++++++++++++++++++++ src/pages/Entry/Card/EntryDms.vue | 4 +- 3 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 src/components/common/VnDmsList.vue diff --git a/src/components/common/VnDms.vue b/src/components/common/VnDms.vue index a3a5dab21..169356152 100644 --- a/src/components/common/VnDms.vue +++ b/src/components/common/VnDms.vue @@ -17,12 +17,17 @@ const props = defineProps({ type: String, required: true, }, + defaultDmsCode: { + type: String, + required: true, + }, }); const warehouses = ref(); const companies = ref(); const dmsTypes = ref(); const allowedContentTypes = ref(); +const config = ref({}); const dms = ref({}); function onFileChange(files) { @@ -39,6 +44,25 @@ function parseDms(data) { console.log(data); dms.value = data; } + +function mapperDms(data) { + const formData = new FormData(); + const { files } = data; + if (files) formData.append(files?.name, files); + console.log('data', data); + delete data.files; + + const dms = { + hasFile: false, + hasFileAttached: false, + reference: data.id, + warehouseId: config.value.warehouseFk, + companyId: config.value.companyFk, + dmsTypeId: data.dmsTypeFk, + description: 'ASD', + }; + return [formData, { params: dms }]; +} </script> <template> <FetchData url="Warehouses" @on-fetch="(data) => (warehouses = data)" auto-load /> @@ -49,6 +73,11 @@ function parseDms(data) { @on-fetch="(data) => (allowedContentTypes = data.join(','))" auto-load /> + <FetchData + url="UserConfigs/getUserConfig" + @on-fetch="(data) => (config = data)" + auto-load + /> <FormModel :url="`Dms/${route.params.id}`" update-type="post" @@ -56,6 +85,7 @@ function parseDms(data) { @on-fetch="parseDms" model="dms" :auto-load="!!route.params.id" + :mapper="mapperDms" > <template #form> <div class="q-gutter-y-ms"> @@ -93,11 +123,12 @@ function parseDms(data) { v-model="dms.description" type="textarea" /> + {{ allowedContentTypes }} <QFile :label="t('entry.buys.file')" v-model="dms.files" :multiple="false" - accept=".json" + :accept="allowedContentTypes" @update:model-value="onFileChange(dms.files)" class="required" :display-value="dms.file" diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue new file mode 100644 index 000000000..06078ef17 --- /dev/null +++ b/src/components/common/VnDmsList.vue @@ -0,0 +1,181 @@ +<script setup> +import { ref, computed } from 'vue'; +import { useRoute } from 'vue-router'; +import { useI18n } from 'vue-i18n'; + +import FetchData from 'components/FetchData.vue'; +import FormModel from 'components/FormModel.vue'; +import VnRow from 'components/ui/VnRow.vue'; +import VnSelectFilter from 'src/components/common/VnSelectFilter.vue'; +import VnInput from 'src/components/common/VnInput.vue'; +import { QCheckbox, QBtn } from 'quasar'; + +const route = useRoute(); +const { t } = useI18n(); +const rows = ref(); + +const $props = defineProps({ + model: { + type: String, + required: true, + }, + defaultDmsCode: { + type: String, + required: true, + }, + entity: { + type: String, + default: 'entryFk', + }, +}); + +const dmsFilter = { + include: { + relation: 'dms', + scope: { + fields: [ + 'dmsTypeFk', + 'reference', + 'hardCopyNumber', + 'workerFk', + 'description', + 'hasFile', + 'file', + 'created', + ], + include: [ + { + relation: 'dmsType', + scope: { + fields: ['name'], + }, + }, + { + relation: 'worker', + scope: { + fields: ['id'], + include: { + relation: 'user', + scope: { + fields: ['name'], + }, + }, + }, + }, + ], + }, + }, +}; + +const columns = computed(() => [ + { + align: 'left', + field: 'id', + label: t('id'), + name: 'id', + component: 'span', + }, + { + align: 'left', + field: 'type', + label: t('type'), + name: 'type', + component: 'span', + }, + { + align: 'left', + field: 'order', + label: t('order'), + name: 'order', + component: 'span', + }, + { + align: 'left', + field: 'reference', + label: t('reference'), + name: 'reference', + component: 'span', + }, + { + align: 'left', + field: 'description', + label: t('description'), + name: 'description', + component: 'span', + }, + { + align: 'left', + field: 'hasFile', + label: t('hasFile'), + name: 'hasFile', + component: QCheckbox, + }, + { + align: 'left', + field: 'file', + label: t('file'), + name: 'file', + component: 'span', + }, + { + align: 'center', + field: 'options', + name: 'options', + }, +]); + +function setData(data) { + const newData = data.map((value) => value.dms); + console.log(newData); + rows.value = newData; +} +</script> +<template> + <FetchData + :url="$props.model" + :where="{ [$props.entity]: route.params.id }" + :filter="dmsFilter" + @on-fetch="setData" + auto-load + /> + <QTable + :columns="columns" + :pagination="{ rowsPerPage: 0 }" + :rows="rows" + class="full-width q-mt-md" + hide-bottom + row-key="clientFk" + selection="multiple" + v-model:selected="selected" + > + <template #body-cell="props"> + <QTd :props="props"> + <QTr :props="props" class="cursor-pointer"> + <component + v-if="props.col.component" + :is="props.col.component" + v-bind="props.col.props && props.col.props(props)" + @click="props.col.event(props)" + > + {{ props.value }} + <!-- <QBtn --> + </component> + </QTr> + </QTd> + </template> + asd + </QTable> +</template> +<style scoped> +.q-gutter-y-ms { + display: grid; + row-gap: 20px; +} +</style> +<i18n> +en: + contentTypesInfo: Allowed file types {allowedContentTypes} +es: + contentTypesInfo: Tipos de archivo permitidos {allowedContentTypes} + Generate identifier for original file: Generar identificador para archivo original +</i18n> diff --git a/src/pages/Entry/Card/EntryDms.vue b/src/pages/Entry/Card/EntryDms.vue index 696c49a34..a26811630 100644 --- a/src/pages/Entry/Card/EntryDms.vue +++ b/src/pages/Entry/Card/EntryDms.vue @@ -1,7 +1,7 @@ <script setup> -import VnDms from 'src/components/common/VnDms.vue'; +import VnDmsList from 'src/components/common/VnDmsList.vue'; </script> <template> - <VnDms model="Clients" /> + <VnDmsList model="EntryDms" default-dms-code="entry" /> <!-- CHANGE ME--> </template> From aa4d5bffc36d6c9610de549f4e1d76d591b65b26 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Mon, 12 Feb 2024 15:06:20 +0100 Subject: [PATCH 08/54] refs #5509 feat: VnDms & VnDmsList --- src/components/CrudModel.vue | 17 +- src/components/FormModel.vue | 24 +-- src/components/common/VnDms.vue | 98 +++++++---- src/components/common/VnDmsList.vue | 166 +++++++++++++++--- src/i18n/en/index.js | 17 +- src/i18n/es/index.js | 17 +- src/pages/Claim/ClaimList.vue | 2 +- src/pages/Entry/Card/EntryBuysImport.vue | 2 +- src/pages/Entry/Card/EntryDms.vue | 17 +- src/pages/Entry/Card/EntryNotes.vue | 2 +- src/pages/Entry/EntryLatestBuys.vue | 4 +- src/pages/Order/Card/OrderSummary.vue | 4 +- src/pages/Route/Card/RouteSummary.vue | 2 +- src/pages/Ticket/Card/TicketSummary.vue | 4 +- .../Travel/Card/TravelThermographsForm.vue | 2 +- 15 files changed, 258 insertions(+), 120 deletions(-) diff --git a/src/components/CrudModel.vue b/src/components/CrudModel.vue index 9bb05d439..c8fa5809c 100644 --- a/src/components/CrudModel.vue +++ b/src/components/CrudModel.vue @@ -176,8 +176,8 @@ async function remove(data) { .dialog({ component: VnConfirm, componentProps: { - title: t('confirmDeletion'), - message: t('confirmDeletionMessage'), + title: t('globals.confirmDeletion'), + message: t('globals.confirmDeletionMessage'), newData, ids, }, @@ -317,16 +317,3 @@ watch(formUrl, async () => { color="primary" /> </template> - -<i18n> - { - "en": { - "confirmDeletion": "Confirm deletion", - "confirmDeletionMessage": "Are you sure you want to delete this?" - }, - "es": { - "confirmDeletion": "Confirmar eliminación", - "confirmDeletionMessage": "Seguro que quieres eliminar?" - } - } -</i18n> diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 0c669902f..c33835438 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -59,9 +59,9 @@ const $props = defineProps({ type: Function, default: null, }, - updateType: { - type: String, - default: 'patch', + saveFn: { + type: Function, + default: null, }, }); @@ -79,8 +79,8 @@ onMounted(async () => { }); // Podemos enviarle al form la estructura de data inicial sin necesidad de fetchearla - if ($props.formInitialData && !$props.autoLoad) { - state.set($props.model, $props.formInitialData); + if ($props.formInitialData || !$props.autoLoad) { + state.set($props.model, $props.formInitialData ?? {}); } else { await fetch(); } @@ -142,19 +142,19 @@ async function save() { try { const body = $props.mapper ? $props.mapper(formData.value) : formData.value; let response; - if ($props.urlCreate) { - response = await axios.post($props.urlCreate, body); - notify('globals.dataCreated', 'positive'); - } else { - response = await axios[$props.updateType]( - $props.urlUpdate || $props.url, + if ($props.saveFn) response = await $props.saveFn(body); + else + response = await axios[$props.urlCreate ? 'post' : 'patch']( + $props.urlCreate || $props.urlUpdate || $props.url, body ); - } + if ($props.urlCreate) notify('globals.dataCreated', 'positive'); + emit('onDataSaved', formData.value, response?.data); originalData.value = JSON.parse(JSON.stringify(formData.value)); hasChanges.value = false; } catch (err) { + console.error(err); notify('errors.create', 'negative'); } isLoading.value = false; diff --git a/src/components/common/VnDms.vue b/src/components/common/VnDms.vue index 169356152..6cdca22c5 100644 --- a/src/components/common/VnDms.vue +++ b/src/components/common/VnDms.vue @@ -1,25 +1,35 @@ <script setup> -import { ref } from 'vue'; +import { ref, onMounted } from 'vue'; import { useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; +import axios from 'axios'; import FetchData from 'components/FetchData.vue'; -import FormModel from 'components/FormModel.vue'; import VnRow from 'components/ui/VnRow.vue'; import VnSelectFilter from 'src/components/common/VnSelectFilter.vue'; import VnInput from 'src/components/common/VnInput.vue'; +import FormModelPopup from 'components/FormModelPopup.vue'; const route = useRoute(); const { t } = useI18n(); +const emit = defineEmits(['onDataSaved']); -const props = defineProps({ +const $props = defineProps({ model: { type: String, required: true, }, defaultDmsCode: { type: String, - required: true, + default: null, + }, + formInitialData: { + type: Object, + default: null, + }, + description: { + type: Function, + default: null, }, }); @@ -27,47 +37,67 @@ const warehouses = ref(); const companies = ref(); const dmsTypes = ref(); const allowedContentTypes = ref(); -const config = ref({}); const dms = ref({}); +onMounted(() => defaultData()); function onFileChange(files) { dms.value.hasFileAttached = !!files; dms.value.file = files?.name; } -function parseDms(data) { - const defaultDms = {}; - - for (let prop in data) { - if (prop.endsWith('Fk')) data[prop.replace('Fk', 'Id')] = data[prop]; - } - console.log(data); - dms.value = data; -} - function mapperDms(data) { const formData = new FormData(); const { files } = data; if (files) formData.append(files?.name, files); - console.log('data', data); delete data.files; const dms = { - hasFile: false, - hasFileAttached: false, - reference: data.id, - warehouseId: config.value.warehouseFk, - companyId: config.value.companyFk, + hasFile: !!data.hasFile, + hasFileAttached: data.hasFileAttached, + reference: data.reference, + warehouseId: data.warehouseFk, + companyId: data.companyFk, dmsTypeId: data.dmsTypeFk, - description: 'ASD', + description: data.description, }; return [formData, { params: dms }]; } + +function getUrl() { + if ($props.formInitialData) return 'dms/' + $props.formInitialData.id + '/updateFile'; + return `${$props.model}/${route.params.id}/uploadFile`; +} + +async function save() { + const body = mapperDms(dms.value); + await axios.post(getUrl(), body[0], body[1]); + emit('onDataSaved', body[1].params); +} + +function defaultData() { + if ($props.formInitialData) return (dms.value = $props.formInitialData); + return addDefaultData({ + reference: route.params.id, + description: $props.description && $props.description(dms.value), + }); +} + +function setDmsTypes(data) { + dmsTypes.value = data; + if (!$props.formInitialData && $props.defaultDmsCode) { + const { id } = data.find((dmsType) => dmsType.code == $props.defaultDmsCode); + addDefaultData({ dmsTypeFk: id }); + } +} + +function addDefaultData(data) { + Object.assign(dms.value, data); +} </script> <template> <FetchData url="Warehouses" @on-fetch="(data) => (warehouses = data)" auto-load /> <FetchData url="Companies" @on-fetch="(data) => (companies = data)" auto-load /> - <FetchData url="DmsTypes" @on-fetch="(data) => (dmsTypes = data)" auto-load /> + <FetchData url="DmsTypes" @on-fetch="setDmsTypes" auto-load /> <FetchData url="DmsContainers/allowedContentTypes" @on-fetch="(data) => (allowedContentTypes = data.join(','))" @@ -75,19 +105,16 @@ function mapperDms(data) { /> <FetchData url="UserConfigs/getUserConfig" - @on-fetch="(data) => (config = data)" - auto-load + @on-fetch="addDefaultData" + :auto-load="!$props.formInitialData" /> - <FormModel - :url="`Dms/${route.params.id}`" - update-type="post" - :url-update="`${props.model}/${route.params.id}/uploadFile`" - @on-fetch="parseDms" + <FormModelPopup + :title="t('create')" model="dms" - :auto-load="!!route.params.id" - :mapper="mapperDms" + :form-initial-data="formInitialData" + :save-fn="save" > - <template #form> + <template #form-inputs> <div class="q-gutter-y-ms"> <VnRow> <VnInput :label="t('Reference')" v-model="dms.reference" /> @@ -123,7 +150,6 @@ function mapperDms(data) { v-model="dms.description" type="textarea" /> - {{ allowedContentTypes }} <QFile :label="t('entry.buys.file')" v-model="dms.files" @@ -152,7 +178,7 @@ function mapperDms(data) { /> </div> </template> - </FormModel> + </FormModelPopup> </template> <style scoped> .q-gutter-y-ms { @@ -164,6 +190,6 @@ function mapperDms(data) { en: contentTypesInfo: Allowed file types {allowedContentTypes} es: - contentTypesInfo: Tipos de archivo permitidos {allowedContentTypes} Generate identifier for original file: Generar identificador para archivo original + contentTypesInfo: Tipos de archivo permitidos {allowedContentTypes} </i18n> diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue index 06078ef17..f746fa041 100644 --- a/src/components/common/VnDmsList.vue +++ b/src/components/common/VnDmsList.vue @@ -1,31 +1,43 @@ <script setup> import { ref, computed } from 'vue'; -import { useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; +import { useRoute } from 'vue-router'; import FetchData from 'components/FetchData.vue'; -import FormModel from 'components/FormModel.vue'; -import VnRow from 'components/ui/VnRow.vue'; -import VnSelectFilter from 'src/components/common/VnSelectFilter.vue'; -import VnInput from 'src/components/common/VnInput.vue'; -import { QCheckbox, QBtn } from 'quasar'; +import VnDms from 'src/components/common/VnDms.vue'; +import { downloadFile } from 'src/composables/downloadFile'; +import VnConfirm from 'components/ui/VnConfirm.vue'; +import axios from 'axios'; +import { QCheckbox, QBtn, QInput } from 'quasar'; +import { useQuasar } from 'quasar'; const route = useRoute(); +const quasar = useQuasar(); const { t } = useI18n(); const rows = ref(); +const dmsRef = ref(); +const formDialog = ref({}); const $props = defineProps({ model: { type: String, required: true, }, + updateModel: { + type: String, + default: null, + }, defaultDmsCode: { type: String, required: true, }, - entity: { + filter: { type: String, - default: 'entryFk', + required: true, + }, + description: { + type: Function, + required: true, }, }); @@ -42,6 +54,8 @@ const dmsFilter = { 'hasFile', 'file', 'created', + 'companyFk', + 'warehouseFk', ], include: [ { @@ -65,60 +79,69 @@ const dmsFilter = { ], }, }, + order: ['dmsFk DESC'], }; const columns = computed(() => [ { align: 'left', field: 'id', - label: t('id'), + label: t('globals.id'), name: 'id', component: 'span', }, { align: 'left', field: 'type', - label: t('type'), + label: t('globals.type'), name: 'type', - component: 'span', + component: QInput, + props: (prop) => ({ + readonly: true, + borderless: true, + 'model-value': prop.row.dmsType.name, + }), }, { align: 'left', field: 'order', - label: t('order'), + label: t('globals.order'), name: 'order', component: 'span', }, { align: 'left', field: 'reference', - label: t('reference'), + label: t('globals.reference'), name: 'reference', component: 'span', }, { align: 'left', field: 'description', - label: t('description'), + label: t('globals.description'), name: 'description', component: 'span', }, { align: 'left', field: 'hasFile', - label: t('hasFile'), + label: t('globals.original'), name: 'hasFile', component: QCheckbox, + props: (prop) => ({ + disable: true, + 'model-value': Boolean(prop.value), + }), }, { align: 'left', field: 'file', - label: t('file'), + label: t('globals.file'), name: 'file', component: 'span', }, { - align: 'center', field: 'options', name: 'options', }, @@ -126,15 +149,46 @@ const columns = computed(() => [ function setData(data) { const newData = data.map((value) => value.dms); - console.log(newData); rows.value = newData; } + +function deleteDms(dmsFk) { + quasar + .dialog({ + component: VnConfirm, + componentProps: { + title: t('globals.confirmDeletion'), + message: t('globals.confirmDeletionMessage'), + }, + }) + .onOk(async () => { + await axios.post(`${$props.model}/${dmsFk}/removeFile`); + const index = rows.value.findIndex((row) => row.id == dmsFk); + rows.value.splice(index, 1); + }); +} + +function showFormDialog(dms) { + if (dms) dms = parseDms(dms); + formDialog.value = { + show: true, + dms, + }; +} + +function parseDms(data) { + for (let prop in data) { + if (prop.endsWith('Fk')) data[prop.replace('Fk', 'Id')] = data[prop]; + } + return data; +} </script> <template> <FetchData + ref="dmsRef" :url="$props.model" - :where="{ [$props.entity]: route.params.id }" :filter="dmsFilter" + :where="{ [$props.filter]: route.params.id }" @on-fetch="setData" auto-load /> @@ -145,26 +199,86 @@ function setData(data) { class="full-width q-mt-md" hide-bottom row-key="clientFk" - selection="multiple" - v-model:selected="selected" + :grid="$q.screen.lt.md" > <template #body-cell="props"> <QTd :props="props"> - <QTr :props="props" class="cursor-pointer"> + <QTr :props="props"> <component v-if="props.col.component" :is="props.col.component" v-bind="props.col.props && props.col.props(props)" - @click="props.col.event(props)" > - {{ props.value }} - <!-- <QBtn --> + <span v-if="props.col.component == 'span'">{{ + props.value + }}</span> </component> </QTr> + + <div class="flex justify-center" v-if="props.col.name == 'options'"> + <QBtn + icon="cloud_download" + flat + color="primary" + @click="downloadFile(props.row.id)" + /> + <QBtn + icon="edit" + flat + color="primary" + @click="showFormDialog(props.row)" + /> + <QBtn + icon="delete" + flat + color="primary" + @click="deleteDms(props.row.id)" + /> + </div> </QTd> </template> - asd + <template #item="props"> + <div class="q-pa-xs col-xs-12 col-sm-6 grid-style-transition"> + <QCard + bordered + flat + @keyup.ctrl.enter.stop="claimDevelopmentForm?.saveChanges()" + > + <QCardSection> + <QCheckbox v-model="props.selected" dense /> + </QCardSection> + <QSeparator /> + <QList dense> + <QItem v-for="col in props.cols" :key="col.name"> + <QItemSection> + <component + v-if="col.component" + :is="col.component" + v-bind="col.props && col.props(props)" + > + <span v-if="col.component == 'span'">{{ + `${col.label}:${col.value}` + }}</span> + </component> + </QItemSection> + </QItem> + </QList> + </QCard> + </div> + </template> </QTable> + <QDialog v-model="formDialog.show"> + <VnDms + :model="updateModel ?? model" + :default-dms-code="defaultDmsCode" + :form-initial-data="formDialog.dms" + @on-data-saved="dmsRef.fetch()" + :description="$props.description" + /> + </QDialog> + <QPageSticky position="bottom-right" :offset="[25, 25]"> + <QBtn fab color="primary" icon="add" @click="showFormDialog()" /> + </QPageSticky> </template> <style scoped> .q-gutter-y-ms { diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js index bd13f7b1d..b8b979961 100644 --- a/src/i18n/en/index.js +++ b/src/i18n/en/index.js @@ -64,7 +64,7 @@ export default { markAll: 'Mark all', requiredField: 'Required field', class: 'clase', - type: 'type', + type: 'Type', reason: 'reason', noResults: 'No results', system: 'System', @@ -72,6 +72,13 @@ export default { company: 'Company', fieldRequired: 'Field required', allowedFilesText: 'Allowed file types: { allowedContentTypes }', + confirmDeletion: 'Confirm deletion', + confirmDeletionMessage: 'Are you sure you want to delete this?', + description: 'Description', + id: 'Id', + order: 'Order', + original: 'Original', + file: 'File', }, errors: { statusUnauthorized: 'Access denied', @@ -347,7 +354,6 @@ export default { reference: 'Reference', observations: 'Observations', item: 'Item', - description: 'Description', size: 'Size', packing: 'Packing', grouping: 'Grouping', @@ -362,7 +368,6 @@ export default { }, notes: { observationType: 'Observation type', - description: 'Description', }, descriptor: { agency: 'Agency', @@ -375,7 +380,6 @@ export default { packing: 'Packing', grouping: 'Grouping', quantity: 'Quantity', - description: 'Description', size: 'Size', tags: 'Tags', type: 'Type', @@ -461,7 +465,6 @@ export default { visible: 'Visible', available: 'Available', quantity: 'Quantity', - description: 'Description', price: 'Price', discount: 'Discount', packing: 'Packing', @@ -534,7 +537,6 @@ export default { landed: 'Landed', quantity: 'Quantity', claimed: 'Claimed', - description: 'Description', price: 'Price', discount: 'Discount', total: 'Total', @@ -795,7 +797,6 @@ export default { orderTicketList: 'Order Ticket List', details: 'Details', item: 'Item', - description: 'Description', quantity: 'Quantity', price: 'Price', amount: 'Amount', @@ -1140,7 +1141,6 @@ export default { warehouse: 'Warehouse', travelFileDescription: 'Travel id { travelId }', file: 'File', - description: 'Description', }, }, item: { @@ -1174,7 +1174,6 @@ export default { clone: 'Clone', openCard: 'View', openSummary: 'Summary', - viewDescription: 'Description', }, cardDescriptor: { mainList: 'Main list', diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js index a171e8e2c..1ac6e535c 100644 --- a/src/i18n/es/index.js +++ b/src/i18n/es/index.js @@ -64,7 +64,7 @@ export default { markAll: 'Marcar todo', requiredField: 'Campo obligatorio', class: 'clase', - type: 'tipo', + type: 'Tipo', reason: 'motivo', noResults: 'Sin resultados', system: 'Sistema', @@ -72,6 +72,13 @@ export default { company: 'Empresa', fieldRequired: 'Campo requerido', allowedFilesText: 'Tipos de archivo permitidos: { allowedContentTypes }', + confirmDeletion: 'Confirmar eliminación', + confirmDeletionMessage: '¿Seguro que quieres eliminar?', + description: 'Descripción', + id: 'Id', + order: 'Orden', + original: 'Original', + file: 'Fichero', }, errors: { statusUnauthorized: 'Acceso denegado', @@ -346,7 +353,6 @@ export default { reference: 'Referencia', observations: 'Observaciónes', item: 'Artículo', - description: 'Descripción', size: 'Medida', packing: 'Packing', grouping: 'Grouping', @@ -361,7 +367,6 @@ export default { }, notes: { observationType: 'Tipo de observación', - description: 'Descripción', }, descriptor: { agency: 'Agencia', @@ -374,7 +379,6 @@ export default { packing: 'Packing', grouping: 'Grouping', quantity: 'Cantidad', - description: 'Descripción', size: 'Medida', tags: 'Etiquetas', type: 'Tipo', @@ -460,7 +464,6 @@ export default { visible: 'Visible', available: 'Disponible', quantity: 'Cantidad', - description: 'Descripción', price: 'Precio', discount: 'Descuento', packing: 'Encajado', @@ -533,7 +536,6 @@ export default { landed: 'Entregado', quantity: 'Cantidad', claimed: 'Reclamado', - description: 'Descripción', price: 'Precio', discount: 'Descuento', total: 'Total', @@ -703,7 +705,6 @@ export default { orderTicketList: 'Tickets del pedido', details: 'Detalles', item: 'Item', - description: 'Descripción', quantity: 'Cantidad', price: 'Precio', amount: 'Monto', @@ -1140,7 +1141,6 @@ export default { warehouse: 'Almacén', travelFileDescription: 'Id envío { travelId }', file: 'Fichero', - description: 'Descripción', }, }, item: { @@ -1174,7 +1174,6 @@ export default { clone: 'Clonar', openCard: 'Ficha', openSummary: 'Detalles', - viewDescription: 'Descripción', }, cardDescriptor: { mainList: 'Listado principal', diff --git a/src/pages/Claim/ClaimList.vue b/src/pages/Claim/ClaimList.vue index e9462e7a9..acb7ec3fd 100644 --- a/src/pages/Claim/ClaimList.vue +++ b/src/pages/Claim/ClaimList.vue @@ -116,7 +116,7 @@ function navigate(id) { outline /> <QBtn - :label="t('components.smartCard.viewDescription')" + :label="t('globals.description')" @click.stop class="bg-vn-dark" outline diff --git a/src/pages/Entry/Card/EntryBuysImport.vue b/src/pages/Entry/Card/EntryBuysImport.vue index 21f0beada..5783826ec 100644 --- a/src/pages/Entry/Card/EntryBuysImport.vue +++ b/src/pages/Entry/Card/EntryBuysImport.vue @@ -44,7 +44,7 @@ const columns = computed(() => [ align: 'left', }, { - label: t('entry.buys.description'), + label: t('globals.description'), name: 'description', field: 'description', align: 'left', diff --git a/src/pages/Entry/Card/EntryDms.vue b/src/pages/Entry/Card/EntryDms.vue index a26811630..5e4d66c0c 100644 --- a/src/pages/Entry/Card/EntryDms.vue +++ b/src/pages/Entry/Card/EntryDms.vue @@ -2,6 +2,19 @@ import VnDmsList from 'src/components/common/VnDmsList.vue'; </script> <template> - <VnDmsList model="EntryDms" default-dms-code="entry" /> - <!-- CHANGE ME--> + <VnDmsList + model="EntryDms" + update-model="EntryDms" + default-dms-code="entry" + filter="entryFk" + :description=" + (data) => t('description', { reference: data.reference, id: data.id }) + " + /> </template> +<i18n> + en: + description: Reference {reference} id {id} + es: + description: Referencia {reference} id {id} +</i18n> diff --git a/src/pages/Entry/Card/EntryNotes.vue b/src/pages/Entry/Card/EntryNotes.vue index f56e59253..0d2e5e51a 100644 --- a/src/pages/Entry/Card/EntryNotes.vue +++ b/src/pages/Entry/Card/EntryNotes.vue @@ -63,7 +63,7 @@ onMounted(() => { </div> <div class="col"> <VnInput - :label="t('entry.notes.description')" + :label="t('globals.description')" v-model="row.description" :rules="validate('EntryObservation.description')" /> diff --git a/src/pages/Entry/EntryLatestBuys.vue b/src/pages/Entry/EntryLatestBuys.vue index f4a423f3b..09a6a2f27 100644 --- a/src/pages/Entry/EntryLatestBuys.vue +++ b/src/pages/Entry/EntryLatestBuys.vue @@ -59,7 +59,7 @@ const columns = computed(() => [ align: 'left', }, { - label: t('entry.latestBuys.description'), + label: t('globals.description'), field: 'description', name: 'description', align: 'left', @@ -214,7 +214,7 @@ const editTableCellFormFieldsOptions = [ { field: 'grouping', label: t('entry.latestBuys.grouping') }, { field: 'packageValue', label: t('entry.latestBuys.packageValue') }, { field: 'weight', label: t('entry.latestBuys.weight') }, - { field: 'description', label: t('entry.latestBuys.description') }, + { field: 'description', label: t('globals.description') }, { field: 'size', label: t('entry.latestBuys.size') }, { field: 'weightByPiece', label: t('entry.latestBuys.weightByPiece') }, { field: 'packingOut', label: t('entry.latestBuys.packingOut') }, diff --git a/src/pages/Order/Card/OrderSummary.vue b/src/pages/Order/Card/OrderSummary.vue index 9b26891a1..f9704a480 100644 --- a/src/pages/Order/Card/OrderSummary.vue +++ b/src/pages/Order/Card/OrderSummary.vue @@ -31,7 +31,7 @@ const detailsColumns = ref([ }, { name: 'description', - label: t('order.summary.description'), + label: t('globals.description'), field: (row) => row?.item?.name, }, { @@ -167,7 +167,7 @@ const detailsColumns = ref([ <template #header="props"> <QTr :props="props"> <QTh auto-width>{{ t('order.summary.item') }}</QTh> - <QTh>{{ t('order.summary.description') }}</QTh> + <QTh>{{ t('globals.description') }}</QTh> <QTh auto-width>{{ t('order.summary.quantity') }}</QTh> <QTh auto-width>{{ t('order.summary.price') }}</QTh> <QTh auto-width>{{ t('order.summary.amount') }}</QTh> diff --git a/src/pages/Route/Card/RouteSummary.vue b/src/pages/Route/Card/RouteSummary.vue index a10ca088e..df4495d3a 100644 --- a/src/pages/Route/Card/RouteSummary.vue +++ b/src/pages/Route/Card/RouteSummary.vue @@ -199,7 +199,7 @@ const openBuscaman = async (route, ticket) => { </QCard> <QCard class="vn-one"> <div class="header"> - {{ t('route.summary.description') }} + {{ t('globals.description') }} </div> <p> {{ dashIfEmpty(entity?.route?.description) }} diff --git a/src/pages/Ticket/Card/TicketSummary.vue b/src/pages/Ticket/Card/TicketSummary.vue index fe7dcee9a..f3e01d06b 100644 --- a/src/pages/Ticket/Card/TicketSummary.vue +++ b/src/pages/Ticket/Card/TicketSummary.vue @@ -270,7 +270,7 @@ async function changeState(value) { <QTh auto-width>{{ t('ticket.summary.visible') }}</QTh> <QTh auto-width>{{ t('ticket.summary.available') }}</QTh> <QTh auto-width>{{ t('ticket.summary.quantity') }}</QTh> - <QTh auto-width>{{ t('ticket.summary.description') }}</QTh> + <QTh auto-width>{{ t('globals.description') }}</QTh> <QTh auto-width>{{ t('ticket.summary.price') }}</QTh> <QTh auto-width>{{ t('ticket.summary.discount') }}</QTh> <QTh auto-width>{{ t('globals.amount') }}</QTh> @@ -425,7 +425,7 @@ async function changeState(value) { <template #header="props"> <QTr :props="props"> <QTh auto-width>{{ t('ticket.summary.quantity') }}</QTh> - <QTh auto-width>{{ t('ticket.summary.description') }}</QTh> + <QTh auto-width>{{ t('globals.description') }}</QTh> <QTh auto-width>{{ t('ticket.summary.price') }}</QTh> <QTh auto-width>{{ t('ticket.summary.taxClass') }}</QTh> <QTh auto-width>{{ t('globals.amount') }}</QTh> diff --git a/src/pages/Travel/Card/TravelThermographsForm.vue b/src/pages/Travel/Card/TravelThermographsForm.vue index 6758cb6ff..4462846cb 100644 --- a/src/pages/Travel/Card/TravelThermographsForm.vue +++ b/src/pages/Travel/Card/TravelThermographsForm.vue @@ -300,7 +300,7 @@ const onThermographCreated = async (data) => { <VnRow v-if="viewAction === 'edit'" class="row q-gutter-md q-mb-md"> <div class="col"> <QInput - :label="t('travel.thermographs.description')" + :label="t('globals.description')" type="textarea" v-model="thermographForm.description" fill-input From c2675bfe56e3115efa6c8f3c374aa9c89dc8eca3 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Tue, 13 Feb 2024 11:31:33 +0100 Subject: [PATCH 09/54] refs #6763 fix descriptor --- src/components/ui/VnTree.vue | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 631b501b6..f57456ebd 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -1,19 +1,15 @@ <script setup> -import { onMounted, ref,computed, watch, } from 'vue'; +import { onMounted, ref } from 'vue'; import { useI18n } from 'vue-i18n'; -import { useRouter } from 'vue-router'; import { useState } from 'src/composables/useState'; import { useQuasar } from 'quasar'; -import DepartmentSummaryDialog from 'src/pages/Department/Card/DepartmentSummaryDialog.vue'; import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue'; import CreateDepartmentChild from '../CreateDepartmentChild.vue'; - import axios from 'axios'; import useNotify from 'src/composables/useNotify.js'; const quasar = useQuasar(); const { t } = useI18n(); -const router = useRouter(); const { notify } = useNotify(); const state = useState(); @@ -117,19 +113,16 @@ onMounted(async () => { <template #default-header="{ node }"> <div class="row justify-between full-width q-pr-md cursor-pointer" - + @click.stop.exact="`#/department/department/${node.id}/summary`" + @click.ctrl.stop="`#/department/department/${node.id}/summary`" + :href="node.id && `#/department/department/${node.id}/summary`" + color: inherit > - <a - :href="node.id && `#/department/department/${node.id}/summary`" - color: inherit - @click.stop.exact="`#/department/department/${node.id}/summary`" - @click.ctrl.stop="`#/department/department/${node.id}/summary`" - > + <a> + <DepartmentDescriptorProxy :id="node.id" /> {{ node.name }} </a> - <DepartmentSummaryDialog :id="node.id" /> - <div class="row justify-between" style="max-width: max-content"> <QIcon v-if="node.id" From 43154084529399c6e0c21132fbfb97213396dbd6 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 13 Feb 2024 15:01:24 +0100 Subject: [PATCH 10/54] refs #5509 feat: VnDms description --- src/components/common/VnDms.vue | 26 +++-- src/components/common/VnDmsList.vue | 99 +++++++++++-------- src/pages/Entry/Card/EntryDms.vue | 9 -- .../integration/entry/entryDms.spec.js | 13 +++ 4 files changed, 88 insertions(+), 59 deletions(-) create mode 100644 test/cypress/integration/entry/entryDms.spec.js diff --git a/src/components/common/VnDms.vue b/src/components/common/VnDms.vue index 6cdca22c5..99056556d 100644 --- a/src/components/common/VnDms.vue +++ b/src/components/common/VnDms.vue @@ -27,19 +27,20 @@ const $props = defineProps({ type: Object, default: null, }, - description: { - type: Function, - default: null, - }, }); const warehouses = ref(); const companies = ref(); const dmsTypes = ref(); const allowedContentTypes = ref(); +const inputFileRef = ref(); const dms = ref({}); -onMounted(() => defaultData()); +onMounted(() => { + defaultData(); + if (!$props.formInitialData) + dms.value.description = t($props.model + 'Description', dms.value); +}); function onFileChange(files) { dms.value.hasFileAttached = !!files; dms.value.file = files?.name; @@ -78,7 +79,6 @@ function defaultData() { if ($props.formInitialData) return (dms.value = $props.formInitialData); return addDefaultData({ reference: route.params.id, - description: $props.description && $props.description(dms.value), }); } @@ -151,6 +151,7 @@ function addDefaultData(data) { type="textarea" /> <QFile + ref="inputFileRef" :label="t('entry.buys.file')" v-model="dms.files" :multiple="false" @@ -159,12 +160,14 @@ function addDefaultData(data) { class="required" :display-value="dms.file" > - <template #prepend> - <QIcon name="vn:attach" class="cursor-pointer"> + <template #append> + <QIcon + name="vn:attach" + class="cursor-pointer" + @click="inputFileRef.pickFiles()" + > <QTooltip>{{ t('Select a file') }}</QTooltip> </QIcon> - </template> - <template #append> <QIcon name="info" class="cursor-pointer"> <QTooltip>{{ t('contentTypesInfo', { allowedContentTypes }) @@ -189,7 +192,10 @@ function addDefaultData(data) { <i18n> en: contentTypesInfo: Allowed file types {allowedContentTypes} + EntryDmsDescription: Reference {reference} es: Generate identifier for original file: Generar identificador para archivo original contentTypesInfo: Tipos de archivo permitidos {allowedContentTypes} + EntryDmsDescription: Referencia {reference} + </i18n> diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue index f746fa041..b7e683da9 100644 --- a/src/components/common/VnDmsList.vue +++ b/src/components/common/VnDmsList.vue @@ -2,14 +2,13 @@ import { ref, computed } from 'vue'; import { useI18n } from 'vue-i18n'; import { useRoute } from 'vue-router'; +import { useQuasar, QCheckbox, QBtn, QInput } from 'quasar'; +import axios from 'axios'; import FetchData from 'components/FetchData.vue'; import VnDms from 'src/components/common/VnDms.vue'; -import { downloadFile } from 'src/composables/downloadFile'; import VnConfirm from 'components/ui/VnConfirm.vue'; -import axios from 'axios'; -import { QCheckbox, QBtn, QInput } from 'quasar'; -import { useQuasar } from 'quasar'; +import { downloadFile } from 'src/composables/downloadFile'; const route = useRoute(); const quasar = useQuasar(); @@ -35,10 +34,6 @@ const $props = defineProps({ type: String, required: true, }, - description: { - type: Function, - required: true, - }, }); const dmsFilter = { @@ -144,6 +139,35 @@ const columns = computed(() => [ { field: 'options', name: 'options', + components: [ + { + component: QBtn, + props: () => ({ + icon: 'cloud_download', + flat: true, + color: 'primary', + }), + click: (prop) => downloadFile(prop.row.id), + }, + { + component: QBtn, + props: () => ({ + icon: 'edit', + flat: true, + color: 'primary', + }), + click: (prop) => showFormDialog(prop.row), + }, + { + component: QBtn, + props: () => ({ + icon: 'delete', + flat: true, + color: 'primary', + }), + click: (prop) => deleteDms(prop.row.id), + }, + ], }, ]); @@ -199,7 +223,7 @@ function parseDms(data) { class="full-width q-mt-md" hide-bottom row-key="clientFk" - :grid="$q.screen.lt.md" + :grid="$q.screen.lt.sm" > <template #body-cell="props"> <QTd :props="props"> @@ -216,24 +240,13 @@ function parseDms(data) { </QTr> <div class="flex justify-center" v-if="props.col.name == 'options'"> - <QBtn - icon="cloud_download" - flat - color="primary" - @click="downloadFile(props.row.id)" - /> - <QBtn - icon="edit" - flat - color="primary" - @click="showFormDialog(props.row)" - /> - <QBtn - icon="delete" - flat - color="primary" - @click="deleteDms(props.row.id)" - /> + <div v-for="button of props.col.components" :key="button.id"> + <component + :is="button.component" + v-bind="button.props(props)" + @click="button.click(props)" + /> + </div> </div> </QTd> </template> @@ -244,23 +257,26 @@ function parseDms(data) { flat @keyup.ctrl.enter.stop="claimDevelopmentForm?.saveChanges()" > - <QCardSection> - <QCheckbox v-model="props.selected" dense /> - </QCardSection> <QSeparator /> <QList dense> <QItem v-for="col in props.cols" :key="col.name"> - <QItemSection> - <component - v-if="col.component" - :is="col.component" - v-bind="col.props && col.props(props)" + <div v-if="col.name != 'options'" class="row"> + <span class="labelColor">{{ col.label }}:</span> + <span>{{ col.value }}</span> + </div> + <div v-if="col.name == 'options'" class="row"> + <div + v-for="button of col.components" + :key="button.id" + class="row" > - <span v-if="col.component == 'span'">{{ - `${col.label}:${col.value}` - }}</span> - </component> - </QItemSection> + <component + :is="button.component" + v-bind="button.props(col)" + @click="button.click(col)" + /> + </div> + </div> </QItem> </QList> </QCard> @@ -285,6 +301,9 @@ function parseDms(data) { display: grid; row-gap: 20px; } +.labelColor { + color: var(--vn-label); +} </style> <i18n> en: diff --git a/src/pages/Entry/Card/EntryDms.vue b/src/pages/Entry/Card/EntryDms.vue index 5e4d66c0c..bab1ea6c2 100644 --- a/src/pages/Entry/Card/EntryDms.vue +++ b/src/pages/Entry/Card/EntryDms.vue @@ -7,14 +7,5 @@ import VnDmsList from 'src/components/common/VnDmsList.vue'; update-model="EntryDms" default-dms-code="entry" filter="entryFk" - :description=" - (data) => t('description', { reference: data.reference, id: data.id }) - " /> </template> -<i18n> - en: - description: Reference {reference} id {id} - es: - description: Referencia {reference} id {id} -</i18n> diff --git a/test/cypress/integration/entry/entryDms.spec.js b/test/cypress/integration/entry/entryDms.spec.js new file mode 100644 index 000000000..d9f1d77c0 --- /dev/null +++ b/test/cypress/integration/entry/entryDms.spec.js @@ -0,0 +1,13 @@ +describe('WagonTypeCreate', () => { + const entryId = 1; + beforeEach(() => { + cy.viewport(1920, 1080); + cy.login('developer'); + cy.visit(`/#/entry/${entryId}/dms`); + + }); + + it('should create and delete a new wagon type', () => { + cy.addCard() + }); +}); From 926395a7e75c26123fe16667a5705deb62cfb02d Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 14 Feb 2024 15:31:53 +0100 Subject: [PATCH 11/54] refs #6763 fix tree descriptor --- src/components/ui/VnTree.vue | 87 ++++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 24 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index f57456ebd..8cdba7c2b 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -7,11 +7,13 @@ import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescr import CreateDepartmentChild from '../CreateDepartmentChild.vue'; import axios from 'axios'; import useNotify from 'src/composables/useNotify.js'; +import { useRouter } from 'vue-router'; const quasar = useQuasar(); const { t } = useI18n(); const { notify } = useNotify(); const state = useState(); +const router = useRouter(); const treeRef = ref(); const showCreateNodeFormVal = ref(false); @@ -24,7 +26,10 @@ const fetchedChildrensSet = ref(new Set()); // const formData = computed(() => state.get('Tree')); const onNodeExpanded = (nodeKeysArray) => { - + const lastStateTree = state.get('TreeState'); + if (lastStateTree && lastStateTree) { + !nodeKeysArray.includes(lastStateTree) && nodeKeysArray.push(lastStateTree); + } // Verificar si el nodo ya fue expandido if (!fetchedChildrensSet.value.has(nodeKeysArray.at(-1))) { fetchedChildrensSet.value.add(nodeKeysArray.at(-1)); @@ -35,9 +40,11 @@ const onNodeExpanded = (nodeKeysArray) => { }; const fetchNodeLeaves = async (nodeKey) => { + console.log('nodeKey: ', nodeKey); try { const node = treeRef.value.getNodeByKey(nodeKey); + console.log(node); if (!node || node.sons === 0) return; const params = { parentId: node.id }; @@ -47,11 +54,13 @@ const fetchNodeLeaves = async (nodeKey) => { if (response.data) { node.children = response.data; node.children.forEach((node) => { - if (node.sons) node.children = [{}]; + node.children = node.sons > 0 ? [{}] : null; }); } + + state.set('Tree', node); } catch (err) { - console.error('Error fetching department leaves'); + console.error('Error fetching department leaves', err); throw new Error(); } }; @@ -88,16 +97,46 @@ const onNodeCreated = async () => { await fetchNodeLeaves(creationNodeSelectedId.value); }; -onMounted(async () => { - const tree = state.get('Tree') - if(tree) { - for (let n of tree){ - await fetchNodeLeaves(n) - } - expanded.value = tree - } -}); +onMounted(async (n) => { + const tree = state.get('Tree'); + if (tree) { + console.log('tree: ', tree); + for (let n of tree) { + console.log('n', n); + // setTimeout(async () => { + // await fetchNodeLeaves(n); + // }, 1000); + await fetchNodeLeaves(n); + } + expanded.value = tree; + console.log('expanded.value', expanded.value); + } + treeRef.value.expandAll(); +}); +function handleClick(event, node) { + state.set('TreeState', node.parentFk); + node.id && router.push({ path: `/department/department/${node.id}/summary` }); +} +function handleTab(event, node) { + state.set('TreeState', node.parentFk); + node.id && window.open(`#/department/department/${node.id}/summary`, '_blank'); +} + +function handleRow(event, node) { + switch (event.currentTarget.nodeName.toLowerCase()) { + case 'div': + node.id && + router.push({ path: `#/department/department/${node.id}/summary` }); + break; + + case 'span': + break; + + default: + break; + } +} </script> <template> @@ -109,20 +148,20 @@ onMounted(async () => { label-key="name" v-model:expanded="expanded" @update:expanded="onNodeExpanded($event)" + :default-expand-all="true" > <template #default-header="{ node }"> - <div - class="row justify-between full-width q-pr-md cursor-pointer" - @click.stop.exact="`#/department/department/${node.id}/summary`" - @click.ctrl.stop="`#/department/department/${node.id}/summary`" - :href="node.id && `#/department/department/${node.id}/summary`" - color: inherit - > - <a> + <!-- @click="node.id && router.push({path:`#/department/department/${node.id}/summary`})" --> + <div class="row justify-between full-width q-pr-md cursor-pointer"> + <div> + <span @click="handleRow($event, node)"> {{ node.name }} </span> <DepartmentDescriptorProxy :id="node.id" /> - {{ node.name }} - - </a> + </div> + <div + @click.stop.exact="handleClick($event, node)" + @click.ctrl.stop="handleTab($event, node)" + style="flex-grow: 1; width: 10px" + ></div> <div class="row justify-between" style="max-width: max-content"> <QIcon v-if="node.id" @@ -151,6 +190,7 @@ onMounted(async () => { </div> </template> </QTree> + <!-- <DepartmentDescriptorProxy :id="node.id" /> --> <QDialog v-model="showCreateNodeFormVal" transition-show="scale" @@ -178,4 +218,3 @@ a { Are you sure you want to delete it?: ¿Seguro que quieres eliminarlo? Delete department: Eliminar departamento </i18n> - From b3e554d99eef52524bc7e8acc902e970d8278b93 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Thu, 15 Feb 2024 15:00:30 +0100 Subject: [PATCH 12/54] refs #5509 feat: add e2e --- .../integration/entry/entryDms.spec.js | 32 +++++++++++++++++-- test/cypress/support/commands.js | 11 +++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/test/cypress/integration/entry/entryDms.spec.js b/test/cypress/integration/entry/entryDms.spec.js index d9f1d77c0..79a9c5162 100644 --- a/test/cypress/integration/entry/entryDms.spec.js +++ b/test/cypress/integration/entry/entryDms.spec.js @@ -1,5 +1,6 @@ describe('WagonTypeCreate', () => { const entryId = 1; + beforeEach(() => { cy.viewport(1920, 1080); cy.login('developer'); @@ -7,7 +8,34 @@ describe('WagonTypeCreate', () => { }); - it('should create and delete a new wagon type', () => { - cy.addCard() + it('should create edit and remove new dms', () => { + cy.addRow(); + cy.get('.icon-attach').click() + cy.get('.q-file').selectFile('test/cypress/fixtures/image.jpg', { + force: true, + }); + + cy.get("tbody > tr").then((value) => { + //Create and check if exist new row + let newFileTd = Cypress.$(value).length; + cy.get('.q-btn--standard > .q-btn__content > .block').click(); + expect(value).to.have.length(newFileTd++); + const newRowSelector = `tbody > :nth-child(${newFileTd})` + cy.waitForElement(newRowSelector); + + //Edit new dms + const u = undefined; + cy.validateRow(newRowSelector, [u,u,u,u,'ENTRADA ID 1']) + cy.get(`tbody :nth-child(${newFileTd}) > .text-right > .flex > :nth-child(2) > .q-btn > .q-btn__content > .q-icon`).click(); + }) + // cy.log('newFileTd', newFileTd) + + // //Create and check if exist new row + // cy.log('newFileTd:', newFileTd); + // cy.get(`tbody :nth-child(${newFileTd}) > .text-right > .flex > :nth-child(2) > .q-btn > .q-btn__content > .q-icon`).click() + + // cy.get(`tbody :nth-child(${newFileTd}) > :nth-child(5) > .q-tr > :nth-child(1) > span`).then((value) => { + // cy.log(value) + // }); }); }); diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js index 6d627e631..a8b4a86f0 100755 --- a/test/cypress/support/commands.js +++ b/test/cypress/support/commands.js @@ -42,7 +42,7 @@ Cypress.Commands.add('login', (user) => { }); Cypress.Commands.add('waitForElement', (element) => { - cy.get(element, { timeout: 2000 }).should('be.visible'); + cy.get(element, { timeout: 5000 }).should('be.visible'); }); Cypress.Commands.add('getValue', (selector) => { @@ -57,6 +57,12 @@ Cypress.Commands.add('getValue', (selector) => { '> .q-field > .q-field__inner > .q-field__control > .q-field__control-container > .q-field__native > input' ); } + // Si es un QSelect + if ($el.find('span').length) { + return cy.get( + selector + ' span' + ); + } // Puedes añadir un log o lanzar un error si el elemento no es reconocido cy.log('Elemento no soportado'); }); @@ -126,12 +132,13 @@ Cypress.Commands.add('validateRow', (rowSelector, expectedValues) => { cy.get(rowSelector).within(() => { for (const [index, value] of expectedValues.entries()) { cy.log('CHECKING ', index, value); + if(value === undefined) continue if (typeof value == 'boolean') { const prefix = value ? '' : 'not.'; cy.getValue(`:nth-child(${index + 1})`).should(`${prefix}be.checked`); continue; } - cy.getValue(`:nth-child(${index + 1})`).should('have.value', value); + cy.getValue(`:nth-child(${index + 1})`).invoke('text').should('have.value', value) } }); }); From fddc66972963abedebc1028b0bea22a981ab88c3 Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Mon, 19 Feb 2024 05:51:35 +0100 Subject: [PATCH 13/54] refs #6763 feat: fix features --- src/components/ui/VnTree.vue | 90 +++++++++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 23 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 8cdba7c2b..12bfb5531 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -26,23 +26,27 @@ const fetchedChildrensSet = ref(new Set()); // const formData = computed(() => state.get('Tree')); const onNodeExpanded = (nodeKeysArray) => { - const lastStateTree = state.get('TreeState'); - if (lastStateTree && lastStateTree) { - !nodeKeysArray.includes(lastStateTree) && nodeKeysArray.push(lastStateTree); - } // Verificar si el nodo ya fue expandido if (!fetchedChildrensSet.value.has(nodeKeysArray.at(-1))) { fetchedChildrensSet.value.add(nodeKeysArray.at(-1)); fetchNodeLeaves(nodeKeysArray.at(-1)); // Llamar a la función para obtener los nodos hijos } - + // if (nodeKeysArray.length >= 2) { + // const lastStateTree = state.get('TreeState'); + // if (lastStateTree && lastStateTree) { + // !nodeKeysArray.includes(lastStateTree) && nodeKeysArray.push(lastStateTree); + // } + // fetchNodeLeaves(nodeKeysArray.at(-1)); + // } else { + // fetchNodeLeaves(1); // Llamar a la función para obtener los nodos hijos + // } state.set('Tree', nodeKeysArray); }; const fetchNodeLeaves = async (nodeKey) => { console.log('nodeKey: ', nodeKey); try { - const node = treeRef.value.getNodeByKey(nodeKey); + const node = treeRef.value?.getNodeByKey(nodeKey); console.log(node); if (!node || node.sons === 0) return; @@ -98,10 +102,11 @@ const onNodeCreated = async () => { }; onMounted(async (n) => { - const tree = state.get('Tree'); + const tree = [...state.get('Tree'), 1]; + const lastStateTree = state.get('TreeState'); if (tree) { console.log('tree: ', tree); - + if (lastStateTree) tree.push(lastStateTree); for (let n of tree) { console.log('n', n); // setTimeout(async () => { @@ -112,17 +117,51 @@ onMounted(async (n) => { expanded.value = tree; console.log('expanded.value', expanded.value); } - treeRef.value.expandAll(); -}); -function handleClick(event, node) { - state.set('TreeState', node.parentFk); - node.id && router.push({ path: `/department/department/${node.id}/summary` }); -} -function handleTab(event, node) { - state.set('TreeState', node.parentFk); - node.id && window.open(`#/department/department/${node.id}/summary`, '_blank'); -} + // const lastStateTree = state.get('TreeState'); + // if (lastStateTree && lastStateTree) { + // fetchNodeLeaves(lastStateTree); + // !treeRef.value.expanded.includes(lastStateTree) && + // treeRef.value.expanded.push(lastStateTree); + // } + // treeRef.value.expandAll(); + setTimeout(() => { + if (lastStateTree) { + const xx = treeRef.value.getNodeByKey(lastStateTree); + console.log(xx); + document.getElementById(lastStateTree).scrollIntoView(); + } + }, 1000); +}); +// function handleClick(event, node) { + +// } +// function handleTab(event, node) { + +// } + +function handleEvent(type, event, node) { + const isParent = node.sons > 0; + const lastId = isParent ? node.id : node.parentFk; + + switch (type) { + case 'path': + state.set('TreeState', lastId); + node.id && router.push({ path: `/department/department/${node.id}/summary` }); + break; + + case 'tab': + state.set('TreeState', lastId); + node.id && + window.open(`#/department/department/${node.id}/summary`, '_blank'); + break; + + default: + node.id && + router.push({ path: `#/department/department/${node.id}/summary` }); + break; + } +} function handleRow(event, node) { switch (event.currentTarget.nodeName.toLowerCase()) { case 'div': @@ -152,14 +191,19 @@ function handleRow(event, node) { > <template #default-header="{ node }"> <!-- @click="node.id && router.push({path:`#/department/department/${node.id}/summary`})" --> - <div class="row justify-between full-width q-pr-md cursor-pointer"> + <div + :id="node.id" + class="row justify-between full-width q-pr-md cursor-pointer" + > <div> - <span @click="handleRow($event, node)"> {{ node.name }} </span> - <DepartmentDescriptorProxy :id="node.id" /> + <span @click="handleEvent('row', $event, node)"> + {{ node.name }} + <DepartmentDescriptorProxy :id="node.id" /> + </span> </div> <div - @click.stop.exact="handleClick($event, node)" - @click.ctrl.stop="handleTab($event, node)" + @click.stop.exact="handleEvent('path', $event, node)" + @click.ctrl.stop="handleEvent('tab', $event, node)" style="flex-grow: 1; width: 10px" ></div> <div class="row justify-between" style="max-width: max-content"> From 3a48d09080529b02e1179bc5650d0b498653f471 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Mon, 19 Feb 2024 10:26:05 +0100 Subject: [PATCH 14/54] refs #6763 refactor node --- src/components/ui/VnTree.vue | 80 +++++++++--------------------------- 1 file changed, 19 insertions(+), 61 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 12bfb5531..265d3eb6a 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -23,42 +23,31 @@ const expanded = ref([]); const nodes = ref([{ id: null, name: t('Departments'), sons: true, children: [{}] }]); const fetchedChildrensSet = ref(new Set()); -// const formData = computed(() => state.get('Tree')); const onNodeExpanded = (nodeKeysArray) => { - // Verificar si el nodo ya fue expandido if (!fetchedChildrensSet.value.has(nodeKeysArray.at(-1))) { fetchedChildrensSet.value.add(nodeKeysArray.at(-1)); - fetchNodeLeaves(nodeKeysArray.at(-1)); // Llamar a la función para obtener los nodos hijos + fetchNodeLeaves(nodeKeysArray.at(-1)); } - // if (nodeKeysArray.length >= 2) { - // const lastStateTree = state.get('TreeState'); - // if (lastStateTree && lastStateTree) { - // !nodeKeysArray.includes(lastStateTree) && nodeKeysArray.push(lastStateTree); - // } - // fetchNodeLeaves(nodeKeysArray.at(-1)); - // } else { - // fetchNodeLeaves(1); // Llamar a la función para obtener los nodos hijos - // } + state.set('Tree', nodeKeysArray); }; const fetchNodeLeaves = async (nodeKey) => { - console.log('nodeKey: ', nodeKey); try { const node = treeRef.value?.getNodeByKey(nodeKey); - console.log(node); if (!node || node.sons === 0) return; const params = { parentId: node.id }; const response = await axios.get('/departments/getLeaves', { params }); - - // Si hay datos en la respuesta y tiene hijos, agregarlos al nodo actual if (response.data) { - node.children = response.data; - node.children.forEach((node) => { - node.children = node.sons > 0 ? [{}] : null; + node.children = response.data.map((n) => { + const hasChildrens = n.sons > 0; + + n.children = hasChildrens ? [{}] : null; + n.clickable = true; + return n; }); } @@ -105,40 +94,22 @@ onMounted(async (n) => { const tree = [...state.get('Tree'), 1]; const lastStateTree = state.get('TreeState'); if (tree) { - console.log('tree: ', tree); - if (lastStateTree) tree.push(lastStateTree); for (let n of tree) { - console.log('n', n); - // setTimeout(async () => { - // await fetchNodeLeaves(n); - // }, 1000); await fetchNodeLeaves(n); } expanded.value = tree; - console.log('expanded.value', expanded.value); - } - // const lastStateTree = state.get('TreeState'); - // if (lastStateTree && lastStateTree) { - // fetchNodeLeaves(lastStateTree); - // !treeRef.value.expanded.includes(lastStateTree) && - // treeRef.value.expanded.push(lastStateTree); - // } - // treeRef.value.expandAll(); + if (lastStateTree) { + tree.push(lastStateTree); + await fetchNodeLeaves(lastStateTree); + } + } setTimeout(() => { if (lastStateTree) { - const xx = treeRef.value.getNodeByKey(lastStateTree); - console.log(xx); document.getElementById(lastStateTree).scrollIntoView(); } }, 1000); }); -// function handleClick(event, node) { - -// } -// function handleTab(event, node) { - -// } function handleEvent(type, event, node) { const isParent = node.sons > 0; @@ -162,20 +133,6 @@ function handleEvent(type, event, node) { break; } } -function handleRow(event, node) { - switch (event.currentTarget.nodeName.toLowerCase()) { - case 'div': - node.id && - router.push({ path: `#/department/department/${node.id}/summary` }); - break; - - case 'span': - break; - - default: - break; - } -} </script> <template> @@ -190,10 +147,9 @@ function handleRow(event, node) { :default-expand-all="true" > <template #default-header="{ node }"> - <!-- @click="node.id && router.push({path:`#/department/department/${node.id}/summary`})" --> <div :id="node.id" - class="row justify-between full-width q-pr-md cursor-pointer" + class="qtr row justify-between full-width q-pr-md cursor-pointer" > <div> <span @click="handleEvent('row', $event, node)"> @@ -249,9 +205,11 @@ function handleRow(event, node) { </template> <style lang="scss" scoped> -a { - color: inherit; - text-decoration: none; +span { + color: $primary; +} +.hover-shadow:hover { + background-color: #9e9e9e; } </style> <i18n> From 01850c66702e77bf395b2493a204fff518493333 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Mon, 19 Feb 2024 11:24:49 +0100 Subject: [PATCH 15/54] refs #6763 pointer --- src/components/ui/VnTree.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 265d3eb6a..302c22b8e 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -152,7 +152,10 @@ function handleEvent(type, event, node) { class="qtr row justify-between full-width q-pr-md cursor-pointer" > <div> - <span @click="handleEvent('row', $event, node)"> + <span + @click="handleEvent('row', $event, node)" + class="cursor-pointer" + > {{ node.name }} <DepartmentDescriptorProxy :id="node.id" /> </span> From 7397f074638ac64c552e12b096f2b6142b2acad7 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Mon, 19 Feb 2024 11:29:30 +0100 Subject: [PATCH 16/54] refs #6763 remove --- src/components/ui/VnTree.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index 302c22b8e..c3752b938 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -211,9 +211,6 @@ function handleEvent(type, event, node) { span { color: $primary; } -.hover-shadow:hover { - background-color: #9e9e9e; -} </style> <i18n> es: From 5cc23841493e91cff8ba0e14828ff2d84b702360 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Mon, 19 Feb 2024 11:30:04 +0100 Subject: [PATCH 17/54] refs #6763 remove --- src/components/ui/VnTree.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/ui/VnTree.vue b/src/components/ui/VnTree.vue index c3752b938..9a99124c6 100644 --- a/src/components/ui/VnTree.vue +++ b/src/components/ui/VnTree.vue @@ -193,7 +193,6 @@ function handleEvent(type, event, node) { </div> </template> </QTree> - <!-- <DepartmentDescriptorProxy :id="node.id" /> --> <QDialog v-model="showCreateNodeFormVal" transition-show="scale" From 71f2c173cc129f2fc8aab44932bdeff85ab7e086 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 12:04:55 +0100 Subject: [PATCH 18/54] refs #6797 feat(jenkins) deploy dev-lilium --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6fa70c8fb..c30a3d26f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -89,7 +89,7 @@ pipeline { } steps { sh 'quasar build' - // dockerBuild() + dockerBuild() } } stage('Deploy') { From 30b8e25a7477471efd778b26a465d4a890ec48af Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 12:08:49 +0100 Subject: [PATCH 19/54] refs #6797 feat(jenkins) deploy dev-lilium --- Jenkinsfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index c30a3d26f..0d673301e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -89,6 +89,10 @@ pipeline { } steps { sh 'quasar build' + script { + def packageJson = readJSON file: 'package.json' + env.VERSION = packageJson.version + } dockerBuild() } } From 1bb0d0db94f1c3be22dd10edc33b99003db5b392 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 12:15:16 +0100 Subject: [PATCH 20/54] refs #6797 feat(Dockerfile) use bun --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d121dfcfd..f42bf0e75 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,4 @@ -FROM node:stretch-slim -RUN curl -fsSL https://bun.sh/install | bash +FROM oven/bun:1 RUN bun install -g @quasar/cli WORKDIR /app COPY dist/spa ./ From 96734477926958323059a23ee1ae31e6858bf8b4 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 21 Feb 2024 12:21:24 +0100 Subject: [PATCH 21/54] refs #6768 location consignee create --- .../components/CustomerConsigneeCreate.vue | 118 +++--------------- 1 file changed, 16 insertions(+), 102 deletions(-) diff --git a/src/pages/Customer/components/CustomerConsigneeCreate.vue b/src/pages/Customer/components/CustomerConsigneeCreate.vue index ef01879c2..d9765d50d 100644 --- a/src/pages/Customer/components/CustomerConsigneeCreate.vue +++ b/src/pages/Customer/components/CustomerConsigneeCreate.vue @@ -4,7 +4,7 @@ import { useI18n } from 'vue-i18n'; import { useRoute, useRouter } from 'vue-router'; import axios from 'axios'; - +import VnLocation from 'src/components/common/VnLocation.vue'; import FetchData from 'components/FetchData.vue'; import FormModel from 'components/FormModel.vue'; import VnRow from 'components/ui/VnRow.vue'; @@ -20,13 +20,9 @@ const router = useRouter(); const formInitialData = reactive({ isDefaultAddress: false }); -const townsFetchDataRef = ref(null); -const postcodeFetchDataRef = ref(null); const urlCreate = ref(''); const postcodesOptions = ref([]); -const citiesLocationOptions = ref([]); -const provincesLocationOptions = ref([]); const agencyModes = ref([]); const incoterms = ref([]); const customsAgents = ref([]); @@ -36,14 +32,6 @@ onBeforeMount(() => { getCustomsAgents(); }); -const onPostcodeCreated = async ({ code, provinceFk, townFk }, formData) => { - await postcodeFetchDataRef.value.fetch(); - await townsFetchDataRef.value.fetch(); - formData.postalCode = code; - formData.provinceFk = provinceFk; - formData.city = citiesLocationOptions.value.find((town) => town.id === townFk).name; -}; - const getCustomsAgents = async () => { const { data } = await axios.get('CustomsAgents'); customsAgents.value = data; @@ -61,26 +49,18 @@ const toCustomerConsignees = () => { }, }); }; +function handleLocation(data, location) { + const { town, code, provinceFk, countryFk } = location ?? {}; + data.postcode = code; + data.city = town; + data.provinceFk = provinceFk; + data.countryFk = countryFk; + console.log('data', data); +} +console.log('handleLocation: ', handleLocation); </script> <template> - <FetchData - @on-fetch="(data) => (postcodesOptions = data)" - auto-load - ref="postcodeFetchDataRef" - url="Postcodes/location" - /> - <FetchData - @on-fetch="(data) => (citiesLocationOptions = data)" - auto-load - ref="townsFetchDataRef" - url="Towns/location" - /> - <FetchData - @on-fetch="(data) => (provincesLocationOptions = data)" - auto-load - url="Provinces/location" - /> <fetch-data @on-fetch="(data) => (agencyModes = data)" auto-load @@ -113,83 +93,17 @@ const toCustomerConsignees = () => { <VnRow class="row q-gutter-md q-mb-md"> <div class="col"> - <VnSelectDialog - :label="t('Postcode')" - :options="postcodesOptions" - :roles-allowed-to-create="['deliveryAssistant']" + <VnLocation :rules="validate('Worker.postcode')" - hide-selected - option-label="code" - option-value="code" - v-model="data.postalCode" - > - <template #form> - <CustomerCreateNewPostcode - @on-data-saved="onPostcodeCreated($event, data)" - /> - </template> - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - <QItemSection v-if="scope.opt"> - <QItemLabel>{{ scope.opt.code }}</QItemLabel> - <QItemLabel caption> - {{ scope.opt.code }} - - {{ scope.opt.town.name }} - ({{ scope.opt.town.province.name }}, - {{ scope.opt.town.province.country.country }}) - </QItemLabel> - </QItemSection> - </QItem> - </template> - </VnSelectDialog> - </div> - <div class="col"> - <!-- ciudades --> - <VnSelectFilter - :label="t('City')" - :options="citiesLocationOptions" - hide-selected - option-label="name" - option-value="name" - v-model="data.city" - > - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - <QItemSection> - <QItemLabel>{{ scope.opt.name }}</QItemLabel> - <QItemLabel caption> - {{ - `${scope.opt.name}, ${scope.opt.province.name} (${scope.opt.province.country.country})` - }} - </QItemLabel> - </QItemSection> - </QItem> - </template> - </VnSelectFilter> + :roles-allowed-to-create="['deliveryAssistant']" + :options="postcodesOptions" + v-model="data.location" + @update:model-value="(location) => handleLocation(data, location)" + ></VnLocation> </div> </VnRow> <VnRow class="row q-gutter-md q-mb-md"> - <div class="col"> - <VnSelectFilter - :label="t('Province')" - :options="provincesLocationOptions" - hide-selected - option-label="name" - option-value="id" - v-model="data.provinceFk" - > - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - <QItemSection> - <QItemLabel>{{ - `${scope.opt.name} (${scope.opt.country.country})` - }}</QItemLabel> - </QItemSection> - </QItem> - </template> - </VnSelectFilter> - </div> <div class="col"> <VnSelectFilter :label="t('Agency')" From 841544767e1e0198d3464f1d0bef24086a388300 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:14:04 +0100 Subject: [PATCH 22/54] refs #6797 feat(jenkins) use pnpm --- Dockerfile | 5 +- Jenkinsfile | 32 +- bun.lockb | Bin 300062 -> 316734 bytes package.json | 18 +- pnpm-lock.yaml | 5806 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 5831 insertions(+), 30 deletions(-) create mode 100644 pnpm-lock.yaml diff --git a/Dockerfile b/Dockerfile index f42bf0e75..1906dc920 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ -FROM oven/bun:1 -RUN bun install -g @quasar/cli +FROM node:stretch-slim +RUN corepack enable pnpm +RUN pnpm install -g @quasar/cli WORKDIR /app COPY dist/spa ./ CMD ["quasar", "serve", "./", "--history", "--hostname", "0.0.0.0"] diff --git a/Jenkinsfile b/Jenkinsfile index 0d673301e..fee06c567 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'bun install --no-audit --prefer-offline' + sh 'pnpm install --no-audit --prefer-offline' } } stage('Test') { @@ -72,10 +72,18 @@ pipeline { environment { NODE_ENV = "" } - parallel { - stage('Frontend') { - steps { - sh 'bun run test:unit:ci' + steps { + sh 'pnpm run test:unit:ci' + } + post { + always { + script { + try { + junit 'junitresults.xml' + junit 'junit.xml' + } catch (e) { + echo e.toString() + } } } } @@ -112,18 +120,4 @@ pipeline { } } } - post { - always { - script { - if (!PROTECTED_BRANCH) { - try { - junit 'junitresults.xml' - junit 'junit.xml' - } catch (e) { - echo e.toString() - } - } - } - } - } } diff --git a/bun.lockb b/bun.lockb index a192865c4a6c3df4e100617199ba75e9b5fe9a2c..fd74f4f9e885cebbcb8d67ba3abf90f1e29deecf 100755 GIT binary patch delta 51549 zcmeFad0b81`#*fnu2Y>zB~6k{DG`dC=7}g86e&|_R+=XbatcxA9PC0-8B&Ub5~+|P z8W4#jV}=mYfc&oO?48f~eD3@EeZJ4{d7j@N&+FbVr}uil*IL)Q*0qK`IPEfWhF{5* z**$fV%yvH!ze#I9F7<bDJil_)7VR(H;YH&v4|wcLem`kL>WPB;!VEmjQ=C+YQr*I+ z9C7ZUr3?m}!HAFa4fn#lFt@NUM32=$YkWQ3LcPPhBE15`!$Q5>JUx9wgW1a&jA2mz z$1(~fS1=gTz&`^Y0_YYP9pD!3vHDNFAb<aeU<Tuk3xlBy`GtU^0QXXy8y^b^MG%$) zjsY|R91W-hI1cdVN(Ms(u$9JgK+Hcv^G$$g&=*h%a0Q?QU~o`axCitl&@C{?*OS5U z3UiO}_4j1xdovirAzuwphQVdT%RpiT2uwPo6XJlp1yBaC1`sQpqxB3xIpAAq9tJ26 zd?l^V2gG`_===$QSYL|f{ooANe*-APg~VM*$O2vg#D;U|0()t`0T2xYyM?a?8w?LO z4;&%JE*LuOX?y^MFhm~Vn!aI^wW*<Kp!JkMYKZ)UB7(8LY!Fp`sSty~MFXKw5XW>A z7{oCQ_YI5=3yx-l1D67Rjm2OL1@s1v<$^W+eFJ>M8S_J^^3JsGvD(cS9a9XYbaXh< z&7bj~4SRZd1#5bR_zw$ZEaNx$8w^Q;VGA&Xp_2=zCS{nfk8hxN5Ca_w4hr%&gnXQ= z(*V)&*%5TPa8FIIz(~eKI{!QBy!@d`Hf|n4q0oJXUL@6p0Du2zbTI;~;xU--73JmO z2E2YM<@yGFss$f#M;uxj1(wBm62p|ZTVg3iLzVJ1j^?rJC|^PVv4#(g{$7#j0K*A5 z29w`;-!R4{@B{lC0`)Pt)_`C#-Y-lu+AYAJ;TGx>>=qj4WlHBCgQ)`Lxbdlwz|PNz zryBJ22@DE_apgck433X~kh`0I7$a*s#RpfWw{M`QCM?AV2~-zrX@t=X@^A}>A^G=F zRReqIu>D4=L!rI_p>E#LxVOJsc(|7*Ljek454^%6!hNAZudt8^uh3{l(I%>bS6FbU z7dXa(ayY7*iIhWqF;tHgHdFi+aGdv^K_20uzJXpajr`X@#ALTn(`~g|m?pI8!=KmK z^H#_}oRY-Ll^o5zltk6f1RM!+6WBw?z1_mXVPY{ty&}SVy`vcuw^Dxe0Aj>vZ=?Kw z102g2Lp|JC4go3wuG>!SEPH_Ch;E?m`T{BfPlpkN@{{9#Kmr%&J3!nE{ewK+!d5dF z_kiQh0NapP7_8Y_(L6t?Sq_8!s!yTXP1{4+Uk}D`d0hh?{R;}i1;k*K0LNw7#H0G@ z?;92#3TxaeFeJh^)GM@cFYk-gEUxW-syhXM7@cfDthRA4Wxhj;3in2m;zFrZGtpok zySEKEHoq3~vH8LI69e^eUIhZ8K3L!1EhbtM&K5pi;Xz>x2JeKlH21{;s%>vypNLSe zFvj4}egQ|&m+uED8wGTm!8k5(3@*RHWtR#0*auIyXg{#c*bf}*?*K$!Hq!MiGAN&Y zfx{4T<J}{?y}e-j@%8fZ;^@p|3_VO$aQBb!a`z4OTtypj3-y4=G8l`1V?(-tIOaie zR72xveM%<9J-yr`e4zYr&~dIrMBq7v!O+j5Iy9A!a5f1J^GBT#f^Ng10vWhSh62g} z`i8;adAS7)fMJYwSlH^|HBe6I80Dy6m^**FfT#xJsW{*$<$#xmhbHFX%)(C(=r|f~ zVS!rMjvp*GUv2<{5$P2g8UztwoS=qvJ9G;RiUY?GM!+n?5O#qB*mJL_aIZk<i-%j7 zm%mq7nA_U0nP{*B^06F@I=}wglho{M0mKf~1ERfafM`D#kc){edDQt0ro5ZKo2OR{ zaBRpMa0DRi0(=7_@~P#@21G-FLBZkJu$#Mks8=L|p;bURfcqKh&Zntz0ltC07@FbZ zsr=z!oDKD*hr!t#J=1}LD0H5o#_Aa$I-m+Vj-4tPMn}WE0w7p0rnG^<$+hk*Ro)RA zoet$fBHY5<pxmJ2|CPf&{=9yfVN!q0`}zb#KxBDigcZ1hwnfiT(;z&|BPh_@V-0pL z)GLbdt%%Y;6jRe;K?&6dzp$V{9q_{hIQsky@)5(s{CzPhVG$moFmMdnQYyH?zM-&{ z!?b}t3XeCSLvXqAaOn_;i|q*|#0vvTgQ3Cb4m#L*k=nDaU8Xj<dJ$@2OfIAJ0?=il zUYI|Bi(@!IdE7nb0OEXp4;{ha*DR$ltQ<!h7KSH30hd*asR|CjheJWQxbzM8^$N2D zj)pA2YaAt$tJEm0g^M;1w@}Z^z%k$I8l|tn(^-%=LmxPfx^GyJyPuawc(|LpzZck8 zf1T3Z{9rDjKvYp79z0!427@>sg>F#uYVgW84mkEe2J#gEL+LBnXgDL|qOPu{h9Fu? zm%mak0LMt4sOGiEP8|8Ok_yykKpZJwdY8_-#TzL%QCz*2iqoiC-h8=<+#|QB#!~>X z7jW(i_4Ep7BmqY!UVs&xyZ&_)_n>hpAVwoFND~(>V|6{n`4@=b<U+dKT)N!C1}eV= z?4jKNuTUQ^Z5Wrq%i@f?)VOX3#9@h{(GL)Z!<pvu0I|0-0dYT50mS(rPUE*mYW24R zVtxZ4mahOrJ7;J-2q=s5A{i3HAtM41hr<(48qf|94I2Ssem!`O+eDaK6!Z_a3E07X zVf~(dMD?s25F4;*q2lfl>Y+J9o59!y`Y_PDMp6+jhW!w^-(x7pg~Sp_V8fPxn85)= z2h;&^NJax<sQ=TzF}mT@R;s}?;5gue+X?JP{QBrDcAyeEfc8%VBF_Sxg<~7mMm6Y8 z<Iram-vtFQgzISZ1jGsH-p)IqFp*pOoSJBPfavGoRxwtL;-;Wu08L*~?eVWF!IwXm zW1yq?!ENwAFV_Yyjn}-Q`ZZWD)ce#I$*bdvOcc|^)vrc9yHsoaD?(k^S85)+Kg!{a z`Bv$a)lohbTURQXOe-zfy+J<lW71Pz)P(8WL9)>Qv8CiOvy`OJgKDiwRuYoW8?~nV zto^ARW5;~8t|{I`)ZRNZ>82+~EniprN5kCLW~yS{v*%pjw(HlS;_=e&bU(-14U^i^ zSfnbva(YLij7a!hPyf2Fg#Ce!A5D)m4xIn};fwglTdJ2v$PHh)D{X_Z3vv1WCo$=^ z6>fF6K3Iz-xZ0^q7<cu-Hr|;DB??cUmZ#@wm+4L2cxl4YanIyGUKSaMcqeJhTQzaa z^z^7$Z|Asmwkqkwvzf!sy^)T3mo0xyZo>Stj|^DfE*!YZwQUb-yX11;s5@Vq_}a>g zpQs?V|H6W7G0ycKUh2d#JcWs-3Zo{DJRP@2=d*}$vezD#x+Hh0iO?PL^KRY|RRwNG z&Q{3>4@81J$E+v}-u$LhLYlcLOg`b9=ZI57E?CbQ81zf7d}7P+A(~@|SI@sMEsh;{ z)U(U8^vKJua}Ik7I)Xxd|Ev7CrAw7pedCR~;^2FY7`V6l*#3+UtTC(1)VrR33X}iL zE*^V%#2dTUCP#{DCaN>VqBNc<t*f{mSoB$K3{$M)d8ARgp6&f2sYyvf+%T)Q-@1*j z=4X%Ie0@yV{c#t?*IQ`Rx;^C7z1#R@zeeX=HOZRy^XB(^JMH*5a;dFFqSOk1|4qz8 zVIsTZJW}<eK3|UuKJ@VRJr&})i~Yxs!Ar|OvJO4%RIeDRDsstn)w7)FfuI>jl*}@6 z_q>;ry_={we7OJO@sjs<Cs&w#aH-PLkhOZXL}Jf`7lQ^K4ATo7F1x@gR^!5Dw-+<R zCp$m<@uh`RuyAvG%WCnn7kIm;Oy|{1nJy*VI%l<TwRDG{HN#`gUc2YK3QYxtl9Y9A z=111<)(>@eF;d7|Tk&ket((y<0lYDqN5pd3qa-z^j;`l5k5`u(vbxuIW^O~)o)tlA z-}>|#c%L<+#thE&8MYny&J(8?OIIB)Wv`TaG&sGBf~Sfx#d61IT^6s8mMV&xW-ZQ} zqd&8#SFb^aw@FW(H(gt-sMqGYE^{XDm%9P0XDM7yVv23JjJon*@hazVh^S?}m~F;H z$ueFkfc$cv{x)N_-Esy)7gnzjuhN3U-U4h6pC#CF*tIkxcuX@6d&~+3V?N{&yaaO& z+YgvAFcy!g!(rzDqpUFXIqYXNBY2fD9JU%fNYR0k!n{g74*Q)8g8^n~X5q?UfVVWu z0QRrEK46Rf<XNwRt@;nk2L@*8dg71)XJ(oO0fVYEtNS;m=`L7rE3ki+d<*PfzL>*( zmeU_AX}}DCF?p529QJ)+9AIL+1Ykov8H}00gm}y}j>LRm7zx-Q88Xo0$v8R^*4_+; z#b4AEQ0M(cZ3flqFX~vIzq8;C>c5u_j${u7@vmmT|J6V;dnnwz{Cj=$b`z*JfAOI4 zZ_AGKWiagiQq~vLzgoBe>R%oE1*+9wEX?)$&;AD6vxkEC*P{19{cB@m*Zf^$t3h4x zm&S@f{j1%dp#IgamH*$B-2>`h2AKU2RJe42X#<OdU<dH}_ZqWw0|uAp4oJ<0Y-JvE zuC5pmJs`vR%S$eBaCw>K>WTp|qRMUJNMr#s1BNq9iD$NyKf~BBK*gqDt)_9<<AUJn zEX8JWSf0puW%>r}<B&o(p~X!c)_Y*H_#4I8U`X-Hn`v`cPQXl2mmncE*w$$9lHV55 z9L(!?H)f9rp(?R>xLG&?!wrFnjNpavi`0WS9YkSXf)j^5A(SctJApNa?G6mvgf(Tt zVW$G4{7;z0Vc!Bq`H!ZDhEZ!un1{Q|9AH#KmB2Oto6EO?dsGcDTVSyBa5!w0aELT8 z29G(D!(IxE>Lc3R1&qH=d6j!P>}t9s)Pr4+86nuZH88Xy#>4hD14ApY+UIiEm+3qP zF9F*7O*7~bl(dNaGx*@yT3{FnCeLgEhkXLrR6fIr@idZGy4RR3wHCt8H;o(YLSR${ zFwKewHkB7=XdqDlsToiTuFe=kz}RG7a06QmM2wyo&&-g+mWdjSGseUo7{-zsCLS=u zKPBt`#kO&Xk<q-E3}eC}npX-iGltinVa!g6r7A!d!K*vKFu-uSfI(AQ_a`ro!`=i8 z0|m1koVfC@JYfAagYLrwn-vFr<Hb1{u)QH=33XuF8gSSJz%aNBJYTV10-K9{W^1gc zA|uQ*v*fV+fQ9mmKz|1*EDsaIjKdnkg(2m|Ss02zf(j(WnpKF57iVX{>VlLxR%98* z^VguM0Xq^>Gr<I$A{{uaT)qxX5-;O<`bUk4Q3<@5qsDBf1S+B;{F$^57&gm~D61Xw z&^}vb!(b_#VJm^@{wcK&7_2pDv6e0cvl2#!y^#ul2!G_312cp=FuRO7Y!VpyCd4z_ zs>|HS(?4O%W^SV9JCuMqHV+tj0`nGF9L-<}!fY%9hPGJz8P^94ZLxWk(CVzj!C}O8 zxd|8!9F*L~VK)QA=!x<NeC%c_4?+*ITn=m@zpr_a!rlq-7yk=jIR9WE;A&v}7V0X3 zZ-M0l42A{ba~M*%a{0E{?|_*DBlta^l|*?9YX>e>LX&tgdB*H|5YcJ=_Q4WLMnh#L z1}p<efg3P?wn1tI-w4itH^5AIaq|oay{)|dQ^suntyFwqN<uudfLZVhCoJQzg|<=s zglNIUb^taP@~Fw13e1FG63+Lmhrk?h-Vjr^^GXYh*{RzZ410cIn9ao7?fiu@dIx2X z8VeU-II&@`OW?4N19RZB1Vau>W+#JT&5wvHq~?Rp#^@3!ck*ILW1?**uk?&D+jQ69 z=)-Jcg#**a&a(?3g^{N=+Sj{yrG>_9z1@^JgnyA03v4kIf$d-^hiKW&i#cn|ZcCx| z90o2yw!|K4j9^!Tg=`NDy`@Go8yL<Uehch2x+KNM^Qd0JdV!tN0~ihvj2g^15*RhU zIJ4gZTL^ium>21a?WHaPVcO<%*lED93vek3oBb1DbTyd7Bll4g4kizDdoi$CyfRAz z_Et#Yekh84VwVEbrYyh&{y^vPH&@oE{g8*@WvztNTwHXlOOP_>hx`|$ur>Z=EX#m| zuJZLAkitbEg42Oj{YRHf9UNBl#|{{j&o*SH^7>7U*{yUgOljCamD6~o7mW$$G+zHj zV>T~suqKA%9x!TY<K`fFU~mvIjPrnDZ(yOr&_w@XuqCnc=#sE-&*_Q*!8JpTh4w*e zcEhN_3|<Wk;|*g0SEVJusBXd;fkhm`*<&;pZV4cTZos@W;jp5BP3IXcFkt6E3SHoD zrR)}9R69_L7?sZJFEb`w(s}w<;DnG)S%!At%vldiAL_yW1xtaQ!Ry~>%wCj1H3DvO zIK-|DUQD?$yBS2BD=>3ltCu}IxH7TJ3xJ^&u$jOi5)boYDva4>v<T-0IDPj3!||tX zKh%y;7v!+mV&GB&m=omjCo^&J2(Pr#nDrGzJzklE0h^OKIKi;b5x}&0Mkfr26Pdiy ztKe-GWf@irY=0Yp;r0j97Dnb8&7f77;6mAhr|kr|mC*t=1xkwWDxuy=V7P%mNuI74 z5Ijx7jtVEgE?_v_VaJEvanez0<w0;}afs_jdHPkxtf9xCKRhG2M4JaG>?gDj&aMRp zr;RuRc0QzVK&hdB5A0ti#~-Jz9U*)f9M%e8aQQaFfH-uVr(bQ%z6}CKo(iPw32G_A zVu34|`M_{KP)lbsFn(3`4M<^gaN36+2<K4a!w)yh7??Tlm#zUj9#Uu-mNg8~Ibe7R z3$8<WI)Q0XmSZ{W(I+Vj5QDiKV)aR${w-tnFA#Cc!u}2u*d~{XAQdJaFm!;QM>OX0 z^lOa?g*;wNtuZ@24>n}J>B=)4_77kf3;s0;G2;|Z|F$s^d5RZv+n8N*in@S>uFvL3 zPtB)p|CkI0LkvDjye=&@-t-*yP{=SrgCI)6d6~MVwkV*6f;tmM0HdOa3-}~3oUzbo zFh}AmFkC(2P#+dCb)78Xar$3Y#s63>0u|jA<)4$@12e#y{18k$Ls^Bz4qM?WVAPbt zS#+Gvg9!$k<}YC8P!D!<h^|Q?RZomR4ljXOLLPOIW_XsG(9}6F85s6Lls~=8fMGA- z`~xlY0Hb^{3(yrS`ZJhtf>;AA9{=HVAV!|!mFgL@?9M@Oc}Cj|h~4LS{SfVX5T-*Z z*h3*izky*>Fe|~rjPrx540c1p<2<kbjxmvbo)=SR%z6rWv-nqZqc2c(_?rabaDk^^ zzn<8Bfmd2@%&vw!Td)UPln2~Q6c3I%PQ4YtX7T;QCAJ3`mgHYr5dFox(g()u#U+Cy zh8uY*Fm3)KxmCi`e`w4WzDR`$W(tI21+W>E?-?B8!bM(bqcM9@DRtV1Ai%X^3@|t~ z1skx>Kngbks0u6U3ovS-;s#=PiE<292sj-IjLO5SsWZUl^LMCzNMYb$PSkPO8kZ?g z`Fk|m6Bu42z^aPj5Kk`iV(uHW&C3}4ha<3TZ*f@rfX(M$T(&_9rwj}>#6k56H7%*r zx)U&5>M&(szv2O-T)}WOVjeG!G+;}VQ<Go_e?o2mhW7XtST)Faaa#?U75sgESp{6k zKra7W%{~qcCpN5D*ejm`!`Ap)y2OM^dJ-}i3^;?sT?;&DV8>jgCNXT2a8ADg4C})L zhuJd#4C}+06~<%9HL4^mE?}v^aI|6P)#tG4fWcYb$bdcK`rw?vQr5t<`K8RFImC|Z zy#7bV#J%f0{T5@kY}Mcl!P(;hY$24S_SPbr!7SdYD|Ukl6O64HN5UEye@}yM%;T@< zGY8qiAi~Kt!+>bL!HaopOqf*jVs;p_!>g$|B#n11?0dk>pbc66Y8X*N4LHnmYYuA; zFqjB%akmpv7;o5U@j(+X>;ZLKCvtOe{FsRxwmC4IGVl-z`Wgz%l3x#FR|;$iFz8PO zhb?uBiap$}c<VB6@nW7Dv(JI1PnC!3r;os<0)vNn-*v@mso+9o*ad*#m{6O?QDEo~ z#U22g!)Ms$$lHI`4=jRZz@|VRbvdya81@P_Bnu94`!=ut*?P9r9V)UguOS4sz~=Id zE*gqKf?mmB=N2&ZlbV0Rb$H@|D?1{gj#v8Jn0*-p%!Vm_g2Va_%#eSBpj{6}aA#tN zLW-V-bKnLO7`g?0gA+~*Fsu#h3@)@rG*Bg}#j=cM&{cg7vA=;=`qG%)2qLwk!EF=4 zYUJs^GG-Osg^O*T(JKR%=slQJ{FLLLR5qmM^R>=Dn!$a%{>K_yAhnR6dI%}X%H*cO z6c<uU__<AxqROd07_1utDa!JtKPlG3!MaN!Mfq|9QVx78eUPHswP+qJmj)@S+#5(4 z^Di}29}QmSz`YoI5ipzrFgaicy9kV0mUvOiYWZ`Q16%x3V5a<d;-WeZj0zUs8?*q! z$--YpMC4;$%!l=?%a5S~ugt=L{S#6Psj6^sX#IpL3_A(T?cKm|1Eltq7GOA+_}2xj zF|9b{cxy(PWUoMh-wuxOQDEp1wXk3QVYoR?cuI{vEJ5)7U+3C{FS=roh0a2kjX6Zt zQ(nwxWA-x;Eht+R9745?*AL>Rwm)lN5r?R0<Hd9tvy`8K$TNCqz;c5W%xY}|)(L*9 zEXIH>+CI41z~)5+wDU^87!zmOdHrA3vpXSg5wrnoVlRgk_8cP5f27|CDVPZ!hGH)U zR}vE<695d?BmbO59Dczo{btO138EGMmd4>FwLSAUd?Mo|FQyyL(IDFLy8)*lw(_e% zh7SVP0>dGLi+RY)`xk>t^nb6{26@;r?EFwq`t_f+59jv!mqjr>cg49Q84SiRCj3Vs zAVKi|*Oegw2ohr$pctSWARdUQ%hMbYxdP1*kt+hCq(tk8lE5`+E`VH+|2E_QHC+fS zY0?cN$^)N6^Em|7zJS1Q_x~K{{_*60zhPmhY6*6*rweF%f`~(6P3wrrZD`KL1PZpa zfQa0V=7?z6fz}t%d<o5+0P#S?a?1ck0o`a_5YetXts?>_PYW|yWVkX@iXRDYI`_Xr zwBkdT6GW7J;Rkx*Pv;|Ic!FvEcZm7n1j8MGpZJ4pNX5|=|0jq`B@xQ20iL4k38Dyj zhs9Ju7a8a2?EeX3e=pGG5iwapb41L)Nb`R~Qd5Mf#-HG2bg?TmmeW{4S3^WIm4GN+ zqxp3taQq!&`6@ae5yM_Xb41L)Nq{+myd%Pt*F$~>bSzR&=QkjM0}=BZX}nA8h{9y6 z3UmXNM|5@zosEdeC$!#5>wkyn-ZMI15OI*-(mEn0-_sls2lXof-(A5268r+)bOA*4 z`#a4MG1*IVM9l94)Bqe0ULc=9qbiLP(K|T)YlQaEraD~^5k1$U4QSIkA|`ccj))D; zqPZZV&H)|m>e2avi0i@#bj&gxMJHy{1rgD}96%UgF&JQAjCn`_tpMR4!y13kh{bJa zj)?Z{k&_Z^raTwv5};VjiAHD4h6541>qhhc38EVwba_EU-HX-*kQ!hC0gC-?!9O}0 z@}UhOqT{OphXcmYIwI<^fLK0`*8hrB`~Ow|%f`bG?0GU>Q4rDaR$52I2DSsDzJtb{ zH0}b#2=f5pA7elM5JawkfXOtP|4$J2`y+Ju{|?cCqficuo}kMQB6l!>hz0ZL0*H8V zat084R!HlDi1`;l#|V_r`GSb`F4FZ&>2jCpa)=`M-R`S&#&tk+pau{t-b5sgCcqrU zk+=sG4@9WPcm#;WTd^46Q#v0J{dz&`F9ES!2c0j7==VEX7ep-ok*@zqh~9)C!8iO3 z5DWCu6%o;aKAIz<0|PWi#F1iQrT;)IA_h9vXVWN7m-`pO9K{|>(HV$XQ3eouAWQ52 zJBW6b==zB0$S4|>X<gZKFd=}Gp`ayjbYMQMBcfwAfN02;))A50(Hs#Yw3z0I!eoF1 zQ+^T_TM86$86cWlNf$%Jq#OKTl4TN16>|GTrWpSRe;N7H1rf1g5Y7J%@w#|DosWo9 zYzrVZoJ3<Xo&R@;_P0Ym;x1vBB3N-ZT|p4B0FTxM5vRlfS{FpLa}adILv+3%qMi;q z2L3Ree^?l%2uAcMEg+5nUPAN#&vDBCorXvWby(Ek9^)cZ!$4F3VxX=8qNQs1fgQYw zghp||d%&@L3m^vKF`fTEK`j4-uK!|i#9o4cfqP3ELd1gaXnarO2S9Y_BOo4#Snd<8 zchNc`>R)J%i1oe!qSOmNFuxB+439p#zz-UK0pi>o3SL2yA%))kUmzBdg&!C}1-iT- zqNGggh*)lnA}x#&K=f=Zt0=c8>z^A`2n8Jfx?}x6%>TJT{pSW1rrdvbql&BbpBq%% zUH`d3RmVLY4n(|^`R4|eACAAfVZ{j}cw>qMk)!@M_o38z`foC@-rrT=8}gyY0}<Eh zYQTSPP%&ah=*S2nUg-RDgGvYHpBq%c8`*zuP+@KSbA$T-_y+c$8&uqU8I1ow+@KbZ zoW#5)Zp!IMao_yq-o0Ps%jiQVD(*JyTG@1SLh!ES-ulmzhWy+;-1X3w;Ra{6oXwe~ zTD0ndUEmG*B`?MEhRm*=PhJfF)KaWGlWD4CI)72-HJvX;%m)d?@RqgO5)YL3R3w+p zmAEiO$oy1=x>@n*wcMB)g=M;4vE}ou^BX#X*C((Nl>!!5+YCE<#c4rtx*c<jt?BQ@ z?31yEZfEk=|Gr@)p;sZ|`snr1g<tB|xK7)>TU_RxlkSP8(b<YVj>l|u&ybmi4i{Lz z?zdSudeexD*CXWTtR#P>GZnaNW;GTZ4cX^;Q+mnQagpXWH6e}b%Vu=fTTkg#d0Bg9 z@soK!=lzcIoSS3oH>bDhD_iXLL)(ud$~q=^k5!+*I-LO{%w!Bm4!|{sBVKpVhw$MS zl6m@9);_xJsC_n8{LH&K`F+Y)_jJXX5~*J{KR4%&Y5FNsc(qXR=J(V?Q;VBp%~lAD zge@7L<>z)aZe=kuel(e%!BikEjxrZ8oye4<%tidina*T;Hq(i@lze*>WQ8M43DV{m z6j@HD9Rr~Tg<mMFB(08v5S0l+{&D6!dpza43VQfvq);69@U-F<re4biuU*Fq1Fotx zemZ}A`mNkio~17}KV4Q<7+u2ZRd!BG?|re{dRJQiQ=3^2z3v=2G-JPf+iX%f3*vXp zxb*6J&HL>&Y7zr0ZC_8=EBo8Slsn9pu-)7dqu$1uR^MG0H!O0A*cHap5jVEGHykm$ zYIEf4jQ7^lbp!7w`~t7QDKRNPH$m?-yH?JX@mX%&s@-EAlwxzy*Q?0uV1UN+@Pl3Y z-{lg<*t#8D#p*8OF7&Wc`u)D*7SDCXLYW5B%*VG?9-Ee4-3Z@X_+!{z(6G(hhQxig z#gaWa*}K*huQz9po^i^#;ZpD&m0`!1o}ISmeS%Js%ie~Kp0jRNxPH;QV(EBcS=%++ zxK-SXRVQMnET-+o19~v&C)JQ<2zw>xz4p9N`BW%Y^5zaBR<7m_LzPE~>H9AC$If3< z?{!7t{@8L&`Qh&#N@x2hEV^7fdAC8xgZ5?757I0<#&11v9Bg1DaGX2^9S*7Mo-}v0 z<9T+f$M@j(Sw4+-b$>+(O*gew?9sF1mT6Y#^d@Q)5ux*(7!!?dZ_Jn%ILof%dBwPD zCG+b;3Q}eCDZ}_{<P0xC!`oDH87h7U&ZHz~Uuv><^|<viNyKW}?FNh3rwanB7rdJv zX*gn?rC)YXs=S|AFZcVS*l}kqujHN*6P0zTID4rG?Q-G&4dWr<EogYXLEz=86os_z z%>9Ryu1X%(mhEth{1tL#OPPhn`hL9xzniKxhYtEjiKibwzevI`*JQ*nrA943TdvH5 zwY}!+Jkc;*)T6^bf_B%OGVzECt@*fl|DJ7+hewU+;C6D`;*D~*x!qIwddeqEhm-NH z%I28O_j(V#@G(7S<~)y__`C4Hn`JMe>wMzm*IcFzW1LqD8tywWv-$4tN7J{?JsbE~ zw2ik^v2Rpvm7{9l%meYwk_VrvoK{-X7hL<$O>gQ-m-ICgre0d(<M(sgI$=rfvdQBn zHvQ%s7Up~GD`+^{;H$l6`)0*eQA7FzdXL0dKk%Nl$@Pidx2O<N(@*&iUh)o^1a&%8 z)kb<h>zcWzsBlF7{QNnqtz<3dT@orenIK@-Ptb1TceA{}$GyfC+|#>vYj0`d)Q*XN z<u?3D)gqxY#s?M_TNyj5Tv`~W=(SV(M}eH0EvYZHXj1G#(Ql_4o=9n}+W~eV2*UiK zTO(+A!so86UKi(<n6+m_#fOa8zhHyLkHA)`=-1=tq#PZ^T@Y|a$3!({eKNZ_gmB;u z)N{`pPu!_9_j9Y~33g5QxaKvqVGOaqpkdvShg?@#$DaJOLqg(K#*-nfqcYy+f9`&5 zaOUk((Tbg)`aPKEY>j*Cm*2|&7WVPTw8znvAsY>aC$<+<<r)-yHKXm~>Ie|9YbNYk zpy}17JjbrV_KfB5y5f}V1f{usiuTH_)#_899PZfSbZ)KN7nP(pM=sQ8)}NcUI5hT~ zIL~52=~h{1!mU$PkL)}S+t|Qd>FcX%muuCDmR`Aff3Layn)B6*LvFd&z8d&Go_RF% zvgz6OYJV}KZF^qM(wx_H;8*fe=2`XfsqY*cB8Y-*@ZCe`F?AXU5^zuW(munJTg}9I z5l@uHNhuQn%JVjl774Sim3xzZDs;Y9?L4tykyF)kxeec}e`Zd;P4uvB%cE}!UvRr4 zx-KSm?M!OQQig*C4M$J#J<gFFn`b|!;{2jxYVp72WpDq~Vr@2i9HBLR;fDwD2fDAV z{~8k5y{}FAY=_z$`<e~&E2<?#mM3mb=whnF_uu|F9P)45*lJ<F4W}m`S?F;uL%dA9 zkGq_8$+Z7v(DCHG<|T)c8v@q)42><5%X^jT)AC4)qb(mi^3Ial-(PB7Hm43Kh&>DB z8)k^b1BMDZY`0k3Xw21`suqKoFcGu34m&Mv%M`cs!k&!Q$M?Bs4ZRQM$;c+PjNA5N z#pL4s6PW6YjxMdSy0~v~(hj{tk@0b(_=c(7CQQ(9A8*sUeG{fXcRi?>;Av%JF#7w< zT+20GRl1c$m#W|0A)@z)_WNq(1@BKh)4Xr`dbS2{+=+2lKH8`~vbfWET455}<<e^* zT+pz+g62FYs|>f(u5~5H<IEl<DsXgPyDUi7-MYDX?c(<yvI`PKkJ*&H$WF_gp=M$B za_<_e@cnCBMZZRB#j~S)?(-dHh?xRL2-+Q$bF*^fgD<c0+3W@b6Tc9f*Y@1hMfO9U zzd33+^jqx|m5pn}$C)*Ma6g^hYxLpUE?K#T_r0#>J6X5Xr%oxVw~V3<j{%GnG;C4Y zX076|?AEsw--F+8waGvK)fT&5;&GYq_Ew?NDJ`usE>bBw&uOz?<iBTyoGv$4Hy+i0 zICYbH&wXyNr(4z2AlfhhW38a!r^`KNU+m5%R>@x4@P1MDk5}!*dS?&BXKiX+Wmh+X zaQC@RzJ7j#NFH}@<-s}kES9+QZoAc|nXiheI+wmgne9y5#SJ}5(5`6NswVLeE+dFL ztN4p*)9hIJ6GOK}h>y9`q%E&mVtdUzQ%%d@a~4Z+{Z6%elh0|Y>u1YxJGHVhG^Fj= zr}lov|DghV1R9POG~C;J?Ed2(2cJ{V11dao;~$-D+myO5wIOwP&)5nF8!2A&Y(-wt z@}k<QGFMi;XUi;-Y8DT+%6;CsXUwUdz14||!$^rd*cF;<Gej=hnNHD*aIiWiy4YPb zcl`8*jS>wP#)vMQDlKYav7-M2Z_3_Q2c0d$t~QL=Dta&dl5p~;#zo?JbG7`ENAul_ z=bsj01>H;EVEXu*<knRU`pRo2`J~T$Q>@ryXmtGkhwz@{h<u&7jd#M!`g@t&2IrRC z^4}{Sw0`y7aDCl#o?p&|=Z4+Y&u>uu<{MroXn37fMX9l);;a+v(hcH%jnN&JWL*1x zacEOe)|a);vwppa`Ix8^wW9WJ`I2cD!U`(}em>1=Z7N80({Wg@@_~K$hk)I<f7=zN zs<y6>nDS(6%3QtDd>7Jpm5kNZco%Kmc^f*0EwB6ZVRw#`*Xf1Js`F3HW6PEepIo^v z=zN0csGZ6O)5kNTr-EG=C^5dn>jfRQRT}xi@4boZ-Z9?$>vw*<*?3pDL&jkpv!dnV zcT4W7@ode>r(znSPRCs;{65~kvHhybjBVSChQ!StGDO2HW#4UTSD?<kTtUObH@&#I zecQ!FZQ)-&C^|Y0xpD5qLJPSczNXW;s|v^Zt~>mD|C2kJ861~|DJnbLr!I&(9BG@Y zS@!Yy1HGQtr>2FY!(93zBwo<4T5A1)`rjHOc9cJ_Ytmfg>L_<&`JoxvF)q*h$8zR7 zTbW<FEpJkG?Ax`Ow`YF6({a>EBT?p<;VM?#Kx62x1@3f+#qjG^34(T|x61o$S$Csh z_2Q>jWmu`r8>2RJclO_yC4W-&woWx`f%35p*_(eat~3hJHc?)#nr8GoulRhN%FU}T z(L=<uJ{xY}hgg{ZJ+2LchTD$@jYxc5Au1#)X?pQl!=vOI2aOlJ+x+yk)h@fLl|OzL z{^ZH3t1E|$673LrAINh$^K)Qw!CG@kQBiKcd|5=`ZoXma!gQmc;Z3=+yH8am>&tB5 zmORMJEHrnLa~OYp*9)sHY24T&F{_%roh(;ucPkf)i8(uW-+Im0qjf%x4NQC;OTLyp zY-{s`b{J3Tn*{BOW{sXNvg(}m4epQ~*=Kg8x_?^wBsAs5VMV*O8k_svrDCS#Ro->= zmjAM7b+F!#?~JXgVS853*ZfxH%$r)FG5ypR+F{%p5(N!EwSAOnQ9Ap$Mq;z2-{}WF zg`Y*zsze;i?xieyUZ>%FC~IbiOw+yGVXCI4E0`)JOs>U&?vKR#y$e%ryJX9az7<P* zjD|N08aA<zo#{R<ChAf7+P=DcA(OCx<^+?cX%=;__w?jF-~9QT^3yE?1#&CRP7aa! zEpubC)!I8ZWgZ{XzhZY|;nqzBhJ3s5I2>$l5wOb@&Xug)wY1=g+QPkB!pVNGhHN=t zls>=iiHKT5jM}GurBA)FL#;NJXzZ%q=eDLLd&$Fs%&g^pA6O|4t}z$(Rh@goHyqD@ zK%OLESUAv+@K8;cD*G%!$Ohalny0pPDtp$lrfoL<-JbD^@?9eS_s&=j<7Qk7Yde>2 zms7J-cg;D2vDUW(*G{v3H;(soCf_i1S&}Sh`0DUh=Nm&F8H(Mj@%j4Qk6GFjv*z5C z2Rml&cls1odNNCy&3Rb*c*v%k<HKh=-Ocfz{Wxi>pYE@t!_uPFv*J!j2-w}qBoCZn z4j~;2nG0;T2{y7e;z07J?>#NK^TysgxatLi!(08(#%j4*Mc9LaJLe|c^4M}BYe~Vg z4Pw)yK1~kWoR>I|H`k(I)TwFL*F4=}@yLrbDum75=uz;%#xBllGSb6no(+5Pv?Ys| z5t`b`mvt6wa9^Jz+9rJ4->J^)=cP+$o<!Z5Qh#g1_n7AsORPmVy=omUWZ@;?>JCBg zs@yh?4J_;l2q~WNa<l4?3(Z!eHw3W?*X9Ktu3IK4mOu9F&j2H*V~S-zg4=W-D|;TD z=R2|caLFaPYeP@>`$(F7B|E`Avbz+zy-U#Wft?<&xY=XVlFfS(CcP{VT{tyH!|_AT zIM?O3<EJb;xY)*BW7ET77Y^HXPDrc1pmW)CtyJjFRUUO7LeW_b<tHr3^s~_IUgzGY zd$(5{)SWc4`giM3``-l&^O}T(-m`U0@|K7^oab@#GsiaO{^vINx+9qb$%>J;-?4-r zai3;|S6_d<^s}`<w^IbYyE9&Frk8U{i?ii3@2Q$XP4f*@?R*^Xi=SF&-t}75>65ei z=_OJ9@rrw|yqdpkvQqafd5Pe=BP!F5m+w5su`jAVN7@vDdtbWiuC(jCKa)T9PF>Bm z71>4H$h`rq3&YO*kRM|F@aI>xy{nsdj4kj?9on?>b=n65;S;|^@@iez_~@-TFDyHy zO29pypnILN;&D;Kr{A1Wd_2&_@4(Ubc~d;<*NgR&k5hau+K)^Q;#ps~wPloI+n(02 z;Tv9lQ;dw;sGXC;l-QB!Guis&@pt4ebZ<Ck*W~4sCBwdb*^%A;OZdjRV<(mLL?2u2 zxD{8tbh3(H%C?FPkvCK-KUpP=`*>>MlB)$%^_@@N>C;;m7F6Mo*CpWIK0)`ci^}zB z8ud&v?{>J~`PwzY#QUbprCD2lU3=2bwc5<y;9&6K_TxLh6wkd$(c`%9?kMjPEhy~y zR8@YvX2i}N`HQ!b`RBmBNt@H(uDG~ZXWuiop7r|vQP)jY+9Yh+EZMoDwV|-&`Ozf@ zziU2PwbNFO71?(rJ4enhS6z#7pwhrnb1}PgPr(NP_eeqaq+GAC_IJLO^VYZL%zs&b z>8opnbWC16bHVy*<#ivL&&wJP?|LMzp!hRiMPsjdqK08qNkP?(tB(C!H>$KAU%2ri zx$-;??&rV}t~I}3?9o(A=lV|{G0wdH?cKvxr9*$*P;t8ZGiP_^#FYL@nZRw|qLPg? zq{VA1Qgf2Uh{%pDBYr=Nn@}R)UYekLFIQA`-+7_*voDZwVrTjIZ$*B;?-e?&*(6NJ z=&kLDjcN7V+iFnqRnb<-?Stc|-^T}19_YVru{Rz4V0Dg-4{Jb!l(@iDu>LtWC-0@U zraC!0In-@sG1q0H*N9Or>s&_{g<qbS)pycJX}<6Gu~MbxV%`NdA(hiArPdi)J+d=D zr5}HF%>DBx1>8GG_Fcy3aTk~p+#6dO<cS$^kG4&<Z+V+DGrW79`^{Ur<GUv{jCOQh z`}|ur$7h9uYO|P$+l5cRqUt)kqJ5tK;w);cy<Td!zpB+oz-+o;uOG$^TUYzNS0}y1 z!uYq`$HSp_gG)6yE^k;bYaMQGTz6u1lBVlvt6z#nwqr^^G7{y7EnaF;7&PSOzAdG) z`DUq!{bWEfY&4q1@VM|W8C?wis+Yjy!d4VA$w?(3G^4Pi1h%4V!KRZk)g?Bkq_uiq zuMc12u_<n~$JrTgSN+)CzewTicC&|pSBk4Yf10q#V3%5|uAbP-7uU7*-+Z5?=jS37 z&GCG5xsHsx2rV03gocihld_;8-BN5Q3xpHoBNRG7;94!1F=@-it3$L7-P^ZUZdgbB zl`i}J5%y`$;(KqT-ydFNcH!XCGVjkfXP>=&x35R{NWI@xq1N3=WuGqxB}=GTMF@oM zq@e$tnk7%V%3HH@JcXj2zB({Wzc!{8N=(RqRo-$hHTOcQil)c#CC_pcKS@kz=?)ss zSu<|S=97m$N5}0a)pKShJlRC<xCHZ=`?z{T#eR|eg81MG3N=}7yW&>`2>rV8>PXg+ zyHU%0kM20z(W<c3am9H5QwPj7u2?q?j2s{5eR}2n9XmG@udb>KxR)pBp8Xf=kZ~*e z#>x+O^-}3xpgeK8?Fj9uhjcC%o!2bSZkOG7IpEHtfiH@?!kSDao*bA{Im^kayWMBT zhdHj&H7*y%sgXvP!MzFJTgB!K*|kD%<RssuV6CTFL2_&TZk`D}Bk^wG+pmX3x3r7g zaa$nw>-FW?GxIW(r_HJ^ntod^plWrNtLhBP>G1oDa799$<nsmH%d#zcdeXUO%-!~s z5swR77M<c&?Jrv<|8u+Xq;u;Rd(BkvS~5E5!5c-NnDI*#l4q8XlkMBW%y#&nf0CBr zyZ6jB5wa89BW=#WXrCtaPQz&Dl)><)p9Z0je2aqf6%c-5i6S!X3<zT7Fdt@iFT5<G zbE9lwrqkxe+m~<7B|a=3WiUG9ifiKzqu^;NLAU$98cbHtQF(Dt<=W<2nMV&sepxq1 z?99j!y9N>*+66B!&I|Tv^r$N$Bh2=-dmK$a9V#oq*`cw)GQ6!I(K#h|@dc*x`)^lL z?&XKaE8e}#`*CGNa^TiwH&@Pj*DyUZS3JP_@$?nRWPUjW+@qy&UCPBBS9i*oZrgf8 zDNASkxU<4CXGCU9H<=&EJiAaL@!XZ*8I$7WR~VT@9LcCFIqbG-cgUOj9)Y7AGYZ$a z2n4)X&^;%0pXl>Xk{lz4&N<Ydk?=!v$c{<p_MF$%Cv0A9O(dk88@1Orxtv!#AOHOa z^J8H~;`jCQ`}@}M7Rb~VU5|6oI8Lst0QZ6n)0#dRUb}Zb>F#okuw!ML-aCJO^&<Pc ze}GVHs9O1_fZhFFr`pEb&v`Dl@Z}!&{Tt$}JJf1~R^Bb~+qvd$&S?SnE(*HGT&ozA z_qDFjbfN9}(P2>s_Pkr$Gkm<z!kzb)%$rwW9C-GwM&XmdF^YPTNfM7&N{V=I5xv}e zM*oNIiL}5GEH4)$Qlb*vb3DdAyW4d=w|4qC$0N0OnU78dAKKHDm;LJCv5fVLGq)(b ziCetPCpb~|Xt4VUxEVN@a(Bh=1tx1w>0izhxvyR!;NB%c_d@lw%QxoF95*^w`hDCq z9W$>EF`4UCDmUNzX%9bf(n(UzS9DMAz6*+_O52Q;y}Ms!4ttR^pd;_7=f1w@l%5~= z8CeGIkzQ9|GM15rS70(mU4_{xTMj}w=~fPc`ZW-$P^cuOD?n&QA)*3=Yh)z~N!LM8 ztpuTp45<V`w+e(N6spOwS3&4NA@M2*H_1j6Qg48ua}9)AGT|BsmenA<Lg5anbsdCW z6!u*Qp`L6<A*Tieiz*Nr$&@M(oNt2Ajlw<B>;?#8w?H^{1B52B3xyIC9IHWiNM=@p zu(}omRt*S`Nc$QP6mElX9)-sw^Ck#2D0tljp_ME|A?gkYvbR8JBi(L+pk4<;6$<TS z<#`aAQBbZ0;RWei3qn#o2zO9;MJnC~LAL>fxZ5DSA#bA4fr9285Z;o}cR)yO1fdm$ z_vEBH5G?P4u%ixyPVx~7y(k#fgYbz=t_LCK9tfQ%bdh=uAUNL#A-w^FujE@4#F{{` zX#}C0Olt(81chHH^pI9}L0J6&g#5c8^pSliC_DsV<vkF7kSFhfP=kWReGq<;OYega z)eJ%z3cpEq6A0>$KnQ4JE+Ci$S=z*0LN=qK`~Vaog7kX;N>U3bcTiyw<j9Ah=spIe z>KrJd1R07-2P#buL17c*xMomNpMa9s49XCKyo-uuD=0dTpm7N@;Sn_6i^3}uBuT9n z5OSV^u&)IKX|f#!=Qa>59)lo5raT5g>=_8%D9Dm#Pe3R^;n))p<jF1+R=0!T*b0Io znb``0!gCN<PeD*3?Vo~BgTi?flu2eA2vILU@M;4=g)Brt{Ur#p&p;SUx;+D-8HFko z#*@<RASAs4A)*}wRk9KV-Pa(fJ_kXK40#Sh2MSFnOd`j=03r1a2#GI1m`paJVA%nJ z&Pxz9$%L06^rG+zg=wVLD-d$tg0Sxu2wG%23eN99uy_r^3^L_42x9L+=te<@G<yR= z2@1#FfWRTUP+0u|1jh~#^vKK(5EME=V7&#wfV6)LLJbP%Q7|Hz??8z92!hu;5KPEI z6x2U~Ap0H!Gt%un2+b%|p)i}2{s2PKXAmMjfM7vZqM+Laf@&uS^T?1+5IRt3Lcxk0 z`w@iHFCZj-1YrT$h=S!;5Oh9)U_&N+0-+a$S18z#TAxA4`3Azi&mh>7?I<{RgJ97G z!Xh%I3k0$6AatYPNSb{Cp#+6vUqEmoyHHr&1A^mM5SEgeUqMjl1%dSqgyp3DHxO!2 zIFG_glGzPHR38Xl-5|J<g(#@^gCP4I1UJ&{I|$7vRH5KOO80<}^aF&59uU09N)&W| zf}q+9f)5$e3ql79O(^)1WBWiz{RKi|9|&v6MieXuK+x$2A%INi2cZ{*S11ILT0cO@ z`3=IpA0UK~?I7%PCLkO?frpVPKcRpa6NGLQB1p4eAe5kR>=#@&uf?x9(ueRDJ?Uzb zNwcJmF$ak3&1;T|v&O0g*+qYxZ=vdOe9F6vyb}`FwA{*Fqt84QHZVQ(jLj?Ke)uTk zEBB`O`MrB`o#aY_P~hJEdYHJY-)Z^Oz`oQ$wQthXe(~eG-(Q|=k-9VXJR|6?cZdHg zhw`=|XZH12v{mL>&DA&8I&QJ~mt$kjgSl=-!@!%t>$+$`@1)i5+?f<GP_^kx^*B%N z1YuXE@d|kpG5dG>whBoqU5gLi)sYq&x?i#5#S(}2R-G>nmdGtUK2E7?YMuM7C8zRY zPmvNr;2wKnXN8*Es%>wCv{tKSTfJ@S$r361x$aOh<BihthG8?eX+7Vj7H`ygAXQ!e znVUxU2syn08HFL8`@}U%j*ELL2)Gw3=-&Ij%=<P4kCKGXjBWLptMxkZ%6n(UMV&z_ zbH|N}c{}NS%FJd~*|c)SotH(E#mrvinsN^?J56I{TvwBxkyA2%CX!|7Ua)1d6jOcd z`NQn};>%=%<=)r3It$y#NnXo(<*S`@-RMIzTfWXTJ0l~r(d9?BVeT%=mOT%X+qZ61 zHR0TQ>!>8)-rz4w<M0Z{73lXr?j~$T80IfBnD*BDthWEXfM>y{JI8#zruJMfZJKAH z(#{*6iW6iyher4(raq3YP-l2<cszUj6s_{yE0?~L0m9&(wxxNVVdZe%r|J;~_p8H$ z9FD$mJojK(^OZ$2tmY=&emqR#VeEk%_pP33`^)#mFlM~U*jLx)v~f*<%<qRH(mm1w z?hXD*1K+(JTUDmi&Grk5{M6E#;{R^+_WRk}5AJy2EnZO__4A_B*T<|X>*R^{iajM0 zg{JEH<y;oa_fm2r)~=6{wbS?O`D{-rv%tMaXNP`O*~c76w%dG*aK8KCm|T3VhL_9@ z)v1YAIhNDAgF+ulY*F?7Km>lwE7S|}xH|s}OMa`@&H#@+&gH(pI|bZJ5FFe&Q3t{v zo%S6yvpQH|F5~L`DW)cc_kvsAOR2?oZDvRNzRm93{Zj3S;`!8;tR~)asT-~HHVZka z%h<ZBEZw!k<of~mopVBAp9HbMW}~28&bkc?zPfC<mXI~iP(jqXYu?25SF^09joO;( zBH8!6T>r;Cvw@6j!>*?`Wc(Z!A}3q2R9VGZ#G(7b((^YCT$md`#)&|$e>i&XX!vG2 zygsurPjz0dU*XTi#5B`qH9=x=F1)@4>ZiCD)Xj&m)xTO~<!&=ye#KF;({b`xt<lGh zd{yhROE(tiHU8rK;2~^K^JK^Ihki~wl^PoEJ(FJPZD!L~-|k_WXOK0a;1#)(aZq|| z`Ikt=8Jp^NDKxj~RkD9nu2}IgG$5ezN#e~yKPggE6x_4Ey3rw2Gxm5}P}+m?^W2au zo%i>)Z1_1o=zP?&d3(#wNk!`S<-6yOa^AYMye;?xvv*3R-MfR!3|{o=1kb%WX`Fz2 zTLj&kc7OD}tNU%2rD`p|9ilyLx~NxE#r=zy8+A4eEd8wOf9AIGN3|IDql(A9XYll{ z-(N9Aqf>aee`#ik)Z`iLf?-<SWGlKie4YH}i@_^y8pY>b{M8roy7sr<`dDI)@7{oR z>w?S63+;!t9qoOUu&coOQ(2t8so|s0${WS<4M(@^detY^VY@`Yy<|c6?&@St-2Gdt z+0IqyW3nO<@Lk0+H!?T+d(@j*pIVYSf9ITaebs;9mg4+N?HgTU?@XLl{mbV7`}?dD zi{9C!eVVzYhuk3s?$vG_)6(=|bK0DMu|?Gvj^F+%uKsLu>82Eu&)L#Xrt{2fM>;Cy zot$5~eWTZmrF;D6g&*{Nle98!*G-4w1)XbKO9kB9Cg`5ahdoO6oUToWEDsFbpF3^p zrIJZH67zLst&_fNDc$aRd<Q3``Q_wj#i=8#*2-M^c5u<{6JMRazgc!@pe`@<)TUGA zq!F7?u!)`0YX2xLX>x|nw2SF)Jhc5=19xYf*XRs)pT0cn<i3EFb~Bex9UtUo`BwPD z!jbOg@s>+!pL{GLVzmxGwmliyF5un{xI&x(SBSlAI6M7<vlDX{X*GZ+IB^j22S7+6 z`%rKm0>aAQAn?eOzwrz=l#tlxMJ!<M+gC`y`3)#3%LGo6ZcGqXOMp;?LK-PefS@pp zkl=>&vMVchp4slCd*0-bdHrF{a!u3U`>MOg7JrF4`svZ7smGSwQ~BvD_i*7}#UvB^ zO_Nt;Z@=uk$*HnWXyb^X(bTs|s3#By1w;GJF<;JbYNF=D@d+PXH?O)orEYx4;-7?( zl$V#G#n7QiK~ug8y<m@1%={%M9{+54X=<<G`JNixwU4rhW1`L>^WKtW!w3aZVhH$~ zPA(k+{zgec2g*=5Ooj-7pe}`79121v={6LEW)w7qLC7Yfg+WM?2B8%Nc!<RUL3cO^ zJ6IsVLo5_JP%sh!;Ut+X0z#?`2%RY8k$R#aSdIW8T@-|T@+}IzDA<UBaGFdL10hEi zgkLBWl2&XGoaI2sXM<2g_Mspq55h`u5YCe)#X%@Rp$c5LDHe=c{l*W8H^j!Q-@}`< zM@L>rUS!0Cc8S<_TT{bmR^hXaKcyUoTD(4N+4I@v#U5AgdZj?wrmy2x?Vf7W^YE;J z&aF0br2+&kAOr3-F2Y?*2FxS{MQBO+FesPcF6J;OHK5oyS$e2!nQN?KntdQ#dy{jA ztY0xBdyDbu@q6xlCZb<*OE$LkmKAp0-x(FBDSz?if=yZ#r@j$MHP>#;+Sc{8Ym2~~ zErU6m33j7K5)#(OgKG|rwflBw<wu9G1yvK0mR<JuN{=!B`gzTjnP-g_4qa2S(a3D6 zgJja;G`|2FR?FfA&3pCU#Rb&rUx^j1-d8MOx198qfKaI`K?m-@X#;ND6^DV)j6&Qn z5U!CoQAipEf~F)0Rb;dz2)fE3w4zW=PLcwl1BD$@AlxJ$p^!Qn1S4q>YRP125G++d z=mdd_Zw47Wgs*PvOkcUH+Q4P1)15md6CX4>8I~%JxxkoyFeo$PrDXZQgBQI`&yS94 z4L#;}aUj3I?y1ITou`}TsvOYXc}4rzS%L1<3EJ&?eelKtx9=j$F04>}H9c@*@Ttt{ zLVK?qJ~v<chtSp|5l26mXguAz@NT-5Ug!8LJH8y6^~7#Xz}}Zxr4nlK?jz0A1Ps@c zdcz4PqJbd$k29CxV+EkhyX0F0c%~o&aGy*=fCmZ)4@j#K0Pr*cp_%MMfJX_k04?N6 z1bB`h2k?YkiU1E05T253c>s8VfbfjGh|o?-D?k97Cqe)t6d<B6$VwEF)Id;G1mP7K zq6mVnItWcDydlSq1fc_k#E~GpB^yylodkl85(w|f1SJqGH9&ZULMN#;3WQ!1_KgDJ z6WNYJ&SVfQltJhsQ<On)o&rK*ChUvw_y7elO%QBGLkW0%FdBps6n>!qj}KHpSUnYl zd=(Jj@c{_Te$svn06aTD_(?Ly0>Fa<gaNV;0iGI+gP=2nNcVBX5`rm2mLd{D<nZx; zLPDe;qOcHo6_F)Gj+_7}B1DEFiVBgp5XFSZajJl9Au<M0T!_4jI7Eolm<Tvjh}?iE zAw;$SlD#_Ms*xJ8fRGd-x2l1XGYgbXRHTJSeRWWrIiRGggCZkDzC%S!7ZjUGpvVf5 z2PT11f{LaU><aQi<a`ZiK|zSjLR1tY`w>S9kq(mqm4wJ##8E;dF$GYWvOtUm&#jnC z2o)hxTod#$5DCPw5DCO_5Q(XP;~^4&%O=pj%Y#cxc&TQ4OxKj#J2yz%Ydx-9H+Sa4 zo{JofTTeVrPO}|0uuSn{ZHz+Mts=+v4U3{eEZMymcWjt4X>^vAh{l0Y=c~u<6PW#~ z5ZP(a&P0eTq8daNQ62o74mb%Si>LvS1%yWqleA#`rjQ8$OEm?(61r~D(^5KcZBMMj zn9WhqMPtPRoi{!`rXWQ|s;E`f$lRUox_^~d$6?aDZkU?GhSK*QtMtXh(%-+795Y+> zM&Jekucne(+R(~0G8thy*^Zz^>dgSqCQ}e*kZ%!Yl4dhuBI$tJLg3ykvI{7aLt5zo z=#rTTdSoAhK50J-z<@l7U`R4K07fLdvfGJiOy!x7Y+Yccq#J@6igv|fdc?Ys@B&R? zUHogiVerkFr|^X@_-a->Zb^fGiTB-7>Q8>5HuzV0wU$wT{A#}=ab%A+{^b~9iNU{1 zrmzxzEx$NqJ~54n`q;rgcxw&6p9D9seA|P6<;w)VF+2pz{uU};=t&4O$zXj#nAH>s zznV$5>k;$#mIwdx(;wM~DmEk<S|ZyQ6XOZBnBvjP33x>JWPNeqd?J!bu3Aip7MoZQ zW<vbJ#H?N9l~shhVhDUI2D=Eo;UD<CxgIpW8}fWNh7!cwtYQ~$!kl0^!~YFRk(H|m zS5nG~m_Xh(Cp^h0Ut)wb#$)hr1nL)n0dyGOM=C5a_($wsfGkBq_li*-sS0!`G(82j zfB51XKN8emyCPj834QXJIbo@cU#fvj{%cGC_y_v<r-^w~=lMqXoo9`>0A0e?m-Aa6 z{9AsqaMFbE=n;#k8av^CVfn@8@qZyfj?6S5!iu5M-TZ+fZ<`TftdW&a2uDPTFS7W5 zg^px85-NNnigoY}HhAemJmnbwi!Y2nBd$h}(}RgItcW`3DAh6ygF1F>A?3rL0hb}r zS8_@iw3!CqX_de>XApePMv@^Bga_-7zZ>~=$yJerA<-0BoDoT+ljyfI@t;3uGTD06 z%2l6DS_~618O<2@O&#cPE{qw*5@sU*$R#s}3CS4c(K6P=|7gMk--?DKjKeVu1vm=m za`+ku93nhUlU-nfdxkD93X%*zgTXjU7soG*;Vb>{D55p|#bbPb1s>;U4Zjn~f5Qd< z{xUmyIs`rh{n`oq1$NY63Na?qb@3_@G%nw7by^&J<r?~}NoyCOApGOMFk?EcU7`(Q zUvz2hGOgj$2t!&Md^g*0(2Qse-_wRk>}=oQI|{FY2><x+Q|ZS99Qa~3^ja1^LiDbR zFJnVZ4n9(}c7xV1Qe$YXn%3~a(rc)IGQPMCqpS#@FK7ggdVF4j>5=gHN{fSUY{SPs z-L!^pZ-amM2f7*GY3&|eR~fWR@WEc)r#1W@=w<le(L~o(f%Fx=!eBh4%W=nmupB-( zvzlpfETmoFgU8^n-H(Ix9KHf?W}(ZC2R@h99@E+c;Dhfo8GLt~Drm#$xq$DFLq{jV zX9SD>WtMijGF}Agzz2`#w1)p<?M(Oh1+C#1sF%{(OIp(aZ8@#IqP5AO;p=Dccnuo- z!?)iu%4n?v#~<rx!sjt0a1r5~>QI{spTRFtzXJ`&a2k9DzyI7xmzxe+3{=2L`;pe* z70Haj?}mP&HEqxazf<-ZH2BAufxme^`0AoBbV2;4TNv%(;9K!9Dt4gZ>>hkG-YiH9 zK^>gk_;x&WnggFMdJ^`~nl5NxXl?MVd3vCo0u9^ezd{f5_2H9G7yL<AHUQ0$)_&0% zetEDLK6nh!nh~T2Ur_Ly){H^ZpzC7z&_NUUjE6L?7AC%S3q@1-R6r#>2)dvdq+MtY zmmiihhYvnJ#$_c;YqKF8Lu)Krn*-Y5>nlY-Lo@%YvGahh>HHsma?e4i6|xga5ToHn zmWUm#+LX3h)QaSWkR>;<g2dLUR#1;sTkSofs&*HO=%!`|E&A0~x7PptIp-u-qkaAU z_xpW&p7Z%Udw!nh-kd%G!^FeK!wT0y>fg%}R<wj23GkHU#;1}c>x93dC40n@bw(C$ z$tqj2F39R43&yQt$-3eXvt(5*SvO>dz-a$!2&KEb!(0*asc8l5fqx!^f|n(G68}h$ zkGCc3i9g$rusB(=UOY?Y^6|A~PvI|lE07;DV~{?Lu;ee{{H=h`AUkOd!T?Lw8`(Kz zGOYqF*|Yd(TjAtIhSDI<fxKi%rdlma)(8J_lrpP=EgAM%zS~KO!6yWv^aKW)+dgD6 zg=$*?Wr13VEE>0tCF_s>9)9`AfReZvaBlD5m(g9%3MUI$$@}c&9gvdUAlQY!g|vSI zOE?(e9{lo=kt_idLH33O+(#|h5d5;S$VW!EgiC_q$YhW;vSi8lBT>rOX^c!(SO-)= zCjBq(lQj096dtNcDtuzC$V2g0w*tzGCMCaNPz>^smrF{NRCo<!?8IBL;rM5Re8i}b za3f%%2>7(HWNG;G<*i!M*DWn!I(~VLpL|;3N~tqot|fcS3YUpYw$dTEk6W@V{7+aF zX>ZA7pf*D$t?`5<lYts<%JSVhSVAX4Uxd;`9W5D#y_+90X`xQYq!n_ZCNgQEE>^fv z_{$@cPghGe8vi+vR_lgL43{xbg9^(>7B%DV4aV{yFDjIpKWjxEhyN{0R`SBkJY)wg zSsyFhcw~nySzk*w0of5t)(=+-EluBn0!j<@w`2@Gx4?D?rIrJ&$OZVn1}Xg@Wc=T4 z5_|&k8Dd55BW=#-Mo-nnS9>vEOtQb>zSOQ9H3KofG|-_Ol!pr70rE<+S`ZAOP#fw% zT?m7EAf{Ra5bNww2!}=>e`YV%SrZV8EJ|lWMdOKqSZE4y&<w;pYYr`-C5UMzrdS&| zK^;!QDfj@^!FpH(i(v^Yg=LyL?WaZf%aSikye#PzK$dY?wI5NQ{#sx!Su<sglr>S- zKv~}cK$fZ?kflggnNX0GMOG5|YGgXdcMvl{F8f~uxmABjP4d@b+?T2y{+e(8Y9wo5 zExZovU_ERAG0(*o7i+EnCc_kv%~LkUFX`p4;5yuZn{W$m!}o9pegH8G#R|L&V)==s zx1IRAc#&(z04>T9$U`lV{Urq2LkAFxODrrbD&w_uKhe6ffXady3t~R319_R?Dp(C- zsmmMaszNo8*Vg?H?r?Rb)r=CmX+OLP2S9A5gK!9{615u0QL-j@fw%Gw)Ef1YmpI6q z3D?5wunyM42G|IjU^8rit*{NY!w%R9yI?o$fxS?q3Inyg+Vk+vhXtTuAuNJS$OfnC z9!MvR$2$SiARRJb5DbRr;WTZ~2e&84pQm?%&LD3i@d01(1AhpBI}8yqr^I}^1)E?q zh?TSzw!unR1*<it`Y`oD5ar0^ISWQYHaH;%M#C5w3n`EU$skv>GNWaBM}e#*vUWTV zvR(`TSt4Xf7!0x|$pY3L#1fPJO7<t&kJx|mjSWXOHrWNkKoLkxZ?XHu%$Ku+oE7A3 z@IIUXImjFaIbF$VN={yKbd#f+{E6`{TsiW|{vxN$EwBS>%V@<FTlFsVv$dz>c>2Qt z5HoHN3<fdF#0+~1QXm-|@HB`e)&ttZU+&5$SbMp<7%RT;1HB<O%3$aZVw;?T58yPM zfwS-u%m#Vs<Ja&F9Dx+#@H3)dt>wVicw7c^U=mD*=^*=TFu_7#2+v873=S9y!{7{c ze-^hLVeJ$%0-8W1L_st^nhMc6<Okxf1;G#kp->y@KwSufdQcx4Ktp&Gx{!8P=mtUX zJNf(pf5JVu3%|l;%5epb;}`2@C+vnjuwBE5+J<rh4-+9D@?bp3;c_~<o>Vf9=Y{y? z>?Y?tc}2NcHgXIXgFy@gC;n7;7CJ!}H8NBiQ9B7$GRQ70JFJ*>A5z|r;S)HnehAfS zCN9A{1A4&U<mQfR0}XW8kL*pD1BD<~MgdHQDKHhL!E~4j#gw2Ku9!M<y6mbPwY9nf z#6WqM<m4~xcf$_Y2{VyZ2ifz>K?P`!{5s(;fb6O@k$J!u_%Fhz;7RgwqLQQgx9VbT zEim7cF&K|(B|)pBlGCD``d)-rkqv|=!G=x)9m+ulN#%kAPV?Lgx30+WkAl%4M;bZ8 z<iU7&271C1&;jndyQ!9Sw0d@V;b#B@LJ-IcK_913^0tYAFaX}C5a-}q^+Fx3!2mI@ z3VEChy&;_R{zCRMybbTbyCCMUSU-P|Tu0niaE!2G{U$;yl5PoE_(#HU=&XLPqqXcV zZx>BMb%EqRgIC}?_z>A?I17hBes6xCWZlrcFUi9`*eiaL6LT_CjjgM-t$mds2N1sn z2jLJL2C=K=%d<LCSL^8SMKB*y4Fxaogc#JZs$!T{x00VUHlL*qF_P*>Me*1KB%_x= z+CCj*J3C0!D!7lpTllLJ??BNDVcPQ*^55iH{tO}snfypvewi-E5&1JTPh^{MH-h}$ ze?9buwXhWAk46-{3Uc~?2CR#{ha4G8l1E9plFmr6QRVOZW#JnH55{`7%=2?R%Q*Op zL}V;H4>srra$nL1?xB+fv_vk?89Ync=^(FA7y-jUR{de_F-&tjvVzLXJd#1WTLzu1 z$XOt*-~lu7%bycYSGDch)A{r9&VxdD3FL3fUWVB)2j+t0y#PuYRKj_Y)M8v|2x+t> zARSQBh->h#hE*VGtbpaP3|3k$@_e^-JiHDv^kiY!3cFxCYy(**+L8hb%9mFGPm z3&MU}`R)06{GWp?5Ff)nWFO(mY<~}bMcfJ?=Df^&T@H6LtR#Re3+{l4;PyANzu*`6 z0d9h1Bwha<{%=7n#jioE#%pjDuD}=Y349DPzs^B1d;n`DdE7;~Cvi{Y^UvGxKFC>I zN_hkh;Xf=cybJGuggXw$;Hc#<c|OJS88{6xnLh%_=ri~fK8N#g0WQL2xCHqP$>>Ww z(#*1!N{z&S14J%J&Ax|Qa2x&ycR*_UGu(wA;V1YVeudxQ9{d4+!hMj|lS)d9il3It zH=3xVd8A1sfYe+HB3&Z^%Qkg+x=8v^^d9*8<FABU8AK*LiN70kg)Yz;WOwWcvSL3D z4)Qnp_Awr0e@}q6&<0wAWbTjK3R*xs#6c`XLnJIEjBL?jWB7p-&Ijb$#T(ZPYJw+7 zp=E0l%ls?+y~y9_2Wi$C2xXx8;)>zY7{mw>!$b@eF;;>=3>PU>07$nSBn=raV#tUA zQy1!h>?2aC`XGkPgJH!lM$M2TL=>y$Chi(&gkLNsNwg%8gb~Xr2E;I_MC6LllxJz7 z$DkK9<5{lUn&ZlB5qV3Sn)s*|kT2=ALoOSp7>_-mJ0v4d!yN&#VTn;A#>_An3VmQT zvgdH01-VV>jVl}QK>T8)_5#_A<ynkW8HWRKhd^IobIdmcgLx1ucOdkK=b;^e`{7E2 zl4tRYOmyN;h7?Ewd3J!v<UYbEFm5)_vg^w3n+dYsX5h*$HB#0YF(t&L5OXaDB!EO3 z3u8cb4IH=0Fays75L06uh}kh6robe~hlx;N`6uHxA>K6HsURm(Y4NQfLt{%f{*iGb z-6E^vEc`FR3osMp%0?0?g1zt>ECwmm%eb@QY2x9yy`nBgV{XmIKNsdeA;>{C3L;@1 z&vM%@NiG5f3*c3F5BWk|897UFmw;p=pAy+BWXqs8S+2xg0WzPKTkakk|6R!4JnVus zuo||)7T64%U>&>;YhfdFA+hzi8{}CXiJ=ZV@p_T&HrySs9o~Wiupi!pH(;OjECa%> zF*SihoN+N(AGaR-L^^Vgle=Qs<zM5u8?H3@2B?DkH_~|o*)O;rvijY^^95Xh9|%+) zS1S4$?s+%^AAl?zCvo2aX_P~_W|KYqFKVN|2x6QU4&ylv$Ka^tzK#2yjLLWM)CU<Y zGE!tsKf&|+AZz+5T$xu=qtp1sgpk603dL|1`k?y+S4Q>6@DWIQAL5>~{F1f|z|Y|W z{HGvXhOw-8vP#{AZy^?>6>h*KxCphNq<}&AC84jNB<`2^uYoW4fMj+V_X=Ev$3ceW z*OvPYuIw54*YSJ@2^69pg1h*C0vWSE!vElVxD9vU2M8jZ_<si3;lxG|OYT>m|3p`r zetrZhfn0sb6_{Lwm4|Ymg9bL^s}($MaG%J3!(Wo9Bm{rJ?;zhuctI5YX9zB}kjt?U zsBY=xI3#k>*TCP80?D&nxQQ#<ye!>8JO_eYy7_CYO>zV03lf1J>RgJ`e5%ULoHUR0 zJ3qY<S$^;XGHLqu=t7Z|G;1CFbwO4k8K49)W`taM$km5jd&vFnJ&;)<3rb122%aM$ z6rBubi7Q7)IsD2jt42>5%Y{svlO!(J0Adr$5-Qyh&9g-GwGt2mMh0vwaye|sot!_k z#4q9HY}x{3oHfU73klE$T7#UdL?#B2$l7UD80ijte8O*PDsZ0usOl82bq;J6f$iNJ zF%41BsL!W={&>FGRuA`qkrA<KbG+uS#o~D{Ui-RyR76Zfl$+YsoD0k5>Uwi6A6?U; z)E3(92=^e>Zn)+Z923DRnlvm?b~(2}`O}WKe)gLLoBP06i5sb+#%X>{W7&VkIFb?x zF`;kYT7&P-3nD~(L?o%Z)$eOGb3qkP_o+_bNxRWRMl_9xROg3l0sNKHk<pqTzX_^3 zLW>GTOn(u9$`x!qw(8RAwzswtA)2Jnv{HjcXg+}?nv<F_HY+nT&Cl)fk5h(>h&K|A zkBC-tMrdC714&21KS4@0Nhzp)z_tk^n%*%|ik1rXK~ojYH+Q;T>+xvsRGYim7Hq1P zX7A?D;-`)eJ?_%vps7xrr&gUPnm3|zrb{yw%_C?+;-~cZIAdx;s7v(<Dyd9@$ErqK zerxljOH=ZLqoZT4ym_+QU%4*LT6J}V=CAfYuT>B9a^FJ=Qi=C)8LkC`t4HMaI@#i! zmuj1))r~4f%xEm|3=66G%+h-|yh>|w1x+P1<-5MSeDnGL<yjilJwt1zj*ixRY4w3^ zv>?@CmsY(lZDX}s$*+~F*KPgy=n6j-8EqTYJR(MUwxRXu_@-_pzkceOcA-<Xwe1QC z6HDtK$kGCbF#0lm%myiJ(r<SCJ*}I&YLVt}I%Om+ZguX)i7MJ1FL&9L<&(yDc$F#c z#C^HW_u@Z}_HrK>6%idpKN>&EA;eSHAA8ZWaM&0x#Z~EZYVLBahHYa%rDtg^Y<K#p zge=X^_GdrUFH4KIReWB(oTa7Ms`XdDSkK`jwP?To1I+$tGthS6qyKqamR4stx~YR% zT2Ou}T4rX!n_fOO2E4LpvhE%m5yjxcgh9hRE!cDa){m6}PSkU0R-g$%(`)hf-zTgn z{@bNFgeDkG`J8jfX{UeU_g*EbU9{rts;3W#yfLk&rO79wdzLExPTrGMtIsHQMG9o` zt3z_LUioWjQC-jPT$<KsB%^QI)${oI@%G1En&;7kqG{G(OMLX7XFIqwd1(C6w5`x9 zC41)k$)ZU!>pCA*EmXC}J?Z}S_>T)*k#?YwR;YHZII8izllNSj53D#dvzIiuIJ0vV zm!{+gaf6-=39EDTlUWRv7}kzvGWO!~Cu42bAjM0U4!yQ1`mN@=JBvnh8r^L^8ZR{O zRp_ZY+(<v_(yT|r04sQ^&DlmlwLI6kGzYCXet-NC_0)+thf8w~jW=<Y1xD`w@Y|$* zmL{K!uA`C(7WvrXK}F@O(M=^q_`}Mmif{XGmu(&Ou1izhVHWPF+xH#oe``x{X~NJ* zg;L*WwLZ3d`Zq33oE7K7l#~up3(g-AO}<&zE~umkt2Rs={=G-NbFN4O&`4c3bx0kM z-L}C}m&S>P-KC&-W%XLe8-DwwOY@?YQFx7pG48XzT<Ov*vr<bNyz2fZg>SUe^GoZx z+ln;A=U&BXAzr_@BE5%3YIJ=;&W|hG{_>_va~_Qpd#1j5*dWgqV_cfsR%-KF-l{u% z_Trf?jeClj+L5md*VpvT@A#`rRTGub<G&Pyj9=4xo=ejJjb!BE*{0Dx_xYz>nif`a zaotYsT{(C6IF}|n-CW{7YW?$;XxmR08F$gmBjVT`<$DrYlaJ>2P!n2d9_3<K0%Fvy zT+KhO8FC_uy85zd^G-}USH+Cjj8)*QrFm^kUP_+{<9n1QsobB@ywuH6*zdCIMY<Jo zxr`}L5b~PsN^FhY*9jRJ5#1~z-pxDHOufs_&s&zeyLYjqK@|41hnFT6Kw}@1-Oiac z*6rzMb7#MF^~_!)j<GBqD`zg63-)$h?a}P`uQqjixK_d1Rf9<MKP#hJzNY#6G<D0e zr=_N+=D7Vlpyx|}IZuR>c2jj=v{oyG*#EtIbs4EHv2o}Br)A()W>ftC+7s`OG&eJC zkpE8~RomQ}!bC;L7T{Jj+uTu_4DZx?(#)!#7#bGt7>>OTN0!|&GVQ%z)vd6|-Fr~6 z&WaKAA8j3Nbai|jC*#DNVWSe$+`jDFEwt6KCjzYesJXwDU#DBUSNH#JooVqz(tmtq z*?N@bANwBxDC&RZ%9%4LLkk%0lVfh=<=edAm|L!4H5+q~!NCUiIA>nj;%}^fvDzn} zl+U6#GMrGQr=^W0fSb>u`sZsrVy7`_7<OE2eJf6~*XBp|c5DB)p<y^<MvhWJIa-Q3 z<<tUfzvQYLPAyvPbZXvu6s=>}UFD1fL}S-5^wg#0m;(#@YBkFl#+%ySSM%1yR(t(9 zEx(+!YNQJ9qXpSs8><G7(fs1xq*P*kcvs)?=D1ff7Fy+^6;7a$x<opQk3ao)@88i_ z<NU+1YU>y+I_Nt>coHJ;$1VOHCp=S`5EvQK*?*2z_r_@9m8$TIiU2~8TjW@BOXb<0 z=c_X><m~8i!h;ytvJzu5n(AmA6Tcmu-S_G`D>qtU?l?73;w~kGZ0)UkWR0yg?Px1P zFzce|(IPa#Xj(*deI{Vi<;`eh-Z2P19;fDP(!ABxvD&n_uL&lr)5|M&_Wo<ancha` z#`OFhjaV*A7KI(`K5yM!G|eK6=~*sMEggpy;+Llq)@a`4C{Ket6`Y5Gg2D2XxXtp^ zba4~%)c!oJz}78KwHnX!$UK#W8}#2TJRwgV9Ith=&B#-gClKSg@hU;wq2tvT6EKBF zj#n?^2IY-6d*X1_>l-@mO8&v9U$l&nl8_}XF@7P1xP|%V8nvl*pH+WMyB}t?2<^NU zja2p4Z$mB)s_7ByYJ`{qHE<%OIXOvfo=EPWOj7Ug9Mpv=Ew*u!b!`rRGi}HOV$inI zXT7GVh<qAn*HpD2pPJgIndMwKKjHXC`}+71vMJ+%A!;_GpSqW?)d)LCumBSDn{EbA zJX-thjtl*NHi}{l9}?_VKoLy0o6UQMT3kTGT%4g!BM)jk(=?2W`)oYh`R?+sZSE6g zm5Jr(Y4nqyZRJcAG>H`6oT=g_QK|Ybs;Rg^*IzV;*{tOGI}V(GAL~)ZbW<kguP>@w z#0YwPmN_9>hIAS@Zf+M|qrqS@jvV7(QlXQz)6&s*CR1%Hb$E&vpnS$^)jfWjZH`X0 zeYzG9^sfVoB1%gX5h>0+s79e#l6@B^`a1WYm-Q(+B0ioYS)D>vW11Eo)`So;0poFH z;NOnC|7Fu_7hbcu6H3x@d%92!o<_S2E>!cUX$3*4R+=NWY<Of)qdl)0X-3QZ8e6C$ zr!$GB5JHX=7n2Kj4VkDnq2(gkQb}w!8p-XGs?9TMcz5kg+&JouW<jBvIGy^gEL7i2 zC%3JIMFBH3{&rzsp$eW!;~pziX){rrDO4-OrMo_wsV%lGnya#2;Q8ZuYT0@^BV)cg z_ySElZoZjS#ruWJ2j^UMH;T!aigTMXU;X%kwz<-5LdYmBp0C!ws1?NZSYUQaxlg;g z=d5a4Kn&UP8H20Q$msNV;qeNWSFe%{M|u>^)&*+dEOHyI%(PmhY;?|RFmN~_<mgKX zt5IxIl-fLt@@flJr<W-2tc7a)OH>&7S1(aNORkb<vkrf`SQX4h`Smz;L)>4M6!m;r z>**f!#4^)dnfKvM?ckC7TXYU4#&OuK@^W?H71C+EQdOEm`ZrdpHgi}hepsmv%k$qW z)!jMhE3Z<I74jUiN{uRHutuyhOFq8)t&9Z~e*c2biZ+vMu}WPkB!%=fYVceNVY+^{ zU)QK>bEPJ0)x>$UxG4`%JLi#XNg!?Qg89tW^fhM7)vt4H&EeNuPc;uxGz+(!s>gg{ zS6Zir5wawr+C888qdYrbONraK!7N<n!ZXz-&g`a)X63Zk)a{t1iJ6-;?#OE^STOb? z5rgc^29@?I37_AfroT$U-)>O*aeF=-qwgj&MhdR1**9AzCcYotqawK&+h%<1I4eYv z-`iiDJ^S}pR>!ly&)B3|Ezr6REnC9s?mrSo#(2doX4O{*Pd^^&{HTtRYE*1Qb2l$E zvNkz8U%nq-{B;*Y!?i?|@x7pwWYL}8y|?}F)$5#YWe9Tna&?jBqt5iuY6Zr)mHf%f zoEHwayEX7_F~(#oigi;X755rZ?CY%CQQV<RIXX0`_TJ5oUH%}Hq{T8+@&`I^RGRoi z_{qdi(O5fC;*cTPj!|4<o&Ijhj|;+Yqp=2hy=~@7;$Ndi+B0>lePpC&EYMBSNIr)H z>Xm<U(BLbw-?DE+G*vw(Yu@?Ijq<ytr)H#PB|4qX@^dC6Eo?Ey=H7;Q(h7ZWAHkhg zy?<KTRQIJsXW@}b*QjfzeCPOttfilx`q1XSim;x9{qNK~xv!~4h`xuuFSqp4?S|^9 zg<4q5mF;FvFWWfxrjPfzY2;y<Ot;ZgC;a-ce`m(52yCZY8-AqPu?}N>%hOtgfH^zN zFu(ngH|%Ji`D<<NW0A<IN-cXv3+S<jC$cR_?tAR$vT7^J+1ytk@kVkZ%B(@}4{wEy z%dFnl$k%AKPYEHTHLB7NH^V!4={EOcNTl!8mF1eRn)j6E(}G1+*2eKW&9Hgldk-Xj z8Ji=fpt&~x%X&)7@jumTvQ{(RYI`^H@2MzK=dYiwGB@l?iqVWY&fflT6SE*ksx}L? z;GnWsNzySg&f?r|?ottpG{3HQcbNySwG*Q4_eY$4j}S6kC~}3}rbfTmewhBQ=M6O2 zp`v;CzKNYaCRP=apxBPszmdB&?;tK2ni+puCx3$1x;S=5)Dty^SC`%)@T3-6%>_y; zS0P6B<BD6<ng!Z!TfMDC{gmt(vkTRjh1y~jJr1+%jn}l0ZY6*IHN2Z!(uny_UZXtb z#47#ky@q;f^^O()7~{HXI>R0&+t~7Y1&td`a|~fJ8h2kRavU8b$p&31GS{bNzB9Ua zNdD%q)c`c?ts-^zHCCUt`&7eaEW2IzsZq;#ZvTcly_nVMsW;S(#Vo3~-%vf5@Jx}1 zFF~*GSId?V-h02gCGs!!tBj?Zp9)^evUq*JYOxfHH}Xw0TT{8)w)KDtBeS4m2TaR% z><@cByU_N)M2aJ8L33`S-%{Cxi0s5S3{t1L{WBZf{k{2FLdXU}t2;7sQgc!r&PRs* zmKwY9>?$<e@~SIoT5#M`#HvB8HQ|?L<#v8l7Ay|Bvb!atk?A&mfWB>vGf!>-tp&q* zNcBk9+PCR)*ql7cM=+cSdA4({6-gJypEh!)bPR7aHPO_J>N2fkuSd%p8d<^IUOA#J zEyJK#MF^QJOOmghd!^dCV}y`V9vvCK4ULp6rLfoS`u7)pZ^UIW;|ruCs_}B|hV9G| z<+FkYJ%2<cub_dyJfaqgd*_HcwSwL4-VxPfB@JEks2a9X3$H+X#4t2etz5<<i)Evu zYVS(+$+kz$GR&RSeZ#MBdCLV=(+Cz3zAHPbf>)73|D!5?mDbSROC_$-{3|kC%%)Jq ztF*w_bSwU)+r#T$=;og2<=&=sD2GeFJ^|^I=bjI2yT4+$90s{D@uSU|V2d)xyUN<7 zdFajE4jfe;tEoVXW2%+7osX%k)mlo>#N%dHtlm52LZIJuv909TLsOWhho7pnMvJu$ z8Gb=;V&2Mf^ZCsBf46ylrn%`EeQJAK<*XrL?H#oq*SJA#wXvVM#!Yy~T+w2B+}P5m ze&aSqE=IHz>%OGX$E&l8N9^oxbDvIFSr^s$HQHd0rtg~7REM*$XCGUu#RjcIB%^0r z>ZXrR)ja4!V$x)^`rdcd+_m)DyYH$iYnj@km0IvRWwNZPpqVGkV))GOTiH1y=M*tz zKGPe8C)D4s6LZB0)omRyHl0uf>oBNGjMJc#=G<A+d(Fm0C;KHCc^W2ELo`y{O|w=` zpIqhFWHhqek!Fc)xv#Kj-+FDTyRE}%)n+4RU(eHKF;@T8WbDB)$D0$yTIQI~*&CUX zeF-6*yZz+m^Wm5I1%Oo1SiF-?tHY#WOFOO36Vf*9jH<ecg7-YD`fnobhffhk<Itbx zfzwY8hZ~6z*Sgr81iO~czO?4v$vejF7Lzy1?MXDU4?R}?^NBku<Z*+{>TGC|i&f*z z<dRDW83wV97yQ|}$p-VD%?R;Au^LQ>xFuE^XWRW4+_l_zZ&w=I(Nrhy+D&1To^rOn z?a~}BR$C?RSweUcLOa|kwbSsFo~{sA(a5BCrZ#wH)?I$zSz5BY#p<4vtkOBN?7J?s z@b>s3zJ@DA$T=0ch16pSA!&R!*nPBZ)@d%MOKR5<jpY0C$r;_7sViGunm*^$M2S0` z5K{J)doOpdlv&B?3Na2%4KzC|@1A^LkDuexymU^TBCc)OIrYsJdTiF`>g-n5W=wWp z)p@JdENIc^=HRN+KOk+%iUuLBA++{$wUn?y+Xx}!p<mQbL4!t?A8d>m!y>R!v;F+J z`fe)=PWSU>TASZ0zo&1&Q8T1*&BM1AFK*WwsR`S(Ok3~;_5C&~)bN5im+~s#Zyo&P zJ`4(DC^CARp^?V$X&CN4_ezi$b#$<d>rNL`tL+r(SwhGlSW&z`tGH^$%SH&<=-q~2 zP+5fFi;^O;47J%7UR0ZRYFo-1JE38g`l->ov|2$!E}OZ;?0fs_H_M8cJ>jyr@o`>O z+jo&h<tysME^VOg_7xSro94qExLXVL8gkV%03EH88st~~i$;6ys+zl7%djO}Q?@;X zWFLszW3J&-_ploDzNT92MV@?3W$Z=1>6$vQmmKzAQ=iDQ{VNq##N<o(%IwOh1(!1q zEjo3QddYqmZQK=P7qMuL_}Xmb%Zq-Dem(#71VYI4q-{8O-z9|2K27!CN7_8kdBCkS z<|gYMpFX$M&V5>Y_1iuzA%6_V9qHX!6Z^ECS9fjpWS(V7xxe&u#Q)~_|1ihWA98H3 zUH;@(cNSavFRvuN{6?FU9qW0PBk7l)K69XF%1ddxd6rSSHssZEQy+a|^ej#eqF=aR z?n_VR6z)+x`|zCEd|BG-jh*?gZb2YBW$Rw`Qu@8{#m@aai=q1S&F?mLX*$`j?4hI> zy(|!?{C}Ep=x?_U|3?P@NBUm>mVx^24K29ND{q*ce4%&Vn&&o!`Y+~LYBI^Uch&n| zv6o(dLxu0xdQ_Tu+icd)KP;NOUt3>^S3Y?5(rXuWds}Po<KDce@PZZ|U(@&+HX>)} zIO8n{_R)!HBUDQ-J*4L7VPoy7PJ2dXvcsO8n~{;4F;rcvskiSTFKIBu36A8UhAt;H z-O*%J`oJhT2}FjDA0OJLbu_++$YF_DS!3<Vndu4UD<GN-$<7?@bYz!2=BBC*etH{C z?niI>>G56|Q0%l6CoOg8upG%W$;q2_xh2i_*O#k~{(5{-aDdJW7{+$d1LfIIy%MOm z%{Ra4lb8uPW3wF2CcJPW+u=wszc_7TI`-tm?9r(i_QdS;xY#nP#Ej(Z%+%z6)e$Eq z+SJ(7ouiV<L`_T0$j=>P>4#?IKCCX)rsq1-%BUa6*zQOil3GSh;%00+DT{tsN|_K+ zy8LK+Y9eL)_tKF-cB(UJR9vhiQYO09CSx9I5wq6F|2tJt8Yu>3rlsX(l{B+iW+P^< zQyuZqgPNDg^dBM8n%Ms}W}2N|RfSP{oo4?To!tK|HsaFAW%K@Ly<D;XDKCv4RVHs& zd%2>zWTnyCmWgK8_<?S4#ePUtnn=qsiI_z!?P*sMWfY|eJYFUNGb_fwYc#nM`4?qr zLaoarRCd(5QYowX&m>B-lM%+ea3xVzQ<_BC_INPhzl;Q9o=Z(j6DV5^v)#;aGIv~M zD61(=qU>0FpuTajuK52Dmqu<{rWqexkX&&el$J(S-xq5YJk4c|pr*&p{K(bos=0@` z)Uut|YO7jDG_OaR$wD|JHG@#<hfF<G{jWf;pbk&as|Lt-{l+qB{p_SkV(J)sR#sA6 zY*Ap4{<FJA02OtNlvdQ%Jyfe;J+O>uO0Zt5jObLb?q5da8S+r5ej#Pjs;bt7=r#Wl zv8uWiqWhK+H4S|zVrVVBoSG4;*C-S8WN4XetEzz755>L`r0Z%#ZQb)9vFrWg$y5DN zTd)2Pk%!8!Lz}dzqkBIruU$rTs!o|~JygxQdPtd21M8M4uZKe9p%Q|q-|o7)*TdmG z)V;c83lLP=iwuoYza1;y>dsIV8>ZJ#qpC0%UaqG%QKuX09`$l_Qq!EoFkE}7Es&g= zl45r{M&>#)k{Cg^8tEOqn@7k+h3v1x8G22eNy8lJiRRY)Tw~pvcSh}afq^)uvEDZN zfe@0q8P;hxe-2=z;Y`g)N=r=5ZX%oYkjybE@tjsGw2Y9bmYRylm-(t)xE|$c4DO+h z9D7P`Mv^@vF<rGggn=;ljHasv;d-#zRf9^7Ij9Bmva9=_YIW=UvpyvIPXPr}?K~+w zZBoOqMLa)X{Fk%qUdmQMuOsq`s=b||Du#-o>~(|??$7D9)tSajt*Lf~iYSYF5q^BU z?#XWgPTBRTt{5*qs#oRbeo<=4qk3>9shB<4k>f~G?w#~nMYkW-Te~aUXIiN0(n#;1 z{_@o~s|(k)K=oEV-ACTY^*$N?Tu=AoU0uD(lSyQKy_TnOFCr~E+-c9r9O1|?dc?Qn zNm{?uZ;v-xLyfGjd-0~P9a6`2^+~X)$_>-Q)dykZ%P8rn^15PMEf3RcddM0gmZ2JX zl_s9kh(VcHPq(X{u}mP}dQ|_77YLgYrdL&kQYvCqR_))@>KK8mkiThI@*P-|a{r7h z-~B_Ys*dLB^;G-s_|@IDSUpTNxkqO;Ri5eiAODIoAo?&#A;6PEhSZOO*t4=7IXS6n z(nT$FZxg-ABkJ>pdTf!sh2FT5svfJCSM?g|kwtym>mI?4<if^mmLZNrhIh)?QMnF# zQf7KqW(F5@cBB1=InuHm*+!E+_Md8L!~a$?Y52au7?R34M4uNV7AzS%l2dasvy(D2 zQc{P~14)^gBT^m8KS__4rk9zLnWR@&=dNpE_ENpsTV`0h@fCw4m7L0ab2!tR&;}9d zYWqR0mKrczuiVM_dV+rllaiV37@D1#n~`i!8kU-tJUlUJgfq*LIKsSW6`NeHqa&gX zpK;|Vzs0aSlXA0ZfRDAHDA)5?%JIMxRg^CgBpZG(z=M$nzeQc)uZMV-e1Slm60g0P zN*qHCFJ07pY=kqayZAkgQ-_SeFjX~~;WqQE7TB`1oKp3YGTY@#k2uLMA=R0fnB;7d zl$M&CnvlhRT-iy<vYn2^?4i<awL<<WlfEj^J7x7#BR|*b<o_cXf*8r!jqfcamyE3R z7MvD1Y}iMqCg%)GFwgrBitI_loh8At?1>r9)C8kFqa=_iC<!t;JFz5$(axi@D_R13 zlF@k$%61kdDl4M*qf~UV-rZX+&Wxd)z`(Wh-A|LziB8pPx*nu{FJ#ea77=GoWvhV; z&eFgy57)h=<$0*<^I*hu@*;k^JyI3t&_%Ny`alkbw;Xy;<@>hQRGmGbl~WyuFtOLY z&*Jm#5ayxp34Cpn^wUL2bey|tm7<4x8^1@E){`Zo<VyinJ4p}rE_oua60bc*ZLdLo zvFUoM%1qIFtIyJPAN4_sK1%s!=mU#}4%I&>XU^ih3|5pD4f*G;m+s@mHzl&lkyDb> z8R2jyC1yE_8hGoO?mi_q?POHq#auEMq9eZ4VL^uexO=mr^BMa0x?21v)!-OeHLw|j zSQ1Q4PtVOs9Fpc}(^|e(j}C1WZ4BzLQUxiO`bnDa;v}9iBh}d_Si=qmvhMum)ccDs zKy~^?3oLpjM{nVwUiH=OMX!w4S65|aGv<RBa76=V>D&s%6y2JwH?^7TXq61Tl6rh7 zE&cK_tzuF59DSLslHW(VaVrw}kvcb5uUF^On(s8|@xfcmOTJwx`66eq6>jTCDqx=8 myt!N_@l8(2s}xIuyU8WH@tX_tB<}hq2#vAvtK!FObN?Sih^`a> delta 41922 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 diff --git a/package.json b/package.json index 7beb22e55..3708007f2 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,12 @@ }, "dependencies": { "@quasar/cli": "^2.3.0", - "@quasar/extras": "^1.16.4", + "@quasar/extras": "^1.16.9", "axios": "^1.4.0", "chromium": "^3.0.3", "croppie": "^2.6.5", "pinia": "^2.1.3", - "quasar": "^2.12.0", + "quasar": "^2.14.5", "validator": "^13.9.0", "vue": "^3.3.4", "vue-i18n": "^9.2.2", @@ -30,9 +30,9 @@ "devDependencies": { "@intlify/unplugin-vue-i18n": "^0.8.1", "@pinia/testing": "^0.1.2", - "@quasar/app-vite": "^1.4.3", - "@quasar/quasar-app-extension-testing-unit-vitest": "^0.3.0", - "@vue/test-utils": "^2.3.2", + "@quasar/app-vite": "^1.7.3", + "@quasar/quasar-app-extension-testing-unit-vitest": "^0.4.0", + "@vue/test-utils": "^2.4.4", "autoprefixer": "^10.4.14", "cypress": "^12.13.0", "eslint": "^8.41.0", @@ -41,7 +41,7 @@ "eslint-plugin-vue": "^9.14.1", "postcss": "^8.4.23", "prettier": "^2.8.8", - "vitest": "^0.31.1" + "vitest": "^1.3.1" }, "engines": { "node": "^20 || ^18 || ^16", @@ -50,8 +50,8 @@ "bun": ">= 1.0.25" }, "overrides": { - "@vitejs/plugin-vue": "^4.0.0", - "vite": "^4.3.5", - "vitest": "^0.31.1" + "@vitejs/plugin-vue": "^5.0.4", + "vite": "^5.1.4", + "vitest": "^1.3.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000..5ef5b94c9 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5806 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@quasar/cli': + specifier: ^2.3.0 + version: 2.3.0 + '@quasar/extras': + specifier: ^1.16.9 + version: 1.16.9 + axios: + specifier: ^1.4.0 + version: 1.6.7 + chromium: + specifier: ^3.0.3 + version: 3.0.3 + croppie: + specifier: ^2.6.5 + version: 2.6.5 + pinia: + specifier: ^2.1.3 + version: 2.1.7(vue@3.4.19) + quasar: + specifier: ^2.14.5 + version: 2.14.5 + validator: + specifier: ^13.9.0 + version: 13.11.0 + vue: + specifier: ^3.3.4 + version: 3.4.19 + vue-i18n: + specifier: ^9.2.2 + version: 9.9.1(vue@3.4.19) + vue-router: + specifier: ^4.2.1 + version: 4.2.5(vue@3.4.19) + +devDependencies: + '@intlify/unplugin-vue-i18n': + specifier: ^0.8.1 + version: 0.8.2(vue-i18n@9.9.1) + '@pinia/testing': + specifier: ^0.1.2 + version: 0.1.3(pinia@2.1.7)(vue@3.4.19) + '@quasar/app-vite': + specifier: ^1.7.3 + version: 1.7.3(eslint@8.56.0)(pinia@2.1.7)(quasar@2.14.5)(vue-router@4.2.5)(vue@3.4.19) + '@quasar/quasar-app-extension-testing-unit-vitest': + specifier: ^0.4.0 + version: 0.4.0(@vue/test-utils@2.4.4)(quasar@2.14.5)(vite@5.1.4)(vitest@1.3.1)(vue@3.4.19) + '@vue/test-utils': + specifier: ^2.4.4 + version: 2.4.4(vue@3.4.19) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.17(postcss@8.4.35) + cypress: + specifier: ^12.13.0 + version: 12.17.4 + eslint: + specifier: ^8.41.0 + version: 8.56.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.10.0(eslint@8.56.0) + eslint-plugin-cypress: + specifier: ^2.13.3 + version: 2.15.1(eslint@8.56.0) + eslint-plugin-vue: + specifier: ^9.14.1 + version: 9.21.1(eslint@8.56.0) + postcss: + specifier: ^8.4.23 + version: 8.4.35 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + vitest: + specifier: ^1.3.1 + version: 1.3.1 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + optional: true + + /@cush/relative@1.0.0: + resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==} + dev: true + + /@cypress/request@2.88.12: + resolution: {integrity: sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==} + engines: {node: '>= 6'} + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + http-signature: 1.3.6 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.10.4 + safe-buffer: 5.2.1 + tough-cookie: 4.1.3 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + dev: true + + /@cypress/xvfb@1.2.4(supports-color@8.1.1): + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + dependencies: + debug: 3.2.7(supports-color@8.1.1) + lodash.once: 4.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true + + /@intlify/bundle-utils@4.0.0(vue-i18n@9.9.1): + resolution: {integrity: sha512-klXrYT9VXyKEXsD6UY3pShg0O5MPC07n0TZ5RrSs5ry6T1eZVolIFGJi9c3qcDrh1qjJxgikRnPBmD7qGDqbjw==} + engines: {node: '>= 12'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + dependencies: + '@intlify/message-compiler': 9.4.1 + '@intlify/shared': 9.4.1 + jsonc-eslint-parser: 1.4.1 + source-map: 0.6.1 + vue-i18n: 9.9.1(vue@3.4.19) + yaml-eslint-parser: 0.3.2 + dev: true + + /@intlify/core-base@9.9.1: + resolution: {integrity: sha512-qsV15dg7jNX2faBRyKMgZS8UcFJViWEUPLdzZ9UR0kQZpFVeIpc0AG7ZOfeP7pX2T9SQ5jSiorq/tii9nkkafA==} + engines: {node: '>= 16'} + dependencies: + '@intlify/message-compiler': 9.9.1 + '@intlify/shared': 9.9.1 + + /@intlify/message-compiler@9.4.1: + resolution: {integrity: sha512-aN2N+dUx320108QhH51Ycd2LEpZ+NKbzyQ2kjjhqMcxhHdxtOnkgdx+MDBhOy/CObwBmhC3Nygzc6hNlfKvPNw==} + engines: {node: '>= 16'} + dependencies: + '@intlify/shared': 9.4.1 + source-map-js: 1.0.2 + dev: true + + /@intlify/message-compiler@9.9.1: + resolution: {integrity: sha512-zTvP6X6HeumHOXuAE1CMMsV6tTX+opKMOxO1OHTCg5N5Sm/F7d8o2jdT6W6L5oHUsJ/vvkGefHIs7Q3hfowmsA==} + engines: {node: '>= 16'} + dependencies: + '@intlify/shared': 9.9.1 + source-map-js: 1.0.2 + + /@intlify/shared@9.4.1: + resolution: {integrity: sha512-A51elBmZWf1FS80inf/32diO9DeXoqg9GR9aUDHFcfHoNDuT46Q+fpPOdj8jiJnSHSBh8E1E+6qWRhAZXdK3Ng==} + engines: {node: '>= 16'} + dev: true + + /@intlify/shared@9.9.1: + resolution: {integrity: sha512-b3Pta1nwkz5rGq434v0psHwEwHGy1pYCttfcM22IE//K9owbpkEvFptx9VcuRAxjQdrO2If249cmDDjBu5wMDA==} + engines: {node: '>= 16'} + + /@intlify/unplugin-vue-i18n@0.8.2(vue-i18n@9.9.1): + resolution: {integrity: sha512-cRnzPqSEZQOmTD+p4pwc3RTS9HxreLqfID0keoqZDZweCy/CGRMLLTNd15S4TUf1vSBhPF03DItEFDr1F+8MDA==} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + vue-i18n-bridge: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + vue-i18n-bridge: + optional: true + dependencies: + '@intlify/bundle-utils': 4.0.0(vue-i18n@9.9.1) + '@intlify/shared': 9.4.1 + '@rollup/pluginutils': 4.2.1 + '@vue/compiler-sfc': 3.4.19 + debug: 4.3.4(supports-color@8.1.1) + fast-glob: 3.3.2 + js-yaml: 4.1.0 + json5: 2.2.3 + pathe: 1.1.2 + picocolors: 1.0.0 + source-map: 0.6.1 + unplugin: 1.7.1 + vue-i18n: 9.9.1(vue@3.4.19) + transitivePeerDependencies: + - supports-color + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: true + + /@pinia/testing@0.1.3(pinia@2.1.7)(vue@3.4.19): + resolution: {integrity: sha512-D2Ds2s69kKFaRf2KCcP1NhNZEg5+we59aRyQalwRm7ygWfLM25nDH66267U3hNvRUOTx8ofL24GzodZkOmB5xw==} + peerDependencies: + pinia: '>=2.1.5' + dependencies: + pinia: 2.1.7(vue@3.4.19) + vue-demi: 0.14.7(vue@3.4.19) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: false + + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: false + + /@pnpm/npm-conf@2.2.2: + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: false + + /@quasar/app-vite@1.7.3(eslint@8.56.0)(pinia@2.1.7)(quasar@2.14.5)(vue-router@4.2.5)(vue@3.4.19): + resolution: {integrity: sha512-pnDInCFP9M1d7lJzS8UkiFq8bGWdekLz8Gu+NLI9UAxruIM9QVlSD4hUmWptTQXaVEvYlDnqfW3LOr57B8eVtw==} + engines: {node: ^24 || ^22 || ^20 || ^18 || ^16 || ^14.19, npm: '>= 6.14.12', yarn: '>= 1.17.3'} + hasBin: true + peerDependencies: + electron-builder: '>= 22' + electron-packager: '>= 15' + eslint: ^8.11.0 + pinia: ^2.0.0 + quasar: ^2.14.0 + vue: ^3.2.29 + vue-router: ^4.0.12 + vuex: ^4.0.0 + workbox-build: '>= 6' + peerDependenciesMeta: + electron-builder: + optional: true + electron-packager: + optional: true + eslint: + optional: true + pinia: + optional: true + vuex: + optional: true + workbox-build: + optional: true + dependencies: + '@quasar/render-ssr-error': 1.0.3 + '@quasar/vite-plugin': 1.6.0(@vitejs/plugin-vue@2.3.4)(quasar@2.14.5)(vite@2.9.17)(vue@3.4.19) + '@rollup/pluginutils': 4.2.1 + '@types/chrome': 0.0.208 + '@types/compression': 1.7.5 + '@types/cordova': 0.0.34 + '@types/express': 4.17.21 + '@vitejs/plugin-vue': 2.3.4(vite@5.1.4)(vue@3.4.19) + archiver: 5.3.2 + chokidar: 3.6.0 + ci-info: 3.9.0 + compression: 1.7.4 + cross-spawn: 7.0.3 + dot-prop: 6.0.1 + elementtree: 0.1.7 + esbuild: 0.14.51 + eslint: 8.56.0 + express: 4.18.2 + fast-glob: 3.2.12 + fs-extra: 11.2.0 + html-minifier: 4.0.0 + inquirer: 8.2.6 + isbinaryfile: 5.0.2 + kolorist: 1.8.0 + lodash: 4.17.21 + minimist: 1.2.8 + open: 8.4.2 + pinia: 2.1.7(vue@3.4.19) + quasar: 2.14.5 + register-service-worker: 1.7.2 + rollup-plugin-visualizer: 5.12.0 + sass: 1.71.1 + semver: 7.6.0 + serialize-javascript: 6.0.2 + table: 6.8.1 + vite: 2.9.17(sass@1.71.1) + vue: 3.4.19 + vue-router: 4.2.5(vue@3.4.19) + webpack-merge: 5.10.0 + transitivePeerDependencies: + - less + - rollup + - stylus + - supports-color + dev: true + + /@quasar/cli@2.3.0: + resolution: {integrity: sha512-DNFDemicj3jXe5+Ib+5w9Bwj1U3yoHQkqn0bU/qysIl/p0MmGA1yqOfUF0V4fw/5or1dfCvStIA/oZxUcC+2pQ==} + engines: {node: '>= 16', npm: '>= 5.6.0', yarn: '>= 1.6.0'} + hasBin: true + dependencies: + '@quasar/ssl-certificate': 1.0.0 + ci-info: 3.9.0 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + cors: 2.8.5 + cross-spawn: 7.0.3 + express: 4.18.2 + fs-extra: 11.2.0 + http-proxy-middleware: 2.0.6 + kolorist: 1.8.0 + minimist: 1.2.8 + open: 9.1.0 + route-cache: 0.5.0 + selfsigned: 2.4.1 + update-notifier: 6.0.2 + transitivePeerDependencies: + - '@types/express' + - debug + - supports-color + dev: false + + /@quasar/extras@1.16.9: + resolution: {integrity: sha512-SlOhwzXyPQHWgQIS2ncyDdYdksCJvUYNtgsDQqzAKEG3r3d/ejOxvThle79HTK3Q6HB+gQWFG21Ux00Osr5XSw==} + dev: false + + /@quasar/quasar-app-extension-testing-unit-vitest@0.4.0(@vue/test-utils@2.4.4)(quasar@2.14.5)(vite@5.1.4)(vitest@1.3.1)(vue@3.4.19): + resolution: {integrity: sha512-eyzdUdmZiCueNS+5nedjMmzdbpCetSrtdGIwW6KplW1dTzRbLiNvYUjpBOxQGmJCgEhWy9zuswJ7MZ/bTql24Q==} + engines: {node: '>= 12.22.1', npm: '>= 6.14.12', yarn: '>= 1.17.3'} + peerDependencies: + '@vitest/ui': ^0.34.0 + '@vue/test-utils': ^2.4.1 + quasar: ^2.12.7 + vitest: ^0.34.0 + vue: ^3.3.4 + peerDependenciesMeta: + '@vitest/ui': + optional: true + dependencies: + '@vue/test-utils': 2.4.4(vue@3.4.19) + happy-dom: 11.2.0 + lodash-es: 4.17.21 + quasar: 2.14.5 + vite-jsconfig-paths: 2.0.1(vite@5.1.4) + vite-tsconfig-paths: 4.3.1(vite@5.1.4) + vitest: 1.3.1 + vue: 3.4.19 + transitivePeerDependencies: + - supports-color + - typescript + - vite + dev: true + + /@quasar/render-ssr-error@1.0.3: + resolution: {integrity: sha512-A8RF99q6/sOSe1Ighnh5syEIbliD3qUYEJd2HyfFyBPSMF+WYGXon5dmzg4nUoK662NgOggInevkDyBDJcZugg==} + engines: {node: '>= 16'} + dependencies: + stack-trace: 1.0.0-pre2 + dev: true + + /@quasar/ssl-certificate@1.0.0: + resolution: {integrity: sha512-RhZF7rO76T7Ywer1/5lCe7xl3CIiXxSAH1xgwOj0wcHTityDxJqIN/5YIj6BxMvlFw8XkJDoB1udEQafoVFA4g==} + engines: {node: '>= 16'} + dependencies: + fs-extra: 11.2.0 + selfsigned: 2.4.1 + dev: false + + /@quasar/vite-plugin@1.6.0(@vitejs/plugin-vue@2.3.4)(quasar@2.14.5)(vite@2.9.17)(vue@3.4.19): + resolution: {integrity: sha512-LmbV76G1CwWZbrEQhqyZpkRQTJyO3xpW55aXY1zWN+JhyUeG77CcMCEWteBVnJ6I6ehUPFDC9ONd2+WlwH6rNQ==} + engines: {node: '>=12'} + peerDependencies: + '@vitejs/plugin-vue': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-beta.0 + quasar: ^2.8.0 + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-beta.0 + vue: ^3.0.0 + dependencies: + '@vitejs/plugin-vue': 2.3.4(vite@5.1.4)(vue@3.4.19) + quasar: 2.14.5 + vite: 2.9.17(sass@1.71.1) + vue: 3.4.19 + dev: true + + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/rollup-android-arm-eabi@4.12.0: + resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.12.0: + resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.12.0: + resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.12.0: + resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.12.0: + resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.12.0: + resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.12.0: + resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.12.0: + resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.12.0: + resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.12.0: + resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.12.0: + resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.12.0: + resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.12.0: + resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false + + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + dev: false + + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: false + + /@szmarczak/http-timer@5.0.1: + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + dependencies: + defer-to-connect: 2.0.1 + dev: false + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.11.19 + dev: true + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.11.19 + '@types/responselike': 1.0.3 + dev: false + + /@types/chrome@0.0.208: + resolution: {integrity: sha512-VDU/JnXkF5qaI7WBz14Azpa2VseZTgML0ia/g/B1sr9OfdOnHiH/zZ7P7qCDqxSlkqJh76/bPc8jLFcx8rHJmw==} + dependencies: + '@types/filesystem': 0.0.35 + '@types/har-format': 1.2.15 + dev: true + + /@types/compression@1.7.5: + resolution: {integrity: sha512-AAQvK5pxMpaT+nDvhHrsBhLSYG5yQdtkaJE1WYieSNY2mVFKAgmU4ks65rkZD5oqnGCFLyQpUr1CqI4DmUMyDg==} + dependencies: + '@types/express': 4.17.21 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 20.11.19 + dev: true + + /@types/cordova@0.0.34: + resolution: {integrity: sha512-rkiiTuf/z2wTd4RxFOb+clE7PF4AEJU0hsczbUdkHHBtkUmpWQpEddynNfJYKYtZFJKbq4F+brfekt1kx85IZA==} + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/express-serve-static-core@4.17.43: + resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + dependencies: + '@types/node': 20.11.19 + '@types/qs': 6.9.11 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.43 + '@types/qs': 6.9.11 + '@types/serve-static': 1.15.5 + dev: true + + /@types/filesystem@0.0.35: + resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} + dependencies: + '@types/filewriter': 0.0.33 + dev: true + + /@types/filewriter@0.0.33: + resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} + dev: true + + /@types/har-format@1.2.15: + resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} + dev: true + + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: false + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + dependencies: + '@types/node': 20.11.19 + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 20.11.19 + dev: false + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: true + + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 20.11.19 + dev: false + + /@types/node@16.18.82: + resolution: {integrity: sha512-pcDZtkx9z8XYV+ius2P3Ot2VVrcYOfXffBQUBuiszrlUzKSmoDYqo+mV+IoL8iIiIjjtOMvNSmH1hwJ+Q+f96Q==} + dev: true + + /@types/node@20.11.19: + resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} + dependencies: + undici-types: 5.26.5 + + /@types/qs@6.9.11: + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 20.11.19 + dev: false + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.11.19 + dev: true + + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 20.11.19 + dev: true + + /@types/sinonjs__fake-timers@8.1.1: + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + dev: true + + /@types/sizzle@2.3.8: + resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} + dev: true + + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + requiresBuild: true + dependencies: + '@types/node': 16.18.82 + dev: true + optional: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-vue@2.3.4(vite@5.1.4)(vue@3.4.19): + resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==} + engines: {node: '>=12.0.0'} + peerDependencies: + vite: ^2.5.10 + vue: ^3.2.25 + dependencies: + vite: 5.1.4 + vue: 3.4.19 + dev: true + + /@vitest/expect@1.3.1: + resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} + dependencies: + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.3.1: + resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} + dependencies: + '@vitest/utils': 1.3.1 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot@1.3.1: + resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + dependencies: + magic-string: 0.30.7 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.3.1: + resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + dependencies: + tinyspy: 2.2.1 + dev: true + + /@vitest/utils@1.3.1: + resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /@vue/compiler-core@3.4.19: + resolution: {integrity: sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==} + dependencies: + '@babel/parser': 7.23.9 + '@vue/shared': 3.4.19 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + /@vue/compiler-dom@3.4.19: + resolution: {integrity: sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==} + dependencies: + '@vue/compiler-core': 3.4.19 + '@vue/shared': 3.4.19 + + /@vue/compiler-sfc@3.4.19: + resolution: {integrity: sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==} + dependencies: + '@babel/parser': 7.23.9 + '@vue/compiler-core': 3.4.19 + '@vue/compiler-dom': 3.4.19 + '@vue/compiler-ssr': 3.4.19 + '@vue/shared': 3.4.19 + estree-walker: 2.0.2 + magic-string: 0.30.7 + postcss: 8.4.35 + source-map-js: 1.0.2 + + /@vue/compiler-ssr@3.4.19: + resolution: {integrity: sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==} + dependencies: + '@vue/compiler-dom': 3.4.19 + '@vue/shared': 3.4.19 + + /@vue/devtools-api@6.6.1: + resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + + /@vue/reactivity@3.4.19: + resolution: {integrity: sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==} + dependencies: + '@vue/shared': 3.4.19 + + /@vue/runtime-core@3.4.19: + resolution: {integrity: sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==} + dependencies: + '@vue/reactivity': 3.4.19 + '@vue/shared': 3.4.19 + + /@vue/runtime-dom@3.4.19: + resolution: {integrity: sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==} + dependencies: + '@vue/runtime-core': 3.4.19 + '@vue/shared': 3.4.19 + csstype: 3.1.3 + + /@vue/server-renderer@3.4.19(vue@3.4.19): + resolution: {integrity: sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==} + peerDependencies: + vue: 3.4.19 + dependencies: + '@vue/compiler-ssr': 3.4.19 + '@vue/shared': 3.4.19 + vue: 3.4.19 + + /@vue/shared@3.4.19: + resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==} + + /@vue/test-utils@2.4.4(vue@3.4.19): + resolution: {integrity: sha512-8jkRxz8pNhClAf4Co4ZrpAoFISdvT3nuSkUlY6Ys6rmTpw3DMWG/X3mw3gQ7QJzgCZO9f+zuE2kW57fi09MW7Q==} + peerDependencies: + '@vue/server-renderer': ^3.0.1 + vue: ^3.0.1 + peerDependenciesMeta: + '@vue/server-renderer': + optional: true + dependencies: + js-beautify: 1.15.1 + vue: 3.4.19 + vue-component-type-helpers: 1.8.27 + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + /acorn-jsx@5.3.2(acorn@7.4.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: false + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + dev: true + + /archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: true + + /archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + async: 3.2.5 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /autoprefixer@10.4.17(postcss@8.4.35): + resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001588 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true + + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4@1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + dev: true + + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: false + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /blob-util@2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + dev: true + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: false + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.52 + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001588 + electron-to-chromium: 1.4.677 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: false + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: false + + /cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + dev: false + + /cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.0 + responselike: 3.0.0 + dev: false + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: false + + /cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: true + + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: false + + /caniuse-lite@1.0.30001588: + resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /check-more-types@2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /chromium@3.0.3: + resolution: {integrity: sha512-TfbzP/3t38Us5xrbb9x87M/y5I/j3jx0zeJhhQ72gjp6dwJuhVP6hBZnBH4wEg7512VVXk9zCfTuPFOdw7bQqg==} + os: [darwin, linux, win32] + requiresBuild: true + dependencies: + cachedir: 2.4.0 + debug: 4.3.4(supports-color@8.1.1) + extract-zip: 1.7.0 + got: 11.8.6 + progress: 2.0.3 + rimraf: 2.7.1 + tmp: 0.0.33 + tunnel: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + /clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + dependencies: + source-map: 0.6.1 + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: false + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: true + + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: false + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: true + + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + /configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 + dev: false + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: false + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + /core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: false + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: true + + /crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + dev: true + + /croppie@2.6.5: + resolution: {integrity: sha512-IlChnVUGG5T3w2gRZIaQgBtlvyuYnlUWs2YZIXXR3H9KrlO1PtBT3j+ykxvy9eZIWhk+V5SpBmhCQz5UXKrEKQ==} + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: false + + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /cypress@12.17.4: + resolution: {integrity: sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==} + engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} + hasBin: true + requiresBuild: true + dependencies: + '@cypress/request': 2.88.12 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) + '@types/node': 16.18.82 + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.8 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.4.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.3 + commander: 6.2.1 + common-tags: 1.8.2 + dayjs: 1.11.10 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.4.1 + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1(supports-color@8.1.1) + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0(enquirer@2.4.1) + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.8 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + process: 0.11.10 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.6.0 + supports-color: 8.1.1 + tmp: 0.2.1 + untildify: 4.0.0 + yauzl: 2.10.0 + dev: true + + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug@3.2.7(supports-color@8.1.1): + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 8.1.1 + dev: true + + /debug@4.3.4(supports-color@8.1.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: false + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: false + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: false + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: false + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + dependencies: + is-obj: 2.0.0 + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.6.0 + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + /electron-to-chromium@1.4.677: + resolution: {integrity: sha512-erDa3CaDzwJOpyvfKhOiJjBVNnMM0qxHq47RheVVwsSQrgBA9ZSGV9kdaOfZDPXcHzhG7lBxhj6A7KvfLJBd6Q==} + dev: true + + /elementtree@0.1.7: + resolution: {integrity: sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==} + engines: {node: '>= 0.4.0'} + dependencies: + sax: 1.1.4 + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /esbuild-android-64@0.14.51: + resolution: {integrity: sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64@0.14.51: + resolution: {integrity: sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64@0.14.51: + resolution: {integrity: sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64@0.14.51: + resolution: {integrity: sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64@0.14.51: + resolution: {integrity: sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64@0.14.51: + resolution: {integrity: sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32@0.14.51: + resolution: {integrity: sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64@0.14.51: + resolution: {integrity: sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64@0.14.51: + resolution: {integrity: sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm@0.14.51: + resolution: {integrity: sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.14.51: + resolution: {integrity: sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le@0.14.51: + resolution: {integrity: sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64@0.14.51: + resolution: {integrity: sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x@0.14.51: + resolution: {integrity: sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64@0.14.51: + resolution: {integrity: sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64@0.14.51: + resolution: {integrity: sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64@0.14.51: + resolution: {integrity: sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32@0.14.51: + resolution: {integrity: sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64@0.14.51: + resolution: {integrity: sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64@0.14.51: + resolution: {integrity: sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild@0.14.51: + resolution: {integrity: sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + esbuild-android-64: 0.14.51 + esbuild-android-arm64: 0.14.51 + esbuild-darwin-64: 0.14.51 + esbuild-darwin-arm64: 0.14.51 + esbuild-freebsd-64: 0.14.51 + esbuild-freebsd-arm64: 0.14.51 + esbuild-linux-32: 0.14.51 + esbuild-linux-64: 0.14.51 + esbuild-linux-arm: 0.14.51 + esbuild-linux-arm64: 0.14.51 + esbuild-linux-mips64le: 0.14.51 + esbuild-linux-ppc64le: 0.14.51 + esbuild-linux-riscv64: 0.14.51 + esbuild-linux-s390x: 0.14.51 + esbuild-netbsd-64: 0.14.51 + esbuild-openbsd-64: 0.14.51 + esbuild-sunos-64: 0.14.51 + esbuild-windows-32: 0.14.51 + esbuild-windows-64: 0.14.51 + esbuild-windows-arm64: 0.14.51 + dev: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + dev: false + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier@8.10.0(eslint@8.56.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-cypress@2.15.1(eslint@8.56.0): + resolution: {integrity: sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w==} + peerDependencies: + eslint: '>= 3.2.1' + dependencies: + eslint: 8.56.0 + globals: 13.24.0 + dev: true + + /eslint-plugin-vue@9.21.1(eslint@8.56.0): + resolution: {integrity: sha512-XVtI7z39yOVBFJyi8Ljbn7kY9yHzznKXL02qQYn+ta63Iy4A9JFBw6o4OSB9hyD2++tVT+su9kQqetUyCCwhjw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + eslint: 8.56.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.15 + semver: 7.6.0 + vue-eslint-parser: 9.4.2(eslint@8.56.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@6.2.1: + resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} + engines: {node: '>=6.0.0'} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + /eventemitter2@6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + dev: true + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false + + /execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: false + + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: false + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true + + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extract-zip@1.7.0: + resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} + hasBin: true + dependencies: + concat-stream: 1.6.2 + debug: 2.6.9 + mkdirp: 0.5.6 + yauzl: 2.10.0 + transitivePeerDependencies: + - supports-color + dev: false + + /extract-zip@2.0.1(supports-color@8.1.1): + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4(supports-color@8.1.1) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + dev: false + + /form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.1 + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: false + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /getos@3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + dependencies: + async: 3.2.5 + dev: true + + /getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-regex@0.3.2: + resolution: {integrity: sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw==} + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: false + + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + dev: false + + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /happy-dom@11.2.0: + resolution: {integrity: sha512-z4PshcYIIH6SkymSNRcDFwYUJOENe+FOQDx5BbHgg/wQUgxF5p9I9/BN45Jff34bbhXV8yJgkC5N99eyOzXK3w==} + dependencies: + css.escape: 1.5.1 + entities: 4.5.0 + iconv-lite: 0.6.3 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-yarn@3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /html-minifier@4.0.0: + resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} + engines: {node: '>=6'} + hasBin: true + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.20.3 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.17.4 + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + /http-proxy-middleware@2.0.6: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: false + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.5 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: false + + /http-signature@1.3.6: + resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.18.0 + dev: true + + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: false + + /http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: false + + /human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: false + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: false + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: false + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + /ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.9.0 + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.1 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: false + + /is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-npm@6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: false + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + + /is-yarn-global@0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /isbinaryfile@5.0.2: + resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==} + engines: {node: '>= 18.0.0'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /js-beautify@1.15.1: + resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.3.10 + js-cookie: 3.0.5 + nopt: 7.2.0 + dev: true + + /js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + dev: true + + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-eslint-parser@1.4.1: + resolution: {integrity: sha512-hXBrvsR1rdjmB2kQmUjf1rEIa+TqHBGMge8pwi++C+Si1ad7EjZrJcpgwym+QGK/pqTx+K7keFAtLlVNdLRJOg==} + engines: {node: '>=8.10.0'} + dependencies: + acorn: 7.4.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + semver: 6.3.1 + dev: true + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + /jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + /latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} + dependencies: + package-json: 8.1.1 + dev: false + + /lazy-ass@1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} + dev: true + + /lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + dependencies: + readable-stream: 2.3.8 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /listr2@3.14.0(enquirer@2.4.1): + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + enquirer: 2.4.1 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.1 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.5.0 + pkg-types: 1.0.3 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: true + + /lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: true + + /lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + dev: true + + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + dev: true + + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + dev: true + + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: false + + /lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@4.0.1: + resolution: {integrity: sha512-MX0ZnRoVTWXBiNe9dysqKXjvhmQgHsOirh/2rerIVJ8sbQeMxc5OPj0HDpVV3bYjdE6GTHrPf8BEHJqWHFkjHA==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: false + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: false + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: false + + /mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.4.0 + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + /no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + dependencies: + lower-case: 1.1.4 + dev: true + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: false + + /normalize-url@8.0.0: + resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + engines: {node: '>=14.16'} + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: false + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + /ospath@1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + dev: true + + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: false + + /p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + dev: false + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} + dependencies: + got: 12.6.1 + registry-auth-token: 5.0.2 + registry-url: 6.0.1 + semver: 7.6.0 + dev: false + + /param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + dependencies: + no-case: 2.3.2 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + dev: true + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pinia@2.1.7(vue@3.4.19): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.19 + vue-demi: 0.14.7(vue@3.4.19) + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.5.0 + pathe: 1.1.2 + dev: true + + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false + + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + /proxy-from-env@1.0.0: + resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: false + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /pupa@3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} + dependencies: + escape-goat: 4.0.0 + dev: false + + /qs@6.10.4: + resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.5 + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.5 + + /quasar@2.14.5: + resolution: {integrity: sha512-N+iRYoby09P9l+R5nKfA0tCPXdXJJHCPifjP8CkL/JASX5yHEjuwh7KoNiWzYLZPbsYXVuQKqwtDy0qXuXTv2g==} + engines: {node: '>= 10.18.1', npm: '>= 6.13.4', yarn: '>= 1.21.1'} + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: false + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: false + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + dependencies: + minimatch: 5.1.6 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /recrawl-sync@2.2.3: + resolution: {integrity: sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ==} + dependencies: + '@cush/relative': 1.0.0 + glob-regex: 0.3.2 + slash: 3.0.0 + sucrase: 3.35.0 + tslib: 1.14.1 + dev: true + + /register-service-worker@1.7.2: + resolution: {integrity: sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==} + dev: true + + /registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} + dependencies: + '@pnpm/npm-conf': 2.2.2 + dev: false + + /registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + dependencies: + rc: 1.2.8 + dev: false + + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + + /request-progress@3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + dependencies: + throttleit: 1.0.1 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: false + + /responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + dependencies: + lowercase-keys: 3.0.0 + dev: false + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.2 + dev: true + + /rollup@2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /rollup@4.12.0: + resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.12.0 + '@rollup/rollup-android-arm64': 4.12.0 + '@rollup/rollup-darwin-arm64': 4.12.0 + '@rollup/rollup-darwin-x64': 4.12.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 + '@rollup/rollup-linux-arm64-gnu': 4.12.0 + '@rollup/rollup-linux-arm64-musl': 4.12.0 + '@rollup/rollup-linux-riscv64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-musl': 4.12.0 + '@rollup/rollup-win32-arm64-msvc': 4.12.0 + '@rollup/rollup-win32-ia32-msvc': 4.12.0 + '@rollup/rollup-win32-x64-msvc': 4.12.0 + fsevents: 2.3.3 + dev: true + + /route-cache@0.5.0: + resolution: {integrity: sha512-7FzV+1O4q7XeerbyG8aEeDH+1bk/Vxp2sDJdEZE0KcbTP0C6IucKSQUCTwB3F0IkhpF4rYluLLENEfUQ6LH/ng==} + dependencies: + debug: 3.1.0 + lru-cache: 4.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: false + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sass@1.71.1: + resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.6.0 + immutable: 4.3.5 + source-map-js: 1.0.2 + dev: true + + /sax@1.1.4: + resolution: {integrity: sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==} + dev: true + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: false + + /semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + dependencies: + semver: 7.6.0 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /stack-trace@1.0.0-pre2: + resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==} + engines: {node: '>=16'} + dev: true + + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + dependencies: + js-tokens: 8.0.3 + dev: true + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: false + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + + /tmp@0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /tsconfck@3.0.2: + resolution: {integrity: sha512-6lWtFjwuhS3XI4HsX4Zg0izOI3FU/AI9EGVlPEUMDIhvLPMD4wkiof0WCoDgW7qY+Dy198g4d9miAqUHWHFH6Q==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dev: true + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: false + + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: false + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: false + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: false + + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + dev: true + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + /unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + dependencies: + crypto-random-string: 4.0.0 + dev: false + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + /unplugin@1.7.1: + resolution: {integrity: sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==} + dependencies: + acorn: 8.11.3 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: true + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + + /update-notifier@6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} + dependencies: + boxen: 7.1.1 + chalk: 5.3.0 + configstore: 6.0.0 + has-yarn: 3.0.0 + import-lazy: 4.0.0 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + is-npm: 6.0.0 + is-yarn-global: 0.4.1 + latest-version: 7.0.0 + pupa: 3.1.0 + semver: 7.6.0 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 + dev: false + + /upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: false + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + /verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vite-jsconfig-paths@2.0.1(vite@5.1.4): + resolution: {integrity: sha512-rabcTTfKs0MdAsQWcZjbIMo5fcp6jthZce7uFEPgVPgpSY+RNOwjzIJOPES6cB/GJZLSoLGfHM9kt5HNmJvp7A==} + peerDependencies: + vite: '>2.0.0-0' + dependencies: + debug: 4.3.4(supports-color@8.1.1) + globrex: 0.1.2 + recrawl-sync: 2.2.3 + tsconfig-paths: 3.15.0 + vite: 5.1.4 + transitivePeerDependencies: + - supports-color + dev: true + + /vite-node@1.3.1: + resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4(supports-color@8.1.1) + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.4 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-tsconfig-paths@4.3.1(vite@5.1.4): + resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + debug: 4.3.4(supports-color@8.1.1) + globrex: 0.1.2 + tsconfck: 3.0.2 + vite: 5.1.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /vite@2.9.17(sass@1.71.1): + resolution: {integrity: sha512-XxcRzra6d7xrKXH66jZUgb+srThoPu+TLJc06GifUyKq9JmjHkc1Numc8ra0h56rju2jfVWw3B3fs5l3OFMvUw==} + engines: {node: '>=12.2.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + dependencies: + esbuild: 0.14.51 + postcss: 8.4.35 + resolve: 1.22.8 + rollup: 2.77.3 + sass: 1.71.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vite@5.1.4: + resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.12.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@1.3.1: + resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.3.1 + '@vitest/ui': 1.3.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 1.3.1 + '@vitest/runner': 1.3.1 + '@vitest/snapshot': 1.3.1 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4(supports-color@8.1.1) + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.7 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.4 + vite-node: 1.3.1 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vue-component-type-helpers@1.8.27: + resolution: {integrity: sha512-0vOfAtI67UjeO1G6UiX5Kd76CqaQ67wrRZiOe7UAb9Jm6GzlUr/fC7CV90XfwapJRjpCMaZFhv1V0ajWRmE9Dg==} + dev: true + + /vue-demi@0.14.7(vue@3.4.19): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.19 + + /vue-eslint-parser@9.4.2(eslint@8.56.0): + resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.56.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-i18n@9.9.1(vue@3.4.19): + resolution: {integrity: sha512-xyQ4VspLdNSPTKBFBPWa1tvtj+9HuockZwgFeD2OhxxXuC2CWeNvV4seu2o9+vbQOyQbhAM5Ez56oxUrrnTWdw==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@intlify/core-base': 9.9.1 + '@intlify/shared': 9.9.1 + '@vue/devtools-api': 6.6.1 + vue: 3.4.19 + + /vue-router@4.2.5(vue@3.4.19): + resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.6.1 + vue: 3.4.19 + + /vue@3.4.19: + resolution: {integrity: sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.19 + '@vue/compiler-sfc': 3.4.19 + '@vue/runtime-dom': 3.4.19 + '@vue/server-renderer': 3.4.19(vue@3.4.19) + '@vue/shared': 3.4.19 + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: false + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: false + + /xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + dev: false + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: false + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml-eslint-parser@0.3.2: + resolution: {integrity: sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg==} + dependencies: + eslint-visitor-keys: 1.3.0 + lodash: 4.17.21 + yaml: 1.10.2 + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 + dev: true From b75afd6ec59487eccc480e8405a4681a71f708fb Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:16:59 +0100 Subject: [PATCH 23/54] refs #6797 fix(jenkins) use pnpm --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index fee06c567..0027e1cbe 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'pnpm install --no-audit --prefer-offline' + sh 'pnpm install --prefer-offline' } } stage('Test') { From f0b29790668a9d065be9888e3b69e9ae39807dd6 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 21 Feb 2024 13:19:28 +0100 Subject: [PATCH 24/54] refs #6768 create consignee --- src/pages/Customer/components/CustomerConsigneeCreate.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Customer/components/CustomerConsigneeCreate.vue b/src/pages/Customer/components/CustomerConsigneeCreate.vue index d9765d50d..580dba6e3 100644 --- a/src/pages/Customer/components/CustomerConsigneeCreate.vue +++ b/src/pages/Customer/components/CustomerConsigneeCreate.vue @@ -51,7 +51,7 @@ const toCustomerConsignees = () => { }; function handleLocation(data, location) { const { town, code, provinceFk, countryFk } = location ?? {}; - data.postcode = code; + data.postalCode = code; data.city = town; data.provinceFk = provinceFk; data.countryFk = countryFk; From 74c4a7157bf89ebb84add35c5bd622e35e41742e Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:21:31 +0100 Subject: [PATCH 25/54] refs #6797 fix(jenkins) remove chormium --- package.json | 1 - pnpm-lock.yaml | 212 +++++++------------------------------------------ 2 files changed, 30 insertions(+), 183 deletions(-) diff --git a/package.json b/package.json index 3708007f2..d985c7268 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "@quasar/cli": "^2.3.0", "@quasar/extras": "^1.16.9", "axios": "^1.4.0", - "chromium": "^3.0.3", "croppie": "^2.6.5", "pinia": "^2.1.3", "quasar": "^2.14.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ef5b94c9..7a6dc9ee8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ dependencies: axios: specifier: ^1.4.0 version: 1.6.7 - chromium: - specifier: ^3.0.3 - version: 3.0.3 croppie: specifier: ^2.6.5 version: 2.6.5 @@ -894,23 +891,11 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sindresorhus/is@4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: false - /@sindresorhus/is@5.6.0: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} dev: false - /@szmarczak/http-timer@4.0.6: - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - dependencies: - defer-to-connect: 2.0.1 - dev: false - /@szmarczak/http-timer@5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -925,15 +910,6 @@ packages: '@types/node': 20.11.19 dev: true - /@types/cacheable-request@6.0.3: - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - dependencies: - '@types/http-cache-semantics': 4.0.4 - '@types/keyv': 3.1.4 - '@types/node': 20.11.19 - '@types/responselike': 1.0.3 - dev: false - /@types/chrome@0.0.208: resolution: {integrity: sha512-VDU/JnXkF5qaI7WBz14Azpa2VseZTgML0ia/g/B1sr9OfdOnHiH/zZ7P7qCDqxSlkqJh76/bPc8jLFcx8rHJmw==} dependencies: @@ -1011,12 +987,6 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 20.11.19 - dev: false - /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true @@ -1048,12 +1018,6 @@ packages: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true - /@types/responselike@1.0.3: - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - dependencies: - '@types/node': 20.11.19 - dev: false - /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: @@ -1469,6 +1433,7 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1555,6 +1520,7 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -1581,10 +1547,7 @@ packages: /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false + dev: true /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -1613,11 +1576,6 @@ packages: engines: {node: '>=8'} dev: true - /cacheable-lookup@5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - dev: false - /cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -1636,22 +1594,10 @@ packages: responselike: 3.0.0 dev: false - /cacheable-request@7.0.4: - resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - dev: false - /cachedir@2.4.0: resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} + dev: true /call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} @@ -1744,23 +1690,6 @@ packages: fsevents: 2.3.3 dev: true - /chromium@3.0.3: - resolution: {integrity: sha512-TfbzP/3t38Us5xrbb9x87M/y5I/j3jx0zeJhhQ72gjp6dwJuhVP6hBZnBH4wEg7512VVXk9zCfTuPFOdw7bQqg==} - os: [darwin, linux, win32] - requiresBuild: true - dependencies: - cachedir: 2.4.0 - debug: 4.3.4(supports-color@8.1.1) - extract-zip: 1.7.0 - got: 11.8.6 - progress: 2.0.3 - rimraf: 2.7.1 - tmp: 0.0.33 - tunnel: 0.0.6 - transitivePeerDependencies: - - supports-color - dev: false - /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -1834,12 +1763,6 @@ packages: shallow-clone: 3.0.1 dev: true - /clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: false - /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} @@ -1922,16 +1845,7 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: false + dev: true /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -1978,6 +1892,7 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -2139,6 +2054,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -2289,6 +2205,7 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: true /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -2863,18 +2780,6 @@ packages: tmp: 0.0.33 dev: true - /extract-zip@1.7.0: - resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} - hasBin: true - dependencies: - concat-stream: 1.6.2 - debug: 2.6.9 - mkdirp: 0.5.6 - yauzl: 2.10.0 - transitivePeerDependencies: - - supports-color - dev: false - /extract-zip@2.0.1(supports-color@8.1.1): resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -2938,6 +2843,7 @@ packages: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 + dev: true /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} @@ -3080,6 +2986,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -3116,6 +3023,7 @@ packages: engines: {node: '>=8'} dependencies: pump: 3.0.0 + dev: true /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} @@ -3178,6 +3086,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -3201,23 +3110,6 @@ packages: dependencies: get-intrinsic: 1.2.4 - /got@11.8.6: - resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} - engines: {node: '>=10.19.0'} - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.3 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.4 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - dev: false - /got@12.6.1: resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} @@ -3260,6 +3152,7 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -3356,14 +3249,6 @@ packages: sshpk: 1.18.0 dev: true - /http2-wrapper@1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - dev: false - /http2-wrapper@2.2.1: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} @@ -3445,6 +3330,7 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3603,6 +3489,7 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true /isbinaryfile@5.0.2: resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==} @@ -3877,11 +3764,6 @@ packages: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} dev: true - /lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: false - /lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3960,11 +3842,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: false - /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -3979,6 +3856,7 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} @@ -4009,13 +3887,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dev: true - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: false - /mlly@1.5.0: resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} dependencies: @@ -4030,6 +3901,7 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -4092,11 +3964,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - dev: false - /normalize-url@8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} @@ -4141,6 +4008,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -4203,16 +4071,12 @@ packages: /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + dev: true /ospath@1.2.2: resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} dev: true - /p-cancelable@2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - dev: false - /p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -4281,6 +4145,7 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -4315,6 +4180,7 @@ packages: /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} @@ -4408,17 +4274,13 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} dev: true - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: false - /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -4450,6 +4312,7 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -4536,6 +4399,7 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: true /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -4629,12 +4493,6 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /responselike@2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - dependencies: - lowercase-keys: 2.0.0 - dev: false - /responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} @@ -4659,13 +4517,6 @@ packages: resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} dev: true - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -4982,6 +4833,7 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 + dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -5056,6 +4908,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -5133,6 +4986,7 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 + dev: true /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} @@ -5203,11 +5057,6 @@ packages: safe-buffer: 5.2.1 dev: true - /tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - dev: false - /tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: true @@ -5257,10 +5106,6 @@ packages: is-typedarray: 1.0.0 dev: false - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: false - /ufo@1.4.0: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} dev: true @@ -5357,6 +5202,7 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -5717,6 +5563,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -5785,6 +5632,7 @@ packages: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 + dev: true /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} From 6d3bed2db60d7cb5979be46b6148e5b411ef3eee Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:34:31 +0100 Subject: [PATCH 26/54] refs #6797 fix(jenkins) momentarily --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1906dc920..b601875f6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,5 @@ FROM node:stretch-slim -RUN corepack enable pnpm -RUN pnpm install -g @quasar/cli +RUN npm install -g @quasar/cli WORKDIR /app COPY dist/spa ./ CMD ["quasar", "serve", "./", "--history", "--hostname", "0.0.0.0"] From 4ac9dc3148cd3122a845a3699269d23692b91cde Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:35:33 +0100 Subject: [PATCH 27/54] refs #6797 fix(jenkins) momentarily --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index d985c7268..3708007f2 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@quasar/cli": "^2.3.0", "@quasar/extras": "^1.16.9", "axios": "^1.4.0", + "chromium": "^3.0.3", "croppie": "^2.6.5", "pinia": "^2.1.3", "quasar": "^2.14.5", From ed17fa067035f115e4c52da3962801a2351466d5 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:36:47 +0100 Subject: [PATCH 28/54] refs #6797 fix(jenkins) momentarily use npm --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0027e1cbe..be20b1021 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'pnpm install --prefer-offline' + sh 'npm install --prefer-offline' } } stage('Test') { @@ -73,7 +73,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'pnpm run test:unit:ci' + sh 'npm run test:unit:ci' } post { always { From 4059f168f6462da11b0740f2959b8ccc0b131cca Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:37:33 +0100 Subject: [PATCH 29/54] refs #6797 fix(jenkins) momentarily use bun --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index be20b1021..5ed1cab81 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'npm install --prefer-offline' + sh 'bun install --prefer-offline' } } stage('Test') { @@ -73,7 +73,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'npm run test:unit:ci' + sh 'bun run test:unit:ci' } post { always { From d1e1a8e1fa18b95755a21f6256ff28f4c2daf55e Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:41:41 +0100 Subject: [PATCH 30/54] refs #6797 fix(jenkins) momentarily old package.json --- package.json | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 3708007f2..148fbe369 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,11 @@ }, "dependencies": { "@quasar/cli": "^2.3.0", - "@quasar/extras": "^1.16.9", + "@quasar/extras": "^1.16.4", "axios": "^1.4.0", "chromium": "^3.0.3", - "croppie": "^2.6.5", "pinia": "^2.1.3", - "quasar": "^2.14.5", + "quasar": "^2.12.0", "validator": "^13.9.0", "vue": "^3.3.4", "vue-i18n": "^9.2.2", @@ -30,9 +29,9 @@ "devDependencies": { "@intlify/unplugin-vue-i18n": "^0.8.1", "@pinia/testing": "^0.1.2", - "@quasar/app-vite": "^1.7.3", - "@quasar/quasar-app-extension-testing-unit-vitest": "^0.4.0", - "@vue/test-utils": "^2.4.4", + "@quasar/app-vite": "^1.4.3", + "@quasar/quasar-app-extension-testing-unit-vitest": "^0.3.0", + "@vue/test-utils": "^2.3.2", "autoprefixer": "^10.4.14", "cypress": "^12.13.0", "eslint": "^8.41.0", @@ -41,17 +40,16 @@ "eslint-plugin-vue": "^9.14.1", "postcss": "^8.4.23", "prettier": "^2.8.8", - "vitest": "^1.3.1" + "vitest": "^0.31.1" }, "engines": { "node": "^20 || ^18 || ^16", "npm": ">= 8.1.2", - "yarn": ">= 1.21.1", - "bun": ">= 1.0.25" + "yarn": ">= 1.21.1" }, "overrides": { - "@vitejs/plugin-vue": "^5.0.4", - "vite": "^5.1.4", - "vitest": "^1.3.1" + "@vitejs/plugin-vue": "^4.0.0", + "vite": "^4.3.5", + "vitest": "^0.31.1" } } From cda05112470aa235b1e0f1d3b29313d7b2d8c779 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 13:43:33 +0100 Subject: [PATCH 31/54] refs #6797 fix(jenkins) momentarily old package.json --- Jenkinsfile | 4 ++-- package.json | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5ed1cab81..be20b1021 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'bun install --prefer-offline' + sh 'npm install --prefer-offline' } } stage('Test') { @@ -73,7 +73,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'bun run test:unit:ci' + sh 'npm run test:unit:ci' } post { always { diff --git a/package.json b/package.json index 148fbe369..7beb22e55 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@quasar/extras": "^1.16.4", "axios": "^1.4.0", "chromium": "^3.0.3", + "croppie": "^2.6.5", "pinia": "^2.1.3", "quasar": "^2.12.0", "validator": "^13.9.0", @@ -45,7 +46,8 @@ "engines": { "node": "^20 || ^18 || ^16", "npm": ">= 8.1.2", - "yarn": ">= 1.21.1" + "yarn": ">= 1.21.1", + "bun": ">= 1.0.25" }, "overrides": { "@vitejs/plugin-vue": "^4.0.0", From 5e5c2e640b5ea31ca0584c65e813ae8d1b2e700a Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 21 Feb 2024 13:48:48 +0100 Subject: [PATCH 32/54] refs #6768 consignee --- .../components/CustomerConsigneeCreate.vue | 2 - .../components/CustomerConsigneeEdit.vue | 117 +++--------------- .../Supplier/Card/SupplierAddressesCreate.vue | 84 +++---------- 3 files changed, 29 insertions(+), 174 deletions(-) diff --git a/src/pages/Customer/components/CustomerConsigneeCreate.vue b/src/pages/Customer/components/CustomerConsigneeCreate.vue index 580dba6e3..e4302ed65 100644 --- a/src/pages/Customer/components/CustomerConsigneeCreate.vue +++ b/src/pages/Customer/components/CustomerConsigneeCreate.vue @@ -55,9 +55,7 @@ function handleLocation(data, location) { data.city = town; data.provinceFk = provinceFk; data.countryFk = countryFk; - console.log('data', data); } -console.log('handleLocation: ', handleLocation); </script> <template> diff --git a/src/pages/Customer/components/CustomerConsigneeEdit.vue b/src/pages/Customer/components/CustomerConsigneeEdit.vue index 98996e479..afa6afa5d 100644 --- a/src/pages/Customer/components/CustomerConsigneeEdit.vue +++ b/src/pages/Customer/components/CustomerConsigneeEdit.vue @@ -4,7 +4,7 @@ import { useI18n } from 'vue-i18n'; import { useRoute } from 'vue-router'; import axios from 'axios'; - +import VnLocation from 'src/components/common/VnLocation.vue'; import FetchData from 'components/FetchData.vue'; import FormModel from 'components/FormModel.vue'; import VnRow from 'components/ui/VnRow.vue'; @@ -17,13 +17,8 @@ import CustomsNewCustomsAgent from 'src/pages/Customer/components/CustomerNewCus const { t } = useI18n(); const route = useRoute(); -const townsFetchDataRef = ref(null); -const postcodeFetchDataRef = ref(null); const urlUpdate = ref(''); - const postcodesOptions = ref([]); -const citiesLocationOptions = ref([]); -const provincesLocationOptions = ref([]); const agencyModes = ref([]); const incoterms = ref([]); const customsAgents = ref([]); @@ -34,14 +29,6 @@ onBeforeMount(() => { urlUpdate.value = `Clients/${route.params.id}/updateAddress/${route.params.consigneeId}`; }); -const onPostcodeCreated = async ({ code, provinceFk, townFk }, formData) => { - await postcodeFetchDataRef.value.fetch(); - await townsFetchDataRef.value.fetch(); - formData.postalCode = code; - formData.provinceFk = provinceFk; - formData.city = citiesLocationOptions.value.find((town) => town.id === townFk).name; -}; - const getData = async (observations) => { observationTypes.value = observations; @@ -97,26 +84,16 @@ const onDataSaved = () => { }; axios.post('AddressObservations/crud', payload); }; +function handleLocation(data, location) { + const { town, code, provinceFk, countryFk } = location ?? {}; + data.postalCode = code; + data.city = town; + data.provinceFk = provinceFk; + data.countryFk = countryFk; +} </script> <template> - <FetchData - ref="postcodeFetchDataRef" - @on-fetch="(data) => (postcodesOptions = data)" - auto-load - url="Postcodes/location" - /> - <FetchData - ref="townsFetchDataRef" - @on-fetch="(data) => (citiesLocationOptions = data)" - auto-load - url="Towns/location" - /> - <FetchData - @on-fetch="(data) => (provincesLocationOptions = data)" - auto-load - url="Provinces/location" - /> <fetch-data @on-fetch="(data) => (agencyModes = data)" auto-load @@ -168,83 +145,17 @@ const onDataSaved = () => { <VnRow class="row q-gutter-md q-mb-md"> <div class="col"> - <VnSelectDialog - :label="t('Postcode')" - :options="postcodesOptions" - :roles-allowed-to-create="['deliveryAssistant']" + <VnLocation :rules="validate('Worker.postcode')" - hide-selected - option-label="code" - option-value="code" - v-model="data.postalCode" - > - <template #form> - <CustomerCreateNewPostcode - @on-data-saved="onPostcodeCreated($event, data)" - /> - </template> - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - <QItemSection v-if="scope.opt"> - <QItemLabel>{{ scope.opt.code }}</QItemLabel> - <QItemLabel caption> - {{ scope.opt.code }} - - {{ scope.opt.town.name }} - ({{ scope.opt.town.province.name }}, - {{ scope.opt.town.province.country.country }}) - </QItemLabel> - </QItemSection> - </QItem> - </template> - </VnSelectDialog> - </div> - <div class="col"> - <!-- ciudades --> - <VnSelectFilter - :label="t('City')" - :options="citiesLocationOptions" - hide-selected - option-label="name" - option-value="name" - v-model="data.city" - > - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - <QItemSection> - <QItemLabel>{{ scope.opt.name }}</QItemLabel> - <QItemLabel caption> - {{ - `${scope.opt.name}, ${scope.opt.province.name} (${scope.opt.province.country.country})` - }} - </QItemLabel> - </QItemSection> - </QItem> - </template> - </VnSelectFilter> + :roles-allowed-to-create="['deliveryAssistant']" + :options="postcodesOptions" + v-model="data.location" + @update:model-value="(location) => handleLocation(data, location)" + ></VnLocation> </div> </VnRow> <VnRow class="row q-gutter-md q-mb-md"> - <div class="col"> - <VnSelectFilter - :label="t('Province')" - :options="provincesLocationOptions" - hide-selected - option-label="name" - option-value="id" - v-model="data.provinceFk" - > - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - <QItemSection> - <QItemLabel>{{ - `${scope.opt.name} (${scope.opt.country.country})` - }}</QItemLabel> - </QItemSection> - </QItem> - </template> - </VnSelectFilter> - </div> <div class="col"> <VnSelectFilter :label="t('Agency')" diff --git a/src/pages/Supplier/Card/SupplierAddressesCreate.vue b/src/pages/Supplier/Card/SupplierAddressesCreate.vue index 21c0cd61a..69c180e0a 100644 --- a/src/pages/Supplier/Card/SupplierAddressesCreate.vue +++ b/src/pages/Supplier/Card/SupplierAddressesCreate.vue @@ -10,6 +10,7 @@ import VnInput from 'src/components/common/VnInput.vue'; import VnSelectDialog from 'src/components/common/VnSelectDialog.vue'; import VnRow from 'components/ui/VnRow.vue'; import CustomerCreateNewPostcode from 'src/components/CreateNewPostcodeForm.vue'; +import VnLocation from 'src/components/common/VnLocation.vue'; const { t } = useI18n(); const route = useRoute(); @@ -55,27 +56,16 @@ onMounted(() => { updateAddressForm(addressData); } }); +function handleLocation(data, location) { + const { town, code, provinceFk, countryFk } = location ?? {}; + data.postalCode = code; + data.city = town; + data.provinceFk = provinceFk; + data.countryFk = countryFk; +} </script> <template> - <FetchData - ref="postcodeFetchDataRef" - url="Postcodes/location" - @on-fetch="(data) => (postcodesOptions = data)" - auto-load - /> - <FetchData - ref="provincesFetchDataRef" - @on-fetch="(data) => (provincesOptions = data)" - auto-load - url="Provinces" - /> - <FetchData - ref="townsFetchDataRef" - @on-fetch="(data) => (townsLocationOptions = data)" - auto-load - url="Towns/location" - /> <QPage> <FormModel model="supplierAddresses" @@ -104,59 +94,15 @@ onMounted(() => { </VnRow> <VnRow class="row q-gutter-md q-mb-md"> <div class="col"> - <VnSelectDialog - v-model="data.postalCode" - :label="t('supplier.addresses.postcode')" - :rules="validate('supplierAddress.postcode')" + <VnLocation + :rules="validate('Worker.postcode')" :roles-allowed-to-create="['deliveryAssistant']" :options="postcodesOptions" - option-label="code" - option-value="code" - hide-selected - > - <template #form> - <CustomerCreateNewPostcode - @on-data-saved="onPostcodeCreated($event)" - /> - </template> - <template #option="scope"> - <QItem v-bind="scope.itemProps"> - <QItemSection v-if="scope.opt"> - <QItemLabel>{{ scope.opt.code }}</QItemLabel> - <QItemLabel caption - >{{ scope.opt.code }} - - {{ scope.opt.town.name }} ({{ - scope.opt.town.province.name - }}, - {{ - scope.opt.town.province.country.country - }})</QItemLabel - > - </QItemSection> - </QItem> - </template> - </VnSelectDialog> - </div> - <div class="col"> - <VnSelectFilter - :label="t('supplier.addresses.city')" - :options="townsLocationOptions" - v-model="data.city" - hide-selected - option-label="name" - option-value="id" - /> - </div> - <div class="col"> - <VnSelectFilter - :label="t('supplier.addresses.province')" - :options="provincesOptions" - hide-selected - map-options - option-label="name" - option-value="id" - v-model="data.provinceFk" - /> + v-model="data.location" + @update:model-value=" + (location) => handleLocation(data, location) + " + ></VnLocation> </div> </VnRow> <VnRow class="row q-gutter-md q-mb-md"> From 33eef88825c33bbce5661a165a7c8d94364a9597 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 21 Feb 2024 14:00:52 +0100 Subject: [PATCH 33/54] refs #5509 fix: e2e --- test/cypress/integration/claim/claimDevelopment.spec.js | 4 ++-- .../integration/invoiceIn/invoiceInIntrastat.spec.js | 2 +- test/cypress/integration/invoiceIn/invoiceInVat.spec.js | 2 +- test/cypress/support/commands.js | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/test/cypress/integration/claim/claimDevelopment.spec.js b/test/cypress/integration/claim/claimDevelopment.spec.js index 88ccbfab8..26c7ee196 100755 --- a/test/cypress/integration/claim/claimDevelopment.spec.js +++ b/test/cypress/integration/claim/claimDevelopment.spec.js @@ -13,7 +13,7 @@ describe('ClaimDevelopment', () => { it('should reset line', () => { cy.selectOption(firstLineReason, 'Novato'); cy.resetCard(); - cy.getValue(firstLineReason).should('have.value', 'Prisas'); + cy.getValue(firstLineReason).should('equal', 'Prisas'); }); it('should edit line', () => { @@ -23,7 +23,7 @@ describe('ClaimDevelopment', () => { cy.login('developer'); cy.visit(`/#/claim/${claimId}/development`); - cy.getValue(firstLineReason).should('have.value', 'Novato'); + cy.getValue(firstLineReason).should('equal', 'Novato'); //Restart data cy.selectOption(firstLineReason, 'Prisas'); diff --git a/test/cypress/integration/invoiceIn/invoiceInIntrastat.spec.js b/test/cypress/integration/invoiceIn/invoiceInIntrastat.spec.js index 5024b2f1c..306c0b8c0 100644 --- a/test/cypress/integration/invoiceIn/invoiceInIntrastat.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInIntrastat.spec.js @@ -18,7 +18,7 @@ describe('InvoiceInIntrastat', () => { cy.visit(`/#/invoice-in/1/intrastat`); cy.getValue(firstLineCode).should( - 'have.value', + 'equal', 'Plantas vivas: Esqueje/injerto, Vid' ); }); diff --git a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js index 26c7750ad..811374b98 100644 --- a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js @@ -21,7 +21,7 @@ describe('InvoiceInVat', () => { cy.saveCard(); cy.visit(`/#/invoice-in/1/vat`); - cy.getValue(firstLineVat).should('have.value', 'H.P. IVA 21% CEE'); + cy.getValue(firstLineVat).should('equal', 'H.P. IVA 21% CEE'); }); it('should add a new row', () => { diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js index a8b4a86f0..f075d500f 100755 --- a/test/cypress/support/commands.js +++ b/test/cypress/support/commands.js @@ -55,13 +55,13 @@ Cypress.Commands.add('getValue', (selector) => { return cy.get( selector + '> .q-field > .q-field__inner > .q-field__control > .q-field__control-container > .q-field__native > input' - ); + ).invoke('val') } // Si es un QSelect if ($el.find('span').length) { return cy.get( selector + ' span' - ); + ).then(($span) => { return $span[0].innerText }) } // Puedes añadir un log o lanzar un error si el elemento no es reconocido cy.log('Elemento no soportado'); @@ -138,7 +138,7 @@ Cypress.Commands.add('validateRow', (rowSelector, expectedValues) => { cy.getValue(`:nth-child(${index + 1})`).should(`${prefix}be.checked`); continue; } - cy.getValue(`:nth-child(${index + 1})`).invoke('text').should('have.value', value) + cy.getValue(`:nth-child(${index + 1})`).should('equal', value) } }); }); From 00bed4fd619652d44bcdd4df8ff0ee4f73e62259 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Thu, 22 Feb 2024 10:20:44 +0100 Subject: [PATCH 34/54] refs #5509 fix(FormModel): autoLoad && formInitalData --- src/components/FormModel.vue | 5 ++--- src/pages/InvoiceIn/Card/InvoiceInBasicData.vue | 7 ++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index c33835438..504a7acd6 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -79,9 +79,8 @@ onMounted(async () => { }); // Podemos enviarle al form la estructura de data inicial sin necesidad de fetchearla - if ($props.formInitialData || !$props.autoLoad) { - state.set($props.model, $props.formInitialData ?? {}); - } else { + state.set($props.model, $props.formInitialData ?? {}); + if ($props.autoLoad && !$props.formInitialData) { await fetch(); } diff --git a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue index 2a29a3d0e..306220dd3 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue @@ -174,7 +174,12 @@ async function upsert() { @on-fetch="(data) => (userConfig = data)" auto-load /> - <FormModel v-if="invoiceIn" :url="`InvoiceIns/${route.params.id}`" model="invoiceIn"> + <FormModel + v-if="invoiceIn" + :url="`InvoiceIns/${route.params.id}`" + model="invoiceIn" + :auto-load="true" + > <template #form="{ data }"> <div class="row q-gutter-md q-mb-md"> <div class="col"> From de184e9cf829a60d328946c2a669624096d9ab1e Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Thu, 22 Feb 2024 10:57:11 +0100 Subject: [PATCH 35/54] refs #5509 feat(DMS): change icon --- src/router/modules/entry.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/router/modules/entry.js b/src/router/modules/entry.js index 339feaa0c..2f6c8cb4c 100644 --- a/src/router/modules/entry.js +++ b/src/router/modules/entry.js @@ -100,7 +100,7 @@ export default { name: 'EntryDms', meta: { title: 'dms', - icon: 'cloud_upload', + icon: 'smb_share', }, component: () => import('src/pages/Entry/Card/EntryDms.vue'), }, From 3316aa02ff3be9c719d671fa72d9c1e3f9134dfe Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Fri, 23 Feb 2024 13:28:30 +0100 Subject: [PATCH 36/54] refs #6768 fix postalCode --- src/pages/Supplier/Card/SupplierFiscalData.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Supplier/Card/SupplierFiscalData.vue b/src/pages/Supplier/Card/SupplierFiscalData.vue index b26582065..becf6d818 100644 --- a/src/pages/Supplier/Card/SupplierFiscalData.vue +++ b/src/pages/Supplier/Card/SupplierFiscalData.vue @@ -21,7 +21,7 @@ const postcodesOptions = ref([]); function handleLocation(data, location) { const { town, code, provinceFk, countryFk } = location ?? {}; - data.postcode = code; + data.postCode = code; data.city = town; data.provinceFk = provinceFk; data.countryFk = countryFk; From e859fc29c858477659aeab175445a8987ec6327c Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Mon, 26 Feb 2024 08:33:17 +0100 Subject: [PATCH 37/54] refs #6935 feat: remove width, add text-align and label : --- src/components/ui/CardDescriptor.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/ui/CardDescriptor.vue b/src/components/ui/CardDescriptor.vue index 241937a4e..345c8d088 100644 --- a/src/components/ui/CardDescriptor.vue +++ b/src/components/ui/CardDescriptor.vue @@ -188,16 +188,18 @@ const emit = defineEmits(['onFetch']); .label { color: var(--vn-label); font-size: 12px; - width: 47%; + ::after { + content: ':'; + } } .value { color: var(--vn-text); font-size: 14px; margin-left: 12px; - width: 47%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + text-align: left; } .info { margin-left: 5px; From d3d73b985e724def3d7b1735127920ea0a7c7ccb Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Mon, 26 Feb 2024 09:16:37 +0100 Subject: [PATCH 38/54] refs #6336 fix(claimSummary): loadPhoto, ItemDescriptor --- src/pages/Claim/Card/ClaimSummary.vue | 17 ++++++++++++----- src/pages/Item/Card/ItemDescriptor.vue | 20 ++++++++++++++++++-- src/pages/Item/Card/ItemDescriptorProxy.vue | 5 +++++ 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue index cdc1f15be..b93cbbd81 100644 --- a/src/pages/Claim/Card/ClaimSummary.vue +++ b/src/pages/Claim/Card/ClaimSummary.vue @@ -35,7 +35,6 @@ const claimDmsFilter = ref({ relation: 'dms', }, ], - where: { claimFk: entityId.value }, }); onMounted(async () => { @@ -141,6 +140,11 @@ const claimDms = ref([]); const multimediaDialog = ref(); const multimediaSlide = ref(); +async function getClaimDms() { + claimDmsFilter.value.where = { claimFk: entityId.value }; + await claimDmsRef.value.fetch(); +} + function setClaimDms(data) { claimDms.value = []; data.forEach((media) => { @@ -163,10 +167,13 @@ function openDialog(dmsId) { url="ClaimDms" :filter="claimDmsFilter" @on-fetch="(data) => setClaimDms(data)" - limit="20" ref="claimDmsRef" /> - <CardSummary ref="summary" :url="`Claims/${entityId}/getSummary`"> + <CardSummary + ref="summary" + :url="`Claims/${entityId}/getSummary`" + @on-fetch="getClaimDms" + > <template #header="{ entity: { claim } }"> {{ claim.id }} - {{ claim.client.name }} </template> @@ -252,7 +259,8 @@ function openDialog(dmsId) { > <ItemDescriptorProxy v-if="col.name == 'description'" - :id="2" + :id="props.row.id" + :sale-fk="props.row.saleFk" ></ItemDescriptorProxy> </QTh> </QTr> @@ -274,7 +282,6 @@ function openDialog(dmsId) { </template> </QTable> </QCard> - <QCard class="vn-max" v-if="claimDms.length > 0"> <a class="header" :href="`#/claim/${entityId}/photos`"> {{ t('claim.summary.photos') }} diff --git a/src/pages/Item/Card/ItemDescriptor.vue b/src/pages/Item/Card/ItemDescriptor.vue index 362fcfc67..8c986e627 100644 --- a/src/pages/Item/Card/ItemDescriptor.vue +++ b/src/pages/Item/Card/ItemDescriptor.vue @@ -1,5 +1,5 @@ <script setup> -import { computed, ref, onMounted, onUnmounted } from 'vue'; +import { computed, ref, onMounted } from 'vue'; import { useRoute, useRouter } from 'vue-router'; import { useI18n } from 'vue-i18n'; import { useQuasar } from 'quasar'; @@ -14,6 +14,7 @@ import EditPictureForm from 'components/EditPictureForm.vue'; import { useState } from 'src/composables/useState'; import useCardDescription from 'src/composables/useCardDescription'; import { useSession } from 'src/composables/useSession'; +import { getUrl } from 'src/composables/getUrl'; import axios from 'axios'; const $props = defineProps({ @@ -30,6 +31,10 @@ const $props = defineProps({ type: String, default: null, }, + saleFk: { + type: Number, + default: null, + }, }); const quasar = useQuasar(); @@ -51,6 +56,7 @@ const available = ref(null); const visible = ref(null); const _warehouseFk = ref(null); const warehouseText = ref(null); +const salixUrl = ref(); const warehouseFk = computed({ get() { return _warehouseFk.value; @@ -69,6 +75,7 @@ const showEditPhotoForm = ref(false); onMounted(async () => { await getItemAvatar(); warehouseFk.value = user.value.warehouseFk; + salixUrl.value = await getUrl(''); }); const getItemAvatar = async () => { @@ -276,7 +283,16 @@ const openCloneDialog = async () => { <template #actions="{}"> <QCardActions class="row justify-center"> <QBtn - :to="{ name: 'ItemDiary' }" + :href=" + salixUrl + + 'item/' + + entityId + + '/diary?' + + 'warehouseFk=' + + warehouseFk + + '&lineFk=' + + $props.saleFk + " size="md" icon="vn:transaction" color="primary" diff --git a/src/pages/Item/Card/ItemDescriptorProxy.vue b/src/pages/Item/Card/ItemDescriptorProxy.vue index 5ddf434d5..2b7b39a65 100644 --- a/src/pages/Item/Card/ItemDescriptorProxy.vue +++ b/src/pages/Item/Card/ItemDescriptorProxy.vue @@ -11,6 +11,10 @@ const $props = defineProps({ type: String, default: null, }, + saleFk: { + type: Number, + default: null, + }, }); </script> @@ -21,6 +25,7 @@ const $props = defineProps({ :id="$props.id" :summary="ItemSummary" :dated="dated" + :sale-fk="saleFk" /> </QPopupProxy> </template> From fa80586fdd1079bb6730d94a74bb5c3bdc6875b9 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Mon, 26 Feb 2024 12:33:06 +0100 Subject: [PATCH 39/54] refs #6797 deploy: use pnpm --- Dockerfile | 3 +- Jenkinsfile | 4 +- package.json | 19 ++--- pnpm-lock.yaml | 212 ++++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 196 insertions(+), 42 deletions(-) diff --git a/Dockerfile b/Dockerfile index b601875f6..1906dc920 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ FROM node:stretch-slim -RUN npm install -g @quasar/cli +RUN corepack enable pnpm +RUN pnpm install -g @quasar/cli WORKDIR /app COPY dist/spa ./ CMD ["quasar", "serve", "./", "--history", "--hostname", "0.0.0.0"] diff --git a/Jenkinsfile b/Jenkinsfile index be20b1021..0027e1cbe 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,7 +62,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'npm install --prefer-offline' + sh 'pnpm install --prefer-offline' } } stage('Test') { @@ -73,7 +73,7 @@ pipeline { NODE_ENV = "" } steps { - sh 'npm run test:unit:ci' + sh 'pnpm run test:unit:ci' } post { always { diff --git a/package.json b/package.json index 7beb22e55..2bc3b661a 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "productName": "Salix", "author": "Verdnatura", "private": true, + "packageManager": "pnpm@8.15.1", "scripts": { "lint": "eslint --ext .js,.vue ./", "format": "prettier --write \"**/*.{js,vue,scss,html,md,json}\" --ignore-path .gitignore", @@ -16,12 +17,12 @@ }, "dependencies": { "@quasar/cli": "^2.3.0", - "@quasar/extras": "^1.16.4", + "@quasar/extras": "^1.16.9", "axios": "^1.4.0", "chromium": "^3.0.3", "croppie": "^2.6.5", "pinia": "^2.1.3", - "quasar": "^2.12.0", + "quasar": "^2.14.5", "validator": "^13.9.0", "vue": "^3.3.4", "vue-i18n": "^9.2.2", @@ -30,9 +31,9 @@ "devDependencies": { "@intlify/unplugin-vue-i18n": "^0.8.1", "@pinia/testing": "^0.1.2", - "@quasar/app-vite": "^1.4.3", - "@quasar/quasar-app-extension-testing-unit-vitest": "^0.3.0", - "@vue/test-utils": "^2.3.2", + "@quasar/app-vite": "^1.7.3", + "@quasar/quasar-app-extension-testing-unit-vitest": "^0.4.0", + "@vue/test-utils": "^2.4.4", "autoprefixer": "^10.4.14", "cypress": "^12.13.0", "eslint": "^8.41.0", @@ -41,7 +42,7 @@ "eslint-plugin-vue": "^9.14.1", "postcss": "^8.4.23", "prettier": "^2.8.8", - "vitest": "^0.31.1" + "vitest": "^1.3.1" }, "engines": { "node": "^20 || ^18 || ^16", @@ -50,8 +51,8 @@ "bun": ">= 1.0.25" }, "overrides": { - "@vitejs/plugin-vue": "^4.0.0", - "vite": "^4.3.5", - "vitest": "^0.31.1" + "@vitejs/plugin-vue": "^5.0.4", + "vite": "^5.1.4", + "vitest": "^1.3.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a6dc9ee8..5ef5b94c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ dependencies: axios: specifier: ^1.4.0 version: 1.6.7 + chromium: + specifier: ^3.0.3 + version: 3.0.3 croppie: specifier: ^2.6.5 version: 2.6.5 @@ -891,11 +894,23 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false + /@sindresorhus/is@5.6.0: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} dev: false + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: false + /@szmarczak/http-timer@5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -910,6 +925,15 @@ packages: '@types/node': 20.11.19 dev: true + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.11.19 + '@types/responselike': 1.0.3 + dev: false + /@types/chrome@0.0.208: resolution: {integrity: sha512-VDU/JnXkF5qaI7WBz14Azpa2VseZTgML0ia/g/B1sr9OfdOnHiH/zZ7P7qCDqxSlkqJh76/bPc8jLFcx8rHJmw==} dependencies: @@ -987,6 +1011,12 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 20.11.19 + dev: false + /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true @@ -1018,6 +1048,12 @@ packages: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 20.11.19 + dev: false + /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: @@ -1433,7 +1469,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1520,7 +1555,6 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -1547,7 +1581,10 @@ packages: /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -1576,6 +1613,11 @@ packages: engines: {node: '>=8'} dev: true + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: false + /cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -1594,10 +1636,22 @@ packages: responselike: 3.0.0 dev: false + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: false + /cachedir@2.4.0: resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} - dev: true /call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} @@ -1690,6 +1744,23 @@ packages: fsevents: 2.3.3 dev: true + /chromium@3.0.3: + resolution: {integrity: sha512-TfbzP/3t38Us5xrbb9x87M/y5I/j3jx0zeJhhQ72gjp6dwJuhVP6hBZnBH4wEg7512VVXk9zCfTuPFOdw7bQqg==} + os: [darwin, linux, win32] + requiresBuild: true + dependencies: + cachedir: 2.4.0 + debug: 4.3.4(supports-color@8.1.1) + extract-zip: 1.7.0 + got: 11.8.6 + progress: 2.0.3 + rimraf: 2.7.1 + tmp: 0.0.33 + tunnel: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -1763,6 +1834,12 @@ packages: shallow-clone: 3.0.1 dev: true + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: false + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} @@ -1845,7 +1922,16 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -1892,7 +1978,6 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -2054,7 +2139,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -2205,7 +2289,6 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: true /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -2780,6 +2863,18 @@ packages: tmp: 0.0.33 dev: true + /extract-zip@1.7.0: + resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} + hasBin: true + dependencies: + concat-stream: 1.6.2 + debug: 2.6.9 + mkdirp: 0.5.6 + yauzl: 2.10.0 + transitivePeerDependencies: + - supports-color + dev: false + /extract-zip@2.0.1(supports-color@8.1.1): resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -2843,7 +2938,6 @@ packages: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 - dev: true /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} @@ -2986,7 +3080,6 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -3023,7 +3116,6 @@ packages: engines: {node: '>=8'} dependencies: pump: 3.0.0 - dev: true /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} @@ -3086,7 +3178,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} @@ -3110,6 +3201,23 @@ packages: dependencies: get-intrinsic: 1.2.4 + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: false + /got@12.6.1: resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} @@ -3152,7 +3260,6 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -3249,6 +3356,14 @@ packages: sshpk: 1.18.0 dev: true + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: false + /http2-wrapper@2.2.1: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} @@ -3330,7 +3445,6 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3489,7 +3603,6 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true /isbinaryfile@5.0.2: resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==} @@ -3764,6 +3877,11 @@ packages: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} dev: true + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: false + /lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3842,6 +3960,11 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: false + /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -3856,7 +3979,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} @@ -3887,6 +4009,13 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dev: true + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + /mlly@1.5.0: resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} dependencies: @@ -3901,7 +4030,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3964,6 +4092,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: false + /normalize-url@8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} @@ -4008,7 +4141,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -4071,12 +4203,16 @@ packages: /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /ospath@1.2.2: resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} dev: true + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: false + /p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -4145,7 +4281,6 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -4180,7 +4315,6 @@ packages: /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - dev: true /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} @@ -4274,13 +4408,17 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} dev: true + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false + /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -4312,7 +4450,6 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -4399,7 +4536,6 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: true /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -4493,6 +4629,12 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: false + /responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} @@ -4517,6 +4659,13 @@ packages: resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} dev: true + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -4833,7 +4982,6 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -4908,7 +5056,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -4986,7 +5133,6 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} @@ -5057,6 +5203,11 @@ packages: safe-buffer: 5.2.1 dev: true + /tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: false + /tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: true @@ -5106,6 +5257,10 @@ packages: is-typedarray: 1.0.0 dev: false + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: false + /ufo@1.4.0: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} dev: true @@ -5202,7 +5357,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -5563,7 +5717,6 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -5632,7 +5785,6 @@ packages: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - dev: true /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} From b6d84a5fc6e5a39844d35a610196963b2a674d49 Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Mon, 26 Feb 2024 14:17:02 +0100 Subject: [PATCH 40/54] fix: refs #6904 VnLv icon, customer summary & extendedList --- src/components/ui/VnLv.vue | 23 +++-- src/i18n/en/index.js | 5 +- src/i18n/es/index.js | 5 +- src/pages/Customer/Card/CustomerSummary.vue | 28 +++++- .../ExtendedList/CustomerExtendedList.vue | 85 ++++++++++--------- 5 files changed, 96 insertions(+), 50 deletions(-) diff --git a/src/components/ui/VnLv.vue b/src/components/ui/VnLv.vue index 0e4a055eb..72c05ae6a 100644 --- a/src/components/ui/VnLv.vue +++ b/src/components/ui/VnLv.vue @@ -1,8 +1,9 @@ <script setup> import { computed } from 'vue'; import { dashIfEmpty } from 'src/filters'; - +import { useI18n } from 'vue-i18n'; import { useClipboard } from 'src/composables/useClipboard'; + const $props = defineProps({ label: { type: String, default: null }, value: { @@ -13,8 +14,9 @@ const $props = defineProps({ dash: { type: Boolean, default: true }, copy: { type: Boolean, default: false }, }); -const isBooleanValue = computed(() => typeof $props.value === 'boolean'); +const { t } = useI18n(); +const isBooleanValue = computed(() => typeof $props.value === 'boolean'); const { copyText } = useClipboard(); function copyValueText() { @@ -54,22 +56,29 @@ function copyValueText() { </slot> </div> <div class="info" v-if="$props.info"> - <QIcon name="info"> + <QIcon name="info" class="cursor-pointer" size="xs" color="grey"> <QTooltip class="bg-dark text-white shadow-4" :offset="[10, 10]"> {{ $props.info }} </QTooltip> </QIcon> </div> <div class="copy" v-if="$props.copy && $props.value" @click="copyValueText()"> - <QIcon name="Content_Copy" color="primary" /> + <QIcon name="Content_Copy" color="primary"> + <QTooltip>{{ t('globals.copyClipboard') }}</QTooltip> + </QIcon> </div> </div> </template> <style lang="scss" scoped> +.vn-label-value:hover .copy { + visibility: visible; + cursor: pointer; +} .copy { - &:hover { - cursor: pointer; - } + visibility: hidden; +} +.info { + margin-left: 5px; } </style> diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js index 9e0ad7c9b..298720027 100644 --- a/src/i18n/en/index.js +++ b/src/i18n/en/index.js @@ -70,6 +70,7 @@ export default { system: 'System', fieldRequired: 'Field required', allowedFilesText: 'Allowed file types: { allowedContentTypes }', + copyClipboard: 'Copy on clipboard', }, errors: { statusUnauthorized: 'Access denied', @@ -166,7 +167,7 @@ export default { fiscalAddress: 'Fiscal address', fiscalData: 'Fiscal data', billingData: 'Billing data', - consignee: 'Consignee', + consignee: 'Default consignee', businessData: 'Business data', financialData: 'Financial data', customerId: 'Customer ID', @@ -219,6 +220,8 @@ export default { recoverySince: 'Recovery since', businessType: 'Business Type', city: 'City', + rating: 'Rating', + recommendCredit: 'Recommended credit', }, basicData: { socialName: 'Fiscal name', diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js index 6083dfad7..2fe197304 100644 --- a/src/i18n/es/index.js +++ b/src/i18n/es/index.js @@ -70,6 +70,7 @@ export default { system: 'Sistema', fieldRequired: 'Campo requerido', allowedFilesText: 'Tipos de archivo permitidos: { allowedContentTypes }', + copyClipboard: 'Copiar en portapapeles', }, errors: { statusUnauthorized: 'Acceso denegado', @@ -165,7 +166,7 @@ export default { fiscalAddress: 'Dirección fiscal', fiscalData: 'Datos fiscales', billingData: 'Datos de facturación', - consignee: 'Consignatario', + consignee: 'Consignatario pred.', businessData: 'Datos comerciales', financialData: 'Datos financieros', customerId: 'ID cliente', @@ -218,6 +219,8 @@ export default { recoverySince: 'Recobro desde', businessType: 'Tipo de negocio', city: 'Población', + rating: 'Clasificación', + recommendCredit: 'Crédito recomendado', }, basicData: { socialName: 'Nombre fiscal', diff --git a/src/pages/Customer/Card/CustomerSummary.vue b/src/pages/Customer/Card/CustomerSummary.vue index c46b8a8de..5591fd15c 100644 --- a/src/pages/Customer/Card/CustomerSummary.vue +++ b/src/pages/Customer/Card/CustomerSummary.vue @@ -122,7 +122,7 @@ const creditWarning = computed(() => { </QCard> <QCard class="vn-one"> <a class="header link" :href="clientUrl + `fiscal-data`" link> - {{ t('customer.summary.fiscalAddress') }} + {{ t('customer.summary.fiscalData') }} <QIcon name="open_in_new" color="primary" /> </a> <VnLv @@ -235,7 +235,8 @@ const creditWarning = computed(() => { link > {{ t('customer.summary.financialData') }} - <QIcon name="vn:grafana" color="primary" /> + <QIcon name="open_in_new" color="primary" /> + <!-- Pendiente de añadir el icono <QIcon name="vn:grafana" color="primary" /> --> </a> <VnLv :label="t('customer.summary.risk')" @@ -276,7 +277,30 @@ const creditWarning = computed(() => { :label="t('customer.summary.recoverySince')" :value="toDate(entity.recovery.started)" /> + <VnLv + :label="t('customer.summary.rating')" + :value="entity.rating" + :info="t('valueInfo', { min: 1, max: 20 })" + /> + + <VnLv + :label="t('customer.summary.recommendCredit')" + :value="entity.recommendedCredit" + /> </QCard> </template> </CardSummary> </template> +<style lang="scss" scoped> +@media (min-width: $breakpoint-md) { + .summary .vn-one { + min-width: 300px; + } +} +</style> +<i18n> +en: + valueInfo: Value from {min} to {max}. The higher the better value +es: + valueInfo: Valor de {min} a {max}. Cuanto más alto, mejor valor +</i18n> diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue index 69effe88e..9d98f479c 100644 --- a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue +++ b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue @@ -13,7 +13,7 @@ import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; import { useArrayData } from 'composables/useArrayData'; import { useStateStore } from 'stores/useStateStore'; -import { dashIfEmpty, toDate } from 'src/filters'; +import { toDate } from 'src/filters'; const { t } = useI18n(); const router = useRouter(); @@ -477,17 +477,11 @@ const stopEventPropagation = (event, col) => { event.stopPropagation(); }; -const navigateToTravelId = (id) => { - router.push({ path: `/customer/${id}` }); -}; +const navigateToTravelId = (id) => router.push({ path: `/customer/${id}` }); -const selectCustomerId = (id) => { - selectedCustomerId.value = id; -}; +const selectCustomerId = (id) => (selectedCustomerId.value = id); -const selectSalesPersonId = (id) => { - selectedSalesPersonId.value = id; -}; +const selectSalesPersonId = (id) => (selectedSalesPersonId.value = id); </script> <template> @@ -521,37 +515,50 @@ const selectSalesPersonId = (id) => { class="full-width q-mt-md" row-key="id" :visible-columns="visibleColumns" + @row-click="(evt, row, id) => navigateToTravelId(row.id)" > - <template #body="props"> - <QTr - :props="props" - @click="navigateToTravelId(props.row.id)" - class="cursor-pointer" - > - <QTd - v-for="col in props.cols" - :key="col.name" - :props="props" - @click="stopEventPropagation($event, col)" + <template #body-cell="{ col, value }"> + <QTd @click="stopEventPropagation($event, col)"> + {{ value }} + </QTd> + </template> + <template #body-cell-id="props"> + <QTd @click="stopEventPropagation($event, props.col)"> + <component + :is="tableColumnComponents[props.col.name].component" + class="col-content" + v-bind="tableColumnComponents[props.col.name].props(props)" + @click="tableColumnComponents[props.col.name].event(props)" > - <component - :is="tableColumnComponents[col.name].component" - class="col-content" - v-bind="tableColumnComponents[col.name].props(props)" - @click="tableColumnComponents[col.name].event(props)" - > - {{ dashIfEmpty(col.value) }} - <WorkerDescriptorProxy - v-if="props.row.salesPersonFk" - :id="selectedSalesPersonId" - /> - <CustomerDescriptorProxy - v-if="props.row.id" - :id="selectedCustomerId" - /> - </component> - </QTd> - </QTr> + <CustomerDescriptorProxy :id="props.row.id" /> + {{ props.row.id }} + </component> + </QTd> + </template> + <template #body-cell-salesPersonFk="props"> + <QTd @click="stopEventPropagation($event, props.col)"> + <component + v-if="props.row.salesPerson" + class="col-content" + :is="tableColumnComponents[props.col.name].component" + v-bind="tableColumnComponents[props.col.name].props(props)" + @click="tableColumnComponents[props.col.name].event(props)" + > + <WorkerDescriptorProxy :id="props.row.salesPersonFk" /> + {{ props.row.salesPerson }} + </component> + <span class="col-content" v-else>-</span> + </QTd> + </template> + <template #body-cell-actions="props"> + <QTd @click="stopEventPropagation($event, props.col)"> + <component + :is="tableColumnComponents[props.col.name].component" + class="col-content" + v-bind="tableColumnComponents[props.col.name].props(props)" + @click="tableColumnComponents[props.col.name].event(props)" + /> + </QTd> </template> </QTable> </QPage> From 4988df882c653d54f814c7218c31840b6b134e8f Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Mon, 26 Feb 2024 15:06:49 +0100 Subject: [PATCH 41/54] refs #5509 fix: transaltions --- src/components/EditPictureForm.vue | 2 +- src/components/common/VnDms.vue | 6 +++--- src/i18n/en/index.js | 2 ++ src/i18n/es/index.js | 2 ++ src/pages/Entry/Card/EntryBuysImport.vue | 4 ++-- src/pages/InvoiceIn/Card/InvoiceInBasicData.vue | 5 ++--- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/components/EditPictureForm.vue b/src/components/EditPictureForm.vue index 9f69896b5..3d7f3615b 100644 --- a/src/components/EditPictureForm.vue +++ b/src/components/EditPictureForm.vue @@ -272,7 +272,7 @@ const makeRequest = async () => { class="cursor-pointer q-mr-sm" @click="openInputFile()" > - <!-- <QTooltip>{{ t('Select a file') }}</QTooltip> --> + <!-- <QTooltip>{{ t('globals.selectFile') }}</QTooltip> --> </QIcon> <QIcon name="info" class="cursor-pointer"> <QTooltip>{{ diff --git a/src/components/common/VnDms.vue b/src/components/common/VnDms.vue index 99056556d..d2651f5d8 100644 --- a/src/components/common/VnDms.vue +++ b/src/components/common/VnDms.vue @@ -109,7 +109,7 @@ function addDefaultData(data) { :auto-load="!$props.formInitialData" /> <FormModelPopup - :title="t('create')" + :title="formInitialData ? t('globals.edit') : t('globals.create')" model="dms" :form-initial-data="formInitialData" :save-fn="save" @@ -117,7 +117,7 @@ function addDefaultData(data) { <template #form-inputs> <div class="q-gutter-y-ms"> <VnRow> - <VnInput :label="t('Reference')" v-model="dms.reference" /> + <VnInput :label="t('globals.reference')" v-model="dms.reference" /> <VnSelectFilter :label="t('globals.company')" v-model="dms.companyFk" @@ -166,7 +166,7 @@ function addDefaultData(data) { class="cursor-pointer" @click="inputFileRef.pickFiles()" > - <QTooltip>{{ t('Select a file') }}</QTooltip> + <QTooltip>{{ t('globals.selectFile') }}</QTooltip> </QIcon> <QIcon name="info" class="cursor-pointer"> <QTooltip>{{ diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js index 98dabd4f8..ee518418b 100644 --- a/src/i18n/en/index.js +++ b/src/i18n/en/index.js @@ -24,6 +24,7 @@ export default { dataCreated: 'Data created', add: 'Add', create: 'Create', + edit: 'Edit', save: 'Save', remove: 'Remove', reset: 'Reset', @@ -79,6 +80,7 @@ export default { order: 'Order', original: 'Original', file: 'File', + selectFile: 'Select a file', }, errors: { statusUnauthorized: 'Access denied', diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js index 36d4662b4..0f65181bd 100644 --- a/src/i18n/es/index.js +++ b/src/i18n/es/index.js @@ -24,6 +24,7 @@ export default { dataCreated: 'Datos creados', add: 'Añadir', create: 'Crear', + edit: 'Modificar', save: 'Guardar', remove: 'Eliminar', reset: 'Restaurar', @@ -79,6 +80,7 @@ export default { order: 'Orden', original: 'Original', file: 'Fichero', + selectFile: 'Seleccione un fichero', }, errors: { statusUnauthorized: 'Acceso denegado', diff --git a/src/pages/Entry/Card/EntryBuysImport.vue b/src/pages/Entry/Card/EntryBuysImport.vue index 5783826ec..3e0ac1410 100644 --- a/src/pages/Entry/Card/EntryBuysImport.vue +++ b/src/pages/Entry/Card/EntryBuysImport.vue @@ -214,7 +214,7 @@ const redirectToBuysView = () => { class="cursor-pointer" @click="inputFileRef.pickFiles()" > - <QTooltip>{{ t('Select a file') }}</QTooltip> + <QTooltip>{{ t('globals.selectFile') }}</QTooltip> </QIcon> </template> </QFile> @@ -292,6 +292,6 @@ const redirectToBuysView = () => { <i18n> es: - Select a file: Selecciona un fichero + globals.selectFile: Selecciona un fichero Some of the imported buys does not have an item: Algunas de las compras importadas no tienen un artículo </i18n> diff --git a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue index 306220dd3..f557c8ef4 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue @@ -514,7 +514,7 @@ async function upsert() { @click="inputFileRef.pickFiles()" > <QTooltip> - {{ t('Select a file') }} + {{ t('globals.selectFile') }} </QTooltip> </QBtn> <QBtn icon="info" flat round padding="xs"> @@ -623,7 +623,7 @@ async function upsert() { @click="inputFileRef.pickFiles()" > <QTooltip> - {{ t('Select a file') }} + {{ t('globals.selectFile') }} </QTooltip> </QBtn> <QBtn icon="info" flat round padding="xs"> @@ -692,7 +692,6 @@ async function upsert() { Generate identifier for original file: Generar identificador para archivo original File: Fichero Create document: Crear documento - Select a file: Seleccione un fichero Allowed content types: Tipos de archivo permitidos The company can't be empty: La empresa no puede estar vacía The warehouse can't be empty: El almacén no puede estar vacío From c8a4854df9b3e890e8b33f817893586fef2ecadf Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 27 Feb 2024 08:22:38 +0100 Subject: [PATCH 42/54] refs #5509 fix(vnDms): fix issues --- src/components/FormModel.vue | 2 +- src/components/common/VnDmsList.vue | 8 +++++--- src/i18n/en/index.js | 2 +- src/i18n/es/index.js | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 504a7acd6..912ce8ea7 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -154,7 +154,7 @@ async function save() { hasChanges.value = false; } catch (err) { console.error(err); - notify('errors.create', 'negative'); + notify('errors.writeRequest', 'negative'); } isLoading.value = false; } diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue index b7e683da9..5057c0790 100644 --- a/src/components/common/VnDmsList.vue +++ b/src/components/common/VnDmsList.vue @@ -233,9 +233,11 @@ function parseDms(data) { :is="props.col.component" v-bind="props.col.props && props.col.props(props)" > - <span v-if="props.col.component == 'span'">{{ - props.value - }}</span> + <span + v-if="props.col.component == 'span'" + style="white-space: wrap" + >{{ props.value }}</span + > </component> </QTr> diff --git a/src/i18n/en/index.js b/src/i18n/en/index.js index ee518418b..46237c2b9 100644 --- a/src/i18n/en/index.js +++ b/src/i18n/en/index.js @@ -88,7 +88,7 @@ export default { statusBadGateway: 'It seems that the server has fall down', statusGatewayTimeout: 'Could not contact the server', userConfig: 'Error fetching user config', - create: 'Error during creation', + writeRequest: 'The requested operation could not be completed', }, login: { title: 'Login', diff --git a/src/i18n/es/index.js b/src/i18n/es/index.js index 0f65181bd..fe82407ad 100644 --- a/src/i18n/es/index.js +++ b/src/i18n/es/index.js @@ -88,7 +88,7 @@ export default { statusBadGateway: 'Parece ser que el servidor ha caído', statusGatewayTimeout: 'No se ha podido contactar con el servidor', userConfig: 'Error al obtener configuración de usuario', - create: 'Error al crear', + writeRequest: 'No se pudo completar la operación solicitada', }, login: { title: 'Inicio de sesión', From 504ea7b5fb67037c5fd57c8e149a88fc5a5a21b7 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 27 Feb 2024 09:39:19 +0100 Subject: [PATCH 43/54] refs #6797 warmFix: jenkinsfile --- Jenkinsfile | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index be20b1021..11f25b2dd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -75,16 +75,12 @@ pipeline { steps { sh 'npm run test:unit:ci' } - post { + post { always { - script { - try { - junit 'junitresults.xml' - junit 'junit.xml' - } catch (e) { - echo e.toString() - } - } + junit( + testResults: 'junitresults.xml', + allowEmptyResults: true + ) } } } From b69b937c424a85a9c487369a5afa08c5d174044a Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Tue, 27 Feb 2024 14:27:09 +0100 Subject: [PATCH 44/54] refs #6908 remove Banner --- src/components/common/VnSmsDialog.vue | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/components/common/VnSmsDialog.vue b/src/components/common/VnSmsDialog.vue index 8bb8c3858..59021cef4 100644 --- a/src/components/common/VnSmsDialog.vue +++ b/src/components/common/VnSmsDialog.vue @@ -94,16 +94,6 @@ async function send() { <QSpace /> <QBtn icon="close" :disable="isLoading" flat round dense v-close-popup /> </QCardSection> - <QCardSection v-if="props.locale"> - <QBanner class="bg-amber text-white" rounded dense> - <template #avatar> - <QIcon name="warning" /> - </template> - <span - v-html="t('CustomerDefaultLanguage', { locale: t(props.locale) })" - ></span> - </QBanner> - </QCardSection> <QCardSection class="q-pb-xs"> <QSelect :label="t('Language')" @@ -184,11 +174,10 @@ async function send() { <i18n> en: - CustomerDefaultLanguage: This customer uses <strong>{locale}</strong> as their default language templates: pendingPayment: 'Your order is pending of payment. Please, enter the website and make the payment with a credit card. Thank you.' - minAmount: 'A minimum amount of 50€ (VAT excluded) is required for your order + minAmount: 'A minimum amount of 50€ (VAT excluded) is required for your order { orderId } of { shipped } to receive it without additional shipping costs.' orderChanges: 'Order {orderId} of { shipped }: { changes }' en: English @@ -197,7 +186,6 @@ en: pt: Portuguese es: Send SMS: Enviar SMS - CustomerDefaultLanguage: Este cliente utiliza <strong>{locale}</strong> como idioma por defecto Language: Idioma Phone: Móvil Subject: Asunto @@ -205,7 +193,7 @@ es: templates: pendingPayment: 'Su pedido está pendiente de pago. Por favor, entre en la página web y efectue el pago con tarjeta. Muchas gracias.' - minAmount: 'Es necesario un importe mínimo de 50€ (Sin IVA) en su pedido + minAmount: 'Es necesario un importe mínimo de 50€ (Sin IVA) en su pedido { orderId } del día { shipped } para recibirlo sin portes adicionales.' orderChanges: 'Pedido {orderId} día { shipped }: { changes }' en: Inglés @@ -222,7 +210,7 @@ fr: templates: pendingPayment: 'Votre commande est en attente de paiement. Veuillez vous connecter sur le site web et effectuer le paiement par carte. Merci beaucoup.' - minAmount: 'Un montant minimum de 50€ (TVA non incluse) est requis pour votre commande + minAmount: 'Un montant minimum de 50€ (TVA non incluse) est requis pour votre commande { orderId } du { shipped } afin de la recevoir sans frais de port supplémentaires.' orderChanges: 'Commande { orderId } du { shipped }: { changes }' en: Anglais @@ -239,7 +227,7 @@ pt: templates: pendingPayment: 'Seu pedido está pendente de pagamento. Por favor, acesse o site e faça o pagamento com cartão. Muito obrigado.' - minAmount: 'É necessário um valor mínimo de 50€ (sem IVA) em seu pedido + minAmount: 'É necessário um valor mínimo de 50€ (sem IVA) em seu pedido { orderId } do dia { shipped } para recebê-lo sem custos de envio adicionais.' orderChanges: 'Pedido { orderId } dia { shipped }: { changes }' en: Inglês From 1484b7de3b4402277a879b79ec5787385d4d9521 Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Tue, 27 Feb 2024 15:41:09 +0100 Subject: [PATCH 45/54] feat: refs #6909 popup onBeforeLeave --- src/components/FormModel.vue | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 9fd16088c..5c65650e1 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -1,6 +1,7 @@ <script setup> import axios from 'axios'; import { onMounted, onUnmounted, computed, ref, watch, nextTick } from 'vue'; +import { onBeforeRouteLeave } from 'vue-router'; import { useI18n } from 'vue-i18n'; import { useQuasar } from 'quasar'; import { useState } from 'src/composables/useState'; @@ -8,6 +9,7 @@ import { useStateStore } from 'stores/useStateStore'; import { useValidator } from 'src/composables/useValidator'; import useNotify from 'src/composables/useNotify.js'; import SkeletonForm from 'components/ui/SkeletonForm.vue'; +import VnConfirm from './ui/VnConfirm.vue'; const quasar = useQuasar(); const state = useState(); @@ -90,6 +92,19 @@ onMounted(async () => { } }); +onBeforeRouteLeave((to, from, next) => { + if (!hasChanges.value) next(); + + quasar.dialog({ + component: VnConfirm, + componentProps: { + title: t('Unsaved changes will be lost'), + message: t('Are you sure exit without saving?'), + promise: () => next(), + }, + }); +}); + onUnmounted(() => { state.unset($props.model); }); @@ -249,3 +264,8 @@ watch(formUrl, async () => { padding: 32px; } </style> +<i18n> +es: + Unsaved changes will be lost: Los cambios que no haya guardado se perderán + Are you sure exit without saving?: ¿Seguro que quiere salir sin guardar? +</i18n> From 547b5e4a764ff4b5518202ae595ac5aca6fc8838 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 28 Feb 2024 08:30:42 +0100 Subject: [PATCH 46/54] refs #6797 package: old vitest version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2bc3b661a..c384ca001 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "eslint-plugin-vue": "^9.14.1", "postcss": "^8.4.23", "prettier": "^2.8.8", - "vitest": "^1.3.1" + "vitest": "^0.31.1" }, "engines": { "node": "^20 || ^18 || ^16", @@ -53,6 +53,6 @@ "overrides": { "@vitejs/plugin-vue": "^5.0.4", "vite": "^5.1.4", - "vitest": "^1.3.1" + "vitest": "^0.31.1" } } From ced041ad4316a7c58a710f017207777cc6242e71 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 28 Feb 2024 08:37:57 +0100 Subject: [PATCH 47/54] refs #6797 package: fix pnpm-lock --- pnpm-lock.yaml | 529 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 413 insertions(+), 116 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ef5b94c9..07896c006 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,7 +51,7 @@ devDependencies: version: 1.7.3(eslint@8.56.0)(pinia@2.1.7)(quasar@2.14.5)(vue-router@4.2.5)(vue@3.4.19) '@quasar/quasar-app-extension-testing-unit-vitest': specifier: ^0.4.0 - version: 0.4.0(@vue/test-utils@2.4.4)(quasar@2.14.5)(vite@5.1.4)(vitest@1.3.1)(vue@3.4.19) + version: 0.4.0(@vue/test-utils@2.4.4)(quasar@2.14.5)(vite@5.1.4)(vitest@0.31.4)(vue@3.4.19) '@vue/test-utils': specifier: ^2.4.4 version: 2.4.4(vue@3.4.19) @@ -80,8 +80,8 @@ devDependencies: specifier: ^2.8.8 version: 2.8.8 vitest: - specifier: ^1.3.1 - version: 1.3.1 + specifier: ^0.31.1 + version: 0.31.4 packages: @@ -166,6 +166,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.19.12: resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -175,6 +184,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.19.12: resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -184,6 +202,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.19.12: resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -193,6 +220,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.19.12: resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -202,6 +238,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.19.12: resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -211,6 +256,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.19.12: resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -220,6 +274,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.19.12: resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -229,6 +292,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.19.12: resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -238,6 +310,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.19.12: resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -247,6 +328,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.19.12: resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -256,6 +346,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.19.12: resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -265,6 +364,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.19.12: resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -274,6 +382,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.19.12: resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -283,6 +400,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.19.12: resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -292,6 +418,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.19.12: resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -301,6 +436,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.19.12: resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -310,6 +454,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.19.12: resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -319,6 +472,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.19.12: resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -328,6 +490,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.19.12: resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -337,6 +508,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.19.12: resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -346,6 +526,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.19.12: resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -355,6 +544,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.19.12: resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} @@ -516,13 +714,6 @@ packages: wrap-ansi-cjs: /wrap-ansi@7.0.0 dev: true - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -721,7 +912,7 @@ packages: resolution: {integrity: sha512-SlOhwzXyPQHWgQIS2ncyDdYdksCJvUYNtgsDQqzAKEG3r3d/ejOxvThle79HTK3Q6HB+gQWFG21Ux00Osr5XSw==} dev: false - /@quasar/quasar-app-extension-testing-unit-vitest@0.4.0(@vue/test-utils@2.4.4)(quasar@2.14.5)(vite@5.1.4)(vitest@1.3.1)(vue@3.4.19): + /@quasar/quasar-app-extension-testing-unit-vitest@0.4.0(@vue/test-utils@2.4.4)(quasar@2.14.5)(vite@5.1.4)(vitest@0.31.4)(vue@3.4.19): resolution: {integrity: sha512-eyzdUdmZiCueNS+5nedjMmzdbpCetSrtdGIwW6KplW1dTzRbLiNvYUjpBOxQGmJCgEhWy9zuswJ7MZ/bTql24Q==} engines: {node: '>= 12.22.1', npm: '>= 6.14.12', yarn: '>= 1.17.3'} peerDependencies: @@ -740,7 +931,7 @@ packages: quasar: 2.14.5 vite-jsconfig-paths: 2.0.1(vite@5.1.4) vite-tsconfig-paths: 4.3.1(vite@5.1.4) - vitest: 1.3.1 + vitest: 0.31.4 vue: 3.4.19 transitivePeerDependencies: - supports-color @@ -890,10 +1081,6 @@ packages: dev: true optional: true - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true - /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -934,6 +1121,16 @@ packages: '@types/responselike': 1.0.3 dev: false + /@types/chai-subset@1.3.5: + resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} + dependencies: + '@types/chai': 4.3.12 + dev: true + + /@types/chai@4.3.12: + resolution: {integrity: sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==} + dev: true + /@types/chrome@0.0.208: resolution: {integrity: sha512-VDU/JnXkF5qaI7WBz14Azpa2VseZTgML0ia/g/B1sr9OfdOnHiH/zZ7P7qCDqxSlkqJh76/bPc8jLFcx8rHJmw==} dependencies: @@ -1081,7 +1278,7 @@ packages: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: - '@types/node': 16.18.82 + '@types/node': 20.11.19 dev: true optional: true @@ -1100,43 +1297,43 @@ packages: vue: 3.4.19 dev: true - /@vitest/expect@1.3.1: - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} + /@vitest/expect@0.31.4: + resolution: {integrity: sha512-tibyx8o7GUyGHZGyPgzwiaPaLDQ9MMuCOrc03BYT0nryUuhLbL7NV2r/q98iv5STlwMgaKuFJkgBW/8iPKwlSg==} dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 + '@vitest/spy': 0.31.4 + '@vitest/utils': 0.31.4 chai: 4.4.1 dev: true - /@vitest/runner@1.3.1: - resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} + /@vitest/runner@0.31.4: + resolution: {integrity: sha512-Wgm6UER+gwq6zkyrm5/wbpXGF+g+UBB78asJlFkIOwyse0pz8lZoiC6SW5i4gPnls/zUcPLWS7Zog0LVepXnpg==} dependencies: - '@vitest/utils': 1.3.1 - p-limit: 5.0.0 + '@vitest/utils': 0.31.4 + concordance: 5.0.4 + p-limit: 4.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.3.1: - resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + /@vitest/snapshot@0.31.4: + resolution: {integrity: sha512-LemvNumL3NdWSmfVAMpXILGyaXPkZbG5tyl6+RQSdcHnTj6hvA49UAI8jzez9oQyE/FWLKRSNqTGzsHuk89LRA==} dependencies: magic-string: 0.30.7 pathe: 1.1.2 - pretty-format: 29.7.0 + pretty-format: 27.5.1 dev: true - /@vitest/spy@1.3.1: - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + /@vitest/spy@0.31.4: + resolution: {integrity: sha512-3ei5ZH1s3aqbEyftPAzSuunGICRuhE+IXOmpURFdkm5ybUADk+viyQfejNk6q8M5QGX8/EVKw+QWMEP3DTJDag==} dependencies: tinyspy: 2.2.1 dev: true - /@vitest/utils@1.3.1: - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + /@vitest/utils@0.31.4: + resolution: {integrity: sha512-DobZbHacWznoGUfYU8XDPY78UubJxXfMNY1+SUdOp1NsI34eopSA6aZMeaGu10waSOeYwE8lxrd/pLfT0RMxjQ==} dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 + concordance: 5.0.4 loupe: 2.3.7 - pretty-format: 29.7.0 + pretty-format: 27.5.1 dev: true /@vue/compiler-core@3.4.19: @@ -1506,6 +1703,10 @@ packages: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true + /blueimp-md5@2.19.0: + resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} + dev: true + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -1933,6 +2134,20 @@ packages: typedarray: 0.0.6 dev: false + /concordance@5.0.4: + resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} + engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} + dependencies: + date-time: 3.1.0 + esutils: 2.0.3 + fast-diff: 1.3.0 + js-string-escape: 1.0.1 + lodash: 4.17.21 + md5-hex: 3.0.1 + semver: 7.6.0 + well-known-symbols: 2.0.0 + dev: true + /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: @@ -2091,6 +2306,13 @@ packages: assert-plus: 1.0.0 dev: true + /date-time@3.1.0: + resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} + engines: {node: '>=6'} + dependencies: + time-zone: 1.0.0 + dev: true + /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: true @@ -2222,11 +2444,6 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -2520,6 +2737,36 @@ packages: esbuild-windows-arm64: 0.14.51 dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -2722,12 +2969,6 @@ packages: /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.5 - dev: true - /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2790,21 +3031,6 @@ packages: strip-final-newline: 3.0.0 dev: false - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} @@ -2898,6 +3124,10 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -3122,11 +3352,6 @@ packages: engines: {node: '>=10'} dev: false - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true - /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} dependencies: @@ -3387,11 +3612,6 @@ packages: engines: {node: '>=14.18.0'} dev: false - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -3581,6 +3801,7 @@ packages: /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -3647,8 +3868,9 @@ packages: engines: {node: '>=14'} dev: true - /js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + /js-string-escape@1.0.1: + resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} + engines: {node: '>= 0.8'} dev: true /js-yaml@4.1.0: @@ -3794,12 +4016,9 @@ packages: wrap-ansi: 7.0.0 dev: true - /local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} - dependencies: - mlly: 1.5.0 - pkg-types: 1.0.3 dev: true /locate-path@6.0.0: @@ -3911,6 +4130,13 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /md5-hex@3.0.1: + resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} + engines: {node: '>=8'} + dependencies: + blueimp-md5: 2.19.0 + dev: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -3959,6 +4185,7 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + dev: false /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} @@ -4113,6 +4340,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + dev: false /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -4153,6 +4381,7 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: false /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -4225,9 +4454,9 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true @@ -4289,6 +4518,7 @@ packages: /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + dev: false /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -4397,13 +4627,13 @@ packages: engines: {node: '>=6'} dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/schemas': 29.6.3 + ansi-regex: 5.0.1 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 17.0.2 dev: true /process-nextick-args@2.0.1: @@ -4522,8 +4752,8 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true /readable-stream@2.3.8: @@ -4697,6 +4927,14 @@ packages: fsevents: 2.3.3 dev: true + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /rollup@4.12.0: resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -5013,6 +5251,7 @@ packages: /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + dev: false /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} @@ -5024,10 +5263,10 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - js-tokens: 8.0.3 + acorn: 8.11.3 dev: true /sucrase@3.35.0: @@ -5109,12 +5348,17 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true + /time-zone@1.0.0: + resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} + engines: {node: '>=4'} + dev: true + /tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} dev: true - /tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + /tinypool@0.5.0: + resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} engines: {node: '>=14.0.0'} dev: true @@ -5399,16 +5643,17 @@ packages: - supports-color dev: true - /vite-node@1.3.1: - resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite-node@0.31.4(@types/node@20.11.19): + resolution: {integrity: sha512-uzL377GjJtTbuc5KQxVbDu2xfU/x0wVjUtXQR2ihS21q/NK6ROr4oG0rsSkBBddZUVCwzfx22in76/0ZZHXgkQ==} + engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) + mlly: 1.5.0 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.4 + vite: 4.5.2(@types/node@20.11.19) transitivePeerDependencies: - '@types/node' - less @@ -5462,6 +5707,42 @@ packages: fsevents: 2.3.3 dev: true + /vite@4.5.2(@types/node@20.11.19): + resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.11.19 + esbuild: 0.18.20 + postcss: 8.4.35 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /vite@5.1.4: resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5497,22 +5778,22 @@ packages: fsevents: 2.3.3 dev: true - /vitest@1.3.1: - resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} - engines: {node: ^18.0.0 || >=20.0.0} + /vitest@0.31.4: + resolution: {integrity: sha512-GoV0VQPmWrUFOZSg3RpQAPN+LPmHg2/gxlMNJlyxJihkz6qReHDV6b0pPDcqFLNEPya4tWJ1pgwUNP9MLmUfvQ==} + engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.3.1 - '@vitest/ui': 1.3.1 + '@vitest/browser': '*' + '@vitest/ui': '*' happy-dom: '*' jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/node': - optional: true '@vitest/browser': optional: true '@vitest/ui': @@ -5521,26 +5802,37 @@ packages: optional: true jsdom: optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true dependencies: - '@vitest/expect': 1.3.1 - '@vitest/runner': 1.3.1 - '@vitest/snapshot': 1.3.1 - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 + '@types/chai': 4.3.12 + '@types/chai-subset': 1.3.5 + '@types/node': 20.11.19 + '@vitest/expect': 0.31.4 + '@vitest/runner': 0.31.4 + '@vitest/snapshot': 0.31.4 + '@vitest/spy': 0.31.4 + '@vitest/utils': 0.31.4 + acorn: 8.11.3 acorn-walk: 8.3.2 + cac: 6.7.14 chai: 4.4.1 + concordance: 5.0.4 debug: 4.3.4(supports-color@8.1.1) - execa: 8.0.1 - local-pkg: 0.5.0 + local-pkg: 0.4.3 magic-string: 0.30.7 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 + strip-literal: 1.3.0 tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.4 - vite-node: 1.3.1 + tinypool: 0.5.0 + vite: 4.5.2(@types/node@20.11.19) + vite-node: 0.31.4(@types/node@20.11.19) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -5650,6 +5942,11 @@ packages: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} dev: true + /well-known-symbols@2.0.0: + resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} + engines: {node: '>=6'} + dev: true + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} From 65fcfbff91a0ba9c4428d4564fb06f9c0644970c Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 28 Feb 2024 10:28:11 +0100 Subject: [PATCH 48/54] refs #6768 summary redirect --- src/pages/Order/Card/OrderSummary.vue | 5 +++++ src/pages/Shelving/Card/ShelvingSummary.vue | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pages/Order/Card/OrderSummary.vue b/src/pages/Order/Card/OrderSummary.vue index 9b26891a1..ccc673a37 100644 --- a/src/pages/Order/Card/OrderSummary.vue +++ b/src/pages/Order/Card/OrderSummary.vue @@ -59,6 +59,11 @@ const detailsColumns = ref([ <div class="q-pa-md"> <CardSummary ref="summary" :url="`Orders/${entityId}/summary`"> + <template #header-left> + <a class="header link" :href="`#/orders/${entityId}/summary`"> + <QIcon name="open_in_new" color="white" size="sm" /> + </a> + </template> <template #header="{ entity }"> {{ t('order.summary.basket') }} #{{ entity?.id }} - {{ entity?.client?.name }} ({{ entity?.clientFk }}) diff --git a/src/pages/Shelving/Card/ShelvingSummary.vue b/src/pages/Shelving/Card/ShelvingSummary.vue index 409329c88..37de5196e 100644 --- a/src/pages/Shelving/Card/ShelvingSummary.vue +++ b/src/pages/Shelving/Card/ShelvingSummary.vue @@ -6,7 +6,7 @@ import { useStateStore } from 'stores/useStateStore'; import CardSummary from 'components/ui/CardSummary.vue'; import VnLv from 'components/ui/VnLv.vue'; import ShelvingFilter from 'pages/Shelving/Card/ShelvingFilter.vue'; -import VnUserLink from "components/ui/VnUserLink.vue"; +import VnUserLink from 'components/ui/VnUserLink.vue'; const $props = defineProps({ id: { @@ -65,6 +65,11 @@ const filter = { </template> <div class="q-pa-md"> <CardSummary ref="summary" :url="`Shelvings/${entityId}`" :filter="filter"> + <template #header-left> + <a class="header link" :href="`#/shelving/${entityId}/summary`"> + <QIcon name="open_in_new" color="white" size="sm" /> + </a> + </template> <template #header="{ entity }"> <div>{{ entity.code }}</div> </template> From b8c6f43d0c03f671d6ff18fff04af152cd5be988 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 28 Feb 2024 10:58:41 +0100 Subject: [PATCH 49/54] refs #6768 shelving fix --- src/pages/Shelving/Card/ShelvingSummary.vue | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/pages/Shelving/Card/ShelvingSummary.vue b/src/pages/Shelving/Card/ShelvingSummary.vue index 37de5196e..27ef33c34 100644 --- a/src/pages/Shelving/Card/ShelvingSummary.vue +++ b/src/pages/Shelving/Card/ShelvingSummary.vue @@ -65,11 +65,6 @@ const filter = { </template> <div class="q-pa-md"> <CardSummary ref="summary" :url="`Shelvings/${entityId}`" :filter="filter"> - <template #header-left> - <a class="header link" :href="`#/shelving/${entityId}/summary`"> - <QIcon name="open_in_new" color="white" size="sm" /> - </a> - </template> <template #header="{ entity }"> <div>{{ entity.code }}</div> </template> From dd8ec1309fb6da4e0852df3cd1a0d272a9d590a6 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Wed, 28 Feb 2024 10:59:12 +0100 Subject: [PATCH 50/54] refs #6768 fix order --- src/pages/Order/Card/OrderSummary.vue | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/pages/Order/Card/OrderSummary.vue b/src/pages/Order/Card/OrderSummary.vue index ccc673a37..f9704a480 100644 --- a/src/pages/Order/Card/OrderSummary.vue +++ b/src/pages/Order/Card/OrderSummary.vue @@ -31,7 +31,7 @@ const detailsColumns = ref([ }, { name: 'description', - label: t('order.summary.description'), + label: t('globals.description'), field: (row) => row?.item?.name, }, { @@ -59,11 +59,6 @@ const detailsColumns = ref([ <div class="q-pa-md"> <CardSummary ref="summary" :url="`Orders/${entityId}/summary`"> - <template #header-left> - <a class="header link" :href="`#/orders/${entityId}/summary`"> - <QIcon name="open_in_new" color="white" size="sm" /> - </a> - </template> <template #header="{ entity }"> {{ t('order.summary.basket') }} #{{ entity?.id }} - {{ entity?.client?.name }} ({{ entity?.clientFk }}) @@ -172,7 +167,7 @@ const detailsColumns = ref([ <template #header="props"> <QTr :props="props"> <QTh auto-width>{{ t('order.summary.item') }}</QTh> - <QTh>{{ t('order.summary.description') }}</QTh> + <QTh>{{ t('globals.description') }}</QTh> <QTh auto-width>{{ t('order.summary.quantity') }}</QTh> <QTh auto-width>{{ t('order.summary.price') }}</QTh> <QTh auto-width>{{ t('order.summary.amount') }}</QTh> From b1d8ce40bc2523b37dd5d93ef01e9488b45f649c Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Wed, 28 Feb 2024 15:13:43 +0100 Subject: [PATCH 51/54] fix: refs #6945 css vnRow --- src/components/ui/VnRow.vue | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/ui/VnRow.vue b/src/components/ui/VnRow.vue index e13730e62..f2d2b55de 100644 --- a/src/components/ui/VnRow.vue +++ b/src/components/ui/VnRow.vue @@ -1,16 +1,18 @@ <template> - <div id="row" class="q-gutter-md"> + <div id="row" class="q-gutter-md q-mb-md"> <slot></slot> </div> </template> <style lang="scss" scopped> #row { - display: grid; - grid-template-columns: 1fr 1fr; + display: flex; + > * { + flex: 1; + } } @media screen and (max-width: 800px) { #row { - grid-template-columns: 1fr; + flex-direction: column; } } </style> From 26184328f9aa3065fd665f4145b51da55d26e74f Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Wed, 28 Feb 2024 15:21:44 +0100 Subject: [PATCH 52/54] fix: refs #6945 entryNotes --- src/pages/Entry/Card/EntryNotes.vue | 60 ++++++++++++++--------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/src/pages/Entry/Card/EntryNotes.vue b/src/pages/Entry/Card/EntryNotes.vue index 0d2e5e51a..02a0c020a 100644 --- a/src/pages/Entry/Card/EntryNotes.vue +++ b/src/pages/Entry/Card/EntryNotes.vue @@ -50,25 +50,23 @@ onMounted(() => { :key="index" class="row q-gutter-md q-mb-md" > - <div class="col-3"> - <VnSelectFilter - :label="t('entry.notes.observationType')" - v-model="row.observationTypeFk" - :options="entryObservationsOptions" - :disable="!!row.id" - option-label="description" - option-value="id" - hide-selected - /> - </div> - <div class="col"> - <VnInput - :label="t('globals.description')" - v-model="row.description" - :rules="validate('EntryObservation.description')" - /> - </div> - <div class="col-1 row justify-center items-center"> + <VnSelectFilter + :label="t('entry.notes.observationType')" + v-model="row.observationTypeFk" + :options="entryObservationsOptions" + :disable="!!row.id" + option-label="description" + option-value="id" + hide-selected + /> + + <VnInput + :label="t('globals.description')" + v-model="row.description" + :rules="validate('EntryObservation.description')" + /> + + <div class="row justify-center items-center"> <QIcon name="delete" size="sm" @@ -82,19 +80,17 @@ onMounted(() => { </QIcon> </div> </VnRow> - <VnRow> - <QIcon - name="add" - size="sm" - class="cursor-pointer" - color="primary" - @click="entryObservationsRef.insert()" - > - <QTooltip> - {{ t('Add note') }} - </QTooltip> - </QIcon> - </VnRow> + <QIcon + name="add" + size="sm" + class="cursor-pointer" + color="primary" + @click="entryObservationsRef.insert()" + > + <QTooltip> + {{ t('Add note') }} + </QTooltip> + </QIcon> </QCard> </template> </CrudModel> From 3804ec3e36090ddb63972ebab7c49505333abb06 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Thu, 29 Feb 2024 09:22:44 +0100 Subject: [PATCH 53/54] refs #6933 fetchedTags title fix --- src/components/ui/FetchedTags.vue | 49 +++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/src/components/ui/FetchedTags.vue b/src/components/ui/FetchedTags.vue index 364713cbc..12bce9d4b 100644 --- a/src/components/ui/FetchedTags.vue +++ b/src/components/ui/FetchedTags.vue @@ -13,12 +13,49 @@ defineProps({ <template> <div class="fetchedTags"> <div class="wrap"> - <div class="inline-tag" :class="{ empty: !$props.item.value5 }">{{ $props.item.value5 }}</div> - <div class="inline-tag" :class="{ empty: !$props.item.value6 }">{{ $props.item.value6 }}</div> - <div class="inline-tag" :class="{ empty: !$props.item.value7 }">{{ $props.item.value7 }}</div> - <div class="inline-tag" :class="{ empty: !$props.item.value8 }">{{ $props.item.value8 }}</div> - <div class="inline-tag" :class="{ empty: !$props.item.value9 }">{{ $props.item.value9 }}</div> - <div class="inline-tag" :class="{ empty: !$props.item.value10 }">{{ $props.item.value10 }}</div> + <div + class="inline-tag" + :class="{ empty: !$props.item.value5 }" + :title="$props.item.tag5 + ': ' + $props.item.value5" + > + {{ $props.item.value5 }} + </div> + <div + class="inline-tag" + :class="{ empty: !$props.item.tag6 }" + :title="$props.item.tag6 + ': ' + $props.item.value6" + > + {{ $props.item.value6 }} + </div> + + <div + class="inline-tag" + :class="{ empty: !$props.item.value7 }" + :title="$props.item.tag7 + ': ' + $props.item.value7" + > + {{ $props.item.value7 }} + </div> + <div + class="inline-tag" + :class="{ empty: !$props.item.value8 }" + :title="$props.item.tag8 + ': ' + $props.item.value8" + > + {{ $props.item.value8 }} + </div> + <div + class="inline-tag" + :class="{ empty: !$props.item.value9 }" + :title="$props.item.tag9 + ': ' + $props.item.value9" + > + {{ $props.item.value9 }} + </div> + <div + class="inline-tag" + :class="{ empty: !$props.item.value10 }" + :title="$props.item.tag10 + ': ' + $props.item.value10" + > + {{ $props.item.value10 }} + </div> </div> </div> </template> From 742b87c78e76042c8ff47be9086938b5c7f8db3c Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Thu, 29 Feb 2024 10:24:50 +0100 Subject: [PATCH 54/54] refs #6956 deploy: init version 2412 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7beb22e55..4029d7240 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salix-front", - "version": "24.10.0", + "version": "24.12.0", "description": "Salix frontend", "productName": "Salix", "author": "Verdnatura",