logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://anongit.hacktivis.me/git/pleroma-fe.git/
commit: 74fe330e4a47275be10586a7be2b802e73fb3de3
parent 89ba855e45fcdeff1ee716783f9dbce451c8615a
Author: Henry Jameson <me@hjkos.com>
Date:   Mon, 17 Feb 2025 23:38:24 +0200

Merge remote-tracking branch 'origin/develop' into fixes-roundup4

Diffstat:

Achangelog.d/markup-panels.fix1+
Achangelog.d/move-humanize-errors.skip0
Mpackage.json26+++++++++++++-------------
Msrc/boot/after_store.js1+
Msrc/components/chat_list/chat_list.vue4++--
Msrc/components/drafts/drafts.vue18+++++++++++++++---
Msrc/components/features_panel/features_panel.vue4++--
Msrc/components/mrf_transparency_panel/mrf_transparency_panel.vue2+-
Msrc/components/registration/registration.js5++++-
Msrc/components/registration/registration.vue604++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/components/staff_panel/staff_panel.vue5++---
Msrc/components/terms_of_service_panel/terms_of_service_panel.js3+++
Msrc/components/terms_of_service_panel/terms_of_service_panel.vue13+++++++++++--
Msrc/components/user_card/user_card.vue5++++-
Msrc/i18n/en.json3++-
Dsrc/modules/errors.js11-----------
Msrc/modules/instance.js1+
Msrc/services/errors/errors.js12+++++++++++-
Myarn.lock411+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
19 files changed, 636 insertions(+), 493 deletions(-)

