Merge remote-tracking branch 'origin/monterail_vue3_migration_admin' into user-page-apollo-toast-packages

This commit is contained in:
Kamila 2024-07-25 15:09:15 +02:00
commit 2bfc781bc3
29 changed files with 906 additions and 451 deletions

View File

@ -29,24 +29,29 @@ module.exports = {
'no-console': ['error'], 'no-console': ['error'],
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'vue/component-name-in-template-casing': ['error', 'kebab-case'], 'vue/component-name-in-template-casing': ['error', 'kebab-case'],
'vue/no-static-inline-styles': [ // 'vue/no-static-inline-styles': [
'error', // 'error',
{ // {
allowBinding: false, // allowBinding: false,
}, // },
], // ],
'vue/multi-word-component-names': 0, 'vue/multi-word-component-names': 0,
'vue/no-v-html': 0, 'vue/no-v-html': 0,
'vue/no-static-inline-styles': 0, // TODO remove at the end of migration and fix
'vue/require-default-prop': 0, // TODO remove at the end of migration and fix
'vue/no-computed-properties-in-data': 0, // TODO remove at the end of migration and fix
'@intlify/vue-i18n/no-dynamic-keys': 'error', '@intlify/vue-i18n/no-dynamic-keys': 'error',
'@intlify/vue-i18n/no-unused-keys': [ '@intlify/vue-i18n/no-raw-text': 0, // TODO remove at the end of migration and fix
'error', // '@intlify/vue-i18n/no-unused-keys': [
{ // 'error',
src: './src', // {
extensions: ['.js', '.vue'], // src: './src',
ignores: ['/overlay/'], // extensions: ['.js', '.vue'],
enableFix: false, // ignores: ['/overlay/'],
}, // enableFix: false,
], // },
// ],
'@intlify/vue-i18n/no-unused-keys': 0, // TODO remove at the end of migration and fix
'@intlify/vue-i18n/no-missing-keys-in-other-locales': 'error', '@intlify/vue-i18n/no-missing-keys-in-other-locales': 'error',
'prettier/prettier': [ 'prettier/prettier': [
'error', 'error',

View File

@ -1 +1 @@
v14.17.0 v18.20

View File

@ -1,18 +1,17 @@
'use strict'; 'use strict'
module.exports = { module.exports = {
extends: ["stylelint-config-standard-scss", "stylelint-config-recommended-vue"], extends: ['stylelint-config-standard-scss', 'stylelint-config-recommended-vue'],
overrides: [ overrides: [
{ {
files: "**/*.{scss}", files: '**/*.{scss}',
customSyntax: "postcss-scss", customSyntax: 'postcss-scss',
extends: ["stylelint-config-standard-scss"], extends: ['stylelint-config-standard-scss'],
}, },
{ {
files: "**/*.vue", files: '**/*.vue',
customSyntax: "postcss-html", customSyntax: 'postcss-html',
extends: ["stylelint-config-recommended-vue"], extends: ['stylelint-config-recommended-vue'],
} },
] ],
}
};

48
admin/components.d.ts vendored
View File

@ -7,7 +7,40 @@ export {}
/* prettier-ignore */ /* prettier-ignore */
declare module 'vue' { declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
BAvatar: typeof import('bootstrap-vue-next')['BAvatar']
BBadge: typeof import('bootstrap-vue-next')['BBadge']
BButton: typeof import('bootstrap-vue-next')['BButton']
BCard: typeof import('bootstrap-vue-next')['BCard']
BCardText: typeof import('bootstrap-vue-next')['BCardText']
BCol: typeof import('bootstrap-vue-next')['BCol']
BCollapse: typeof import('bootstrap-vue-next')['BCollapse']
BContainer: typeof import('bootstrap-vue-next')['BContainer']
BForm: typeof import('bootstrap-vue-next')['BForm']
BFormCheckbox: typeof import('bootstrap-vue-next')['BFormCheckbox']
BFormGroup: typeof import('bootstrap-vue-next')['BFormGroup']
BFormInput: typeof import('bootstrap-vue-next')['BFormInput']
BFormRadioGroup: typeof import('bootstrap-vue-next')['BFormRadioGroup']
BFormSelect: typeof import('bootstrap-vue-next')['BFormSelect']
BFormTextarea: typeof import('bootstrap-vue-next')['BFormTextarea']
BInputGroup: typeof import('bootstrap-vue-next')['BInputGroup']
BLink: typeof import('bootstrap-vue-next')['BLink']
BListGroup: typeof import('bootstrap-vue-next')['BListGroup']
BListGroupItem: typeof import('bootstrap-vue-next')['BListGroupItem']
BModal: typeof import('bootstrap-vue-next')['BModal'] BModal: typeof import('bootstrap-vue-next')['BModal']
BPagination: typeof import('bootstrap-vue-next')['BPagination']
BRow: typeof import('bootstrap-vue-next')['BRow']
BTab: typeof import('bootstrap-vue-next')['BTab']
BTable: typeof import('bootstrap-vue-next')['BTable']
BTableLite: typeof import('bootstrap-vue-next')['BTableLite']
BTableSimple: typeof import('bootstrap-vue-next')['BTableSimple']
BTabs: typeof import('bootstrap-vue-next')['BTabs']
BTbody: typeof import('bootstrap-vue-next')['BTbody']
BTd: typeof import('bootstrap-vue-next')['BTd']
BTh: typeof import('bootstrap-vue-next')['BTh']
BThead: typeof import('bootstrap-vue-next')['BThead']
BToastOrchestrator: typeof import('bootstrap-vue-next')['BToastOrchestrator']
BTooltip: typeof import('bootstrap-vue-next')['BTooltip']
BTr: typeof import('bootstrap-vue-next')['BTr']
ChangeUserRoleFormular: typeof import('./src/components/ChangeUserRoleFormular.vue')['default'] ChangeUserRoleFormular: typeof import('./src/components/ChangeUserRoleFormular.vue')['default']
CommunityVisualizeItem: typeof import('./src/components/Federation/CommunityVisualizeItem.vue')['default'] CommunityVisualizeItem: typeof import('./src/components/Federation/CommunityVisualizeItem.vue')['default']
ConfirmRegisterMailFormular: typeof import('./src/components/ConfirmRegisterMailFormular.vue')['default'] ConfirmRegisterMailFormular: typeof import('./src/components/ConfirmRegisterMailFormular.vue')['default']
@ -27,7 +60,15 @@ declare module 'vue' {
EditCreationFormular: typeof import('./src/components/EditCreationFormular.vue')['default'] EditCreationFormular: typeof import('./src/components/EditCreationFormular.vue')['default']
FederationVisualizeItem: typeof import('./src/components/Federation/FederationVisualizeItem.vue')['default'] FederationVisualizeItem: typeof import('./src/components/Federation/FederationVisualizeItem.vue')['default']
FigureQrCode: typeof import('./src/components/FigureQrCode.vue')['default'] FigureQrCode: typeof import('./src/components/FigureQrCode.vue')['default']
IBiArrowClockwise: typeof import('~icons/bi/arrow-clockwise')['default']
IBiBellFill: typeof import('~icons/bi/bell-fill')['default']
IBiCheck: typeof import('~icons/bi/check')['default']
IBiEnvelope: typeof import('~icons/bi/envelope')['default'] IBiEnvelope: typeof import('~icons/bi/envelope')['default']
IBiEye: typeof import('~icons/bi/eye')['default']
IBiList: typeof import('~icons/bi/list')['default']
IBiPencil: typeof import('~icons/bi/pencil')['default']
IBiPencilFill: typeof import('~icons/bi/pencil-fill')['default']
IBiTrash: typeof import('~icons/bi/trash')['default']
IBiXCircle: typeof import('~icons/bi/x-circle')['default'] IBiXCircle: typeof import('~icons/bi/x-circle')['default']
IIcBaselineClose: typeof import('~icons/ic/baseline-close')['default'] IIcBaselineClose: typeof import('~icons/ic/baseline-close')['default']
IOcticonCircleSlash24: typeof import('~icons/octicon/circle-slash24')['default'] IOcticonCircleSlash24: typeof import('~icons/octicon/circle-slash24')['default']
@ -35,7 +76,6 @@ declare module 'vue' {
IPhCaretDown: typeof import('~icons/ph/caret-down')['default'] IPhCaretDown: typeof import('~icons/ph/caret-down')['default']
IPhCaretUpFill: typeof import('~icons/ph/caret-up-fill')['default'] IPhCaretUpFill: typeof import('~icons/ph/caret-up-fill')['default']
IPhEnvelope: typeof import('~icons/ph/envelope')['default'] IPhEnvelope: typeof import('~icons/ph/envelope')['default']
IPhXCircle: typeof import('~icons/ph/x-circle')['default']
NavBar: typeof import('./src/components/NavBar.vue')['default'] NavBar: typeof import('./src/components/NavBar.vue')['default']
NotFoundPage: typeof import('./src/components/NotFoundPage.vue')['default'] NotFoundPage: typeof import('./src/components/NotFoundPage.vue')['default']
OpenCreationsTable: typeof import('./src/components/Tables/OpenCreationsTable.vue')['default'] OpenCreationsTable: typeof import('./src/components/Tables/OpenCreationsTable.vue')['default']
@ -49,5 +89,11 @@ declare module 'vue' {
TimePicker: typeof import('./src/components/input/TimePicker.vue')['default'] TimePicker: typeof import('./src/components/input/TimePicker.vue')['default']
TransactionLinkList: typeof import('./src/components/TransactionLinkList.vue')['default'] TransactionLinkList: typeof import('./src/components/TransactionLinkList.vue')['default']
UserQuery: typeof import('./src/components/UserQuery.vue')['default'] UserQuery: typeof import('./src/components/UserQuery.vue')['default']
IPhXCircle: typeof import('~icons/ph/x-circle')['default']
}
export interface ComponentCustomProperties {
vBToggle: typeof import('bootstrap-vue-next')['vBToggle']
vBTooltip: typeof import('bootstrap-vue-next')['vBTooltip']
} }
} }

View File

@ -84,7 +84,7 @@
"postcss-html": "^1.3.0", "postcss-html": "^1.3.0",
"postcss-scss": "^4.0.3", "postcss-scss": "^4.0.3",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"stylelint": "14.16.1", "stylelint": "16.7.0",
"stylelint-config-recommended-vue": "1.5.0", "stylelint-config-recommended-vue": "1.5.0",
"stylelint-config-standard-scss": "13.1.0", "stylelint-config-standard-scss": "13.1.0",
"unplugin-icons": "^0.19.0", "unplugin-icons": "^0.19.0",

View File

@ -1,5 +1,6 @@
<template> <template>
<div id="app"> <div id="app">
<BToastOrchestrator />
<default-layout v-if="$store.state.token" /> <default-layout v-if="$store.state.token" />
<router-view v-else></router-view> <router-view v-else></router-view>
<BModalOrchestrator /> <BModalOrchestrator />
@ -14,7 +15,8 @@ import { BModalOrchestrator } from 'bootstrap-vue-next'
.pointer { .pointer {
cursor: pointer; cursor: pointer;
} }
.pointer:hover { .pointer:hover {
background-color: rgb(216, 213, 213); background-color: rgb(216 213 213);
} }
</style> </style>

View File

@ -56,6 +56,6 @@ const sendRegisterMail = async () => {
</script> </script>
<style> <style>
.input-group-text { .input-group-text {
background-color: rgb(255, 252, 205); background-color: rgb(255 252 205);
} }
</style> </style>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="contribution-link"> <div class="contribution-link">
<b-card <BCard
border-variant="success" border-variant="success"
:header="$t('contributionLink.contributionLinks')" :header="$t('contributionLink.contributionLinks')"
header-bg-variant="success" header-bg-variant="success"
@ -8,17 +8,17 @@
header-class="text-center" header-class="text-center"
class="mt-5" class="mt-5"
> >
<b-button <BButton
v-if="!editContributionLink" v-if="!editContributionLink"
class="my-3 d-flex justify-content-left" class="my-3 d-flex justify-content-left"
data-test="new-contribution-link-button" data-test="new-contribution-link-button"
@click="visible = !visible" @click="visible = !visible"
> >
{{ $t('math.plus') }} {{ $t('contributionLink.newContributionLink') }} {{ $t('math.plus') }} {{ $t('contributionLink.newContributionLink') }}
</b-button> </BButton>
<b-collapse id="newContribution" v-model="visible" class="mt-2"> <BCollapse id="newContribution" v-model="visible" class="mt-2">
<b-card> <BCard>
<p class="h2 ml-5">{{ $t('contributionLink.contributionLinks') }}</p> <p class="h2 ml-5">{{ $t('contributionLink.contributionLinks') }}</p>
<contribution-link-form <contribution-link-form
:contribution-link-data="contributionLinkData" :contribution-link-data="contributionLinkData"
@ -26,10 +26,10 @@
@get-contribution-links="$emit('get-contribution-links')" @get-contribution-links="$emit('get-contribution-links')"
@close-contribution-form="closeContributionForm" @close-contribution-form="closeContributionForm"
/> />
</b-card> </BCard>
</b-collapse> </BCollapse>
<b-card-text> <BCardText>
<contribution-link-list <contribution-link-list
v-if="count > 0" v-if="count > 0"
:items="items" :items="items"
@ -38,10 +38,61 @@
@close-contribution-form="closeContributionForm" @close-contribution-form="closeContributionForm"
/> />
<div v-else>{{ $t('contributionLink.noContributionLinks') }}</div> <div v-else>{{ $t('contributionLink.noContributionLinks') }}</div>
</b-card-text> </BCardText>
</b-card> </BCard>
</div> </div>
</template> </template>
<!--<script setup>-->
<!--import { ref, watchEffect } from 'vue'-->
<!--import { useEmit } from '@vueuse/core'-->
<!--import ContributionLinkForm from '../ContributionLink/ContributionLinkForm'-->
<!--import ContributionLinkList from '../ContributionLink/ContributionLinkList'-->
<!--import { useToggle } from 'vueuse'-->
<!--// extracting props-->
<!--const props = defineProps({-->
<!-- items: {-->
<!-- type: Array,-->
<!-- required: true,-->
<!-- },-->
<!-- count: {-->
<!-- type: Number,-->
<!-- required: true,-->
<!-- },-->
<!--})-->
<!--// extracting emits-->
<!--const emit = useEmit()-->
<!--// setting up refs-->
<!--const visible = ref(false)-->
<!--const contributionLinkData = ref({})-->
<!--const editContributionLink = ref(false)-->
<!--// setting up methods-->
<!--const closeContributionForm = () => {-->
<!-- if (visible.value) {-->
<!-- emit('bv::toggle::collapse', 'newContribution')-->
<!-- editContributionLink.value = false-->
<!-- contributionLinkData.value = {}-->
<!-- }-->
<!--}-->
<!--const editContributionLinkData = (data) => {-->
<!-- if (!visible.value) {-->
<!-- emit('bv::toggle::collapse', 'newContribution')-->
<!-- }-->
<!-- contributionLinkData.value = data-->
<!-- editContributionLink.value = true-->
<!--}-->
<!--defineExpose({-->
<!-- closeContributionForm,-->
<!-- editContributionLinkData,-->
<!--})-->
<!--</script>-->
<script> <script>
import ContributionLinkForm from '../ContributionLink/ContributionLinkForm' import ContributionLinkForm from '../ContributionLink/ContributionLinkForm'
import ContributionLinkList from '../ContributionLink/ContributionLinkList' import ContributionLinkList from '../ContributionLink/ContributionLinkList'
@ -73,14 +124,14 @@ export default {
methods: { methods: {
closeContributionForm() { closeContributionForm() {
if (this.visible) { if (this.visible) {
this.$root.$emit('bv::toggle::collapse', 'newContribution') this.visible = false
this.editContributionLink = false this.editContributionLink = false
this.contributionLinkData = {} this.contributionLinkData = {}
} }
}, },
editContributionLinkData(data) { editContributionLinkData(data) {
if (!this.visible) { if (!this.visible) {
this.$root.$emit('bv::toggle::collapse', 'newContribution') this.visible = true
} }
this.contributionLinkData = data this.contributionLinkData = data
this.editContributionLink = true this.editContributionLink = true

View File

@ -1,11 +1,11 @@
<template> <template>
<div class="contribution-link-form"> <div class="contribution-link-form">
<b-form ref="contributionLinkForm" class="m-5" @submit.prevent="onSubmit"> <BForm ref="contributionLinkForm" class="m-5" @submit.prevent="onSubmit" @reset="onReset">
<!-- Date --> <!-- Date -->
<b-row> <BRow>
<b-col> <BCol>
<b-form-group :label="$t('contributionLink.validFrom')"> <BFormGroup :label="$t('contributionLink.validFrom')">
<b-form-datepicker <BFormInput
v-model="form.validFrom" v-model="form.validFrom"
reset-button reset-button
size="lg" size="lg"
@ -14,12 +14,13 @@
reset-value="" reset-value=""
:label-no-date-selected="$t('contributionLink.noDateSelected')" :label-no-date-selected="$t('contributionLink.noDateSelected')"
required required
></b-form-datepicker> type="date"
</b-form-group> />
</b-col> </BFormGroup>
<b-col> </BCol>
<b-form-group :label="$t('contributionLink.validTo')"> <BCol>
<b-form-datepicker <BFormGroup :label="$t('contributionLink.validTo')">
<BFormInput
v-model="form.validTo" v-model="form.validTo"
reset-button reset-button
size="lg" size="lg"
@ -28,14 +29,15 @@
reset-value="" reset-value=""
:label-no-date-selected="$t('contributionLink.noDateSelected')" :label-no-date-selected="$t('contributionLink.noDateSelected')"
required required
></b-form-datepicker> type="date"
</b-form-group> />
</b-col> </BFormGroup>
</b-row> </BCol>
</BRow>
<!-- Name --> <!-- Name -->
<b-form-group :label="$t('contributionLink.name')"> <BFormGroup :label="$t('contributionLink.name')">
<b-form-input <BFormInput
v-model="form.name" v-model="form.name"
size="lg" size="lg"
type="text" type="text"
@ -43,175 +45,274 @@
required required
maxlength="100" maxlength="100"
class="test-name" class="test-name"
></b-form-input> ></BFormInput>
</b-form-group> </BFormGroup>
<!-- Desc --> <!-- Desc -->
<b-form-group :label="$t('contributionLink.memo')"> <BFormGroup :label="$t('contributionLink.memo')">
<b-form-textarea <BFormTextarea
v-model="form.memo" v-model="form.memo"
size="lg" size="lg"
:placeholder="$t('contributionLink.memo')" :placeholder="$t('contributionLink.memo')"
required required
maxlength="255" maxlength="255"
class="test-memo" class="test-memo"
></b-form-textarea> ></BFormTextarea>
</b-form-group> </BFormGroup>
<!-- Amount --> <!-- Amount -->
<b-form-group :label="$t('contributionLink.amount')"> <BFormGroup :label="$t('contributionLink.amount')">
<b-form-input <BFormInput
v-model="form.amount" v-model="form.amount"
size="lg" size="lg"
type="number" type="number"
placeholder="0" placeholder="0"
required required
class="test-amount" class="test-amount"
></b-form-input> ></BFormInput>
</b-form-group> </BFormGroup>
<b-row class="mb-4"> <BRow class="mb-4">
<b-col> <BCol>
<!-- Cycle --> <!-- Cycle -->
<label for="cycle">{{ $t('contributionLink.cycle') }}</label> <label for="cycle">{{ $t('contributionLink.cycle') }}</label>
<b-form-select <BFormSelect v-model="form.cycle" :options="cycle" class="mb-3" size="lg"></BFormSelect>
v-model="form.cycle" </BCol>
:options="cycle" <BCol>
class="mb-3"
size="lg"
></b-form-select>
</b-col>
<b-col>
<!-- maxPerCycle --> <!-- maxPerCycle -->
<label for="maxPerCycle">{{ $t('contributionLink.maxPerCycle') }}</label> <label for="maxPerCycle">{{ $t('contributionLink.maxPerCycle') }}</label>
<b-form-select <BFormSelect
v-model="form.maxPerCycle" v-model="form.maxPerCycle"
:options="maxPerCycle" :options="maxPerCycle"
:disabled="disabled" :disabled="disabled"
class="mb-3" class="mb-3"
size="lg" size="lg"
></b-form-select> ></BFormSelect>
</b-col> </BCol>
</b-row> </BRow>
<!-- Max amount --> <!-- Max amount -->
<!-- <!--
<b-form-group :label="$t('contributionLink.maximumAmount')"> <BFormGroup :label="$t('contributionLink.maximumAmount')">
<b-form-input <BFormInput
v-model="form.maxAmountPerMonth" v-model="form.maxAmountPerMonth"
size="lg" size="lg"
:disabled="disabled" :disabled="disabled"
type="number" type="number"
placeholder="0" placeholder="0"
></b-form-input> ></BFormInput>
</b-form-group> </BFormGroup>
--> -->
<div class="mt-6"> <div class="mt-6">
<b-button type="submit" variant="primary"> <BButton type="submit" variant="primary">
{{ {{
editContributionLink ? $t('contributionLink.saveChange') : $t('contributionLink.create') editContributionLink ? $t('contributionLink.saveChange') : $t('contributionLink.create')
}} }}
</b-button> </BButton>
<b-button type="reset" variant="danger" @click.prevent="onReset"> <BButton type="reset" variant="danger">
{{ $t('contributionLink.clear') }} {{ $t('contributionLink.clear') }}
</b-button> </BButton>
<b-button @click.prevent="$emit('close-contribution-form')"> <BButton @click.prevent="emit('close-contribution-form')">
{{ $t('close') }} {{ $t('close') }}
</b-button> </BButton>
</div> </div>
</b-form> </BForm>
</div> </div>
</template> </template>
<script> <!--<script>-->
<!--import { createContributionLink } from '@/graphql/createContributionLink.js'-->
<!--import { updateContributionLink } from '@/graphql/updateContributionLink.js'-->
<!--export default {-->
<!-- name: 'ContributionLinkForm',-->
<!-- props: {-->
<!-- contributionLinkData: {-->
<!-- type: Object,-->
<!-- default() {-->
<!-- return {}-->
<!-- },-->
<!-- },-->
<!-- editContributionLink: { type: Boolean, required: true },-->
<!-- },-->
<!-- emits: ['close-contribution-form', 'close-contribution-link', 'get-contribution-links'],-->
<!-- data() {-->
<!-- return {-->
<!-- form: {-->
<!-- name: null,-->
<!-- memo: null,-->
<!-- amount: null,-->
<!-- validFrom: null,-->
<!-- validTo: null,-->
<!-- cycle: 'ONCE',-->
<!-- maxPerCycle: 1,-->
<!-- maxAmountPerMonth: '0',-->
<!-- },-->
<!-- min: new Date(),-->
<!-- cycle: [-->
<!-- { value: 'ONCE', text: this.$t('contributionLink.options.cycle.once') },-->
<!-- // { value: 'hourly', text: this.$t('contributionLink.options.cycle.hourly') },-->
<!-- { value: 'DAILY', text: this.$t('contributionLink.options.cycle.daily') },-->
<!-- // { value: 'weekly', text: this.$t('contributionLink.options.cycle.weekly') },-->
<!-- // { value: 'monthly', text: this.$t('contributionLink.options.cycle.monthly') },-->
<!-- // { value: 'yearly', text: this.$t('contributionLink.options.cycle.yearly') },-->
<!-- ],-->
<!-- maxPerCycle: [-->
<!-- { value: '1', text: '1 x' },-->
<!-- // { value: '2', text: '2 x' },-->
<!-- // { value: '3', text: '3 x' },-->
<!-- // { value: '4', text: '4 x' },-->
<!-- // { value: '5', text: '5 x' },-->
<!-- ],-->
<!-- }-->
<!-- },-->
<!-- computed: {-->
<!-- disabled() {-->
<!-- return true-->
<!-- },-->
<!-- },-->
<!-- watch: {-->
<!-- contributionLinkData() {-->
<!-- this.form = this.contributionLinkData-->
<!-- },-->
<!-- },-->
<!-- methods: {-->
<!-- onSubmit() {-->
<!-- if (this.form.validFrom === null)-->
<!-- return this.toastError(this.$t('contributionLink.noStartDate'))-->
<!-- if (this.form.validTo === null) return this.toastError(this.$t('contributionLink.noEndDate'))-->
<!-- const variables = {-->
<!-- ...this.form,-->
<!-- id: this.contributionLinkData.id ? this.contributionLinkData.id : null,-->
<!-- }-->
<!-- this.$apollo-->
<!-- .mutate({-->
<!-- mutation: this.editContributionLink ? updateContributionLink : createContributionLink,-->
<!-- variables: variables,-->
<!-- })-->
<!-- .then((result) => {-->
<!-- const link = this.editContributionLink-->
<!-- ? result.data.updateContributionLink.link-->
<!-- : result.data.createContributionLink.link-->
<!-- this.toastSuccess(-->
<!-- this.editContributionLink ? this.$t('contributionLink.changeSaved') : link,-->
<!-- )-->
<!-- this.onReset()-->
<!-- this.$root.$emit('bv::toggle::collapse', 'newContribution')-->
<!-- this.$emit('get-contribution-links')-->
<!-- })-->
<!-- .catch((error) => {-->
<!-- this.toastError(error.message)-->
<!-- })-->
<!-- },-->
<!-- onReset() {-->
<!-- this.$refs.contributionLinkForm.reset()-->
<!-- this.form = {}-->
<!-- this.form.validFrom = null-->
<!-- this.form.validTo = null-->
<!-- },-->
<!-- },-->
<!--}-->
<!--</script>-->
<script setup>
import { ref, watch } from 'vue'
import { useMutation } from '@vue/apollo-composable'
import { createContributionLink } from '@/graphql/createContributionLink.js' import { createContributionLink } from '@/graphql/createContributionLink.js'
import { updateContributionLink } from '@/graphql/updateContributionLink.js' import { updateContributionLink } from '@/graphql/updateContributionLink.js'
import { useAppToast } from '@/composables/useToast'
import { useI18n } from 'vue-i18n'
export default { const props = defineProps({
name: 'ContributionLinkForm', contributionLinkData: {
props: { type: Object,
contributionLinkData: { default: () => ({}),
type: Object,
default() {
return {}
},
},
editContributionLink: { type: Boolean, required: true },
}, },
emits: ['close-contribution-form', 'close-contribution-link', 'get-contribution-links'], editContributionLink: { type: Boolean, required: true },
data() { })
return {
form: {
name: null,
memo: null,
amount: null,
validFrom: null,
validTo: null,
cycle: 'ONCE',
maxPerCycle: 1,
maxAmountPerMonth: '0',
},
min: new Date(),
cycle: [
{ value: 'ONCE', text: this.$t('contributionLink.options.cycle.once') },
// { value: 'hourly', text: this.$t('contributionLink.options.cycle.hourly') },
{ value: 'DAILY', text: this.$t('contributionLink.options.cycle.daily') },
// { value: 'weekly', text: this.$t('contributionLink.options.cycle.weekly') },
// { value: 'monthly', text: this.$t('contributionLink.options.cycle.monthly') },
// { value: 'yearly', text: this.$t('contributionLink.options.cycle.yearly') },
],
maxPerCycle: [
{ value: '1', text: '1 x' },
// { value: '2', text: '2 x' },
// { value: '3', text: '3 x' },
// { value: '4', text: '4 x' },
// { value: '5', text: '5 x' },
],
}
},
computed: {
disabled() {
return true
},
},
watch: {
contributionLinkData() {
this.form = this.contributionLinkData
},
},
methods: {
onSubmit() {
if (this.form.validFrom === null)
return this.toastError(this.$t('contributionLink.noStartDate'))
if (this.form.validTo === null) return this.toastError(this.$t('contributionLink.noEndDate'))
const variables = { const emit = defineEmits([
...this.form, 'bv::toggle::collapse',
id: this.contributionLinkData.id ? this.contributionLinkData.id : null, 'get-contribution-links',
} 'close-contribution-form',
])
this.$apollo const { t } = useI18n()
.mutate({
mutation: this.editContributionLink ? updateContributionLink : createContributionLink, const contributionLinkForm = ref(null)
variables: variables,
}) const form = ref({
.then((result) => { name: null,
const link = this.editContributionLink memo: null,
? result.data.updateContributionLink.link amount: null,
: result.data.createContributionLink.link validFrom: null,
this.toastSuccess( validTo: null,
this.editContributionLink ? this.$t('contributionLink.changeSaved') : link, cycle: 'ONCE',
) maxPerCycle: 1,
this.onReset() maxAmountPerMonth: '0',
this.$root.$emit('bv::toggle::collapse', 'newContribution') })
this.$emit('get-contribution-links')
}) const min = new Date().toLocaleDateString()
.catch((error) => { const { toastError, toastSuccess } = useAppToast()
this.toastError(error.message)
}) const cycle = ref([
}, { value: 'ONCE', text: t('contributionLink.options.cycle.once') },
onReset() { { value: 'DAILY', text: t('contributionLink.options.cycle.daily') },
this.$refs.contributionLinkForm.reset() ])
this.form = {}
this.form.validFrom = null const maxPerCycle = ref([{ value: '1', text: '1 x' }])
this.form.validTo = null
}, // Set client
const { mutate: contributionLinkMutation } = useMutation(
props.editContributionLink ? updateContributionLink : createContributionLink,
)
watch(
() => props.contributionLinkData,
(newVal) => {
form.value = newVal
form.value.validFrom = formatDateFromDateTime(newVal.validFrom)
form.value.validTo = formatDateFromDateTime(newVal.validTo)
}, },
)
const onSubmit = async () => {
if (form.value.validFrom === null) return toastError(t('contributionLink.noStartDate'))
if (form.value.validTo === null) return toastError(t('contributionLink.noEndDate'))
const variables = {
...form.value,
maxAmountPerMonth: 1, // TODO this is added only for test puropuse during migration since max amount input is commented out but without it being a number bigger then 0 it doesn't work
id: props.contributionLinkData.id ? props.contributionLinkData.id : null,
}
try {
const result = await contributionLinkMutation({ ...variables })
const link = props.editContributionLink
? result.data.updateContributionLink.link
: result.data.createContributionLink.link
toastSuccess(props.editContributionLink ? t('contributionLink.changeSaved') : link)
onReset()
emit('close-contribution-form')
emit('get-contribution-links')
} catch (error) {
toastError(error.message)
}
} }
const formatDateFromDateTime = (datetimeString) => {
if (!datetimeString || !datetimeString?.includes('T')) return datetimeString
return datetimeString.split('T')[0]
}
const onReset = () => {
form.value = { validFrom: null, validTo: null }
}
defineExpose({
form,
min,
cycle,
maxPerCycle,
onSubmit,
})
</script> </script>

View File

@ -1,47 +1,47 @@
<template> <template>
<div class="contribution-link-list"> <div class="contribution-link-list">
<b-table :items="items" :fields="fields" striped hover stacked="lg"> <BTable :items="items" :fields="fields" striped hover stacked="lg">
<template #cell(delete)="data"> <template #cell(delete)="data">
<b-button <BButton
variant="danger" variant="danger"
size="md" size="md"
class="mr-2 test-delete-link" class="mr-2 test-delete-link"
@click="deleteContributionLink(data.item.id, data.item.name)" @click="deleteContributionLink(data.item.id, data.item.name)"
> >
<b-icon icon="trash" variant="light"></b-icon> <IBiTrash />
</b-button> </BButton>
</template> </template>
<template #cell(edit)="data"> <template #cell(edit)="data">
<b-button variant="success" size="md" class="mr-2" @click="editContributionLink(data.item)"> <BButton variant="success" size="md" class="mr-2" @click="editContributionLink(data.item)">
<b-icon icon="pencil" variant="light"></b-icon> <IBiPencil />
</b-button> </BButton>
</template> </template>
<template #cell(show)="data"> <template #cell(show)="data">
<b-button <BButton
variant="info" variant="info"
size="md" size="md"
class="mr-2 test-show" class="mr-2 test-show"
@click="showContributionLink(data.item)" @click="showContributionLink(data.item)"
> >
<b-icon icon="eye" variant="light"></b-icon> <IBiEye />
</b-button> </BButton>
</template> </template>
</b-table> </BTable>
<b-modal ref="my-modal" ok-only hide-header-close> <BModal ref="my-modal" ok-only hide-header-close>
<b-card header-tag="header" footer-tag="footer"> <BCard header-tag="header" footer-tag="footer">
<template #header> <template #header>
<h6 class="mb-0">{{ modalData ? modalData.name : '' }}</h6> <h6 class="mb-0">{{ modalData ? modalData.name : '' }}</h6>
</template> </template>
<b-card-text> <BCardText>
{{ modalData.memo ? modalData.memo : '' }} {{ modalData.memo ? modalData.memo : '' }}
<figure-qr-code :link="modalData ? modalData.link : ''" /> <figure-qr-code :link="modalData ? modalData.link : ''" />
</b-card-text> </BCardText>
<template #footer> <template #footer>
<em>{{ modalData ? modalData.link : '' }}</em> <em>{{ modalData ? modalData.link : '' }}</em>
</template> </template>
</b-card> </BCard>
</b-modal> </BModal>
</div> </div>
</template> </template>
<script> <script>

View File

@ -82,20 +82,25 @@ export default {
float: right; float: right;
width: 75%; width: 75%;
} }
.is-moderator-message { .is-moderator-message {
background-color: rgb(228, 237, 245); background-color: rgb(228 237 245);
} }
.is-moderator-hidden-message { .is-moderator-hidden-message {
background-color: rgb(217, 161, 228); background-color: rgb(217 161 228);
} }
.is-user { .is-user {
clear: both; clear: both;
width: 75%; width: 75%;
} }
.is-user-message { .is-user-message {
background-color: rgb(236, 235, 213); background-color: rgb(236 235 213);
} }
.is-user-history-message { .is-user-history-message {
background-color: rgb(235, 226, 57); background-color: rgb(235 226 57);
} }
</style> </style>

View File

@ -124,6 +124,6 @@ export default {
</script> </script>
<style> <style>
.input-group-text { .input-group-text {
background-color: rgb(255, 252, 205); background-color: rgb(255 252 205);
} }
</style> </style>

View File

@ -1,30 +1,30 @@
<template> <template>
<div class="community-visualize-item"> <div class="community-visualize-item">
<b-row @click="toggleDetails"> <BRow @click="toggleDetails">
<b-col cols="1"><b-icon :icon="icon" :variant="variant" class="mr-4"></b-icon></b-col> <BCol cols="1"><b-icon :icon="icon" :variant="variant" class="mr-4"></b-icon></BCol>
<b-col> <BCol>
<div> <div>
<a :href="item.url" target="_blank">{{ item.url }}</a> <a :href="item.url" target="_blank">{{ item.url }}</a>
</div> </div>
<small>{{ `${item.publicKey.substring(0, 26)}` }}</small> <small>{{ `${item.publicKey.substring(0, 26)}` }}</small>
</b-col> </BCol>
<b-col v-b-tooltip="item.description">{{ item.name }}</b-col> <BCol v-b-tooltip="item.description">{{ item.name }}</BCol>
<b-col cols="2">{{ lastAnnouncedAt }}</b-col> <BCol cols="2">{{ lastAnnouncedAt }}</BCol>
<b-col cols="2">{{ createdAt }}</b-col> <BCol cols="2">{{ createdAt }}</BCol>
</b-row> </BRow>
<b-row v-if="details" class="details"> <BRow v-if="details" class="details">
<b-col colspan="5"> <BCol colspan="5">
<b-list-group> <BListGroup>
<b-list-group-item v-if="item.uuid"> <BListGroupItem v-if="item.uuid">
{{ $t('federation.communityUuid') }}&nbsp;{{ item.uuid }} {{ $t('federation.communityUuid') }}&nbsp;{{ item.uuid }}
</b-list-group-item> </BListGroupItem>
<b-list-group-item v-if="item.authenticatedAt"> <BListGroupItem v-if="item.authenticatedAt">
{{ $t('federation.authenticatedAt') }}&nbsp;{{ item.authenticatedAt }} {{ $t('federation.authenticatedAt') }}&nbsp;{{ item.authenticatedAt }}
</b-list-group-item> </BListGroupItem>
<b-list-group-item> <BListGroupItem>
{{ $t('federation.publicKey') }}&nbsp;{{ item.publicKey }} {{ $t('federation.publicKey') }}&nbsp;{{ item.publicKey }}
</b-list-group-item> </BListGroupItem>
<b-list-group-item v-if="!item.foreign"> <BListGroupItem v-if="!item.foreign">
<editable-group <editable-group
:allow-edit="$store.state.moderator.roles.includes('ADMIN')" :allow-edit="$store.state.moderator.roles.includes('ADMIN')"
@save="handleUpdateHomeCommunity" @save="handleUpdateHomeCommunity"
@ -32,7 +32,7 @@
> >
<template #view> <template #view>
<label>{{ $t('federation.gmsApiKey') }}&nbsp;{{ gmsApiKey }}</label> <label>{{ $t('federation.gmsApiKey') }}&nbsp;{{ gmsApiKey }}</label>
<b-form-group> <BFormGroup>
{{ $t('federation.coordinates') }} {{ $t('federation.coordinates') }}
<span v-if="isValidLocation"> <span v-if="isValidLocation">
{{ {{
@ -42,7 +42,7 @@
}) })
}} }}
</span> </span>
</b-form-group> </BFormGroup>
</template> </template>
<template #edit> <template #edit>
<editable-groupable-label <editable-groupable-label
@ -53,29 +53,29 @@
<coordinates v-model="location" /> <coordinates v-model="location" />
</template> </template>
</editable-group> </editable-group>
</b-list-group-item> </BListGroupItem>
<b-list-group-item> <BListGroup-item>
<b-list-group> <BListGroup>
<b-row> <BRow>
<b-col class="ml-1">{{ $t('federation.verified') }}</b-col> <BCol class="ml-1">{{ $t('federation.verified') }}</BCol>
<b-col>{{ $t('federation.apiVersion') }}</b-col> <BCol>{{ $t('federation.apiVersion') }}</BCol>
<b-col>{{ $t('federation.createdAt') }}</b-col> <BCol>{{ $t('federation.createdAt') }}</BCol>
<b-col>{{ $t('federation.lastAnnouncedAt') }}</b-col> <BCol>{{ $t('federation.lastAnnouncedAt') }}</BCol>
<b-col>{{ $t('federation.verifiedAt') }}</b-col> <BCol>{{ $t('federation.verifiedAt') }}</BCol>
<b-col>{{ $t('federation.lastErrorAt') }}</b-col> <BCol>{{ $t('federation.lastErrorAt') }}</BCol>
</b-row> </BRow>
<b-list-group-item <BListGroup-item
v-for="federation in item.federatedCommunities" v-for="federation in item.federatedCommunities"
:key="federation.id" :key="federation.id"
:variant="!item.foreign ? 'primary' : 'warning'" :variant="!item.foreign ? 'primary' : 'warning'"
> >
<federation-visualize-item :item="federation" /> <federation-visualize-item :item="federation" />
</b-list-group-item> </BListGroup-item>
</b-list-group> </BListGroup>
</b-list-group-item> </BListGroup-item>
</b-list-group> </BListGroup>
</b-col> </BCol>
</b-row> </BRow>
</div> </div>
</template> </template>
<script> <script>

View File

@ -45,12 +45,13 @@ export default {
<style scoped> <style scoped>
.qrbox { .qrbox {
padding: 20px; padding: 20px;
background-color: rgb(255, 255, 255); background-color: rgb(255 255 255);
} }
.canvas { .canvas {
width: 90%; width: 90%;
max-width: 300px; max-width: 300px;
padding: 5px; padding: 5px;
background-color: rgb(255, 255, 255); background-color: rgb(255 255 255);
} }
</style> </style>

View File

@ -9,7 +9,7 @@
/> />
</BNavbarBrand> </BNavbarBrand>
<BNavbarToggle target="navbar-toggle-collapse" /> <BNavbarToggle v-b-toggle.nav-collapse target="navbar-toggle-collapse" />
<BCollapse id="nav-collapse" is-nav> <BCollapse id="nav-collapse" is-nav>
<BNavbarNav> <BNavbarNav>
@ -48,6 +48,7 @@ import {
BNavbarBrand, BNavbarBrand,
BBadge, BBadge,
BNavbarToggle, BNavbarToggle,
vBToggle,
vBColorMode, vBColorMode,
} from 'bootstrap-vue-next' } from 'bootstrap-vue-next'

View File

@ -1249,21 +1249,23 @@ export default {
transform-box: fill-box; transform-box: fill-box;
} }
/*************swing************/ /************* swing ************/
@keyframes swing { @keyframes swing {
0% { 0% {
transform: rotate(10deg); transform: rotate(10deg);
} }
100% { 100% {
transform: rotate(-10deg); transform: rotate(-10deg);
} }
} }
/*************swing hair************/ /************* swing hair ************/
@keyframes swinghair { @keyframes swinghair {
0% { 0% {
transform: rotate(6deg); transform: rotate(6deg);
} }
100% { 100% {
transform: rotate(-6deg); transform: rotate(-6deg);
} }

View File

@ -15,7 +15,7 @@
<b>{{ $t('statistic.totalUsers') }}</b> <b>{{ $t('statistic.totalUsers') }}</b>
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
{{ modelValue.totalUsers }} {{ props.statistics.totalUsers }}
</BTd> </BTd>
<BTd></BTd> <BTd></BTd>
</BTr> </BTr>
@ -24,7 +24,7 @@
<b>{{ $t('statistic.activeUsers') }}</b> <b>{{ $t('statistic.activeUsers') }}</b>
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
{{ modelValue.activeUsers }} {{ props.statistics.activeUsers }}
</BTd> </BTd>
<BTd></BTd> <BTd></BTd>
</BTr> </BTr>
@ -33,7 +33,7 @@
<b>{{ $t('statistic.deletedUsers') }}</b> <b>{{ $t('statistic.deletedUsers') }}</b>
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
{{ modelValue.deletedUsers }} {{ props.statistics.deletedUsers }}
</BTd> </BTd>
<BTd></BTd> <BTd></BTd>
</BTr> </BTr>
@ -42,11 +42,11 @@
<b>{{ $t('statistic.totalGradidoCreated') }}</b> <b>{{ $t('statistic.totalGradidoCreated') }}</b>
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
<!-- {{ $n(modelValue.totalGradidoCreated, 'decimal') }} {{ $t('GDD') }}--> <!-- {{ $n(props.statistics.totalGradidoCreated, 'decimal') }} {{ $t('GDD') }}-->
4500 4500
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
{{ modelValue.totalGradidoCreated }} {{ props.statistics.totalGradidoCreated }}
</BTd> </BTd>
</BTr> </BTr>
<BTr> <BTr>
@ -54,21 +54,19 @@
<b>{{ $t('statistic.totalGradidoDecayed') }}</b> <b>{{ $t('statistic.totalGradidoDecayed') }}</b>
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
<!-- {{ $n(modelValue.totalGradidoDecayed, 'decimal') }} {{ $t('GDD') }}--> {{ $n(parseFloat(props.statistics.totalGradidoDecayed), 'decimal') }} {{ $t('GDD') }}
100
</BTd> </BTd>
<BTd class="text-right">{{ modelValue.totalGradidoDecayed }}</BTd> <BTd class="text-right">{{ props.statistics.totalGradidoDecayed }}</BTd>
</BTr> </BTr>
<BTr> <BTr>
<BTd> <BTd>
<b>{{ $t('statistic.totalGradidoAvailable') }}</b> <b>{{ $t('statistic.totalGradidoAvailable') }}</b>
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
<!-- {{ $n(modelValue.totalGradidoAvailable, 'decimal') }} {{ $t('GDD') }}--> {{ $n(parseFloat(props.statistics.totalGradidoAvailable), 'decimal') }} {{ $t('GDD') }}
500
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
{{ modelValue.totalGradidoAvailable }} {{ props.statistics.totalGradidoAvailable }}
</BTd> </BTd>
</BTr> </BTr>
<BTr> <BTr>
@ -76,12 +74,10 @@
<b>{{ $t('statistic.totalGradidoUnbookedDecayed') }}</b> <b>{{ $t('statistic.totalGradidoUnbookedDecayed') }}</b>
</BTd> </BTd>
<BTd class="text-right"> <BTd class="text-right">
<!-- {{ $n(modelValue.totalGradidoUnbookedDecayed, 'decimal') }} {{ $t('GDD') }}--> {{ $n(parseFloat(props.statistics.totalGradidoUnbookedDecayed), 'decimal') }}
600 {{ $t('GDD') }}
</BTd>
<BTd class="text-right">
{{ modelValue.totalGradidoUnbookedDecayed }}
</BTd> </BTd>
<BTd class="text-right"> {{ props.statistics.totalGradidoUnbookedDecayed }} </BTd>
</BTr> </BTr>
</BTbody> </BTbody>
</BTableSimple> </BTableSimple>
@ -89,10 +85,9 @@
</template> </template>
<script setup> <script setup>
import { defineProps } from 'vue' import { defineProps } from 'vue'
import { BTableSimple, BThead, BTr, BTh, BTbody, BTd } from 'bootstrap-vue-next'
const props = defineProps({ const props = defineProps({
modelValue: { statistics: {
type: Object, type: Object,
required: true, required: true,
}, },

View File

@ -2,19 +2,20 @@
<div> <div>
<slot v-if="!isEditing" :is-editing="isEditing" name="view"></slot> <slot v-if="!isEditing" :is-editing="isEditing" name="view"></slot>
<slot v-else :is-editing="isEditing" name="edit" @input="valueChanged"></slot> <slot v-else :is-editing="isEditing" name="edit" @input="valueChanged"></slot>
<b-form-group v-if="allowEdit && !isEditing"> <BFormGroup v-if="allowEdit && !isEditing">
<b-button :variant="variant" @click="enableEdit"> <BButton :variant="variant" @click="enableEdit">
<b-icon icon="pencil-fill">{{ $t('edit') }}</b-icon> <IBiPencilFill />
</b-button> {{ $t('edit') }}
</b-form-group> </BButton>
<b-form-group v-else-if="allowEdit && isEditing"> </BFormGroup>
<b-button :variant="variant" :disabled="!isValueChanged" class="save-button" @click="save"> <BFormGroup v-else-if="allowEdit && isEditing">
<BButton :variant="variant" :disabled="!isValueChanged" class="save-button" @click="save">
{{ $t('save') }} {{ $t('save') }}
</b-button> </BButton>
<b-button variant="secondary" class="close-button" @click="close"> <BButton variant="secondary" class="close-button" @click="close">
{{ $t('close') }} {{ $t('close') }}
</b-button> </BButton>
</b-form-group> </BFormGroup>
</div> </div>
</template> </template>

View File

@ -1,7 +1,7 @@
<template> <template>
<b-form-group :label="label" :label-for="idName"> <BFormGroup :label="label" :label-for="idName">
<b-form-input :id="idName" v-model="inputValue" @input="updateValue" /> <BFormInput :id="idName" v-model="inputValue" @input="updateValue" />
</b-form-group> </BFormGroup>
</template> </template>
<script> <script>

View File

@ -0,0 +1,41 @@
import { useI18n } from 'vue-i18n'
import { useToast } from 'bootstrap-vue-next'
export function useAppToast() {
const { t } = useI18n()
const { show } = useToast()
const toastSuccess = (message) => {
toast(message, {
title: t('success'),
variant: 'success',
})
}
const toastError = (message) => {
toast(message, {
title: t('error'),
variant: 'danger',
})
}
const toast = (message, options = {}) => {
if (message.replace) message = message.replace(/^GraphQL error: /, '')
options = {
solid: true,
toaster: 'b-toaster-top-right',
headerClass: 'gdd-toaster-title',
bodyClass: 'gdd-toaster-body',
toastClass: 'gdd-toaster',
...options,
body: message,
}
show({ props: { ...options } })
}
return {
toastSuccess,
toastError,
toast,
}
}

View File

@ -1,44 +1,43 @@
<template> <template>
<div class="community-statistic"> <div class="community-statistic">
<statistic-table v-model="statistics" /> <statistic-table v-if="!loading" :statistics="statistics" />
</div> </div>
</template> </template>
<script>
import { communityStatistics } from '@/graphql/communityStatistics.js'
import StatisticTable from '../components/Tables/StatisticTable'
export default { <script setup>
name: 'CommunityStatistic', import { ref, watch } from 'vue'
components: { import { useQuery } from '@vue/apollo-composable'
StatisticTable, import { communityStatistics } from '@/graphql/communityStatistics'
import StatisticTable from '../components/Tables/StatisticTable'
import { useAppToast } from '@/composables/useToast'
const statistics = ref({
totalUsers: null,
activeUsers: null,
deletedUsers: null,
totalGradidoCreated: null,
totalGradidoDecayed: null,
totalGradidoAvailable: null,
totalGradidoUnbookedDecayed: null,
})
const { result, loading, error } = useQuery(communityStatistics, () => ({}))
const { toastError } = useAppToast()
watch(
result,
() => {
if (!result.value) return
const totals = { ...result.value.communityStatistics.dynamicStatisticsFields }
statistics.value = { ...result.value.communityStatistics, ...totals }
delete statistics.value.dynamicStatisticsFields
}, },
data() { { immediate: true },
return { )
statistics: {
totalUsers: null, watch(error, () => {
activeUsers: null, if (error.value) {
deletedUsers: null, toastError(error.value.message)
totalGradidoCreated: null, }
totalGradidoDecayed: null, })
totalGradidoAvailable: null,
totalGradidoUnbookedDecayed: null,
},
}
},
apollo: {
CommunityStatistics: {
query() {
return communityStatistics
},
update({ communityStatistics }) {
const totals = { ...communityStatistics.dynamicStatisticsFields }
this.statistics = { ...communityStatistics, ...totals }
delete this.statistics.dynamicStatisticsFields
},
error({ message }) {
this.toastError(message)
},
},
},
}
</script> </script>

View File

@ -1,45 +1,31 @@
<template> <template>
<div class="contribution-link"> <div class="contribution-link">
<contribution-link <contribution-link :items="items" :count="count" @get-contribution-links="refetch" />
:items="items"
:count="count"
@get-contribution-links="getContributionLinks"
/>
</div> </div>
</template> </template>
<script>
<script setup>
import { computed, watch } from 'vue'
import { useQuery } from '@vue/apollo-composable'
import { listContributionLinks } from '@/graphql/listContributionLinks.js' import { listContributionLinks } from '@/graphql/listContributionLinks.js'
import ContributionLink from '../components/ContributionLink/ContributionLink' import ContributionLink from '../components/ContributionLink/ContributionLink'
import { useAppToast } from '@/composables/useToast'
export default { const { toastError } = useAppToast()
name: 'ContributionLinks',
components: { const { result, error, refetch } = useQuery(listContributionLinks, null, {
ContributionLink, fetchPolicy: 'network-only',
}, })
data() {
return { const items = computed(() => {
items: [], return result.value?.listContributionLinks?.links
count: 0, })
}
}, const count = computed(() => {
created() { return result.value?.listContributionLinks?.count
this.getContributionLinks() })
},
methods: { watch(error, () => {
getContributionLinks() { toastError('listContributionLinks has no result, use default data')
this.$apollo })
.query({
query: listContributionLinks,
fetchPolicy: 'network-only',
})
.then((result) => {
this.count = result.data.listContributionLinks.count
this.items = result.data.listContributionLinks.links
})
.catch(() => {
this.toastError('listContributionLinks has no result, use default data')
})
},
},
}
</script> </script>

View File

@ -13,41 +13,46 @@
</span> </span>
</p> </p>
<div> <div>
<b-tabs v-model="tabIndex" content-class="mt-3" fill> <BTabs v-model="tabIndex" content-class="mt-3" fill>
<b-tab active :title-link-attributes="{ 'data-test': 'open' }"> <BTab active :title-link-attributes="{ 'data-test': 'open' }">
<template #title> <template #title>
<b-icon icon="bell-fill" variant="primary"></b-icon> <IBiBellFill />
<!-- <b-icon icon="bell-fill" variant="primary"></b-icon>-->
{{ $t('contributions.open') }} {{ $t('contributions.open') }}
<b-badge v-if="$store.state.openCreations > 0" variant="danger"> <BBadge v-if="$store.state.openCreations > 0" variant="danger">
{{ $store.state.openCreations }} {{ $store.state.openCreations }}
</b-badge> </BBadge>
</template> </template>
</b-tab> </BTab>
<b-tab :title-link-attributes="{ 'data-test': 'confirmed' }"> <BTab :title-link-attributes="{ 'data-test': 'confirmed' }">
<template #title> <template #title>
<b-icon icon="check" variant="success"></b-icon> <IBiCheck />
<!-- <b-icon icon="check" variant="success"></b-icon>-->
{{ $t('contributions.confirms') }} {{ $t('contributions.confirms') }}
</template> </template>
</b-tab> </BTab>
<b-tab :title-link-attributes="{ 'data-test': 'denied' }"> <BTab :title-link-attributes="{ 'data-test': 'denied' }">
<template #title> <template #title>
<b-icon icon="x-circle" variant="warning"></b-icon> <IBiXCircle />
<!-- <b-icon icon="x-circle" variant="warning"></b-icon>-->
{{ $t('contributions.denied') }} {{ $t('contributions.denied') }}
</template> </template>
</b-tab> </BTab>
<b-tab :title-link-attributes="{ 'data-test': 'deleted' }"> <BTab :title-link-attributes="{ 'data-test': 'deleted' }">
<template #title> <template #title>
<b-icon icon="trash" variant="danger"></b-icon> <IBiTrash />
<!-- <b-icon icon="trash" variant="danger"></b-icon>-->
{{ $t('contributions.deleted') }} {{ $t('contributions.deleted') }}
</template> </template>
</b-tab> </BTab>
<b-tab :title-link-attributes="{ 'data-test': 'all' }"> <BTab :title-link-attributes="{ 'data-test': 'all' }">
<template #title> <template #title>
<b-icon icon="list"></b-icon> <IBiList />
<!-- <b-icon icon="list"></b-icon>-->
{{ $t('contributions.all') }} {{ $t('contributions.all') }}
</template> </template>
</b-tab> </BTab>
</b-tabs> </BTabs>
</div> </div>
<open-creations-table <open-creations-table
class="mt-4" class="mt-4"
@ -60,7 +65,7 @@
@update-contributions="$apollo.queries.ListAllContributions.refetch()" @update-contributions="$apollo.queries.ListAllContributions.refetch()"
/> />
<b-pagination <BPagination
v-model="currentPage" v-model="currentPage"
pills pills
size="lg" size="lg"
@ -68,7 +73,7 @@
:total-rows="rows" :total-rows="rows"
align="center" align="center"
:hide-ellipsis="true" :hide-ellipsis="true"
></b-pagination> />
<div v-if="overlay" id="overlay" @dblclick="overlay = false"> <div v-if="overlay" id="overlay" @dblclick="overlay = false">
<overlay :item="item" @overlay-cancel="overlay = false"> <overlay :item="item" @overlay-cancel="overlay = false">
@ -472,12 +477,9 @@ export default {
align-items: center; align-items: center;
width: 100%; width: 100%;
height: 100%; height: 100%;
top: 0; inset: 0;
left: 0;
right: 0;
bottom: 0;
padding-left: 5%; padding-left: 5%;
background-color: rgba(12, 11, 11, 0.781); background-color: rgb(12 11 11 / 78.1%);
z-index: 1000000; z-index: 1000000;
cursor: pointer; cursor: pointer;
} }

View File

@ -2,69 +2,57 @@
<div class="federation-visualize"> <div class="federation-visualize">
<div class="d-flex justify-content-between align-items-center mb-3"> <div class="d-flex justify-content-between align-items-center mb-3">
<span class="h2">{{ $t('federation.gradidoInstances') }}</span> <span class="h2">{{ $t('federation.gradidoInstances') }}</span>
<b-button> <BButton
<b-icon :animation="animation"
icon="arrow-clockwise" data-test="federation-communities-refresh-btn"
font-scale="2" @click="refetch"
:animation="animation" font-scale="2"
data-test="federation-communities-refresh-btn" >
@click="$apollo.queries.allCommunities.refresh()" <IBiArrowClockwise />
></b-icon> <!-- <b-icon-->
</b-button> <!-- icon="arrow-clockwise"-->
<!-- font-scale="2"-->
<!-- :animation="animation"-->
<!-- data-test="federation-communities-refresh-btn"-->
<!-- @click="$apollo.queries.allCommunities.refresh()"-->
<!-- ></b-icon>-->
</BButton>
</div> </div>
<b-list-group> <BListGroup>
<b-row> <BRow>
<b-col cols="1" class="ml-1">{{ $t('federation.verified') }}</b-col> <BCol cols="1" class="ml-1">{{ $t('federation.verified') }}</BCol>
<b-col class="ml-3">{{ $t('federation.url') }}</b-col> <BCol class="ml-3">{{ $t('federation.url') }}</BCol>
<b-col class="ml-3">{{ $t('federation.name') }}</b-col> <BCol class="ml-3">{{ $t('federation.name') }}</BCol>
<b-col cols="2">{{ $t('federation.lastAnnouncedAt') }}</b-col> <BCol cols="2">{{ $t('federation.lastAnnouncedAt') }}</BCol>
<b-col cols="2">{{ $t('federation.createdAt') }}</b-col> <BCol cols="2">{{ $t('federation.createdAt') }}</BCol>
</b-row> </BRow>
<b-list-group-item <BListGroupItem
v-for="item in communities" v-for="item in communities"
:key="item.publicKey" :key="item.publicKey"
:variant="!item.foreign ? 'primary' : 'warning'" :variant="!item.foreign ? 'primary' : 'warning'"
> >
<community-visualize-item :item="item" /> <community-visualize-item :item="item" />
</b-list-group-item> </BListGroupItem>
</b-list-group> </BListGroup>
</div> </div>
</template> </template>
<script>
<script setup>
import { ref, computed } from 'vue'
import { useQuery } from '@vue/apollo-composable'
import { allCommunities } from '@/graphql/allCommunities' import { allCommunities } from '@/graphql/allCommunities'
import { useAppToast } from '@/composables/useToast'
import CommunityVisualizeItem from '../components/Federation/CommunityVisualizeItem.vue' const communities = ref([])
export default { const { toastError } = useAppToast()
name: 'FederationVisualize',
components: { const { result, loading, refetch, error } = useQuery(allCommunities, () => ({}), {
CommunityVisualizeItem, fetchPolicy: 'network-only',
}, })
data() {
return { result.value = allCommunities
oldPublicKey: '', if (error) toastError(error.value.message)
communities: [],
icon: '', const animation = computed(() => (loading.value ? 'spin' : ''))
}
},
computed: {
animation() {
return this.$apollo.queries.allCommunities.loading ? 'spin' : ''
},
},
apollo: {
allCommunities: {
fetchPolicy: 'network-only',
query() {
return allCommunities
},
update({ allCommunities }) {
this.communities = allCommunities
},
error({ message }) {
this.toastError(message)
},
},
},
}
</script> </script>

View File

@ -11,6 +11,7 @@
<BCardText> <BCardText>
<BLink to="creation-confirm"> <BLink to="creation-confirm">
<h1>{{ openCreations }}</h1> <h1>{{ openCreations }}</h1>
<h1>Layout test</h1>
</BLink> </BLink>
</BCardText> </BCardText>
</BCard> </BCard>

View File

@ -51,6 +51,7 @@ import SearchUserTable from '../components/Tables/SearchUserTable'
import UserQuery from '../components/UserQuery' import UserQuery from '../components/UserQuery'
import { BPagination, BButton } from 'bootstrap-vue-next' import { BPagination, BButton } from 'bootstrap-vue-next'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useAppToast } from '@/composables/useToast'
const { t } = useI18n() const { t } = useI18n()
@ -66,6 +67,7 @@ const perPage = ref(25)
const response = ref() const response = ref()
const { creationLabel } = useCreationMonths() const { creationLabel } = useCreationMonths()
const { toastSuccess } = useAppToast()
const { result, refetch } = useQuery(searchUsers, { const { result, refetch } = useQuery(searchUsers, {
query: criteria.value, query: criteria.value,
@ -90,7 +92,7 @@ const updateRoles = (userId, roles) => {
const updateDeletedAt = (userId, deletedAt) => { const updateDeletedAt = (userId, deletedAt) => {
searchResult.value.find((obj) => obj.userId === userId).deletedAt = deletedAt searchResult.value.find((obj) => obj.userId === userId).deletedAt = deletedAt
// toastSuccess(deletedAt ? $t('user_deleted') : $t('user_recovered')) toastSuccess(deletedAt ? t('user_deleted') : t('user_recovered'))
} }
const unconfirmedRegisterMails = () => { const unconfirmedRegisterMails = () => {
@ -152,6 +154,7 @@ watch(
.user-search-first-div { .user-search-first-div {
text-align: right; text-align: right;
} }
img, img,
svg { svg {
vertical-align: text-bottom; vertical-align: text-bottom;

View File

@ -42,6 +42,7 @@ export default defineConfig({
commonjs(), commonjs(),
], ],
build: { build: {
outDir: 'build', outDir: path.resolve(__dirname, './build'),
}, },
publicDir: '/admin',
}) })

View File

@ -1083,6 +1083,45 @@
exec-sh "^0.3.2" exec-sh "^0.3.2"
minimist "^1.2.0" minimist "^1.2.0"
"@csstools/css-parser-algorithms@^2.7.1":
version "2.7.1"
resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#6d93a8f7d8aeb7cd9ed0868f946e46f021b6aa70"
integrity sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==
"@csstools/css-tokenizer@^2.4.1":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#1d8b2e200197cf5f35ceb07ca2dade31f3a00ae8"
integrity sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==
"@csstools/media-query-list-parser@^2.1.13":
version "2.1.13"
resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz#f00be93f6bede07c14ddf51a168ad2748e4fe9e5"
integrity sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==
"@csstools/selector-specificity@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz#63085d2995ca0f0e55aa8b8a07d69bfd48b844fe"
integrity sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==
"@dual-bundle/import-meta-resolve@^4.1.0":
version "4.1.0"
resolved "https://registry.yarnpkg.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b"
integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==
"@esbuild/android-arm@0.15.18":
version "0.15.18"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80"
integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==
"@esbuild/linux-loong64@0.15.18":
version "0.15.18"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239"
integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==
"@eslint-community/eslint-utils@^4.2.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
"@csstools/selector-specificity@^2.0.2": "@csstools/selector-specificity@^2.0.2":
version "2.2.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016"
@ -1964,11 +2003,19 @@
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901"
integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
"@types/prettier@^2.0.0", "@types/prettier@^2.1.5":
version "2.7.3"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
"@types/parse-json@^4.0.0": "@types/parse-json@^4.0.0":
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
"@types/semver@^7.3.12":
version "7.5.8"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
"@types/prettier@^2.0.0", "@types/prettier@^2.1.5": "@types/prettier@^2.0.0", "@types/prettier@^2.1.5":
version "2.7.3" version "2.7.3"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
@ -3939,11 +3986,20 @@ core-js@^3.30.2:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9"
integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==
cosmiconfig@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
cosmiconfig@^7.1.0: cosmiconfig@^7.1.0:
version "7.1.0" version "7.1.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
dependencies: dependencies:
env-paths "^2.2.1"
import-fresh "^3.3.0"
js-yaml "^4.1.0"
parse-json "^5.2.0"
"@types/parse-json" "^4.0.0" "@types/parse-json" "^4.0.0"
import-fresh "^3.2.1" import-fresh "^3.2.1"
parse-json "^5.0.0" parse-json "^5.0.0"
@ -3977,11 +4033,23 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0" shebang-command "^2.0.0"
which "^2.0.1" which "^2.0.1"
css-functions-list@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.2.tgz#9a54c6dd8416ed25c1079cd88234e927526c1922"
integrity sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==
css-functions-list@^3.1.0: css-functions-list@^3.1.0:
version "3.2.2" version "3.2.2"
resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.2.tgz#9a54c6dd8416ed25c1079cd88234e927526c1922" resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.2.tgz#9a54c6dd8416ed25c1079cd88234e927526c1922"
integrity sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ== integrity sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==
css-tree@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20"
integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==
dependencies:
mdn-data "2.0.30"
source-map-js "^1.0.1"
css@^2.1.0: css@^2.1.0:
version "2.2.4" version "2.2.4"
resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
@ -4096,6 +4164,7 @@ debug@^3.2.7:
dependencies: dependencies:
ms "^2.1.1" ms "^2.1.1"
decamelize@^1.2.0:
decamelize-keys@^1.1.0: decamelize-keys@^1.1.0:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8"
@ -4375,6 +4444,11 @@ entities@^4.2.0, entities@^4.4.0, entities@^4.5.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
env-paths@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
error-ex@^1.3.1: error-ex@^1.3.1:
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@ -5141,6 +5215,13 @@ file-entry-cache@^6.0.1:
dependencies: dependencies:
flat-cache "^3.0.4" flat-cache "^3.0.4"
file-entry-cache@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-9.0.0.tgz#4478e7ceaa5191fa9676a2daa7030211c31b1e7e"
integrity sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==
dependencies:
flat-cache "^5.0.0"
file-uri-to-path@1.0.0: file-uri-to-path@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
@ -5234,6 +5315,19 @@ flat-cache@^3.0.4:
keyv "^4.5.3" keyv "^4.5.3"
rimraf "^3.0.2" rimraf "^3.0.2"
flat-cache@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-5.0.0.tgz#26c4da7b0f288b408bb2b506b2cb66c240ddf062"
integrity sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==
dependencies:
flatted "^3.3.1"
keyv "^4.5.4"
flatted@^3.2.9, flatted@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
flatted@^3.2.9: flatted@^3.2.9:
version "3.3.1" version "3.3.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
@ -5655,6 +5749,10 @@ html-tags@^2.0.0:
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b"
integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g== integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==
html-tags@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce"
integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
html-tags@^3.2.0: html-tags@^3.2.0:
version "3.3.1" version "3.3.1"
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce"
@ -5727,6 +5825,10 @@ ieee754@^1.1.13:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.1: ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.1:
version "5.3.1" version "5.3.1"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
@ -5737,6 +5839,7 @@ immutable@^4.0.0:
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381"
integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
import-fresh@^3.2.1, import-fresh@^3.3.0:
import-fresh@^3.2.1: import-fresh@^3.2.1:
version "3.3.0" version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@ -5866,6 +5969,10 @@ is-ci@^2.0.0:
dependencies: dependencies:
ci-info "^2.0.0" ci-info "^2.0.0"
is-core-module@^2.13.0, is-core-module@^2.13.1:
version "2.15.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea"
integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==
is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0: is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0:
version "2.15.0" version "2.15.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea"
@ -7233,6 +7340,10 @@ jsonfile@^4.0.0:
optionalDependencies: optionalDependencies:
graceful-fs "^4.1.6" graceful-fs "^4.1.6"
keyv@^4.5.3, keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
keyv@^4.5.3: keyv@^4.5.3:
version "4.5.4" version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
@ -7254,6 +7365,7 @@ kind-of@^4.0.0:
dependencies: dependencies:
is-buffer "^1.1.5" is-buffer "^1.1.5"
kind-of@^6.0.2:
kind-of@^6.0.2, kind-of@^6.0.3: kind-of@^6.0.2, kind-of@^6.0.3:
version "6.0.3" version "6.0.3"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
@ -7264,11 +7376,19 @@ kleur@^3.0.3:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
known-css-properties@^0.34.0:
version "0.34.0"
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.34.0.tgz#ccd7e9f4388302231b3f174a8b1d5b1f7b576cea"
integrity sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==
known-css-properties@^0.26.0: known-css-properties@^0.26.0:
version "0.26.0" version "0.26.0"
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.26.0.tgz#008295115abddc045a9f4ed7e2a84dc8b3a77649" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.26.0.tgz#008295115abddc045a9f4ed7e2a84dc8b3a77649"
integrity sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg== integrity sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==
kolorist@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c"
integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
known-css-properties@^0.34.0: known-css-properties@^0.34.0:
version "0.34.0" version "0.34.0"
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.34.0.tgz#ccd7e9f4388302231b3f174a8b1d5b1f7b576cea" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.34.0.tgz#ccd7e9f4388302231b3f174a8b1d5b1f7b576cea"
@ -7468,11 +7588,21 @@ mathml-tag-names@^2.1.3:
resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
mdn-data@2.0.30:
version "2.0.30"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc"
integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
media-typer@0.3.0: media-typer@0.3.0:
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
meow@^13.2.0:
version "13.2.0"
resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f"
integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==
meow@^9.0.0: meow@^9.0.0:
version "9.0.0" version "9.0.0"
resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
@ -7530,6 +7660,10 @@ micromatch@^3.1.4:
snapdragon "^0.8.1" snapdragon "^0.8.1"
to-regex "^3.0.2" to-regex "^3.0.2"
micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.7:
version "4.0.7"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.7" version "4.0.7"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
@ -7560,6 +7694,10 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
minimatch@9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253"
integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==
min-indent@^1.0.0: min-indent@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
@ -7579,6 +7717,10 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
dependencies: dependencies:
brace-expansion "^1.1.7" brace-expansion "^1.1.7"
minimatch@^9.0.4, minimatch@^9.0.5:
version "9.0.5"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
minimatch@^9.0.4, minimatch@^9.0.5: minimatch@^9.0.4, minimatch@^9.0.5:
version "9.0.5" version "9.0.5"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
@ -7591,9 +7733,7 @@ minimist-options@4.1.0:
resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
dependencies: dependencies:
arrify "^1.0.1" brace-expansion "^2.0.1"
is-plain-obj "^1.1.0"
kind-of "^6.0.3"
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6: minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6:
version "1.2.8" version "1.2.8"
@ -8198,11 +8338,25 @@ postcss-safe-parser@^6.0.0:
resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1"
integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==
postcss-safe-parser@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#6273d4e5149e286db5a45bc6cf6eafcad464014a"
integrity sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==
postcss-scss@^4.0.3, postcss-scss@^4.0.9: postcss-scss@^4.0.3, postcss-scss@^4.0.9:
version "4.0.9" version "4.0.9"
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685" resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685"
integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A== integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==
postcss-scss@^4.0.3, postcss-scss@^4.0.9:
version "4.0.9"
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685"
integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==
postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.0:
version "6.1.1"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
dependencies:
postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.0: postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.0:
version "6.1.1" version "6.1.1"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
@ -8216,6 +8370,10 @@ postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.4.0, postcss@^8.4.18, postcss@^8.4.38, postcss@^8.4.39, postcss@^8.4.8:
version "8.4.39"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3"
integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==
postcss@^8.4.0, postcss@^8.4.18, postcss@^8.4.19, postcss@^8.4.38, postcss@^8.4.39, postcss@^8.4.8: postcss@^8.4.0, postcss@^8.4.18, postcss@^8.4.19, postcss@^8.4.38, postcss@^8.4.39, postcss@^8.4.8:
version "8.4.39" version "8.4.39"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3"
@ -8371,6 +8529,7 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
randombytes@^2.1.0:
quick-lru@^4.0.1: quick-lru@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
@ -8448,6 +8607,11 @@ readdirp@~3.6.0:
dependencies: dependencies:
picomatch "^2.2.1" picomatch "^2.2.1"
regenerate-unicode-properties@^10.1.0:
version "10.1.1"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480"
integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==
dependencies:
redent@^3.0.0: redent@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
@ -8912,6 +9076,7 @@ side-channel@^1.0.4:
get-intrinsic "^1.2.4" get-intrinsic "^1.2.4"
object-inspect "^1.13.1" object-inspect "^1.13.1"
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
version "3.0.7" version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
@ -8976,6 +9141,10 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0" source-map-resolve "^0.5.0"
use "^3.1.0" use "^3.1.0"
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
@ -9173,6 +9342,10 @@ strip-ansi@^3.0.0:
dependencies: dependencies:
ansi-regex "^2.0.0" ansi-regex "^2.0.0"
strip-ansi@^7.0.1, strip-ansi@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
strip-ansi@^7.0.1: strip-ansi@^7.0.1:
version "7.1.0" version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@ -9276,14 +9449,31 @@ stylelint-scss@^6.4.0:
postcss-selector-parser "^6.1.0" postcss-selector-parser "^6.1.0"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
stylelint@16.7.0:
version "16.7.0"
resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.7.0.tgz#5f6acf516aedecba7a6472ba0cc1ffc20e2be86b"
integrity sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==
stylelint@14.16.1: stylelint@14.16.1:
version "14.16.1" version "14.16.1"
resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.16.1.tgz#b911063530619a1bbe44c2b875fd8181ebdc742d" resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.16.1.tgz#b911063530619a1bbe44c2b875fd8181ebdc742d"
integrity sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A== integrity sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==
dependencies: dependencies:
"@csstools/css-parser-algorithms" "^2.7.1"
"@csstools/css-tokenizer" "^2.4.1"
"@csstools/media-query-list-parser" "^2.1.13"
"@csstools/selector-specificity" "^3.1.1"
"@dual-bundle/import-meta-resolve" "^4.1.0"
"@csstools/selector-specificity" "^2.0.2" "@csstools/selector-specificity" "^2.0.2"
balanced-match "^2.0.0" balanced-match "^2.0.0"
colord "^2.9.3" colord "^2.9.3"
cosmiconfig "^9.0.0"
css-functions-list "^3.2.2"
css-tree "^2.3.1"
debug "^4.3.5"
fast-glob "^3.3.2"
fastest-levenshtein "^1.0.16"
file-entry-cache "^9.0.0"
colord "^2.9.3"
cosmiconfig "^7.1.0" cosmiconfig "^7.1.0"
css-functions-list "^3.1.0" css-functions-list "^3.1.0"
debug "^4.3.4" debug "^4.3.4"
@ -9293,29 +9483,42 @@ stylelint@14.16.1:
global-modules "^2.0.0" global-modules "^2.0.0"
globby "^11.1.0" globby "^11.1.0"
globjoin "^0.1.4" globjoin "^0.1.4"
html-tags "^3.3.1"
ignore "^5.3.1"
html-tags "^3.2.0" html-tags "^3.2.0"
ignore "^5.2.1" ignore "^5.2.1"
import-lazy "^4.0.0" import-lazy "^4.0.0"
imurmurhash "^0.1.4" imurmurhash "^0.1.4"
is-plain-object "^5.0.0" is-plain-object "^5.0.0"
known-css-properties "^0.34.0"
known-css-properties "^0.26.0" known-css-properties "^0.26.0"
mathml-tag-names "^2.1.3" mathml-tag-names "^2.1.3"
meow "^13.2.0"
micromatch "^4.0.7"
meow "^9.0.0" meow "^9.0.0"
micromatch "^4.0.5" micromatch "^4.0.5"
normalize-path "^3.0.0" normalize-path "^3.0.0"
picocolors "^1.0.1"
postcss "^8.4.39"
picocolors "^1.0.0" picocolors "^1.0.0"
postcss "^8.4.19" postcss "^8.4.19"
postcss-media-query-parser "^0.2.3" postcss-media-query-parser "^0.2.3"
postcss-resolve-nested-selector "^0.1.1" postcss-resolve-nested-selector "^0.1.1"
postcss-safe-parser "^7.0.0"
postcss-selector-parser "^6.1.0"
postcss-safe-parser "^6.0.0" postcss-safe-parser "^6.0.0"
postcss-selector-parser "^6.0.11" postcss-selector-parser "^6.0.11"
postcss-value-parser "^4.2.0" postcss-value-parser "^4.2.0"
resolve-from "^5.0.0" resolve-from "^5.0.0"
string-width "^4.2.3" string-width "^4.2.3"
strip-ansi "^7.1.0"
supports-hyperlinks "^3.0.0"
strip-ansi "^6.0.1" strip-ansi "^6.0.1"
style-search "^0.1.0" style-search "^0.1.0"
supports-hyperlinks "^2.3.0" supports-hyperlinks "^2.3.0"
svg-tags "^1.0.0" svg-tags "^1.0.0"
table "^6.8.2"
write-file-atomic "^5.0.1"
table "^6.8.1" table "^6.8.1"
v8-compile-cache "^2.3.0" v8-compile-cache "^2.3.0"
write-file-atomic "^4.0.2" write-file-atomic "^4.0.2"
@ -9346,6 +9549,10 @@ supports-color@^8.0.0:
dependencies: dependencies:
has-flag "^4.0.0" has-flag "^4.0.0"
supports-hyperlinks@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0: supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
@ -9354,6 +9561,19 @@ supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0:
has-flag "^4.0.0" has-flag "^4.0.0"
supports-color "^7.0.0" supports-color "^7.0.0"
supports-hyperlinks@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#c711352a5c89070779b4dad54c05a2f14b15c94b"
integrity sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==
dependencies:
has-flag "^4.0.0"
supports-color "^7.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
supports-preserve-symlinks-flag@^1.0.0: supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
@ -9387,6 +9607,10 @@ synckit@^0.9.1:
"@pkgr/core" "^0.1.0" "@pkgr/core" "^0.1.0"
tslib "^2.6.2" tslib "^2.6.2"
table@^6.8.2:
version "6.8.2"
resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58"
integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==
table@^6.8.1: table@^6.8.1:
version "6.8.2" version "6.8.2"
resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58"
@ -9514,10 +9738,10 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
trim-newlines@^3.0.0: ts-essentials@^9.4.0:
version "3.0.1" version "9.4.2"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.4.2.tgz#6d4bd23b46b61bf3e031816cc887e839eb62c33c"
integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== integrity sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==
ts-essentials@^9.4.0: ts-essentials@^9.4.0:
version "9.4.2" version "9.4.2"
@ -9587,11 +9811,6 @@ type-detect@4.0.8, type-detect@^4.0.8:
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
type-fest@^0.18.0:
version "0.18.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
type-fest@^0.20.2: type-fest@^0.20.2:
version "0.20.2" version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
@ -10170,13 +10389,17 @@ write-file-atomic@^3.0.0:
signal-exit "^3.0.2" signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5" typedarray-to-buffer "^3.1.5"
write-file-atomic@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7"
integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==
write-file-atomic@^4.0.2: write-file-atomic@^4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
dependencies: dependencies:
imurmurhash "^0.1.4" imurmurhash "^0.1.4"
signal-exit "^3.0.7" signal-exit "^4.0.1"
ws@^7.4.6: ws@^7.4.6:
version "7.5.10" version "7.5.10"
@ -10222,7 +10445,7 @@ yaml-eslint-parser@^0.5.0:
lodash "^4.17.21" lodash "^4.17.21"
yaml "^1.10.2" yaml "^1.10.2"
yaml@^1.10.0, yaml@^1.10.2: yaml@^1.10.2:
version "1.10.2" version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
@ -10235,7 +10458,7 @@ yargs-parser@^18.1.2:
camelcase "^5.0.0" camelcase "^5.0.0"
decamelize "^1.2.0" decamelize "^1.2.0"
yargs-parser@^20.2.2, yargs-parser@^20.2.3: yargs-parser@^20.2.2:
version "20.2.9" version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==

View File

@ -214,6 +214,8 @@ echo 'Updating admin' >> $UPDATE_HTML
cd $PROJECT_ROOT/admin cd $PROJECT_ROOT/admin
# TODO maybe handle this differently? # TODO maybe handle this differently?
unset NODE_ENV unset NODE_ENV
nvm use
npm i -g yarn
yarn install yarn install
yarn build yarn build
# TODO maybe handle this differently? # TODO maybe handle this differently?