diff --git a/changelog.d/markup-panels.fix b/changelog.d/markup-panels.fix @@ -0,0 +1 @@ +Fix few markup panel inconsistencies; better ToS and registration diff --git a/changelog.d/move-humanize-errors.skip b/changelog.d/move-humanize-errors.skip diff --git a/package.json b/package.json @@ -51,10 +51,10 @@ "vuex": "4.1.0" }, "devDependencies": { - "@babel/core": "7.26.7", - "@babel/eslint-parser": "7.26.5", - "@babel/plugin-transform-runtime": "7.25.9", - "@babel/preset-env": "7.26.7", + "@babel/core": "7.26.8", + "@babel/eslint-parser": "7.26.8", + "@babel/plugin-transform-runtime": "7.26.8", + "@babel/preset-env": "7.26.8", "@babel/register": "7.25.9", "@intlify/vue-i18n-loader": "5.0.1", "@ungap/event-target": "0.2.4", @@ -67,27 +67,27 @@ "babel-plugin-lodash": "3.3.4", "chai": "4.5.0", "chalk": "5.4.1", - "chromedriver": "132.0.2", + "chromedriver": "133.0.0", "connect-history-api-fallback": "2.0.0", "copy-webpack-plugin": "12.0.2", "cross-spawn": "7.0.6", "css-loader": "7.1.2", "css-minimizer-webpack-plugin": "7.0.0", "custom-event-polyfill": "1.0.7", - "eslint": "9.19.0", + "eslint": "9.20.0", "eslint-config-standard": "17.1.0", "eslint-formatter-friendly": "7.0.0", "eslint-plugin-import": "2.31.0", - "eslint-plugin-n": "15.7.0", - "eslint-plugin-promise": "6.6.0", + "eslint-plugin-n": "17.15.1", + "eslint-plugin-promise": "7.2.1", "eslint-plugin-vue": "9.32.0", "eslint-webpack-plugin": "4.2.0", "eventsource-polyfill": "0.9.6", "express": "4.21.2", "function-bind": "1.1.2", "html-webpack-plugin": "5.6.3", - "http-proxy-middleware": "2.0.7", - "iso-639-1": "2.1.15", + "http-proxy-middleware": "3.0.3", + "iso-639-1": "3.1.5", "json-loader": "0.5.7", "karma": "6.4.4", "karma-coverage": "2.2.1", @@ -104,14 +104,14 @@ "nightwatch": "2.6.25", "opn": "5.5.0", "ora": "0.4.1", - "postcss": "8.5.1", + "postcss": "8.5.2", "postcss-html": "^1.5.0", "postcss-loader": "7.3.4", "postcss-scss": "^4.0.6", - "sass": "1.83.4", + "sass": "1.84.0", "sass-loader": "13.3.3", "selenium-server": "3.141.59", - "semver": "7.7.0", + "semver": "7.7.1", "serviceworker-webpack5-plugin": "2.0.0", "shelljs": "0.8.5", "sinon": "15.2.0", diff --git a/src/boot/after_store.js b/src/boot/after_store.js @@ -129,6 +129,7 @@ const setSettings = async ({ apiConfig, staticConfig, store }) => { copyInstanceOption('theme') copyInstanceOption('style') copyInstanceOption('palette') + copyInstanceOption('embeddedToS') copyInstanceOption('nsfwCensorImage') copyInstanceOption('background') copyInstanceOption('hidePostStats') diff --git a/src/components/chat_list/chat_list.vue b/src/components/chat_list/chat_list.vue @@ -34,7 +34,7 @@ </div> <div v-else - class="emtpy-chat-list-alert" + class="empty-chat-list-alert" > <span>{{ $t('chats.empty_chat_list_placeholder') }}</span> </div> @@ -50,7 +50,7 @@ margin-bottom: 0; } -.emtpy-chat-list-alert { +.empty-chat-list-alert { padding: 3em; font-size: 1.2em; display: flex; diff --git a/src/components/drafts/drafts.vue b/src/components/drafts/drafts.vue @@ -1,15 +1,18 @@ <template> <div class="Drafts"> <div class="panel panel-default"> - <div class="panel-heading"> + <div class="panel-heading -sticky"> <div class="title"> {{ $t('drafts.drafts') }} </div> </div> <div class="panel-body"> - <p v-if="drafts.length === 0"> + <div + v-if="drafts.length === 0" + class="empty-drafs-list-alert" + > {{ $t('drafts.no_drafts') }} - </p> + </div> <List v-else :items="drafts" @@ -33,4 +36,13 @@ .draft { margin: 1em 0; } + +.empty-drafs-list-alert { + padding: 3em; + font-size: 1.2em; + display: flex; + justify-content: center; + color: var(--textFaint); +} + </style> diff --git a/src/components/features_panel/features_panel.vue b/src/components/features_panel/features_panel.vue @@ -1,12 +1,12 @@ <template> <div class="features-panel"> <div class="panel panel-default base01-background"> - <div class="panel-heading timeline-heading base02-background base04"> + <div class="panel-heading timeline-heading base02-background base04 -sticky"> <h1 class="title"> {{ $t('features_panel.title') }} </h1> </div> - <div class="panel-body features-panel"> + <div class="panel-body"> <ul> <li v-if="shout"> {{ $t('features_panel.shout') }} diff --git a/src/components/mrf_transparency_panel/mrf_transparency_panel.vue b/src/components/mrf_transparency_panel/mrf_transparency_panel.vue @@ -4,7 +4,7 @@ class="mrf-transparency-panel" > <div class="panel panel-default base01-background"> - <div class="panel-heading timeline-heading base02-background"> + <div class="panel-heading timeline-heading base02-background -sticky"> <div class="title"> {{ $t("about.mrf.federation") }} </div> diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js @@ -4,6 +4,7 @@ import { mapActions, mapState } from 'vuex' import InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue' import localeService from '../../services/locale/locale.service.js' import { DAY } from 'src/services/date_utils/date_utils.js' +import TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue' const registration = { setup () { return { v$: useVuelidate() } }, @@ -21,7 +22,8 @@ const registration = { captcha: {} }), components: { - InterfaceLanguageSwitcher + InterfaceLanguageSwitcher, + TermsOfServicePanel }, validations () { return { @@ -86,6 +88,7 @@ const registration = { signUpNotice: (state) => state.users.signUpNotice, hasSignUpNotice: (state) => !!state.users.signUpNotice.message, termsOfService: (state) => state.instance.tos, + embeddedToS: (state) => state.instance.embeddedToS, accountActivationRequired: (state) => state.instance.accountActivationRequired, accountApprovalRequired: (state) => state.instance.accountApprovalRequired, birthdayRequired: (state) => state.instance.birthdayRequired, diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue @@ -1,321 +1,325 @@ <template> - <div class="settings panel panel-default"> - <div class="panel-heading"> - <h1 class="title"> - {{ $t('registration.registration') }} - </h1> - </div> - <div - v-if="!hasSignUpNotice" - class="panel-body" - > - <form - class="registration-form" - @submit.prevent="submit(user)" + <div class="column-inner"> + <TermsOfServicePanel v-if="!hasSignUpNotice && !embeddedToS" /> + <div class="settings panel panel-default"> + <div class="panel-heading"> + <h1 class="title"> + {{ $t('registration.registration') }} + </h1> + </div> + <div + v-if="!hasSignUpNotice" + class="panel-body" > - <div class="container"> - <div class="text-fields"> - <div - class="form-group" - :class="{ 'form-group--error': v$.user.username.$error }" - > - <label - class="form--label" - for="sign-up-username" - >{{ $t('login.username') }}</label> - <input - id="sign-up-username" - v-model.trim="v$.user.username.$model" - :disabled="isPending" - class="input form-control" - :aria-required="true" - :placeholder="$t('registration.username_placeholder')" + <form + class="registration-form" + @submit.prevent="submit(user)" + > + <div class="container"> + <div class="text-fields"> + <div + class="form-group" + :class="{ 'form-group--error': v$.user.username.$error }" > - </div> - <div - v-if="v$.user.username.$dirty" - class="form-error" - > - <ul> - <li v-if="!v$.user.username.required"> - <span>{{ $t('registration.validations.username_required') }}</span> - </li> - </ul> - </div> - - <div - class="form-group" - :class="{ 'form-group--error': v$.user.fullname.$error }" - > - <label - class="form--label" - for="sign-up-fullname" - >{{ $t('registration.fullname') }}</label> - <input - id="sign-up-fullname" - v-model.trim="v$.user.fullname.$model" - :disabled="isPending" - class="input form-control" - :aria-required="true" - :placeholder="$t('registration.fullname_placeholder')" + <label + class="form--label" + for="sign-up-username" + >{{ $t('login.username') }}</label> + <input + id="sign-up-username" + v-model.trim="v$.user.username.$model" + :disabled="isPending" + class="input form-control" + :aria-required="true" + :placeholder="$t('registration.username_placeholder')" + > + </div> + <div + v-if="v$.user.username.$dirty" + class="form-error" > - </div> - <div - v-if="v$.user.fullname.$dirty" - class="form-error" - > - <ul> - <li v-if="!v$.user.fullname.required"> - <span>{{ $t('registration.validations.fullname_required') }}</span> - </li> - </ul> - </div> - - <div - class="form-group" - :class="{ 'form-group--error': v$.user.email.$error }" - > - <label - class="form--label" - for="email" - >{{ accountActivationRequired ? $t('registration.email') : $t('registration.email_optional') }}</label> - <input - id="email" - v-model="v$.user.email.$model" - :disabled="isPending" - class="input form-control" - type="email" - :aria-required="accountActivationRequired" + <ul> + <li v-if="!v$.user.username.required"> + <span>{{ $t('registration.validations.username_required') }}</span> + </li> + </ul> + </div> + + <div + class="form-group" + :class="{ 'form-group--error': v$.user.fullname.$error }" > - </div> - <div - v-if="v$.user.email.$dirty" - class="form-error" - > - <ul> - <li v-if="!v$.user.email.required"> - <span>{{ $t('registration.validations.email_required') }}</span> - </li> - </ul> - </div> - - <div class="form-group"> - <label - class="form--label" - for="bio" - >{{ $t('registration.bio_optional') }}</label> - <textarea - id="bio" - v-model="user.bio" - :disabled="isPending" - class="input form-control" - :placeholder="bioPlaceholder" - /> - </div> - - <div - class="form-group" - :class="{ 'form-group--error': v$.user.password.$error }" - > - <label - class="form--label" - for="sign-up-password" - >{{ $t('login.password') }}</label> - <input - id="sign-up-password" - v-model="user.password" - :disabled="isPending" - class="input form-control" - type="password" - :aria-required="true" + <label + class="form--label" + for="sign-up-fullname" + >{{ $t('registration.fullname') }}</label> + <input + id="sign-up-fullname" + v-model.trim="v$.user.fullname.$model" + :disabled="isPending" + class="input form-control" + :aria-required="true" + :placeholder="$t('registration.fullname_placeholder')" + > + </div> + <div + v-if="v$.user.fullname.$dirty" + class="form-error" > - </div> - <div - v-if="v$.user.password.$dirty" - class="form-error" - > - <ul> - <li v-if="!v$.user.password.required"> - <span>{{ $t('registration.validations.password_required') }}</span> - </li> - </ul> - </div> - - <div - class="form-group" - :class="{ 'form-group--error': v$.user.confirm.$error }" - > - <label - class="form--label" - for="sign-up-password-confirmation" - >{{ $t('registration.password_confirm') }}</label> - <input - id="sign-up-password-confirmation" - v-model="user.confirm" - :disabled="isPending" - class="input form-control" - type="password" - :aria-required="true" + <ul> + <li v-if="!v$.user.fullname.required"> + <span>{{ $t('registration.validations.fullname_required') }}</span> + </li> + </ul> + </div> + + <div + class="form-group" + :class="{ 'form-group--error': v$.user.email.$error }" > - </div> - <div - v-if="v$.user.confirm.$dirty" - class="form-error" - > - <ul> - <li v-if="v$.user.confirm.required.$invalid"> - <span>{{ $t('registration.validations.password_confirmation_required') }}</span> - </li> - <li v-if="v$.user.confirm.sameAs.$invalid"> - <span>{{ $t('registration.validations.password_confirmation_match') }}</span> - </li> - </ul> - </div> + <label + class="form--label" + for="email" + >{{ accountActivationRequired ? $t('registration.email') : $t('registration.email_optional') }}</label> + <input + id="email" + v-model="v$.user.email.$model" + :disabled="isPending" + class="input form-control" + type="email" + :aria-required="accountActivationRequired" + > + </div> + <div + v-if="v$.user.email.$dirty" + class="form-error" + > + <ul> + <li v-if="!v$.user.email.required"> + <span>{{ $t('registration.validations.email_required') }}</span> + </li> + </ul> + </div> + + <div class="form-group"> + <label + class="form--label" + for="bio" + >{{ $t('registration.bio_optional') }}</label> + <textarea + id="bio" + v-model="user.bio" + :disabled="isPending" + class="input form-control" + :placeholder="bioPlaceholder" + /> + </div> - <div - class="form-group" - :class="{ 'form-group--error': v$.user.birthday.$error }" - > - <label - class="form--label" - for="sign-up-birthday" + <div + class="form-group" + :class="{ 'form-group--error': v$.user.password.$error }" > - {{ birthdayRequired ? $t('registration.birthday') : $t('registration.birthday_optional') }} - </label> - <input - id="sign-up-birthday" - v-model="user.birthday" - :disabled="isPending" - class="input form-control" - type="date" - :max="birthdayRequired ? birthdayMinAttr : undefined" - :aria-required="birthdayRequired" + <label + class="form--label" + for="sign-up-password" + >{{ $t('login.password') }}</label> + <input + id="sign-up-password" + v-model="user.password" + :disabled="isPending" + class="input form-control" + type="password" + :aria-required="true" + > + </div> + <div + v-if="v$.user.password.$dirty" + class="form-error" > - </div> - <div - v-if="v$.user.birthday.$dirty" - class="form-error" - > - <ul> - <li v-if="v$.user.birthday.required.$invalid"> - <span>{{ $t('registration.validations.birthday_required') }}</span> - </li> - <li v-if="v$.user.birthday.maxValue.$invalid"> - <span>{{ $t('registration.validations.birthday_min_age', { date: birthdayMinFormatted }) }}</span> - </li> - </ul> - </div> - - <div - class="form-group" - :class="{ 'form-group--error': v$.user.language.$error }" - > - <interface-language-switcher - for="email-language" - :prompt-text="$t('registration.email_language')" - :language="v$.user.language.$model" - :set-language="val => v$.user.language.$model = val" - @click.stop.prevent - /> - </div> - - <div - v-if="accountApprovalRequired" - class="form-group" - > - <label - class="form--label" - for="reason" - >{{ $t('registration.reason') }}</label> - <textarea - id="reason" - v-model="user.reason" - :disabled="isPending" - class="input form-control" - :placeholder="reasonPlaceholder" - /> - </div> - - <div - v-if="captcha.type != 'none'" - id="captcha-group" - class="form-group" - > - <label - class="form--label" - for="captcha-label" - >{{ $t('registration.captcha') }}</label> - - <template v-if="['kocaptcha', 'native'].includes(captcha.type)"> - <img - :src="captcha.url" - @click="setCaptcha" + <ul> + <li v-if="!v$.user.password.required"> + <span>{{ $t('registration.validations.password_required') }}</span> + </li> + </ul> + </div> + + <div + class="form-group" + :class="{ 'form-group--error': v$.user.confirm.$error }" + > + <label + class="form--label" + for="sign-up-password-confirmation" + >{{ $t('registration.password_confirm') }}</label> + <input + id="sign-up-password-confirmation" + v-model="user.confirm" + :disabled="isPending" + class="input form-control" + type="password" + :aria-required="true" > - - <sub>{{ $t('registration.new_captcha') }}</sub> - + </div> + <div + v-if="v$.user.confirm.$dirty" + class="form-error" + > + <ul> + <li v-if="v$.user.confirm.required.$invalid"> + <span>{{ $t('registration.validations.password_confirmation_required') }}</span> + </li> + <li v-if="v$.user.confirm.sameAs.$invalid"> + <span>{{ $t('registration.validations.password_confirmation_match') }}</span> + </li> + </ul> + </div> + + <div + class="form-group" + :class="{ 'form-group--error': v$.user.birthday.$error }" + > + <label + class="form--label" + for="sign-up-birthday" + > + {{ birthdayRequired ? $t('registration.birthday') : $t('registration.birthday_optional') }} + </label> <input - id="captcha-answer" - v-model="captcha.solution" + id="sign-up-birthday" + v-model="user.birthday" + :disabled="isPending" + class="input form-control" + type="date" + :max="birthdayRequired ? birthdayMinAttr : undefined" + :aria-required="birthdayRequired" + > + </div> + <div + v-if="v$.user.birthday.$dirty" + class="form-error" + > + <ul> + <li v-if="v$.user.birthday.required.$invalid"> + <span>{{ $t('registration.validations.birthday_required') }}</span> + </li> + <li v-if="v$.user.birthday.maxValue.$invalid"> + <span>{{ $t('registration.validations.birthday_min_age', { date: birthdayMinFormatted }) }}</span> + </li> + </ul> + </div> + + <div + class="form-group" + :class="{ 'form-group--error': v$.user.language.$error }" + > + <interface-language-switcher + for="email-language" + :prompt-text="$t('registration.email_language')" + :language="v$.user.language.$model" + :set-language="val => v$.user.language.$model = val" + @click.stop.prevent + /> + </div> + + <div + v-if="accountApprovalRequired" + class="form-group" + > + <label + class="form--label" + for="reason" + >{{ $t('registration.reason') }}</label> + <textarea + id="reason" + v-model="user.reason" :disabled="isPending" class="input form-control" + :placeholder="reasonPlaceholder" + /> + </div> + + <div + v-if="captcha.type != 'none'" + id="captcha-group" + class="form-group" + > + <label + class="form--label" + for="captcha-label" + >{{ $t('registration.captcha') }}</label> + + <template v-if="['kocaptcha', 'native'].includes(captcha.type)"> + <img + :src="captcha.url" + @click="setCaptcha" + > + + <sub>{{ $t('registration.new_captcha') }}</sub> + + <input + id="captcha-answer" + v-model="captcha.solution" + :disabled="isPending" + class="input form-control" + type="text" + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false" + > + </template> + </div> + + <div + v-if="token" + class="form-group" + > + <label for="token">{{ $t('registration.token') }}</label> + <input + id="token" + v-model="token" + disabled="true" + class="input form-control" type="text" - autocomplete="off" - autocorrect="off" - autocapitalize="off" - spellcheck="false" > - </template> + </div> + <div class="form-group"> + <button + :disabled="isPending" + type="submit" + class="btn button-default" + > + {{ $t('registration.register') }} + </button> + </div> </div> + <!-- eslint-disable vue/no-v-html --> <div - v-if="token" - class="form-group" - > - <label for="token">{{ $t('registration.token') }}</label> - <input - id="token" - v-model="token" - disabled="true" - class="input form-control" - type="text" - > - </div> - <div class="form-group"> - <button - :disabled="isPending" - type="submit" - class="btn button-default" - > - {{ $t('registration.register') }} - </button> - </div> + v-if="embeddedToS" + class="terms-of-service" + v-html="termsOfService" + /> + <!-- eslint-enable vue/no-v-html --> </div> - - <!-- eslint-disable vue/no-v-html --> <div - class="terms-of-service" - v-html="termsOfService" - /> - <!-- eslint-enable vue/no-v-html --> - </div> - <div - v-if="serverValidationErrors.length" - class="form-group" - > - <div class="alert error"> - <span - v-for="error in serverValidationErrors" - :key="error" - >{{ error }}</span> + v-if="serverValidationErrors.length" + class="form-group" + > + <div class="alert error"> + <span + v-for="error in serverValidationErrors" + :key="error" + >{{ error }}</span> + </div> </div> - </div> - </form> - </div> - <div v-else> - <p class="registration-notice"> - {{ signUpNotice.message }} - </p> + </form> + </div> + <div v-else> + <p class="registration-notice"> + {{ signUpNotice.message }} + </p> + </div> </div> </div> </template> @@ -325,7 +329,7 @@ .registration-form { display: flex; flex-direction: column; - margin: 0.6em; + margin: 1em; .container { display: flex; @@ -338,7 +342,7 @@ .terms-of-service { flex: 0 1 50%; - margin: 0.8em; + margin: 0.6em 0 0 0.8em; } .text-fields { @@ -417,6 +421,10 @@ @media all and (max-width: 800px) { .registration-form .container { flex-direction: column-reverse; + + .terms-of-service { + margin: 0; + } } } </style> diff --git a/src/components/staff_panel/staff_panel.vue b/src/components/staff_panel/staff_panel.vue @@ -1,7 +1,7 @@ <template> <div class="staff-panel"> <div class="panel panel-default base01-background"> - <div class="panel-heading timeline-heading base02-background"> + <div class="panel-heading timeline-heading base02-background -sticky"> <div class="title"> {{ $t("about.staff") }} </div> @@ -28,8 +28,7 @@ <style lang="scss"> .staff-group { - padding-left: 1em; - padding-top: 1em; + padding: 1em; .basic-user-card { padding-left: 0; diff --git a/src/components/terms_of_service_panel/terms_of_service_panel.js b/src/components/terms_of_service_panel/terms_of_service_panel.js @@ -2,6 +2,9 @@ const TermsOfServicePanel = { computed: { content () { return this.$store.state.instance.tos + }, + embedded () { + return this.$store.state.instance.embeddedToS } } } diff --git a/src/components/terms_of_service_panel/terms_of_service_panel.vue b/src/components/terms_of_service_panel/terms_of_service_panel.vue @@ -1,13 +1,21 @@ <template> - <div> + <div class="terms-of-service-panel"> <div class="panel panel-default"> + <div + v-if="!embedded" + class="panel-heading -sticky" + > + <div class="title"> + {{ $t("about.terms") }} + </div> + </div> <div class="panel-body"> <!-- eslint-disable vue/no-v-html --> <div class="tos-content" v-html="content" /> - <!-- eslint-enable vue/no-v-html --> + <!-- eslint-enable vue/no-v-html --> </div> </div> </div> @@ -19,4 +27,5 @@ .tos-content { margin: 1em; } + </style> diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue @@ -275,7 +275,10 @@ /> </div> </div> - <div v-if="!hideBio"> + <div + v-if="!hideBio" + class="user-bio" + > <div v-if="!mergedConfig.hideUserStats && switcher" class="user-counts" diff --git a/src/i18n/en.json b/src/i18n/en.json @@ -30,7 +30,8 @@ "media_nsfw_desc": "This instance forces media to be set sensitive in posts on the following instances:" } }, - "staff": "Staff" + "staff": "Staff", + "terms": "Terms of Service" }, "announcements": { "page_header": "Announcements", diff --git a/src/modules/errors.js b/src/modules/errors.js @@ -1,11 +0,0 @@ -import { capitalize } from 'lodash' - -export function humanizeErrors (errors) { - return Object.entries(errors).reduce((errs, [k, val]) => { - const message = val.reduce((acc, message) => { - const key = capitalize(k.replace(/_/g, ' ')) - return acc + [key, message].join(' ') + '. ' - }, '') - return [...errs, message] - }, []) -} diff --git a/src/modules/instance.js b/src/modules/instance.js @@ -54,6 +54,7 @@ const defaultState = { defaultAvatar: '/images/avi.png', defaultBanner: '/images/banner.png', background: '/static/aurora_borealis.jpg', + embeddedToS: true, collapseMessageWithSubject: false, greentext: false, useAtIcon: false, diff --git a/src/services/errors/errors.js b/src/services/errors/errors.js @@ -1,4 +1,14 @@ -import { humanizeErrors } from '../../modules/errors' +import { capitalize } from 'lodash' + +function humanizeErrors (errors) { + return Object.entries(errors).reduce((errs, [k, val]) => { + const message = val.reduce((acc, message) => { + const key = capitalize(k.replace(/_/g, ' ')) + return acc + [key, message].join(' ') + '. ' + }, '') + return [...errs, message] + }, []) +} export function StatusCodeError (statusCode, body, options, response) { this.name = 'StatusCodeError' diff --git a/yarn.lock b/yarn.lock @@ -31,7 +31,34 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.5.tgz#df93ac37f4417854130e21d72c66ff3d4b897fc7" integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg== -"@babel/core@7.26.7", "@babel/core@^7.12.3": +"@babel/compat-data@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" + integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== + +"@babel/core@7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.8.tgz#7742f11c75acea6b08a8e24c5c0c8c89e89bf53e" + integrity sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.8" + "@babel/helper-compilation-targets" "^7.26.5" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.7" + "@babel/parser" "^7.26.8" + "@babel/template" "^7.26.8" + "@babel/traverse" "^7.26.8" + "@babel/types" "^7.26.8" + "@types/gensync" "^1.0.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.12.3": version "7.26.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.7.tgz#0439347a183b97534d52811144d763a17f9d2b24" integrity sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA== @@ -52,10 +79,10 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz#aa669f4d873f9cd617050cf3c40c19cd96307efb" - integrity sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ== +"@babel/eslint-parser@7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz#55c4f4aae4970ae127f7a12369182ed6250e6f09" + integrity sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" @@ -72,6 +99,17 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" +"@babel/generator@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.8.tgz#f9c5e770309e12e3099ad8271e52f6caa15442ab" + integrity sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA== + dependencies: + "@babel/parser" "^7.26.8" + "@babel/types" "^7.26.8" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" @@ -235,6 +273,13 @@ dependencies: "@babel/types" "^7.26.7" +"@babel/parser@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.8.tgz#deca2b4d99e5e1b1553843b99823f118da6107c2" + integrity sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw== + dependencies: + "@babel/types" "^7.26.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" @@ -315,14 +360,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" - integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== +"@babel/plugin-transform-async-generator-functions@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" + integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.26.5" "@babel/helper-remap-async-to-generator" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/traverse" "^7.26.8" "@babel/plugin-transform-async-to-generator@^7.25.9": version "7.25.9" @@ -628,13 +673,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-runtime@7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" - integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== +"@babel/plugin-transform-runtime@7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.8.tgz#e025e062c08809db61de7e249193a8de1bc83092" + integrity sha512-H0jlQxFMI0Q8SyGPsj9pO3ygVQRxPkIGytsL3m1Zqca8KrCPpMlvh+e2dxknqdfS8LFwBw+PpiYPD9qy/FPQpA== dependencies: "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.26.5" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" @@ -662,12 +707,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" - integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== +"@babel/plugin-transform-template-literals@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" + integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-transform-typeof-symbol@^7.26.7": version "7.26.7" @@ -707,12 +752,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/preset-env@7.26.7": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.7.tgz#24d38e211f4570b8d806337035cc3ae798e0c36d" - integrity sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ== +"@babel/preset-env@7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.8.tgz#7af0090829b606d2046db99679004731e1dc364d" + integrity sha512-um7Sy+2THd697S4zJEfv/U5MHGJzkN2xhtsR3T/SWRbVSic62nbISh51VVfU9JiO/L/Z97QczHTaFVkOU8IzNg== dependencies: - "@babel/compat-data" "^7.26.5" + "@babel/compat-data" "^7.26.8" "@babel/helper-compilation-targets" "^7.26.5" "@babel/helper-plugin-utils" "^7.26.5" "@babel/helper-validator-option" "^7.25.9" @@ -726,7 +771,7 @@ "@babel/plugin-syntax-import-attributes" "^7.26.0" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.25.9" - "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.26.8" "@babel/plugin-transform-async-to-generator" "^7.25.9" "@babel/plugin-transform-block-scoped-functions" "^7.26.5" "@babel/plugin-transform-block-scoping" "^7.25.9" @@ -769,7 +814,7 @@ "@babel/plugin-transform-shorthand-properties" "^7.25.9" "@babel/plugin-transform-spread" "^7.25.9" "@babel/plugin-transform-sticky-regex" "^7.25.9" - "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.26.8" "@babel/plugin-transform-typeof-symbol" "^7.26.7" "@babel/plugin-transform-unicode-escapes" "^7.25.9" "@babel/plugin-transform-unicode-property-regex" "^7.25.9" @@ -777,9 +822,9 @@ "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-corejs3 "^0.11.0" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.38.1" + core-js-compat "^3.40.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -818,6 +863,15 @@ "@babel/parser" "^7.25.9" "@babel/types" "^7.25.9" +"@babel/template@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.8.tgz#db3898f47a17bab2f4c78ec1d0de38527c2ffe19" + integrity sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/parser" "^7.26.8" + "@babel/types" "^7.26.8" + "@babel/traverse@^7.25.6", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.7": version "7.26.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.7.tgz#99a0a136f6a75e7fb8b0a1ace421e0b25994b8bb" @@ -831,6 +885,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.8.tgz#0a8a9c2b7cc9519eed14275f4fd2278ad46e8cc9" + integrity sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.8" + "@babel/parser" "^7.26.8" + "@babel/template" "^7.26.8" + "@babel/types" "^7.26.8" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0-beta.49", "@babel/types@^7.25.6", "@babel/types@^7.25.9", "@babel/types@^7.26.5", "@babel/types@^7.26.7", "@babel/types@^7.4.4": version "7.26.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.7.tgz#5e2b89c0768e874d4d061961f3a5a153d71dc17a" @@ -839,6 +906,14 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@babel/types@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.8.tgz#97dcdc190fab45be7f3dc073e3c11160d677c127" + integrity sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@chenfengyuan/vue-qrcode@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@chenfengyuan/vue-qrcode/-/vue-qrcode-2.0.0.tgz#8cd01f6fc528d471680ebe812ec47c830aea7e63" @@ -854,14 +929,14 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.4.1": version "4.4.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.12.1": +"@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== @@ -882,6 +957,13 @@ dependencies: "@types/json-schema" "^7.0.15" +"@eslint/core@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.11.0.tgz#7a9226e850922e42cbd2ba71361eacbe74352a12" + integrity sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA== + dependencies: + "@types/json-schema" "^7.0.15" + "@eslint/eslintrc@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" @@ -897,10 +979,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.19.0": - version "9.19.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.19.0.tgz#51dbb140ed6b49d05adc0b171c41e1a8713b7789" - integrity sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ== +"@eslint/js@9.20.0": + version "9.20.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.20.0.tgz#7421bcbe74889fcd65d1be59f00130c289856eb4" + integrity sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ== "@eslint/object-schema@^2.1.6": version "2.1.6" @@ -1383,15 +1465,20 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/gensync@^1.0.0": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/gensync/-/gensync-1.0.4.tgz#7122d8f0cd3bf437f9725cc95b180197190cf50b" + integrity sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA== + "@types/html-minifier-terser@^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== -"@types/http-proxy@^1.17.8": - version "1.17.15" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.15.tgz#12118141ce9775a6499ecb4c01d02f90fc839d36" - integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ== +"@types/http-proxy@^1.17.15": + version "1.17.16" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.16.tgz#dee360707b35b3cc85afcde89ffeebff7d7f9240" + integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w== dependencies: "@types/node" "*" @@ -1430,9 +1517,9 @@ integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/node@*", "@types/node@>=10.0.0": - version "22.13.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.1.tgz#a2a3fefbdeb7ba6b89f40371842162fac0934f33" - integrity sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew== + version "22.13.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.0.tgz#d376dd9a0ee2f9382d86c2d5d7beb4d198b4ea8c" + integrity sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA== dependencies: undici-types "~6.20.0" @@ -2124,6 +2211,14 @@ babel-plugin-polyfill-corejs3@^0.10.6: "@babel/helper-define-polyfill-provider" "^0.6.2" core-js-compat "^3.38.0" +babel-plugin-polyfill-corejs3@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" + integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.3" + core-js-compat "^3.40.0" + babel-plugin-polyfill-regenerator@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" @@ -2277,13 +2372,6 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtins@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8" - integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg== - dependencies: - semver "^7.0.0" - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -2358,9 +2446,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688: - version "1.0.30001697" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz#040bbbb54463c4b4b3377c716b34a322d16e6fc7" - integrity sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ== + version "1.0.30001696" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz#00c30a2fc11e3c98c25e5125418752af3ae2f49f" + integrity sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ== chai-nightwatch@0.5.3: version "0.5.3" @@ -2474,10 +2562,10 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== -chromedriver@132.0.2: - version "132.0.2" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-132.0.2.tgz#9bba1d82b14346769a37d708846da7c2d3110fcd" - integrity sha512-aywIWYggkAwdFN5zkyYHXUyUBJt2hFMweS3XU0XINIdfOG386z+sqAlExB4P1A10cSz+SO5gxcCgxd8UJNBvgg== +chromedriver@133.0.0: + version "133.0.0" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-133.0.0.tgz#56dedd23974f986ef5fb1ec3402d2d5b845e35dc" + integrity sha512-7arRrtD9WGSlemMLE4IOoD42OSKKyOtQP/Z0x/WB5jYSaCzcI95j67EK0wQ2w1y5IjSJnYvnmXOJM6Nla4OG2w== dependencies: "@testim/chrome-version" "^1.1.4" axios "^1.7.4" @@ -2727,7 +2815,7 @@ copy-webpack-plugin@12.0.2: schema-utils "^4.2.0" serialize-javascript "^6.0.2" -core-js-compat@^3.38.0, core-js-compat@^3.38.1: +core-js-compat@^3.38.0, core-js-compat@^3.40.0: version "3.40.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.40.0.tgz#7485912a5a4a4315c2fdb2cbdc623e6881c88b38" integrity sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ== @@ -3007,7 +3095,7 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== @@ -3311,9 +3399,9 @@ ejs@3.1.8: jake "^10.8.5" electron-to-chromium@^1.5.73: - version "1.5.92" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.92.tgz#81e8ebe06f8e2a49fdba84bd10e9ad5b63efffe0" - integrity sha512-BeHgmNobs05N1HMmMZ7YIuHfYBGlq/UmvlsTgg+fsbFs9xVMj+xJHFg19GN04+9Q+r8Xnh9LXqaYIyEWElnNgQ== + version "1.5.90" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz#4717e5a5413f95bbb12d0af14c35057e9c65e0b6" + integrity sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug== emoji-regex@^8.0.0: version "8.0.0" @@ -3368,9 +3456,9 @@ engine.io@~6.6.0: ws "~8.17.1" enhanced-resolve@^5.17.1: - version "5.18.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" - integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + version "5.18.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz#91eb1db193896b9801251eeff1c6980278b1e404" + integrity sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3550,6 +3638,13 @@ escodegen@^2.0.0, escodegen@^2.1.0: optionalDependencies: source-map "~0.6.1" +eslint-compat-utils@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4" + integrity sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q== + dependencies: + semver "^7.5.4" + eslint-config-standard@17.1.0: version "17.1.0" resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" @@ -3582,13 +3677,14 @@ eslint-module-utils@^2.12.0: dependencies: debug "^3.2.7" -eslint-plugin-es@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9" - integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ== +eslint-plugin-es-x@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#a207aa08da37a7923f2a9599e6d3eb73f3f92b74" + integrity sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ== dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.11.0" + eslint-compat-utils "^0.5.1" eslint-plugin-import@2.31.0: version "2.31.0" @@ -3615,24 +3711,26 @@ eslint-plugin-import@2.31.0: string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" -eslint-plugin-n@15.7.0: - version "15.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz#e29221d8f5174f84d18f2eb94765f2eeea033b90" - integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q== +eslint-plugin-n@17.15.1: + version "17.15.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz#2129bbc7b11466c3bfec57876a15aadfad3a83f2" + integrity sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA== dependencies: - builtins "^5.0.1" - eslint-plugin-es "^4.1.0" - eslint-utils "^3.0.0" - ignore "^5.1.1" - is-core-module "^2.11.0" - minimatch "^3.1.2" - resolve "^1.22.1" - semver "^7.3.8" + "@eslint-community/eslint-utils" "^4.4.1" + enhanced-resolve "^5.17.1" + eslint-plugin-es-x "^7.8.0" + get-tsconfig "^4.8.1" + globals "^15.11.0" + ignore "^5.3.2" + minimatch "^9.0.5" + semver "^7.6.3" -eslint-plugin-promise@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#acd3fd7d55cead7a10f92cf698f36c0aafcd717a" - integrity sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ== +eslint-plugin-promise@7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz#a0652195700aea40b926dc3c74b38e373377bfb0" + integrity sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" eslint-plugin-vue@9.32.0: version "9.32.0" @@ -3672,26 +3770,19 @@ eslint-scope@^8.2.0: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: +eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== @@ -3717,17 +3808,17 @@ eslint-webpack-plugin@4.2.0: normalize-path "^3.0.0" schema-utils "^4.2.0" -eslint@9.19.0: - version "9.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.19.0.tgz#ffa1d265fc4205e0f8464330d35f09e1d548b1bf" - integrity sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA== +eslint@9.20.0: + version "9.20.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.20.0.tgz#6244c46c1640cd5e577a31ebc460fca87838c0b7" + integrity sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.19.0" - "@eslint/core" "^0.10.0" + "@eslint/core" "^0.11.0" "@eslint/eslintrc" "^3.2.0" - "@eslint/js" "9.19.0" + "@eslint/js" "9.20.0" "@eslint/plugin-kit" "^0.2.5" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" @@ -4229,6 +4320,13 @@ get-symbol-description@^1.1.0: es-errors "^1.3.0" get-intrinsic "^1.2.6" +get-tsconfig@^4.8.1: + version "4.10.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb" + integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A== + dependencies: + resolve-pkg-maps "^1.0.0" + get-uri@^6.0.1: version "6.0.4" resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.4.tgz#6daaee9e12f9759e19e55ba313956883ef50e0a7" @@ -4337,7 +4435,7 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globals@^15.14.0: +globals@^15.11.0, globals@^15.14.0: version "15.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== @@ -4575,16 +4673,17 @@ http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: agent-base "^7.1.0" debug "^4.3.4" -http-proxy-middleware@2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6" - integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== +http-proxy-middleware@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz#dc1313c75bd00d81e103823802551ee30130ebd1" + integrity sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg== dependencies: - "@types/http-proxy" "^1.17.8" + "@types/http-proxy" "^1.17.15" + debug "^4.3.6" http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" + is-glob "^4.0.3" + is-plain-object "^5.0.0" + micromatch "^4.0.8" http-proxy@^1.18.1: version "1.18.1" @@ -4635,7 +4734,7 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.1, ignore@^5.2.4: +ignore@^5.2.0, ignore@^5.2.1, ignore@^5.2.4, ignore@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== @@ -4768,11 +4867,11 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" - integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.1.tgz#c20d0c654be05da4fbc23c562635c019e93daf89" + integrity sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng== dependencies: - call-bound "^1.0.3" + call-bound "^1.0.2" has-tostringtag "^1.0.2" is-callable@^1.2.7: @@ -4780,7 +4879,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0, is-core-module@^2.5.0: +is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0, is-core-module@^2.5.0: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -4876,11 +4975,6 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4960,11 +5054,11 @@ is-weakmap@^2.0.2: integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== is-weakref@^1.0.2, is-weakref@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" - integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.0.tgz#47e3472ae95a63fa9cf25660bcf0c181c39770ef" + integrity sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q== dependencies: - call-bound "^1.0.3" + call-bound "^1.0.2" is-weakset@^2.0.3: version "2.0.4" @@ -5015,10 +5109,10 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -iso-639-1@2.1.15: - version "2.1.15" - resolved "https://registry.yarnpkg.com/iso-639-1/-/iso-639-1-2.1.15.tgz#20cf78a4f691aeb802c16f17a6bad7d99271e85d" - integrity sha512-7c7mBznZu2ktfvyT582E2msM+Udc1EjOyhVRE/0ZsjD9LBtWSm23h3PtiRh2a35XoUsTQQjJXaJzuLjXsOdFDg== +iso-639-1@3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/iso-639-1/-/iso-639-1-3.1.5.tgz#e8205aceeeea0f64d6b12f5fac6a943b0d5b452c" + integrity sha512-gXkz5+KN7HrG0Q5UGqSMO2qB9AsbEeyLP54kF1YrMsIxmu+g4BdB7rflReZTSTZGpfj8wywu6pfPBCylPIzGQA== isobject@^3.0.1: version "3.0.1" @@ -5938,7 +6032,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.5, micromatch@^4.0.8: +micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -6019,7 +6113,7 @@ minimatch@^5.0.1, minimatch@^5.1.6: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.3, minimatch@^9.0.4: +minimatch@^9.0.3, 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== @@ -6292,9 +6386,9 @@ object-assign@^4: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== object-keys@^1.1.1: version "1.1.1" @@ -7006,7 +7100,16 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.5.1, postcss@^8.4.19, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.48, postcss@^8.5.0: +postcss@8.5.2: + version "8.5.2" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.2.tgz#e7b99cb9d2ec3e8dd424002e7c16517cb2b846bd" + integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== + dependencies: + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +postcss@^8.4.19, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.48, postcss@^8.5.0: version "8.5.1" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== @@ -7288,11 +7391,6 @@ regexp.prototype.flags@^1.5.3: gopd "^1.2.0" set-function-name "^2.0.2" -regexpp@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - regexpu-core@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" @@ -7368,7 +7466,12 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1, resolve@^1.22.4: +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.4: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -7467,10 +7570,10 @@ sass-loader@13.3.3: dependencies: neo-async "^2.6.2" -sass@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.83.4.tgz#5ccf60f43eb61eeec300b780b8dcb85f16eec6d1" - integrity sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA== +sass@1.84.0: + version "1.84.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.84.0.tgz#da9154cbccb2d2eac7a9486091b6d9ba93ef5bad" + integrity sha512-XDAbhEPJRxi7H0SxrnOpiXFQoUJHwkR2u3Zc4el+fK/Tt5Hpzw5kkQ59qVDfvdaUq6gCrEZIbySFBM2T9DNKHg== dependencies: chokidar "^4.0.0" immutable "^5.0.2" @@ -7530,20 +7633,20 @@ semver@7.3.5: dependencies: lru-cache "^6.0.0" -semver@7.7.0: - version "7.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.0.tgz#9c6fe61d0c6f9fa9e26575162ee5a9180361b09c" - integrity sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ== +semver@7.7.1: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== +semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: + version "7.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.0.tgz#9c6fe61d0c6f9fa9e26575162ee5a9180361b09c" + integrity sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ== send@0.19.0: version "0.19.0"