From ca5cb474baa47339955ec5387bccf3d3e7f0f58d Mon Sep 17 00:00:00 2001
From: les
Date: Sun, 19 Jul 2020 22:05:11 +0200
Subject: [PATCH 001/363] minor
---
server/helpers.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/server/helpers.js b/server/helpers.js
index cc9a1cbd..0f9cdacd 100644
--- a/server/helpers.js
+++ b/server/helpers.js
@@ -75,8 +75,8 @@ module.exports = {
const outStream = fs.createWriteStream(finalPath)
const thumbStream = fs.createWriteStream(thumbPath)
- const resizer = sharp().resize(1200).jpg({ quality: 95 })
- const thumbnailer = sharp().resize(400).jpg({ quality: 90 })
+ const resizer = sharp().resize(1200).jpeg({ quality: 95 })
+ const thumbnailer = sharp().resize(400).jpeg({ quality: 90 })
const response = await axios({ method: 'GET', url, responseType: 'stream' })
From 59811e580cdb99f19b38ddeca6c7b5b1d838ad8d Mon Sep 17 00:00:00 2001
From: les
Date: Sun, 19 Jul 2020 22:13:23 +0200
Subject: [PATCH 002/363] fix #81, reset logo
---
components/admin/Settings.vue | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/components/admin/Settings.vue b/components/admin/Settings.vue
index 5f488da8..f9cfb414 100644
--- a/components/admin/Settings.vue
+++ b/components/admin/Settings.vue
@@ -24,15 +24,17 @@
small.d-block.text-secondary {{$t('admin.description_description')}}
div.mt-4 {{$t('admin.favicon')}}
- el-upload(ref='upload'
- :action='`${settings.baseurl}/api/settings/logo`'
- :on-success="forceLogoReload"
- name='logo'
- :show-file-list="true"
- accept='image/png'
- :limit='1'
- :multiple='false')
- el-button(slot='trigger' size='small' type='primary' plain) Select file
+ el-upload(ref='upload'
+ :action='`${settings.baseurl}/api/settings/logo`'
+ :on-success="forceLogoReload"
+ name='logo'
+ :show-file-list="true"
+ accept='image/png'
+ :limit='1'
+ :multiple='false')
+ el-button-group
+ el-button(size='small' type='primary' plain) Select file
+ el-button(size='small' type='success' plain @click='resetLogo') Reset
.el-upload__tip(slot='tip') png files with a size less than 500kb
el-image(:src='`${settings.baseurl}/favicon.ico?${logoKey}`')
el-switch.d-block.mt-4(v-model='allow_registration'
@@ -106,6 +108,11 @@ export default {
this.$refs.upload.clearFiles()
this.logoKey++
},
+ resetLogo (e) {
+ this.setSetting({ key: 'favicon', value: null })
+ .then(this.forceLogoReload)
+ e.stopPropagation()
+ },
save (key, value) {
if (this.settings[key] !== value) {
this.setSetting({ key, value })
From 2758541df0f8a7136905be67163178257339a799 Mon Sep 17 00:00:00 2001
From: les
Date: Sat, 25 Jul 2020 21:41:22 +0200
Subject: [PATCH 003/363] s/element/vuetify :D
---
assets/event.less | 100 +++----
assets/style.less | 418 +++++++++++++++---------------
components/Announcement.vue | 51 ++--
components/Editor.vue | 116 ++++-----
components/Event.vue | 129 +++++++--
components/Footer.vue | 15 ++
components/Home.vue | 16 +-
components/Nav.vue | 212 ++++++++++-----
components/Search.vue | 70 ++---
components/Snackbar.vue | 39 +++
components/admin/Announcement.vue | 34 ++-
components/admin/Federation.vue | 99 ++++---
components/admin/Places.vue | 49 ++--
components/admin/Settings.vue | 105 +++++---
components/admin/Users.vue | 106 ++++----
layouts/default.vue | 39 ++-
layouts/error.vue | 2 +-
nuxt.config.js | 25 +-
package.json | 96 +++----
pages/Admin.vue | 94 +++----
pages/Login.vue | 41 +--
pages/Register.vue | 28 +-
pages/about.vue | 4 +-
pages/add/_edit.vue | 149 ++++++-----
pages/event/_id.vue | 395 +++++++++++++++-------------
pages/event/eventAdmin.vue | 20 +-
pages/export.vue | 64 +++--
plugins/element-ui.js | 68 -----
plugins/vue-awesome.js | 59 -----
plugins/vue-clipboard.js | 59 +++++
server/api/controller/settings.js | 2 +-
vuetify.options.js | 14 +
yarn.lock | 384 ++++++++++++++++++---------
33 files changed, 1762 insertions(+), 1340 deletions(-)
create mode 100644 components/Footer.vue
create mode 100644 components/Snackbar.vue
delete mode 100644 plugins/element-ui.js
delete mode 100644 plugins/vue-awesome.js
create mode 100644 plugins/vue-clipboard.js
create mode 100644 vuetify.options.js
diff --git a/assets/event.less b/assets/event.less
index 0a4c2cf4..2bf07805 100644
--- a/assets/event.less
+++ b/assets/event.less
@@ -1,56 +1,56 @@
-.event {
- width: 320px;
- max-width: 450px;
- flex-grow: 1;
- margin: .2em;
- background-color: #202020;
- overflow: hidden;
+// .event {
+// width: 320px;
+// max-width: 450px;
+// flex-grow: 1;
+// margin: .2em;
+// background-color: #202020;
+// overflow: hidden;
- a:hover {
- text-decoration: none;
- .title {
- border-bottom: 1px solid #888;
- color: white;
- }
- }
+// a:hover {
+// text-decoration: none;
+// .title {
+// border-bottom: 1px solid #888;
+// color: white;
+// }
+// }
- .title {
- margin-left: 1rem;
- margin-top: 1rem;
- margin-right: 1rem;
- border-bottom: 1px solid #333;
- transition: border-color .5s;
- font-size: 1.2em;
- max-height: 3em;
- overflow: hidden;
- color: white;
- font-weight: bold;
- }
+// .title {
+// margin-left: 1rem;
+// margin-top: 1rem;
+// margin-right: 1rem;
+// border-bottom: 1px solid #333;
+// transition: border-color .5s;
+// font-size: 1.2em;
+// max-height: 3em;
+// overflow: hidden;
+// color: white;
+// font-weight: bold;
+// }
- .card-footer {
- max-height: 4.5em;
- overflow: hidden;
- padding: .25rem 0.5rem;
- line-height: 1.8rem;
- min-height: 2.2rem;
- }
+// .card-footer {
+// max-height: 4.5em;
+// overflow: hidden;
+// padding: .25rem 0.5rem;
+// line-height: 1.8rem;
+// min-height: 2.2rem;
+// }
- .card-body {
- overflow: hidden;
- }
+// .card-body {
+// overflow: hidden;
+// }
- .description {
- color: #999;
- font-size: 0.8em;
- overflow: hidden;
- max-height: 100%;
- }
+// .description {
+// color: #999;
+// font-size: 0.8em;
+// overflow: hidden;
+// max-height: 100%;
+// }
- .el-image { width: 100% }
- img {
- width: 100%;
- max-height: 250px;
- object-fit: cover;
- object-position: top;
- }
-}
+// .el-image { width: 100% }
+// img {
+// width: 100%;
+// max-height: 250px;
+// object-fit: cover;
+// object-position: top;
+// }
+// }
diff --git a/assets/style.less b/assets/style.less
index a0bffed8..4ab71e68 100644
--- a/assets/style.less
+++ b/assets/style.less
@@ -1,215 +1,215 @@
-:focus {outline:none;}
-::-moz-focus-inner {border:0;}
+// :focus {outline:none;}
+// ::-moz-focus-inner {border:0;}
-blockquote {
- border-left: 3px solid grey;
- font-style: italic;
- color: #666;
- padding-left: 1em;
-}
-
-code {
- font-family: sans-serif;
- display: inline-block;
- padding: 0 .4rem;
- border-radius: 5px;
- font-size: .8rem;
- font-weight: 700;
- background: rgba(0,0,0,.1);
- color: #888;
-}
-
-html, body {
- font-family: sans-serif;
- scroll-behavior: smooth;
- text-rendering: optimizeSpeed;
- background-color: #111;
- overflow-y: auto;
- scrollbar-width: thin;
- scrollbar-color: #555 #111;
- padding: 0 !important;
-}
-
-#__nuxt, #__layout {
- min-height: 100vh;
- display: flex;
- flex-direction: column;
-}
-
-#main {
- min-height: 200px;
- overflow: hidden;
- scrollbar-width: thin;
- transition: background-color .5s, opacity .5s; //, color 1s;
- background-color: white;
- &.dark {
- background-color: #111;
- }
-}
-
-#content {
- max-width: 1400px;
- flex-grow: 1;
- width: 100%;
- margin: 0 auto;
-}
-
-#header, #footer {
- color: white;
- background-color: #222;
- font-size: 18px;
- padding: 0 15px;
-}
-
-
-#footer {
- a {
- color: orangered;
- transition: color .4s;
- &:hover {
- text-decoration: none;
- color: orange;
- }
- }
-
- #links a {
- margin-left: 15px;
- }
- min-height: 6em;
- padding-top: 2em;
- font-size: 1em;
-}
-
-#header .el-menu--horizontal {
- background-color: #222;
- color: white;
- .el-menu-item, .el-submenu__title {
- color: white;
- }
-
- .el-submenu .el-submenu__icon-arrow {
- margin-left: 0px;
- }
-
- .el-submenu .el-submenu__title {
- padding: 0 15px;
- }
-
- .el-menu-item:not(.is-disabled):focus,
- .el-menu-item.is-active,
- .el-menu-item:not(.is-disabled):hover,
- .el-submenu:focus > .el-submenu__title,
- .el-submenu:hover > .el-submenu__title,
- .el-submenu.is-active > .el-submenu__title,
- .el-submenu.is-opened {
- color: white;
- background-color: #111;
- }
-}
-
-
-.page-enter-active {
- transition: opacity .05s;
-}
-
-.page-enter, .page-leave-active {
- transition: opacity .3s; //, transform .3s;
- opacity: 0;
- // transform: translateX(30px);
-}
-
-.el-card {
- max-width: 700px;
- margin: 0 auto;
-}
-
-.el-menu-item {
- height: 40px;
- line-height: 40px;
- a {
- color: #303133;
- display: block;
- text-decoration: none;
- text-overflow: ellipsis;
- overflow: hidden;
- }
-}
-
-.el-message-box {
- max-width: 90%;
-}
-
-//TODO: refactoring
-.el-button.is-plain,
-.el-button.is-plain:focus,
-.el-button.is-plain {
- border-color: #ff450075;
- background-color: transparent;
- color: orangered;
-
- &:hover {
- border-color: #ff450075;
- background-color: transparent;
- color: orange;
- }
-}
-
-// TODO: this should be a link
-
-.event .p-location {
- transition: color .2s;
- &:hover {
- cursor: pointer;
- color: orangered !important;
- }
-}
-
-.el-button--text {
- color: orangered !important;
- &:hover {
- color: orange !important;
- }
-}
-
-.el-button--success.is-plain {
- color: #2c8600;
- border-color: #9de27b;
- background-color: #f9fff6;
-}
-
-.el-button--mini, .el-button--mini.is-round {
- padding: 6px 12px;
- font-size: 0.8rem;
-}
-
-.bg-dark {
- background-color: #292929 !important;
-}
-
-.el-dialog {
- min-height: 300px;
- max-width: 600px;
- width: 100%;
- .el-dialog__body {
- word-break: normal !important;
- }
-}
-
-.el-switch__label span {
- position: absolute;
-}
-
-// .el-input {
-// max-width: 350px;
+// blockquote {
+// border-left: 3px solid grey;
+// font-style: italic;
+// color: #666;
+// padding-left: 1em;
// }
-// @media only screen and (max-width: 768px) {
- // .el-card {
- // padding: 0px !important;
- // border-radius: 0px;
- // }
+// code {
+// font-family: sans-serif;
+// display: inline-block;
+// padding: 0 .4rem;
+// border-radius: 5px;
+// font-size: .8rem;
+// font-weight: 700;
+// background: rgba(0,0,0,.1);
+// color: #888;
+// }
+
+// html, body {
+// font-family: sans-serif;
+// scroll-behavior: smooth;
+// text-rendering: optimizeSpeed;
+// background-color: #111;
+// overflow-y: auto;
+// scrollbar-width: thin;
+// scrollbar-color: #555 #111;
+// padding: 0 !important;
+// }
+
+// #__nuxt, #__layout {
+// min-height: 100vh;
+// display: flex;
+// flex-direction: column;
+// }
+
+// #main {
+// min-height: 200px;
+// overflow: hidden;
+// scrollbar-width: thin;
+// transition: background-color .5s, opacity .5s; //, color 1s;
+// background-color: white;
+// &.dark {
+// background-color: #111;
+// }
+// }
+
+// #content {
+// max-width: 1400px;
+// flex-grow: 1;
+// width: 100%;
+// margin: 0 auto;
+// }
+
+// #header, #footer {
+// color: white;
+// background-color: #222;
+// font-size: 18px;
+// padding: 0 15px;
// }
-@import './event.less';
-@import './editor.less';
\ No newline at end of file
+// #footer {
+// a {
+// color: orangered;
+// transition: color .4s;
+// &:hover {
+// text-decoration: none;
+// color: orange;
+// }
+// }
+
+// #links a {
+// margin-left: 15px;
+// }
+// min-height: 6em;
+// padding-top: 2em;
+// font-size: 1em;
+// }
+
+// #header .el-menu--horizontal {
+// background-color: #222;
+// color: white;
+// .el-menu-item, .el-submenu__title {
+// color: white;
+// }
+
+// .el-submenu .el-submenu__icon-arrow {
+// margin-left: 0px;
+// }
+
+// .el-submenu .el-submenu__title {
+// padding: 0 15px;
+// }
+
+// .el-menu-item:not(.is-disabled):focus,
+// .el-menu-item.is-active,
+// .el-menu-item:not(.is-disabled):hover,
+// .el-submenu:focus > .el-submenu__title,
+// .el-submenu:hover > .el-submenu__title,
+// .el-submenu.is-active > .el-submenu__title,
+// .el-submenu.is-opened {
+// color: white;
+// background-color: #111;
+// }
+// }
+
+
+// .page-enter-active {
+// transition: opacity .05s;
+// }
+
+// .page-enter, .page-leave-active {
+// transition: opacity .3s; //, transform .3s;
+// opacity: 0;
+// // transform: translateX(30px);
+// }
+
+// .el-card {
+// max-width: 700px;
+// margin: 0 auto;
+// }
+
+// .el-menu-item {
+// height: 40px;
+// line-height: 40px;
+// a {
+// color: #303133;
+// display: block;
+// text-decoration: none;
+// text-overflow: ellipsis;
+// overflow: hidden;
+// }
+// }
+
+// .el-message-box {
+// max-width: 90%;
+// }
+
+// //TODO: refactoring
+// .el-button.is-plain,
+// .el-button.is-plain:focus,
+// .el-button.is-plain {
+// border-color: #ff450075;
+// background-color: transparent;
+// color: orangered;
+
+// &:hover {
+// border-color: #ff450075;
+// background-color: transparent;
+// color: orange;
+// }
+// }
+
+// // TODO: this should be a link
+
+// .event .p-location {
+// transition: color .2s;
+// &:hover {
+// cursor: pointer;
+// color: orangered !important;
+// }
+// }
+
+// .el-button--text {
+// color: orangered !important;
+// &:hover {
+// color: orange !important;
+// }
+// }
+
+// .el-button--success.is-plain {
+// color: #2c8600;
+// border-color: #9de27b;
+// background-color: #f9fff6;
+// }
+
+// .el-button--mini, .el-button--mini.is-round {
+// padding: 6px 12px;
+// font-size: 0.8rem;
+// }
+
+// .bg-dark {
+// background-color: #292929 !important;
+// }
+
+// .el-dialog {
+// min-height: 300px;
+// max-width: 600px;
+// width: 100%;
+// .el-dialog__body {
+// word-break: normal !important;
+// }
+// }
+
+// .el-switch__label span {
+// position: absolute;
+// }
+
+// // .el-input {
+// // max-width: 350px;
+// // }
+
+// // @media only screen and (max-width: 768px) {
+// // .el-card {
+// // padding: 0px !important;
+// // border-radius: 0px;
+// // }
+// // }
+
+
+// @import './event.less';
+// @import './editor.less';
\ No newline at end of file
diff --git a/components/Announcement.vue b/components/Announcement.vue
index f94673e9..94eedd57 100644
--- a/components/Announcement.vue
+++ b/components/Announcement.vue
@@ -1,5 +1,16 @@
- .announcement.announcement.text-white(body-style='padding: 0px;')
+ v-alert(border='left' dismissible color="deep-orange accent-2" dark close-text='antani') {{announcement.title}}
+ //- v-list-item(link nuxt :to='`/announcement/${announcement.id}`')
+ //- v-list-item-icon
+ //- v-icon mdi-alert
+ //- v-list-item-content
+ //- v-list-item-title
+ //- h2 {{announcement.title}}
+ //- v-list-item-subtitle(v-html='announcement.announcement')
+
+ //- v-list-item
+ //- v-btn(nuxt :to='`/announcement/${announcement.id}`') {{announcement.title}}
+ //- .announcement.announcement.text-white(body-style='padding: 0px;')
nuxt-link(:to='`/announcement/${announcement.id}`')
.title {{announcement.title}}
@@ -23,23 +34,23 @@ export default {
}
diff --git a/components/Editor.vue b/components/Editor.vue
index 74268355..a1a2f89c 100644
--- a/components/Editor.vue
+++ b/components/Editor.vue
@@ -1,9 +1,9 @@
.editor(:class='{ "with-border": border }')
editor-menu-bubble(:editor='editor' :keep-in-bounds='true' v-slot='{ commands, isActive, getMarkAttrs, menu }')
- el-button-group.menububble(:class="{ 'is-active': menu.isActive }" :style="`left: ${menu.left}px; bottom: ${menu.bottom}px;`")
- el-popover(trigger='hover' placement='bottom-start')
- el-button.float-left(slot='reference' size='mini')
+ v-button-group.menububble(:class="{ 'is-active': menu.isActive }" :style="`left: ${menu.left}px; bottom: ${menu.bottom}px;`")
+ v-popover(trigger='hover' placement='bottom-start')
+ v-btn.float-left(slot='reference' size='mini')
template
span This editor supports inline markdown
div → Title ⇒ Start a line with #
@@ -20,7 +20,7 @@
//- el-button(size='mini' :class='{ "is-active": isActive.italic() }' @click='commands.italic')
//- el-button(size='mini' :class='{ "is-active": isActive.underline() }' @click='commands.underline')
- el-button(size='mini' :class='{ "is-active": isActive.link() }' @click='commands.link({href: ""}); $refs.link.focus(); linkActive=true')
+ v-btn(size='mini' :class='{ "is-active": isActive.link() }' @click='commands.link({href: ""}); $refs.link.focus(); linkActive=true')
input(:value='isActive.link() && getMarkAttrs("link") && getMarkAttrs("link").href || ""' ref='link' :class='{ "is-active": isActive.link() || linkActive }'
placeholder='https://' @keypress.enter='commands.link({ href: $event.target.value})')
//- el-button(size='mini' :class='{ "is-active": isActive.strike() }' @click='commands.strike')
@@ -112,65 +112,65 @@ export default {
diff --git a/components/Event.vue b/components/Event.vue
index d62d3f1f..629538ca 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -1,26 +1,57 @@
- .card.event.h-event.mt-1.text-white
+ v-card.h-event.mt-1
nuxt-link(:to='`/event/${event.id}`')
- el-image(v-if='showImage && event.image_path'
- lazy :src='`/media/thumb/${event.image_path}`')
- .float-right
- i.text-danger.el-icon-refresh(v-if='event.parentId')
- .badge.text-info(v-if='settings.enable_resources && event.resources && event.resources.length') {{event.resources.length}}
- //- title
- .p-name.p-summary.title {{event.title}}
+ v-img(:src="`/media/thumb/${event.image_path}`" height="250" position="top top" class="white--text align-end")
+ v-list-item
+ v-list-item-content
+ v-list-item-title.headline {{ event.title }}
+ v-list-item-subtitle
+ time(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') mdi-date {{ event|when }}
+ v-list-item-subtitle
+ span md-location-outline {{event.place.name}}
- .card-body
- //- div.d-flex.justify-content-between
- //- when
- time.d-block.dt-start.mt-0(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') {{event|when}}
- //- place
- .p-location.mt-1.text-warning(plain size='mini' round type='text' @click='addPlace') {{event.place.name}}
+ //- v-card-text
- //- description
- //- .p-description.description.mt-3(v-html='description')
+ v-card-actions
+ v-btn(text color='primary' nuxt :to='`/event/${event.id}`') {{$t('common.read')}}
+ v-spacer
+ v-btn(icon)
+ v-icon mdi-bookmark
+ v-btn(icon color='yellow')
+ v-icon mdi-share-variant
- .card-footer(v-if='event.tags.length')
- el-button.ml-1(type='text' plain round size='mini' v-for='tag in event.tags' :key='tag' @click='addTag(tag)') {{tag}}
+ //-
+
diff --git a/components/Footer.vue b/components/Footer.vue
new file mode 100644
index 00000000..5c9c16d8
--- /dev/null
+++ b/components/Footer.vue
@@ -0,0 +1,15 @@
+
+ v-footer(app absolute)
+ v-btn(text href='https://gancio.org') Gancio {{settings.version}}
+ v-btn(v-if='settings.enable_federation' text rel='me' @click.prevent='showFollowMe=true') follow me
+ v-btn(nuxt to='/about' text) about
+ v-btn(href='https://blog.gancio.org' text) blog
+ v-btn(href='https://framagit.org/les/gancio' text) source
+
+
diff --git a/components/Home.vue b/components/Home.vue
index b1159f7e..924d81f9 100644
--- a/components/Home.vue
+++ b/components/Home.vue
@@ -1,5 +1,5 @@
- section#home
+ v-container#home(fluid)
Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement')
#calbar.row.mt-2.mb-2
.col-xl-7.col-lg-7.col-sm-6.col-xs-12
@@ -10,7 +10,6 @@
Search(past-filter recurrent-filter)
#events
- //- Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement')
Event(v-for='event in events' :key='event.id' :event='event')
@@ -27,6 +26,7 @@ export default {
components: { Calendar, Event, Search, Announcement },
computed: {
events () {
+ console.error('dentro computed di events in HOME!')
return this.in_past ? this.filteredEventsWithPast : this.filteredEvents
},
...mapGetters(['filteredEvents', 'filteredEventsWithPast']),
@@ -51,10 +51,14 @@ export default {
}
diff --git a/components/Search.vue b/components/Search.vue
index 32b812ae..7f1c9ad3 100644
--- a/components/Search.vue
+++ b/components/Search.vue
@@ -1,17 +1,17 @@
- el-main#search
- el-switch.mt-1.mb-2.ml-2.d-block(
+ v-container
+ v-switch.mt-0(
v-if='recurrentFilter && settings.allow_recurrent_event'
- :active-text="$t('event.show_recurrent')"
+ inset color='primary'
+ :label="$t('event.show_recurrent')"
v-model='showRecurrent')
- el-switch.mt-1.mb-2.ml-2.d-block(
- v-if='pastFilter'
- :active-text="$t('event.show_past')"
+ v-switch.mt-0(
+ v-if='pastFilter' inset color='primary'
+ :label="$t('event.show_past')"
v-model='showPast')
- el-autocomplete.mb-1#searchInput.inline-input(:placeholder='$t("common.filter")' prefix-icon='el-icon-search'
- highlight-first-item
+ v-autocomplete#searchInput.mt-0(:placeholder='$t("common.filter")'
v-model='search' :debounce='200'
:fetch-suggestions='querySearch' clearable
@select='addFilter')
@@ -20,9 +20,9 @@
i.float-right.el-icon-place(v-if='item.type==="place"')
i.float-right.el-icon-collection-tag(v-if='item.type==="tag"')
#filters
- el-button.mr-1.bg-dark(type='text' round plain v-for='t in filters.tags' size='mini'
+ v-vtn.mr-1.bg-dark(type='text' round plain v-for='t in filters.tags' size='mini'
:key='t' @click='removeTag(t)') {{t}}
- el-button.mr-1.bg-dark.text-warning(type='text' round plain v-for='p in selectedPlaces' size='mini'
+ v-btn.mr-1.bg-dark.text-warning(type='text' round plain v-for='p in selectedPlaces' size='mini'
:key='p.id' @click='removePlace(p.id)') {{p.name}}
@@ -91,36 +91,36 @@ export default {
}
diff --git a/components/Snackbar.vue b/components/Snackbar.vue
new file mode 100644
index 00000000..1b70daff
--- /dev/null
+++ b/components/Snackbar.vue
@@ -0,0 +1,39 @@
+
+ v-snackbar(
+ v-model="active"
+ :color="color"
+ :bottom="bottom"
+ :top="top"
+ :left="left"
+ :right="right"
+ :timeout="timeout")
+ v-icon.mr-3(color="white") {{icon}}
+ span {{ message }}
+ template(v-slot:action="{ }")
+ v-icon(size="16" @click="active = false") mdi-close-circle
+
+
+
diff --git a/components/admin/Announcement.vue b/components/admin/Announcement.vue
index 8b27211d..474b8bd8 100644
--- a/components/admin/Announcement.vue
+++ b/components/admin/Announcement.vue
@@ -1,26 +1,22 @@
- div
- p(v-html="$t('admin.announcement_description')")
- br
- el-input(v-model='announcement.title' :placeholder='$t("common.title")')
+ v-container
+ v-subheader(v-html="$t('admin.announcement_description')")
+ v-text-field(v-model='announcement.title' :placeholder='$t("common.title")')
Editor.mt-2(v-model='announcement.announcement' border no-save style='max-height: 400px;')
- el-button.mt-2.float-right(@click='save' type='success' plain) {{$t(`common.${editing?'save':'send'}`)}}
+ v-btn.mt-2(@click='save' type='success' plain) {{$t(`common.${editing?'save':'send'}`)}}
- el-table(:data='announcements' small)
- el-table-column(:label="$t('common.title')" width='250')
- template(slot-scope='data')
- span(slot='reference') {{data.row.title}}
+ v-data-table(:items='announcements')
- el-table-column(:label="$t('common.actions')")
- template(slot-scope='data')
- el-button-group
- el-button(size='mini' type='primary'
- @click='edit(data.row)') {{$t('common.edit')}}
- el-button(size='mini'
- :type='data.row.visible?"warning":"success"'
- @click='toggle(data.row)') {{data.row.visible?$t('common.deactivate'):$t('common.activate')}}
- el-button(size='mini' type='danger'
- @click='remove(data.row)') {{$t('common.delete')}}
+ //- el-table-column(:label="$t('common.actions')")
+ //- template(slot-scope='data')
+ //- el-button-group
+ //- el-button(size='mini' type='primary'
+ //- @click='edit(data.row)') {{$t('common.edit')}}
+ //- el-button(size='mini'
+ //- :type='data.row.visible?"warning":"success"'
+ //- @click='toggle(data.row)') {{data.row.visible?$t('common.deactivate'):$t('common.activate')}}
+ //- el-button(size='mini' type='danger'
+ //- @click='remove(data.row)') {{$t('common.delete')}}
-
+
diff --git a/layouts/error.vue b/layouts/error.vue
index fe1f0afe..d145ae0c 100644
--- a/layouts/error.vue
+++ b/layouts/error.vue
@@ -1,5 +1,5 @@
- el-main.p-4.text-center#error
+ v-container.p-4.text-center#error
h1(v-if="error.statusCode === 404") {{error.message}}
h1(v-else) An error occurred: {{error.message}}
nuxt-link(to='/') Back to home
diff --git a/nuxt.config.js b/nuxt.config.js
index 120839e8..cf9d92dc 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -24,21 +24,21 @@ module.exports = {
/*
** Global CSS
*/
- css: [
- 'bootstrap/dist/css/bootstrap.min.css',
- 'element-ui/lib/theme-chalk/index.css',
- 'element-ui/lib/theme-chalk/display.css',
- '@/assets/style.less'
- ],
+ // css: [
+ // 'bootstrap/dist/css/bootstrap.min.css',
+ // 'element-ui/lib/theme-chalk/index.css',
+ // 'element-ui/lib/theme-chalk/display.css',
+ // '@/assets/theme/index.css'
+ // '@/assets/style.less'
+ // ],
/*
** Plugins to load before mounting the App
*/
plugins: [
'@/plugins/i18n.js',
- '@/plugins/element-ui', // UI library -> https://element.eleme.io/#/en-US/
- '@/plugins/filters', // text filters, datetime, etc.
- '@/plugins/vue-awesome', // icon
+ '@/plugins/filters', // text filters, datetime filters, generic transformation helpers etc.
+ '@/plugins/vue-clipboard', // vuetify
'@/plugins/axios', // axios baseurl configuration
{ src: '@/plugins/v-calendar', ssr: false } // calendar, fix ssr
],
@@ -94,6 +94,13 @@ module.exports = {
}
},
+ buildModules: [
+ '@nuxtjs/vuetify'
+ ],
+ vuetify: {
+ optionsPath: './vuetify.options.js'
+ /* module options */
+ },
/*
** Build configuration
*/
diff --git a/package.json b/package.json
index 3e5903de..c68624bc 100644
--- a/package.json
+++ b/package.json
@@ -4,39 +4,15 @@
"description": "A shared agenda for local communities",
"author": "lesion",
"scripts": {
- "dev:nuxt": "cross-env NODE_ENV=development nuxt dev",
- "dev": "cross-env DEBUG=*,-babel*,-preview-email,-i18n:debug,-email-templates,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=development node server/index.js",
"build": "nuxt build",
- "start": "cross-env DEBUG=*,-babel*,-preview-email,-i18n:debug,-email-templates,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=production node server/cli.js",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
+ "dev": "cross-env DEBUG=*,-babel*,-preview-email,-i18n:debug,-email-templates,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=development node server/index.js",
+ "dev:nuxt": "cross-env NODE_ENV=development nuxt dev",
"doc": "cd docs && bundle exec jekyll b",
"doc:dev": "cd docs && bundle exec jekyll s --drafts",
+ "migrate": "NODE_ENV=production sequelize db:migrate",
"migrate:dev": "sequelize db:migrate",
- "migrate": "NODE_ENV=production sequelize db:migrate"
- },
- "license": "AGPL-3.0",
- "bugs": {
- "email": "lesion@autistici.org",
- "url": "https://framagit.org/les/gancio/issues"
- },
- "keywords": [
- "AP",
- "gancio",
- "events",
- "federation",
- "activitypub",
- "event",
- "server",
- "self-host",
- "app"
- ],
- "homepage": "https://gancio.org",
- "repository": {
- "type": "git",
- "url": "https://framagit.org/les/gancio"
- },
- "bin": {
- "gancio": "server/cli.js"
+ "start": "cross-env DEBUG=*,-babel*,-preview-email,-i18n:debug,-email-templates,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=production node server/cli.js"
},
"files": [
"server/",
@@ -50,12 +26,9 @@
"config/",
".nuxt/"
],
- "resolutions": {
- "prosemirror-model": "1.10.0"
- },
"dependencies": {
"@nuxtjs/auth": "^4.9.1",
- "@nuxtjs/axios": "^5.11.0",
+ "@nuxtjs/axios": "^5.12.0",
"accept-language": "^3.0.18",
"axios": "^0.19.2",
"bcryptjs": "^2.4.3",
@@ -66,19 +39,19 @@
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"cross-env": "^7.0.2",
- "date-fns": "^2.14.0",
- "dayjs": "^1.8.29",
+ "date-fns": "^2.15.0",
+ "dayjs": "^1.8.30",
"dompurify": "^2.0.11",
"element-ui": "^2.13.2",
- "email-templates": "^7.0.5",
+ "email-templates": "^7.1.0",
"express": "^4.17.1",
"express-oauth-server": "^2.0.0",
"http-signature": "^1.3.4",
"ics": "^2.22.1",
- "inquirer": "^7.3.0",
- "jsdom": "^16.2.2",
+ "inquirer": "^7.3.3",
+ "jsdom": "^16.3.0",
"jsonwebtoken": "^8.5.1",
- "less": "^3.11.3",
+ "less": "^3.12.2",
"linkifyjs": "^2.1.9",
"lodash": "^4.17.19",
"mkdirp": "^1.0.4",
@@ -88,30 +61,30 @@
"nominatim-geocoder": "^0.1.4",
"nuxt": "^2.13.3",
"nuxt-express-module": "^0.0.11",
- "pg": "^8.2.2",
- "sequelize": "^6.3.0",
+ "pg": "^8.3.0",
+ "sequelize": "^6.3.3",
"sequelize-cli": "^6.2.0",
"sharp": "^0.25.4",
"sqlite3": "^5.0.0",
- "tiptap": "^1.27.1",
- "tiptap-extensions": "^1.29.1",
+ "tiptap": "^1.29.1",
+ "tiptap-extensions": "^1.31.1",
"to-ico": "^1.1.5",
"url": "^0.11.0",
"v-calendar": "^1.0.8",
- "vue-awesome": "^4.0.0",
+ "vue-awesome": "^4.1.0",
"vue-clipboard2": "^0.3.1",
"vue-i18n": "^8.18.2",
- "yargs": "^15.4.0"
+ "yargs": "^15.4.1"
},
"devDependencies": {
"@nuxtjs/eslint-config": "^3.0.0",
+ "@nuxtjs/vuetify": "^1.11.2",
"babel-eslint": "^10.1.0",
- "eslint": "^7.4.0",
+ "eslint": "^7.5.0",
"eslint-config-prettier": "^6.11.0",
"eslint-config-standard": ">=14.1.1",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.22.0",
- "eslint-plugin-jest": "^23.17.1",
"eslint-plugin-node": ">=11.1.0",
"eslint-plugin-nuxt": "^1.0.0",
"eslint-plugin-prettier": "^3.1.4",
@@ -122,6 +95,37 @@
"nodemon": "^2.0.4",
"prettier": "^2.0.5",
"pug-plain-loader": "^1.0.0",
+ "sass": "^1.19.0",
+ "sass-loader": "^9.0.2",
+ "vue-cli-plugin-vuetify": "~2.0.7",
+ "vuetify-loader": "^1.3.0",
"webpack-cli": "^3.3.12"
+ },
+ "bin": {
+ "gancio": "server/cli.js"
+ },
+ "bugs": {
+ "email": "lesion@autistici.org",
+ "url": "https://framagit.org/les/gancio/issues"
+ },
+ "homepage": "https://gancio.org",
+ "keywords": [
+ "AP",
+ "gancio",
+ "events",
+ "federation",
+ "activitypub",
+ "event",
+ "server",
+ "self-host",
+ "app"
+ ],
+ "license": "AGPL-3.0",
+ "repository": {
+ "type": "git",
+ "url": "https://framagit.org/les/gancio"
+ },
+ "resolutions": {
+ "prosemirror-model": "1.10.0"
}
}
diff --git a/pages/Admin.vue b/pages/Admin.vue
index 033113ff..13e1460b 100644
--- a/pages/Admin.vue
+++ b/pages/Admin.vue
@@ -1,69 +1,58 @@
- el-main
+ v-container
- el-tabs(v-model='tab')
+ v-tabs
//- SETTINGS
- el-tab-pane.pt-1
- template(slot='label')
- v-icon(name='cog')
- span.hidden-xs-only {{$t('common.settings')}}
+ v-tab {{$t('common.settings')}}
+ v-tab-item
Settings
//- USERS
- el-tab-pane.pt-1
- template(slot='label')
- v-icon(name='users')
- span.hidden-xs-only.ml-1 {{$t('common.users')}}
- el-badge(v-show='unconfirmedUsers.length>0' :value='unconfirmedUsers.length')
+ v-tab
+ v-badge(:value='unconfirmedUsers.length' :content='unconfirmedUsers.length') {{$t('common.users')}}
+ v-tab-item
Users(:users='users')
//- PLACES
- el-tab-pane.pt-1
- template(slot='label')
- v-icon(name='map-marker-alt')
- span.hidden-xs-only.ml-1 {{$t('common.places')}}
+ v-tab {{$t('common.places')}}
+ v-tab-item
Places
//- EVENTS
- el-tab-pane.pt-1
- template(slot='label')
- v-icon(name='calendar')
- span.hidden-xs-only.ml-1 {{$t('common.events')}}
- el-badge(v-show='events.length>0' :value='events.length')
+ v-tab
+ v-badge(:content='events.length') {{$t('common.events')}}
+ v-tab-item
p {{$t('admin.event_confirm_description')}}
- el-table(:data='paginatedEvents' small primary-key='id' v-loading='loading')
- el-table-column(:label='$t("common.name")' width='300')
- template(slot-scope='data') {{data.row.title}}
- el-table-column(:label='$t("common.where")' width='250')
- template(slot-scope='data') {{data.row.place.name}}
- el-table-column(:label='$t("common.confirm")' width='250')
- template(slot-scope='data')
- el-button-group
- el-button(type='primary' @click='confirm(data.row.id)' size='mini') {{$t('common.confirm')}}
- el-button(type='success' @click='preview(data.row.id)' size='mini') {{$t('common.preview')}}
- client-only
- el-pagination(v-if='events.length>perPage' :page-size='perPage' :currentPage.sync='eventPage' :total='events.length')
+ v-data-table(
+ :items='events'
+ :headers='eventHeaders'
+ )
+ //- el-table-column(:label='$t("common.name")' width='300')
+ //- template(slot-scope='data') {{data.row.title}}
+ //- el-table-column(:label='$t("common.where")' width='250')
+ //- template(slot-scope='data') {{data.row.place.name}}
+ //- el-table-column(:label='$t("common.confirm")' width='250')
+ //- template(slot-scope='data')
+ //- el-button-group
+ //- el-button(type='primary' @click='confirm(data.row.id)' size='mini') {{$t('common.confirm')}}
+ //- el-button(type='success' @click='preview(data.row.id)' size='mini') {{$t('common.preview')}}
+ //- client-only
+ //- el-pagination(v-if='events.length>perPage' :page-size='perPage' :currentPage.sync='eventPage' :total='events.length')
//- ANNOUNCEMENTS
- el-tab-pane.pt-1
- template(slot='label')
- v-icon(name='bullhorn')
- span.hidden-xs-only.ml-1 {{$t('common.announcements')}}
+ v-tab {{$t('common.announcements')}}
+ v-tab-item
Announcement
//- FEDERATION
- el-tab-pane.pt-1
- template(slot='label')
- v-icon(name='network-wired')
- span.hidden-xs-only.ml-1 {{$t('common.federation')}}
+ v-tab {{$t('common.federation')}}
+ v-tab-item
Federation
//- MODERATION
- el-tab-pane.pt-1(v-if='settings.enable_federation')
- template(slot='label')
- v-icon(name='vector-square')
- span.hidden-xs-only.ml-1 {{$t('common.moderation')}}
+ v-tab(v-if='settings.enable_federation') {{$t('common.moderation')}}
+ v-tab-item
Moderation
@@ -93,26 +82,14 @@ export default {
},
data () {
return {
- perPage: 10,
- eventPage: 1,
description: '',
- events: [],
- loading: false,
- tab: '0',
- open: true
+ events: []
}
},
- head () {
- return { title: `${this.settings.title} - ${this.$t('common.admin')}` }
- },
computed: {
...mapState(['settings']),
unconfirmedUsers () {
return this.users.filter(u => !u.is_active)
- },
- paginatedEvents () {
- return this.events.slice((this.eventPage - 1) * this.perPage,
- this.eventPage * this.perPage)
}
},
methods: {
@@ -133,6 +110,9 @@ export default {
} catch (e) {
}
}
+ },
+ head () {
+ return { title: `${this.settings.title} - ${this.$t('common.admin')}` }
}
}
diff --git a/pages/Login.vue b/pages/Login.vue
index d874dc68..159c94c7 100644
--- a/pages/Login.vue
+++ b/pages/Login.vue
@@ -1,24 +1,33 @@
- el-main
- el-card
- h4(slot='header').text-center {{$t('common.login')}}
- p(v-html="$t('login.description')")
- div(v-loading='loading')
+ v-row.mt-5(align='center' justify='center')
+ v-col(cols='12' md="6" lg="5" xl="4")
- el-input.mb-2(v-model='email' type='email' title='email' prefix-icon='el-icon-user'
- :placeholder='$t("common.email")' autocomplete='email' ref='email')
+ v-card
+ v-card-title {{$t('common.login')}}
+ v-card-subtitle(v-text="$t('login.description')")
- el-input.mb-1(v-model='password' @keyup.enter.native="submit"
- prefix-icon='el-icon-lock' name='password'
- type='password' :placeholder='$t("common.password")')
+ v-card-text
- div
- el-button.text-right(type='text' @click='forgot') {{$t('login.forgot_password')}}
+ v-text-field(v-model='email' type='email'
+ :placeholder='$t("common.email")'
+ ref='email')
- el-button.mt-5.mr-1(plain type="success"
- :disabled='disabled' @click='submit') {{$t('common.login')}}
- nuxt-link(to='/register' v-if='settings.allow_registration')
- el-button(type='primary' plain) {{$t('login.not_registered')}}
+ v-text-field(v-model='password'
+ type='password'
+ :placeholder='$t("common.password")')
+
+ v-card-actions
+ v-btn(color='success'
+ text
+ :disabled='disabled'
+ @click='submit') {{$t('common.login')}}
+
+ v-btn(v-if='settings.allow_registration'
+ to='/register'
+ text
+ color='orange') {{$t('login.not_registered')}}
+
+ v-btn(text @click='forgot') {{$t('login.forgot_password')}}
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 801426a1..74f1447f 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -1,51 +1,97 @@
- el-container#eventDetail.h-event
- el-header
+ v-card#eventDetail.h-event.d-inline-block-mx-auto
+ v-toolbar(prominent)
+ v-list-item(two-line)
+ v-list-item-content
+ h2(v-text='event.title')
+ v-list-item-subtitle
+ time.dt-start(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")')
+ v-icon mdi-date
+ b {{event|when}}
+ small ({{event.start_datetime|from}})
+ v-list-item-subtitle
+ i.el-icon-location-outline
+ b.p-location {{event.place.name}}
+ span - {{event.place.address}}
- .title {{event.title}}
+ v-spacer
+ v-btn.mr-1(nuxt :to='`/event/${event.prev}`' color='primary' icon :disabled='!event.prev')
+ v-icon mdi-arrow-left
+ v-btn(nuxt :to='`/event/${event.next}`' color='primary' :disabled='!event.next' icon)
+ v-icon mdi-arrow-right
+ //- h2 {{event.title}}
+ //- v-toolbar-subtitle
- #arrow
- nuxt-link.mr-1(:to='`/event/${event.prev}`')
- el-button(circle plain size='small' icon='el-icon-arrow-left' :disabled='!event.prev')
- nuxt-link(:to='`/event/${event.next}`')
- el-button(circle plain size='small' :disabled='!event.next' icon='el-icon-arrow-right')
+ //- v-toolbar(prominent)
+ //- v-list-item
+ //- h3 {{event.title}}
+ //- v-row(justify='space-between')
+ v-col(cols='auto')
+ v-list-item(two-line)
+ v-list-item-content
+ v-list-item-title.headline(v-text='event.title')
+ v-list-item-subtitle
+ time.dt-start(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")')
+ v-icon mdi-date
+ b {{event|when}}
+ small ({{event.start_datetime|from}})
+ v-list-item-subtitle
+ i.el-icon-location-outline
+ b.p-location {{event.place.name}}
+ span - {{event.place.address}}
+ v-col
+ v-btn.mr-1(nuxt :to='`/event/${event.prev}`' color='primary' icon :disabled='!event.prev')
+ v-icon mdi-arrow-left
+ v-btn(nuxt :to='`/event/${event.next}`' color='primary' :disabled='!event.next' icon)
+ v-icon mdi-arrow-right
- el-main
- el-dialog.embedDialog(:visible.sync='showEmbed')
+ template(slot='extension')
+ h2 {{event.title}}
+ //- v-list-item
+ //- i.el-icon-location-outline
+ //- b.p-location {{event.place.name}}
+ //- span - {{event.place.address}}
+ //- v-spacer
+ //- v-chip.p-category.ml-1(v-for='tag in event.tags' :key='tag' small color='secondary') {{tag}}
+
+ v-card-text
+ v-dialog.embedDialog(:visible.sync='showEmbed')
h4(slot='title') {{$t('common.embed_title')}}
EmbedEvent(:event='event')
- el-row
- el-col.p-2(:sm='18' :xs="24")
+ //- v-row
+ v-col(sm="10")
- //- event image
- el-image.main_image.mb-3(:src='imgPath' v-if='event.image_path' fit='contain')
- div.loading(slot='placeholder')
- el-icon(name='loading')
+ //- event image
+ v-img.main_image.mb-3(
+ lazy
+ :src='imgPath'
+ :lazy-src='thumbImgPath'
+ v-if='event.image_path')
- pre.p-description(v-html='event.description')
- el-button.p-category.ml-1(type='text' plain round size='mini' v-for='tag in event.tags' :key='tag') {{tag}}
+ p.p-description(v-html='event.description')
+ v-btn.p-category.ml-1(type='text' plain round size='mini' v-for='tag in event.tags' :key='tag') {{tag}}
//- info & actions
- el-col.menu(:sm='6' :xs='24')
- el-menu.menu(router)
+ //- v-col
+ v-list
time.dt-start(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') {{event|when}}
{{event.start_datetime|from}}
p
i.el-icon-location-outline
b.p-location {{event.place.name}}
span - {{event.place.address}}
- el-divider {{$t('common.actions')}}
- el-menu-item(
+ v-divider {{$t('common.actions')}}
+ v-list-item(
v-clipboard:success='copyLink'
v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}}
- el-menu-item(@click='showEmbed=true') {{$t('common.embed')}}
+ v-list-item(@click='showEmbed=true') {{$t('common.embed')}}
- el-menu-item
+ v-list-item
a(:href='`${settings.baseurl}/api/event/${event.id}.ics`') {{$t('common.add_to_calendar')}}
EventAdmin(v-if='is_mine' :event='event')
- hr
+ //- hr
//- resources from fediverse
#resources.mt-1(v-if='settings.enable_federation')
@@ -54,22 +100,22 @@
small ✊ {{event.boost.length}}
p.p-2
- el-button(type='text' @click='showFollowMe=true') {{$t('event.interact_with_me')}}
+ v-btn(type='text' @click='showFollowMe=true') {{$t('event.interact_with_me')}}
span(v-if='settings.enable_resources && event.resources.length') - {{$tc('common.n_resources', event.resources.length)}}
- el-dialog(:visible.sync='showFollowMe' destroy-on-close)
+ v-dialog(:visible.sync='showFollowMe' destroy-on-close)
h4(slot='title') {{$t('common.follow_me_title')}}
FollowMe
- el-dialog.showResource#resourceDialog(:visible.sync='showResources' fullscreen
+ v-dialog.showResource#resourceDialog(:visible.sync='showResources' fullscreen
width='95vw'
destroy-on-close
@keydown.native.right='$refs.carousel.next()'
@keydown.native.left='$refs.carousel.prev()')
- el-carousel(:interval='10000' ref='carousel' arrow='always')
- el-carousel-item(v-for='attachment in selectedResource.data.attachment' :key='attachment.url')
- el-image(:src='attachment.url')
- el-card.mb-1(v-if='settings.enable_resources' v-for='resource in event.resources' :key='resource.id' :class='{disabled: resource.hidden}')
+ v-carousel(:interval='10000' ref='carousel' arrow='always')
+ v-carousel-item(v-for='attachment in selectedResource.data.attachment' :key='attachment.url')
+ v-img(:src='attachment.url')
+ v-card.mb-1(v-if='settings.enable_resources' v-for='resource in event.resources' :key='resource.id' :class='{disabled: resource.hidden}')
span
el-dropdown.mr-2(v-if='$auth.user && $auth.user.is_admin')
el-button(circle icon='el-icon-more' size='mini')
@@ -297,163 +343,162 @@ export default {
}
diff --git a/pages/event/eventAdmin.vue b/pages/event/eventAdmin.vue
index 03cbd4d1..a3c520d4 100644
--- a/pages/event/eventAdmin.vue
+++ b/pages/event/eventAdmin.vue
@@ -1,23 +1,23 @@
div
- el-divider {{$t('common.admin')}}
+ v-divider {{$t('common.admin')}}
- el-menu.menu
- el-menu-item
+ v-menu.menu
+ v-menu-item
div(v-if='event.is_visible' @click='toggle(false)') {{$t(`common.${event.parentId?'skip':'hide'}`)}}
div(v-else @click='toggle(false)') {{$t('common.confirm')}}
- el-menu-item(@click='$router.push(`/add/${event.id}`)') {{$t('common.edit')}}
- el-menu-item(v-if='!event.parentId' @click='remove(false)') {{$t('common.remove')}}
+ v-menu-item(@click='$router.push(`/add/${event.id}`)') {{$t('common.edit')}}
+ v-menu-item(v-if='!event.parentId' @click='remove(false)') {{$t('common.remove')}}
template(v-if='event.parentId')
- el-divider {{$t('event.recurrent')}}
+ v-divider {{$t('event.recurrent')}}
p.text-secondary
i.el-icon-refresh
small {{event|recurrentDetail}}
- el-menu-item(v-if='event.parent.is_visible' @click='toggle(true)') {{$t('common.pause')}}
- el-menu-item(v-else @click='toggle(true)') {{$t('common.start')}}
- el-menu-item(@click='$router.push(`/add/${event.parentId}`)') {{$t('common.edit')}}
- el-menu-item(@click='remove(true)') {{$t('common.remove')}}
+ v-menu-item(v-if='event.parent.is_visible' @click='toggle(true)') {{$t('common.pause')}}
+ v-menu-item(v-else @click='toggle(true)') {{$t('common.start')}}
+ v-menu-item(@click='$router.push(`/add/${event.parentId}`)') {{$t('common.edit')}}
+ v-menu-item(@click='remove(true)') {{$t('common.remove')}}
-
diff --git a/plugins/element-ui.js b/plugins/element-ui.js
deleted file mode 100644
index 0f80701c..00000000
--- a/plugins/element-ui.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import Vue from 'vue'
-import {
- Button, Select, Tag, Option, Table, FormItem, Card, Row, Col, Upload, Checkbox, RadioButton, RadioGroup,
- Form, Tabs, TabPane, Switch, Input, Loading, TimeSelect, Badge, ButtonGroup, Divider, Step, Steps, Radio, Main,
- TableColumn, ColorPicker, Pagination, Popover, Tooltip, Dialog, Image, Backtop, Collapse, CollapseItem, Link,
- Dropdown, DropdownMenu, DropdownItem, Submenu, PageHeader, Header, Icon, Alert, Autocomplete,
- Container, Footer, Timeline, TimelineItem, Menu, MenuItem, Carousel, CarouselItem
-} from 'element-ui'
-import locale from 'element-ui/lib/locale'
-
-export default ({ app, store }) => {
- locale.use(require(`element-ui/lib/locale/lang/${store.state.locale}`))
- Vue.use(Button)
- Vue.use(Carousel)
- Vue.use(CarouselItem)
- Vue.use(Autocomplete)
- Vue.use(Alert)
- Vue.use(Icon)
- Vue.use(Dropdown)
- Vue.use(Header)
- Vue.use(PageHeader)
- Vue.use(Submenu)
- Vue.use(DropdownItem)
- Vue.use(DropdownMenu)
- Vue.use(Main)
- Vue.use(Link)
- Vue.use(RadioButton)
- Vue.use(RadioGroup)
- Vue.use(Radio)
- Vue.use(Collapse)
- Vue.use(CollapseItem)
- Vue.use(Backtop)
- Vue.use(Divider)
- Vue.use(Image)
- Vue.use(Step)
- Vue.use(Steps)
- Vue.use(Checkbox)
- Vue.use(Upload)
- Vue.use(ButtonGroup)
- Vue.use(Row)
- Vue.use(Col)
- Vue.use(Badge)
- Vue.use(Dialog)
- Vue.use(Menu)
- Vue.use(MenuItem)
- Vue.use(Container)
- Vue.use(Timeline)
- Vue.use(TimelineItem)
- Vue.use(Footer)
- Vue.use(Tooltip)
- Vue.use(Popover)
- Vue.use(Card)
- Vue.use(Select)
- Vue.use(Tag)
- Vue.use(Input)
- Vue.use(Tabs)
- Vue.use(TabPane)
- Vue.use(Option)
- Vue.use(Switch)
- Vue.use(ColorPicker)
- Vue.use(Table)
- Vue.use(TableColumn)
- Vue.use(Pagination)
- Vue.use(FormItem)
- Vue.use(Form)
- Vue.use(TimeSelect)
- Vue.use(Loading.directive)
-}
diff --git a/plugins/vue-awesome.js b/plugins/vue-awesome.js
deleted file mode 100644
index 1eca8476..00000000
--- a/plugins/vue-awesome.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import Vue from 'vue'
-// https://fontawesome.com/icons?d=gallery
-//
-import 'vue-awesome/icons/lock'
-import 'vue-awesome/icons/user'
-import 'vue-awesome/icons/plus'
-import 'vue-awesome/icons/cog'
-import 'vue-awesome/icons/tools'
-import 'vue-awesome/icons/file-export'
-import 'vue-awesome/icons/sign-out-alt'
-import 'vue-awesome/icons/clock'
-import 'vue-awesome/icons/map-marker-alt'
-import 'vue-awesome/icons/file-alt'
-import 'vue-awesome/icons/image'
-import 'vue-awesome/icons/tag'
-import 'vue-awesome/icons/users'
-import 'vue-awesome/icons/calendar'
-import 'vue-awesome/icons/edit'
-import 'vue-awesome/icons/envelope-open-text'
-import 'vue-awesome/icons/user-secret'
-import 'vue-awesome/icons/question-circle'
-import 'vue-awesome/icons/share'
-import 'vue-awesome/icons/comment'
-import 'vue-awesome/icons/comments'
-import 'vue-awesome/icons/tags'
-import 'vue-awesome/icons/chevron-right'
-import 'vue-awesome/icons/chevron-left'
-import 'vue-awesome/icons/search'
-import 'vue-awesome/icons/times'
-import 'vue-awesome/icons/envelope'
-import 'vue-awesome/icons/calendar-day'
-import 'vue-awesome/icons/calendar-week'
-import 'vue-awesome/icons/calendar-alt'
-import 'vue-awesome/icons/network-wired'
-import 'vue-awesome/icons/rss'
-import 'vue-awesome/icons/bold'
-import 'vue-awesome/icons/italic'
-import 'vue-awesome/icons/strikethrough'
-import 'vue-awesome/icons/quote-right'
-import 'vue-awesome/icons/underline'
-import 'vue-awesome/icons/code'
-import 'vue-awesome/icons/paragraph'
-import 'vue-awesome/icons/list-ul'
-import 'vue-awesome/icons/list-ol'
-import 'vue-awesome/icons/heading'
-import 'vue-awesome/icons/link'
-import 'vue-awesome/icons/hands-helping'
-import 'vue-awesome/icons/question'
-import 'vue-awesome/icons/vector-square'
-import 'vue-awesome/icons/bullhorn'
-
-import Icon from 'vue-awesome/components/Icon'
-
-import VueClipboard from 'vue-clipboard2'
-
-export default () => {
- Vue.component('v-icon', Icon)
- Vue.use(VueClipboard)
-}
diff --git a/plugins/vue-clipboard.js b/plugins/vue-clipboard.js
new file mode 100644
index 00000000..e855400d
--- /dev/null
+++ b/plugins/vue-clipboard.js
@@ -0,0 +1,59 @@
+import Vue from 'vue'
+// https://fontawesome.com/icons?d=gallery
+// //
+// import 'vue-awesome/icons/lock'
+// import 'vue-awesome/icons/user'
+// import 'vue-awesome/icons/plus'
+// import 'vue-awesome/icons/cog'
+// import 'vue-awesome/icons/tools'
+// import 'vue-awesome/icons/file-export'
+// import 'vue-awesome/icons/sign-out-alt'
+// import 'vue-awesome/icons/clock'
+// import 'vue-awesome/icons/map-marker-alt'
+// import 'vue-awesome/icons/file-alt'
+// import 'vue-awesome/icons/image'
+// import 'vue-awesome/icons/tag'
+// import 'vue-awesome/icons/users'
+// import 'vue-awesome/icons/calendar'
+// import 'vue-awesome/icons/edit'
+// import 'vue-awesome/icons/envelope-open-text'
+// import 'vue-awesome/icons/user-secret'
+// import 'vue-awesome/icons/question-circle'
+// import 'vue-awesome/icons/share'
+// import 'vue-awesome/icons/comment'
+// import 'vue-awesome/icons/comments'
+// import 'vue-awesome/icons/tags'
+// import 'vue-awesome/icons/chevron-right'
+// import 'vue-awesome/icons/chevron-left'
+// import 'vue-awesome/icons/search'
+// import 'vue-awesome/icons/times'
+// import 'vue-awesome/icons/envelope'
+// import 'vue-awesome/icons/calendar-day'
+// import 'vue-awesome/icons/calendar-week'
+// import 'vue-awesome/icons/calendar-alt'
+// import 'vue-awesome/icons/network-wired'
+// import 'vue-awesome/icons/rss'
+// import 'vue-awesome/icons/bold'
+// import 'vue-awesome/icons/italic'
+// import 'vue-awesome/icons/strikethrough'
+// import 'vue-awesome/icons/quote-right'
+// import 'vue-awesome/icons/underline'
+// import 'vue-awesome/icons/code'
+// import 'vue-awesome/icons/paragraph'
+// import 'vue-awesome/icons/list-ul'
+// import 'vue-awesome/icons/list-ol'
+// import 'vue-awesome/icons/heading'
+// import 'vue-awesome/icons/link'
+// import 'vue-awesome/icons/hands-helping'
+// import 'vue-awesome/icons/question'
+// import 'vue-awesome/icons/vector-square'
+// import 'vue-awesome/icons/bullhorn'
+
+// import Icon from 'vue-awesome/components/Icon'
+
+import VueClipboard from 'vue-clipboard2'
+
+export default () => {
+ // Vue.component('v-icon', Icon)
+ Vue.use(VueClipboard)
+}
diff --git a/server/api/controller/settings.js b/server/api/controller/settings.js
index acb24311..8923b7f9 100644
--- a/server/api/controller/settings.js
+++ b/server/api/controller/settings.js
@@ -92,11 +92,11 @@ const settingsController = {
where: { key },
defaults: { value, is_secret }
})
-
if (!created) { setting.update({ value, is_secret }) }
settingsController[is_secret ? 'secretSettings' : 'settings'][key] = value
return true
} catch (e) {
+ debug(e)
return false
}
},
diff --git a/vuetify.options.js b/vuetify.options.js
new file mode 100644
index 00000000..b6e7b699
--- /dev/null
+++ b/vuetify.options.js
@@ -0,0 +1,14 @@
+// vuetify.options.js
+export default {
+ theme: {
+ dark: true,
+ themes: {
+ dark: {
+ primary: '#FF4500'
+ },
+ light: {
+ primary: '#FF4500'
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index ff4fb386..bfdd131e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -892,14 +892,6 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
-"@babel/runtime-corejs3@^7.8.3":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d"
- integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw==
- dependencies:
- core-js-pure "^3.0.0"
- regenerator-runtime "^0.13.4"
-
"@babel/runtime@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99"
@@ -1377,7 +1369,18 @@
lodash "^4.17.15"
nanoid "^2.1.11"
-"@nuxtjs/axios@^5.11.0", "@nuxtjs/axios@^5.9.5":
+"@nuxtjs/axios@^5.12.0":
+ version "5.12.0"
+ resolved "https://registry.yarnpkg.com/@nuxtjs/axios/-/axios-5.12.0.tgz#50692340e64ec838f167d292d59b1cc2a0e2dbef"
+ integrity sha512-VQI9Nnf12jWknldrgCNGzCQxnWO3/CvMwrkWKNUr3WtGYuOKryUOd1XXxDbaJmopfX4SGjKvDL1G6qTkWLiPew==
+ dependencies:
+ "@nuxtjs/proxy" "^2.0.0"
+ axios "^0.19.2"
+ axios-retry "^3.1.8"
+ consola "^2.14.0"
+ defu "^2.0.4"
+
+"@nuxtjs/axios@^5.9.5":
version "5.11.0"
resolved "https://registry.yarnpkg.com/@nuxtjs/axios/-/axios-5.11.0.tgz#27d7297a69e11c39039b9cacac61e2e0d0e00f1f"
integrity sha512-6M87KUXWWlAjRIwqBTXoollTwsUDnf8bdOR3qY1cVggvUP4hYgb2Oby7/Jr0u7bWGyb+/GuagwBBtubGTLsoyA==
@@ -1410,6 +1413,18 @@
consola "^2.11.3"
http-proxy-middleware "^1.0.4"
+"@nuxtjs/vuetify@^1.11.2":
+ version "1.11.2"
+ resolved "https://registry.yarnpkg.com/@nuxtjs/vuetify/-/vuetify-1.11.2.tgz#fefa861d98c021e10dd579a5b91b34b3fb49dc99"
+ integrity sha512-8+k/PQG37OAoXvXgKE+BkBQXaoBCz9odK8oPYA4lwmxQ0ekHnh4PFrU/6Fr+OeVHbQbynbuMZnkF9aWxDsTqug==
+ dependencies:
+ deepmerge "^4.2.2"
+ fibers "^4.0.3"
+ sass "^1.26.5"
+ sass-loader "^8.0.2"
+ vuetify "^2"
+ vuetify-loader "^1.4.3"
+
"@nuxtjs/youch@^4.2.3":
version "4.2.3"
resolved "https://registry.yarnpkg.com/@nuxtjs/youch/-/youch-4.2.3.tgz#36f8b22df5a0efaa81373109851e1d857aca6bed"
@@ -1862,7 +1877,7 @@ acorn@^6.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
-acorn@^7.1.1, acorn@^7.2.0:
+acorn@^7.1.1, acorn@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==
@@ -2925,6 +2940,21 @@ cheerio@^0.22.0:
lodash.reject "^4.4.0"
lodash.some "^4.4.0"
+"chokidar@>=2.0.0 <4.0.0":
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1"
+ integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.4.0"
+ optionalDependencies:
+ fsevents "~2.1.2"
+
chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
@@ -3093,6 +3123,15 @@ cliui@^6.0.0:
strip-ansi "^6.0.0"
wrap-ansi "^6.2.0"
+clone-deep@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
+ dependencies:
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.2"
+ shallow-clone "^3.0.0"
+
clone-response@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
@@ -3398,16 +3437,16 @@ core-js-compat@^3.6.2:
browserslist "^4.8.5"
semver "7.0.0"
-core-js-pure@^3.0.0:
- version "3.6.5"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
- integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
-
core-js@^2.4.0, core-js@^2.6.5:
version "2.6.11"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
+core-js@^3.4.4:
+ version "3.6.5"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
+ integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
+
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -3783,7 +3822,12 @@ datauri@^2.0.0:
image-size "^0.7.3"
mimer "^1.0.0"
-date-fns@^2.14.0, date-fns@^2.6.0:
+date-fns@^2.15.0:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f"
+ integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==
+
+date-fns@^2.6.0:
version "2.14.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.14.0.tgz#359a87a265bb34ef2e38f93ecf63ac453f9bc7ba"
integrity sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==
@@ -3793,10 +3837,10 @@ dayjs@^1.8.16:
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.28.tgz#37aa6201df483d089645cb6c8f6cef6f0c4dbc07"
integrity sha512-ccnYgKC0/hPSGXxj7Ju6AV/BP4HUkXC2u15mikXT5mX9YorEaoi1bEKOmAqdkJHN4EEkmAf97SpH66Try5Mbeg==
-dayjs@^1.8.29:
- version "1.8.29"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.29.tgz#5d23e341de6bfbd206c01136d2fb0f01877820f5"
- integrity sha512-Vm6teig8ZWK7rH/lxzVGxZJCljPdmUr6q/3f4fr5F0VWNGVkZEjZOQJsAN8hUHUqn+NK4XHNEpJZS1MwLyDcLw==
+dayjs@^1.8.30:
+ version "1.8.30"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.30.tgz#d3b314d3ccdc179015d915fd3c6e14422c026378"
+ integrity sha512-5s5IGuP5bVvIbOWkEDcfmXsUj24fZW1NMHVVSdSFF/kW8d+alZcI9SpBKC+baEyBe+z3fUp17y75ulstv5swUw==
de-indent@^1.0.2:
version "1.0.2"
@@ -3836,13 +3880,6 @@ decamelize@^1.0.0, decamelize@^1.2.0:
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-decamelize@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851"
- integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==
- dependencies:
- xregexp "^4.2.4"
-
decimal.js@^10.2.0:
version "10.2.0"
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231"
@@ -4251,10 +4288,10 @@ elliptic@^6.0.0, elliptic@^6.5.2:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
-email-templates@^7.0.5:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-7.0.5.tgz#0b31918d97edca2b6ae6526ddf9eedfb7ff000c4"
- integrity sha512-fkq/J7gW/+IU1PIl2R2udGaLYrTz7LKCpFkfCEYIzYRHP7e8LYfFYY1+kw/7YEPEvkizBEHEDIl+o3QJddBUug==
+email-templates@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-7.1.0.tgz#d10dad8ae673e06eaf1bdff2c179ae39dc31ae82"
+ integrity sha512-cO+6RgrFk1CPqm1y8UbSRyjZ4mrtk3FleT7IR7l82EbXfwnP2qSo94KDIeacklR4+oFktep2Z6ulkUp5Cf+UNw==
dependencies:
"@ladjs/i18n" "^3.0.10"
"@sindresorhus/is" "^2.1.1"
@@ -4543,7 +4580,7 @@ eslint-plugin-import@^2.22.0:
resolve "^1.17.0"
tsconfig-paths "^3.9.0"
-eslint-plugin-jest@^23.10.0, eslint-plugin-jest@^23.17.1:
+eslint-plugin-jest@^23.10.0:
version "23.17.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.17.1.tgz#c0f39ba78e0f33b7ee1ce4ec92b773e39026ea3f"
integrity sha512-/o36fw67qNbJGWbSBIBMfseMsNP/d88WUHAGHCi1xFwsNB3XXZGdvxbOw49j3iQz6MCW/yw8OeOsuQhi6mM5ZA==
@@ -4640,22 +4677,22 @@ eslint-template-visitor@^1.1.0:
espree "^6.1.1"
multimap "^1.0.2"
-eslint-utils@^2.0.0:
+eslint-utils@^2.0.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-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.2.0:
+eslint-visitor-keys@^1.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@^7.4.0:
- version "7.4.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.4.0.tgz#4e35a2697e6c1972f9d6ef2b690ad319f80f206f"
- integrity sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==
+eslint@^7.5.0:
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135"
+ integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==
dependencies:
"@babel/code-frame" "^7.0.0"
ajv "^6.10.0"
@@ -4665,9 +4702,9 @@ eslint@^7.4.0:
doctrine "^3.0.0"
enquirer "^2.3.5"
eslint-scope "^5.1.0"
- eslint-utils "^2.0.0"
- eslint-visitor-keys "^1.2.0"
- espree "^7.1.0"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^1.3.0"
+ espree "^7.2.0"
esquery "^1.2.0"
esutils "^2.0.2"
file-entry-cache "^5.0.1"
@@ -4681,7 +4718,7 @@ eslint@^7.4.0:
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
- lodash "^4.17.14"
+ lodash "^4.17.19"
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
@@ -4708,14 +4745,14 @@ espree@^6.1.1, espree@^6.2.1:
acorn-jsx "^5.2.0"
eslint-visitor-keys "^1.1.0"
-espree@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz#a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c"
- integrity sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==
+espree@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69"
+ integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==
dependencies:
- acorn "^7.2.0"
+ acorn "^7.3.1"
acorn-jsx "^5.2.0"
- eslint-visitor-keys "^1.2.0"
+ eslint-visitor-keys "^1.3.0"
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
@@ -5000,6 +5037,13 @@ fault@^1.0.0:
dependencies:
format "^0.2.0"
+fibers@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/fibers/-/fibers-4.0.3.tgz#dda5918280a48507f5d8a96dd9a525e8f4a532e2"
+ integrity sha512-MW5VrDtTOLpKK7lzw4qD7Z9tXaAhdOmOED5RHzg3+HjUk+ibkjVW0Py2ERtdqgTXaerLkVkBy2AEmJiT6RMyzg==
+ dependencies:
+ detect-libc "^1.0.3"
+
figgy-pudding@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -5019,7 +5063,7 @@ file-entry-cache@^5.0.1:
dependencies:
flat-cache "^2.0.1"
-file-loader@^4.3.0:
+file-loader@^4.0.0, file-loader@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af"
integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==
@@ -5439,7 +5483,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
dependencies:
is-glob "^4.0.1"
-glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -6135,10 +6179,10 @@ inquirer@^7.2.0:
strip-ansi "^6.0.0"
through "^2.3.6"
-inquirer@^7.3.0:
- version "7.3.0"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.0.tgz#aa3e7cb0c18a410c3c16cdd2bc9dcbe83c4d333e"
- integrity sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA==
+inquirer@^7.3.3:
+ version "7.3.3"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
+ integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
dependencies:
ansi-escapes "^4.2.1"
chalk "^4.1.0"
@@ -6146,7 +6190,7 @@ inquirer@^7.3.0:
cli-width "^3.0.0"
external-editor "^3.0.3"
figures "^3.0.0"
- lodash "^4.17.15"
+ lodash "^4.17.19"
mute-stream "0.0.8"
run-async "^2.4.0"
rxjs "^6.6.0"
@@ -6154,7 +6198,7 @@ inquirer@^7.3.0:
strip-ansi "^6.0.0"
through "^2.3.6"
-interpret@^1.4.0:
+interpret@^1.0.0, interpret@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
@@ -6649,10 +6693,10 @@ jsbn@~0.1.0:
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-jsdom@^16.2.2:
- version "16.2.2"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b"
- integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg==
+jsdom@^16.3.0:
+ version "16.3.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.3.0.tgz#75690b7dac36c67be49c336dcd7219bbbed0810c"
+ integrity sha512-zggeX5UuEknpdZzv15+MS1dPYG0J/TftiiNunOeNxSl3qr8Z6cIlQpN0IdJa44z9aFxZRIVqRncvEhQ7X5DtZg==
dependencies:
abab "^2.0.3"
acorn "^7.1.1"
@@ -6674,7 +6718,7 @@ jsdom@^16.2.2:
tough-cookie "^3.0.1"
w3c-hr-time "^1.0.2"
w3c-xmlserializer "^2.0.0"
- webidl-conversions "^6.0.0"
+ webidl-conversions "^6.1.0"
whatwg-encoding "^1.0.5"
whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0"
@@ -6846,6 +6890,11 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+klona@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/klona/-/klona-1.1.2.tgz#a79e292518a5a5412ec8d097964bff1571a64db0"
+ integrity sha512-xf88rTeHiXk+XE2Vhi6yj8Wm3gMZrygGdKjJqN8HkV+PwF/t50/LdAKHoHpPcxFAlmQszTZ1CugrK25S7qDRLA==
+
last-call-webpack-plugin@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
@@ -6908,6 +6957,21 @@ less@^3.11.3:
request "^2.83.0"
source-map "~0.6.0"
+less@^3.12.2:
+ version "3.12.2"
+ resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4"
+ integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==
+ dependencies:
+ tslib "^1.10.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ native-request "^1.0.5"
+ source-map "~0.6.0"
+
leven@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
@@ -7002,7 +7066,7 @@ loader-runner@^2.3.1, loader-runner@^2.4.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
-loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
+loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
@@ -7799,7 +7863,7 @@ nan@^2.12.1:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
-nanoid@^2.1.11, nanoid@^2.1.6:
+nanoid@^2.1.11:
version "2.1.11"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==
@@ -7831,6 +7895,11 @@ napi-build-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
+native-request@^1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856"
+ integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -8158,6 +8227,14 @@ nth-check@^1.0.2, nth-check@~1.0.1:
dependencies:
boolbase "~1.0.0"
+null-loader@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-3.0.0.tgz#3e2b6c663c5bda8c73a54357d8fa0708dc61b245"
+ integrity sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==
+ dependencies:
+ loader-utils "^1.2.3"
+ schema-utils "^1.0.0"
+
num2fraction@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
@@ -8701,10 +8778,10 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-pg-connection-string@^2.2.3:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.2.3.tgz#48e1158ec37eaa82e98dbcb7307103ec303fe0e7"
- integrity sha512-I/KCSQGmOrZx6sMHXkOs2MjddrYcqpza3Dtsy0AjIgBr/bZiPJRK9WhABXN1Uy1UDazRbi9gZEzO2sAhL5EqiQ==
+pg-connection-string@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.3.0.tgz#c13fcb84c298d0bfa9ba12b40dd6c23d946f55d6"
+ integrity sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==
pg-int8@1.0.1:
version "1.0.1"
@@ -8732,14 +8809,14 @@ pg-types@^2.1.0:
postgres-date "~1.0.4"
postgres-interval "^1.1.0"
-pg@^8.2.2:
- version "8.2.2"
- resolved "https://registry.yarnpkg.com/pg/-/pg-8.2.2.tgz#a8c2bbe1f20e67b11333a672b3bc2135338fd7e4"
- integrity sha512-Uni50U0W2CNPM68+zfC/1WWjSO3q/uBSF/Nl7D+1npZGsPSM4/EZt0xSMW2jox1Bn0EfDlnTWnTsM/TrSOtBEA==
+pg@^8.3.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/pg/-/pg-8.3.0.tgz#941383300d38eef51ecb88a0188cec441ab64d81"
+ integrity sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==
dependencies:
buffer-writer "2.0.0"
packet-reader "1.0.0"
- pg-connection-string "^2.2.3"
+ pg-connection-string "^2.3.0"
pg-pool "^3.2.1"
pg-protocol "^1.2.5"
pg-types "^2.1.0"
@@ -9726,10 +9803,10 @@ prosemirror-keymap@1.1.4, prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2:
prosemirror-state "^1.0.0"
w3c-keyname "^2.2.0"
-prosemirror-model@1.10.0, prosemirror-model@1.9.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.10.0, prosemirror-model@^1.8.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.9.1.tgz#8c08cf556f593c5f015548d2c1a6825661df087f"
- integrity sha512-Qblh8pm1c7Ll64sYLauwwzjimo/tFg1zW3Q3IWhKRhvfOEgRKqa6dC5pRrAa+XHOIjBFEYrqbi52J5bqA2dV8Q==
+prosemirror-model@1.10.0, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.10.0, prosemirror-model@^1.8.1:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.10.0.tgz#bb1101732bccacf336e23a36a8b045b865025fa2"
+ integrity sha512-xTMbbO2q4abs5lJdeRvk/SrftNfZlMdvChKziTiK+OKtP8LkQI8uw39u4S5zqyflrmW3Or6+qnyFPf1p4v2u1g==
dependencies:
orderedmap "^1.1.0"
@@ -10173,6 +10250,13 @@ readdirp@~3.4.0:
dependencies:
picomatch "^2.2.1"
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+ dependencies:
+ resolve "^1.1.6"
+
regenerate-unicode-properties@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
@@ -10552,6 +10636,35 @@ safe-regex@^2.1.1:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+sass-loader@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d"
+ integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==
+ dependencies:
+ clone-deep "^4.0.1"
+ loader-utils "^1.2.3"
+ neo-async "^2.6.1"
+ schema-utils "^2.6.1"
+ semver "^6.3.0"
+
+sass-loader@^9.0.2:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-9.0.2.tgz#847c9b4c95328ddc8c7d35cf28c9d6e54e59a90b"
+ integrity sha512-nphcum3jNI442njnrZ5wJgSNX5lfEOHOKHCLf+PrTIaleploKqAMUuT9CVKjf+lyi6c2MCGPHh1vb9nGsjnZJA==
+ dependencies:
+ klona "^1.1.1"
+ loader-utils "^2.0.0"
+ neo-async "^2.6.1"
+ schema-utils "^2.7.0"
+ semver "^7.3.2"
+
+sass@^1.19.0, sass@^1.26.5:
+ version "1.26.10"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.10.tgz#851d126021cdc93decbf201d1eca2a20ee434760"
+ integrity sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==
+ dependencies:
+ chokidar ">=2.0.0 <4.0.0"
+
sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -10614,7 +10727,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.1.3, semver@^7.2.1, semver@^7.3.2:
+semver@^7.1.2, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2:
version "7.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
@@ -10661,10 +10774,10 @@ sequelize-pool@^6.0.0:
resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-6.0.0.tgz#2b2f6570fb633ecb38a338c4fc266c0e42ce2af7"
integrity sha512-D/VfOX2Z+6JTWqM73lhcqMXp1X4CeqRNVMlndvbOMtyjFAZ2kYzH7rGFGFrLO1r+RZQdc/h+3zQL4nd3cclNLg==
-sequelize@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.3.0.tgz#4b1353174a4702ab0be1d991f9d872021e1a6bff"
- integrity sha512-aVZUvT0w1ebewlApFuaUJE/fJ7aTfIpMnwNM/Zgr29QnY0fT1t0EjXxl48Fwmfq3BHJogLMhfMTJRXJQaiaFVQ==
+sequelize@^6.3.3:
+ version "6.3.3"
+ resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.3.3.tgz#930ab26f9e928d9bf2fe1fe477b428a092fef063"
+ integrity sha512-WO/b1ehjSFKlBCHzwZoaPhoW3WyXXy9x74yPrOP8NpE67wzbv0dIucDO4a+THLVyl3lnv3nFMZdJRdkUgb/ZAw==
dependencies:
debug "^4.1.1"
dottie "^2.0.0"
@@ -10762,6 +10875,13 @@ sha1@^1.1.1:
charenc ">= 0.0.1"
crypt ">= 0.0.1"
+shallow-clone@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
+ dependencies:
+ kind-of "^6.0.2"
+
sharp@^0.25.4:
version "0.25.4"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.25.4.tgz#1a8e542144a07ab7e9316ab89de80182b827c363"
@@ -10806,6 +10926,15 @@ shell-quote@^1.6.1:
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
+shelljs@^0.8.3:
+ version "0.8.4"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2"
+ integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
sigmund@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
@@ -11520,10 +11649,10 @@ tinycolor2@^1.1.2:
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=
-tiptap-commands@^1.14.0:
- version "1.14.0"
- resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.14.0.tgz#1c34709637d9f34a09afaa0eb8f049898ae531c8"
- integrity sha512-qdNECIQVLItTaw8Rbr21qejAODTxUWdeJlk5Ym1RUcVhD7imZjn4XjHtfj99afibNz/xofsjW4xiwlgnBMTlDg==
+tiptap-commands@^1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.14.1.tgz#7c3c4d27e6d66701b2f308f79eee01ccde03e14a"
+ integrity sha512-8yUkcUgTvEZqzhCJdWN7sY4IB/7IAnDtk0gcfXODOXyf+i7fMj4E/k741jlPxYSUFgWWYZWGks29EG6KJ2IQvQ==
dependencies:
prosemirror-commands "^1.1.4"
prosemirror-inputrules "^1.1.2"
@@ -11532,12 +11661,12 @@ tiptap-commands@^1.14.0:
prosemirror-state "^1.3.3"
prosemirror-tables "^1.1.0"
prosemirror-utils "^0.9.6"
- tiptap-utils "^1.10.0"
+ tiptap-utils "^1.10.1"
-tiptap-extensions@^1.29.1:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.31.0.tgz#d1f42850e92599c3740ad3da822a667527b9e48f"
- integrity sha512-xE61fHBzBpEZ+JF90Z1bFopDMvw9XAIH4VIg56nXrBxm/bKznOXr7oZKqesRE/o3cmWnSTUnLXIZYEQlk37qjg==
+tiptap-extensions@^1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.31.1.tgz#7b6cbd334f0484699d035533e11a2d02a26ffd8d"
+ integrity sha512-fDaU+ghnK5/kTkS+HHn1TjljNv66y0ED1ppP1iszk7hmuBc1bo+XfFzhsViqcYi8QB9AeHzBEmvVF1fnKNar4A==
dependencies:
lowlight "^1.14.0"
prosemirror-collab "^1.2.2"
@@ -11548,23 +11677,23 @@ tiptap-extensions@^1.29.1:
prosemirror-transform "^1.2.6"
prosemirror-utils "^0.9.6"
prosemirror-view "^1.15.0"
- tiptap "^1.29.0"
- tiptap-commands "^1.14.0"
+ tiptap "^1.29.1"
+ tiptap-commands "^1.14.1"
-tiptap-utils@^1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.10.0.tgz#33858777369cd9e6a90b5468217b1b30cf3e7ac9"
- integrity sha512-5g3lKow8BP+4QerQu08c5nQcXhROD9gBvL108e76sMswJPNvyrCAiAje/F9C9Y9UWOqgTRcTLuXLOJqK9zZHoQ==
+tiptap-utils@^1.10.1:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.10.1.tgz#bb958fda0a00928e610bee0e004809bdc8827ddd"
+ integrity sha512-ET3khlkapIPDPuuNou5PhXsI9PE1O8khlqltoE1mcD2eMBQ+q/P/knJNasmBywkZYXJEqJlZSeVufRL0oEH2ZQ==
dependencies:
prosemirror-model "^1.10.0"
prosemirror-state "^1.3.3"
prosemirror-tables "^1.1.0"
prosemirror-utils "^0.9.6"
-tiptap@^1.27.1, tiptap@^1.29.0:
- version "1.29.0"
- resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.29.0.tgz#646cc013f5be1095e8ae1b63da40e4017e66955e"
- integrity sha512-W6UwiQbD2ybtU3Ac8XggPspx0wg0KXWrH93+BFuod6eTnVpZmXVeeymqHef16/aXGMmf+/aJiiY7a1Tvi+e6cg==
+tiptap@^1.29.1:
+ version "1.29.1"
+ resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.29.1.tgz#9a8d8b360ce53491556f535b47a9a631e3a1808f"
+ integrity sha512-clb92b4/Ej83/bGLCnV8V3vifFN99B1HOvlP9D0U3Ym0jKwnryvk285oWl7255D9bvjukSVwmx4vWnBIZmpGUA==
dependencies:
prosemirror-commands "1.1.4"
prosemirror-dropcursor "1.3.2"
@@ -11574,8 +11703,8 @@ tiptap@^1.27.1, tiptap@^1.29.0:
prosemirror-model "1.10.0"
prosemirror-state "1.3.3"
prosemirror-view "1.15.0"
- tiptap-commands "^1.14.0"
- tiptap-utils "^1.10.0"
+ tiptap-commands "^1.14.1"
+ tiptap-utils "^1.10.1"
titleize@^2.1.0:
version "2.1.0"
@@ -12172,12 +12301,21 @@ void-elements@^2.0.1:
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
-vue-awesome@^4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/vue-awesome/-/vue-awesome-4.0.2.tgz#20b65f24486698e82599cf804d12d98300434000"
- integrity sha512-TE9hVwyVrGnBetO/MJwZ/7qLO6Vgr/WrDtIA7vwNryoLdA2jfRcKRw29KacpU5xj3wzZhHfYJ2xJLxfirhmH5Q==
+vue-awesome@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/vue-awesome/-/vue-awesome-4.1.0.tgz#1caf50eb1ed0193f3c5ba19cbde9bea356cbc78c"
+ integrity sha512-4n+hg8KIMrwjXV6sRHcRZd18Somih5j4Yk2ZOv95pnvDpzbBkIYW4ktfivhqgNt50m0zDjmeEWiy1iVLtcccfw==
dependencies:
- nanoid "^2.1.6"
+ core-js "^3.4.4"
+
+vue-cli-plugin-vuetify@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.0.7.tgz#fcb4f1655e7c9199ee40dcbf6465e2355fd074d5"
+ integrity sha512-4riK5bzyvkZ4CxpQk/Vl6z8n8tmJUhuxh+k8xc/MZRdCt9RxAm3G4SxcEweroqKGXg+CRRfhqysaEQVtd4D40Q==
+ dependencies:
+ null-loader "^3.0.0"
+ semver "^7.1.2"
+ shelljs "^0.8.3"
vue-client-only@^2.0.0:
version "2.0.0"
@@ -12281,6 +12419,19 @@ vue@^2.6.11:
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==
+vuetify-loader@^1.3.0, vuetify-loader@^1.4.3:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.6.0.tgz#05df0805b3ab2ff0de198109d34f9da3f69da667"
+ integrity sha512-1bx3YeZ712dT1+QMX+XSFlP0O5k5O5Ui9ysBBmUZ9bWkAEHWZJQI9soI+qG5qmeFxUC0L9QYMCIKP0hOL/pf3Q==
+ dependencies:
+ file-loader "^4.0.0"
+ loader-utils "^1.2.0"
+
+vuetify@^2:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.3.4.tgz#fdb03b3281d40a8420b0295ea865843abdc69792"
+ integrity sha512-vMtCNqv5BhrjfTfIhH2Lptoxx7z/Nu1NfBiZ2oCvI2QbTagMlhF5GMXgbnnyTGIjooFf/ozKznuMxk6tuI5cxw==
+
vuex@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.5.1.tgz#f1b8dcea649bc25254cf4f4358081dbf5da18b3d"
@@ -12343,7 +12494,7 @@ webidl-conversions@^5.0.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
-webidl-conversions@^6.0.0:
+webidl-conversions@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
@@ -12706,13 +12857,6 @@ xmlchars@^2.2.0:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
-xregexp@^4.2.4:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50"
- integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==
- dependencies:
- "@babel/runtime-corejs3" "^7.8.3"
-
xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
@@ -12777,13 +12921,13 @@ yargs@^13.1.0, yargs@^13.3.2:
y18n "^4.0.0"
yargs-parser "^13.1.2"
-yargs@^15.4.0:
- version "15.4.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2"
- integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw==
+yargs@^15.4.1:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
dependencies:
cliui "^6.0.0"
- decamelize "^3.2.0"
+ decamelize "^1.2.0"
find-up "^4.1.0"
get-caller-file "^2.0.1"
require-directory "^2.1.1"
From 411560c2181452881746a035692404678f954f16 Mon Sep 17 00:00:00 2001
From: les
Date: Tue, 28 Jul 2020 12:24:39 +0200
Subject: [PATCH 004/363] major UI modification
---
components/Calendar.vue | 4 +-
components/Confirm.vue | 86 ++++++++++++
components/Editor.vue | 27 +++-
components/Event.vue | 52 +++++--
components/Home.vue | 1 -
components/List.vue | 6 +-
components/Snackbar.vue | 10 +-
components/admin/Announcement.vue | 35 +++--
components/admin/Federation.vue | 79 +++++------
components/admin/Moderation.vue | 131 +++++++++---------
components/admin/Places.vue | 45 +++---
components/admin/Settings.vue | 28 +---
components/admin/Theme.vue | 85 ++++++++++++
components/admin/Users.vue | 65 ++++-----
layouts/default.vue | 27 +---
layouts/modal.vue | 28 +++-
pages/Admin.vue | 36 +++--
pages/Login.vue | 31 ++---
pages/Register.vue | 45 +++---
pages/add/_edit.vue | 219 ++++++++++++++++++------------
pages/announcement/_id.vue | 68 +++++-----
pages/event/_id.vue | 108 ++++++---------
pages/event/eventAdmin.vue | 52 +++----
pages/recover/_code.vue | 37 ++---
plugins/helpers.js | 13 ++
server/api/controller/settings.js | 15 +-
server/routes.js | 9 +-
27 files changed, 770 insertions(+), 572 deletions(-)
create mode 100644 components/Confirm.vue
create mode 100644 components/admin/Theme.vue
create mode 100644 plugins/helpers.js
diff --git a/components/Calendar.vue b/components/Calendar.vue
index 413c1924..9f714152 100644
--- a/components/Calendar.vue
+++ b/components/Calendar.vue
@@ -2,7 +2,7 @@
#calendar
v-calendar(
title-position='left'
- is-dark
+ :is-dark="settings['theme.is_dark']"
@update:from-page='updatePage'
:columns="$screens({ default: 1, lg: 2 })"
:locale='$i18n.locale'
@@ -29,7 +29,7 @@ export default {
},
computed: {
...mapGetters(['filteredEventsWithPast']),
- ...mapState(['tags', 'filters', 'in_past']),
+ ...mapState(['tags', 'filters', 'in_past', 'settings']),
// TODO: could be better
attributes () {
diff --git a/components/Confirm.vue b/components/Confirm.vue
new file mode 100644
index 00000000..4360a0ae
--- /dev/null
+++ b/components/Confirm.vue
@@ -0,0 +1,86 @@
+
+
+ v-dialog(v-model='show'
+ :color='options.color'
+ :title='title'
+ :max-width='options.width'
+ :style="{ zIndex: options.zIndex, position: 'absolute' }"
+ @keydown.esc='cancel')
+ v-card
+ v-card-title {{ title }}
+ v-card-text.pa-4(v-show='!!message') {{ message }}
+ v-card-actions.pt-0
+ v-spacer
+ v-btn(color='primary darken-1' text
+ @click='agree') {{$t('common.ok')}}
+ v-btn(color='secondary'
+ text @click='cancel') {{$t('common.cancel')}}
+
+
+
diff --git a/components/Editor.vue b/components/Editor.vue
index a1a2f89c..a5067d73 100644
--- a/components/Editor.vue
+++ b/components/Editor.vue
@@ -1,7 +1,17 @@
- .editor(:class='{ "with-border": border }')
- editor-menu-bubble(:editor='editor' :keep-in-bounds='true' v-slot='{ commands, isActive, getMarkAttrs, menu }')
- v-button-group.menububble(:class="{ 'is-active': menu.isActive }" :style="`left: ${menu.left}px; bottom: ${menu.bottom}px;`")
+ .editor
+ editor-menu-bar(:editor='editor' :keep-in-bounds='true' v-slot='{ commands, isActive, getMarkAttrs, menu }')
+ v-btn-toggle(dense)
+ v-btn(icon
+ :color="isActive.bold() && 'primary' || ''"
+ @click="commands.bold")
+ v-icon mdi-format-bold
+ v-btn(icon
+ :color="isActive.underline() && 'primary' || ''"
+ @click="commands.underline")
+ v-icon mdi-format-italic
+
+ //- v-button-group.menububble(:class="{ 'is-active': menu.isActive }" :style="`left: ${menu.left}px; bottom: ${menu.bottom}px;`")
v-popover(trigger='hover' placement='bottom-start')
v-btn.float-left(slot='reference' size='mini')
template
@@ -66,6 +76,7 @@ export default {
},
data () {
return {
+ options: [],
linkActive: false,
editor: null,
update: false
@@ -112,11 +123,17 @@ export default {
diff --git a/components/admin/Places.vue b/components/admin/Places.vue
index 67f0fd1c..f284d8ad 100644
--- a/components/admin/Places.vue
+++ b/components/admin/Places.vue
@@ -1,22 +1,26 @@
v-container
v-subheader(v-html="$t('admin.place_description')")
- v-form.mb-2
- //- el-form-item(:label="$t('common.name')")
- //- el-input.mr-1(:placeholder='$t("common.name")' v-model='place.name')
- v-text-field(
- :label="$t('common.name')"
- v-model='place.name'
- :placeholder='$t("common.name")')
- v-text-field(
- :label="$t('common.address')"
- v-model='place.address'
- :placeholder='$t("common.address")')
+ v-dialog
+ v-form.mb-2
+ //- el-form-item(:label="$t('common.name')")
+ //- el-input.mr-1(:placeholder='$t("common.name")' v-model='place.name')
+ v-text-field(
+ :label="$t('common.name')"
+ v-model='place.name'
+ :placeholder='$t("common.name")')
- v-btn(@click='savePlace') {{$t('common.save')}}
+ v-text-field(
+ :label="$t('common.address')"
+ v-model='place.address'
+ :placeholder='$t("common.address")')
+
+ v-btn(@click='savePlace') {{$t('common.save')}}
v-data-table(
+ @click:row='selectPlace'
+ :headers='headers'
:items='places')
diff --git a/components/admin/Users.vue b/components/admin/Users.vue
index 2989bb53..cce1134b 100644
--- a/components/admin/Users.vue
+++ b/components/admin/Users.vue
@@ -1,59 +1,47 @@
- v-container
+ v-card
+ v-card-title {{$t('common.users')}}
+ v-spacer
+ v-text-field(v-model='search'
+ append-icon='mdi-magnify'
+ label='Search',
+ single-line hide-details)
//- ADD NEW USER
- v-dialog(v-model='newUser' width='500')
- template(v-slot:activator="{ on }")
- v-btn(text v-on='on') mdi-plus {{$t('common.new_user')}}
+ v-dialog(v-model='newUserDialog' width='500')
v-card
- v-card-title {{$t('common.new_user')}}
+ v-card-title {{$t('common.new_user')}}
v-card-text
- v-form(inline @submit.native.prevent='create_user')
+ v-form
v-text-field(v-model='new_user.email'
- :label="$t('common.email')")
+ :label="$t('common.email')"
+ :rules="[validators.required('Email')]")
v-switch(v-model='new_user.is_admin' :label="$t('common.admin')" inset)
v-alert(type='info' :closable='false') {{$t('admin.user_add_help')}}
v-card-actions
- v-btn(@click='create_user' color='success' plain) {{$t('common.send')}}
+ v-btn(@click='createUser' color='primary') {{$t('common.send')}}
+ v-btn(@click='newUserDialog=false' color='danger' plain) {{$t('common.close')}}
//- USERS LIST
v-data-table(
:headers='headers'
- :items='users')
+ :items='users'
+ :search='search')
template(v-slot:item.actions='{item}')
v-btn(text small @click='toggle(item)'
:color='item.is_active?"warning":"success"') {{item.is_active?$t('common.deactivate'):$t('common.activate')}}
v-btn(text small @click='toggleAdmin(item)'
:color='item.is_admin?"warning":"error"') {{item.is_admin?$t('common.remove_admin'):$t('common.admin')}}
v-btn(text small @click='deleteUser(item)'
- :color='danger') {{$t('admin.delete_user')}}
+ color='error') {{$t('admin.delete_user')}}
- //- el-table-column(label='Email' width='220')
- //- template(slot-scope='data')
- //- el-popover(trigger='hover' :content='data.row.description' width='400')
- //- span(slot='reference') {{data.row.email}}
- //- el-table-column(:label="$t('common.actions')")
- //- template(slot-scope='data')
- //- div(v-if='data.row.id!==$auth.user.id')
- //- el-button-group
- //- el-button(size='mini'
- //- :type='data.row.is_active?"warning":"success"'
- //- @click='toggle(data.row)') {{data.row.is_active?$t('common.deactivate'):$t('common.activate')}}
- //- el-button(size='mini'
- //- :type='data.row.is_admin?"danger":"warning"'
- //- @click='toggleAdmin(data.row)') {{data.row.is_admin?$t('admin.remove_admin'):$t('common.admin')}}
- //- el-button(size='mini'
- //- type='danger'
- //- @click='delete_user(data.row)') {{$t('admin.delete_user')}}
- //- div(v-else)
- //- span {{$t('common.me')}}
- //- v-pagination(:page-size='perPage' :currentPage.sync='userPage' v-if='perPagemdi-plus-user {{$t('common.new_user')}}
diff --git a/layouts/modal.vue b/layouts/modal.vue
index 21a191b2..69e94b1c 100644
--- a/layouts/modal.vue
+++ b/layouts/modal.vue
@@ -1,9 +1,25 @@
- el-container#modal
- el-header
- .row.p-0.m-0
- .col.p-0
- .col-xl-5.col-lg-6.col-sm-10.col-xs-12.col-md-7.p-0
+ v-app(app)
+ Snackbar
+ Confirm
+ Nav
+
+ v-main(app)
+ v-scroll-y-transition(hide-on-leave)
nuxt
- .col.p-0
+
+ Footer
+
+
diff --git a/pages/Admin.vue b/pages/Admin.vue
index 13e1460b..06ee2ed2 100644
--- a/pages/Admin.vue
+++ b/pages/Admin.vue
@@ -8,6 +8,11 @@
v-tab-item
Settings
+ //- THEME
+ v-tab {{$t('common.theme')}}
+ v-tab-item
+ Theme
+
//- USERS
v-tab
v-badge(:value='unconfirmedUsers.length' :content='unconfirmedUsers.length') {{$t('common.users')}}
@@ -21,24 +26,13 @@
//- EVENTS
v-tab
- v-badge(:content='events.length') {{$t('common.events')}}
+ v-badge(:value='events.length') {{$t('common.events')}}
v-tab-item
- p {{$t('admin.event_confirm_description')}}
- v-data-table(
- :items='events'
- :headers='eventHeaders'
- )
- //- el-table-column(:label='$t("common.name")' width='300')
- //- template(slot-scope='data') {{data.row.title}}
- //- el-table-column(:label='$t("common.where")' width='250')
- //- template(slot-scope='data') {{data.row.place.name}}
- //- el-table-column(:label='$t("common.confirm")' width='250')
- //- template(slot-scope='data')
- //- el-button-group
- //- el-button(type='primary' @click='confirm(data.row.id)' size='mini') {{$t('common.confirm')}}
- //- el-button(type='success' @click='preview(data.row.id)' size='mini') {{$t('common.preview')}}
- //- client-only
- //- el-pagination(v-if='events.length>perPage' :page-size='perPage' :currentPage.sync='eventPage' :total='events.length')
+ v-container
+ v-subheader {{$t('admin.event_confirm_description')}}
+ v-data-table(
+ :items='events'
+ :headers='eventHeaders')
//- ANNOUNCEMENTS
v-tab {{$t('common.announcements')}}
@@ -65,10 +59,11 @@ import Settings from '../components/admin/Settings'
import Federation from '../components/admin/Federation'
import Moderation from '../components/admin/Moderation'
import Announcement from '../components/admin/Announcement'
+import Theme from '../components/admin/Theme'
export default {
name: 'Admin',
- components: { Users, Places, Settings, Federation, Moderation, Announcement },
+ components: { Users, Places, Settings, Federation, Moderation, Announcement, Theme },
middleware: ['auth'],
async asyncData ({ $axios, params, store }) {
try {
@@ -83,7 +78,10 @@ export default {
data () {
return {
description: '',
- events: []
+ events: [],
+ eventHeaders: [
+ { value: 'title', text: 'Title' }
+ ]
}
},
computed: {
diff --git a/pages/Login.vue b/pages/Login.vue
index 159c94c7..1eab67bd 100644
--- a/pages/Login.vue
+++ b/pages/Login.vue
@@ -7,18 +7,19 @@
v-card-subtitle(v-text="$t('login.description')")
v-card-text
+ v-form
+ v-text-field(v-model='email' type='email'
+ :rules='validators.email' autofocus
+ :placeholder='$t("common.email")'
+ ref='email')
- v-text-field(v-model='email' type='email'
- :placeholder='$t("common.email")'
- ref='email')
-
- v-text-field(v-model='password'
- type='password'
- :placeholder='$t("common.password")')
+ v-text-field(v-model='password'
+ :rules='validators.password'
+ type='password'
+ :placeholder='$t("common.password")')
v-card-actions
v-btn(color='success'
- text
:disabled='disabled'
@click='submit') {{$t('common.login')}}
@@ -32,12 +33,13 @@
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 74f1447f..f9595cc0 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -1,58 +1,27 @@
- v-card#eventDetail.h-event.d-inline-block-mx-auto
- v-toolbar(prominent)
+ v-card.h-event.eventDetail
+ //- .d-block
+ v-container
v-list-item(two-line)
v-list-item-content
- h2(v-text='event.title')
- v-list-item-subtitle
+ v-list-item-title
time.dt-start(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")')
v-icon mdi-date
b {{event|when}}
small ({{event.start_datetime|from}})
- v-list-item-subtitle
+ v-list-item-title
i.el-icon-location-outline
b.p-location {{event.place.name}}
span - {{event.place.address}}
+ h2 {{event.title}}
- v-spacer
- v-btn.mr-1(nuxt :to='`/event/${event.prev}`' color='primary' icon :disabled='!event.prev')
- v-icon mdi-arrow-left
- v-btn(nuxt :to='`/event/${event.next}`' color='primary' :disabled='!event.next' icon)
- v-icon mdi-arrow-right
- //- h2 {{event.title}}
- //- v-toolbar-subtitle
-
- //- v-toolbar(prominent)
- //- v-list-item
- //- h3 {{event.title}}
- //- v-row(justify='space-between')
- v-col(cols='auto')
- v-list-item(two-line)
- v-list-item-content
- v-list-item-title.headline(v-text='event.title')
- v-list-item-subtitle
- time.dt-start(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")')
- v-icon mdi-date
- b {{event|when}}
- small ({{event.start_datetime|from}})
- v-list-item-subtitle
- i.el-icon-location-outline
- b.p-location {{event.place.name}}
- span - {{event.place.address}}
- v-col
- v-btn.mr-1(nuxt :to='`/event/${event.prev}`' color='primary' icon :disabled='!event.prev')
- v-icon mdi-arrow-left
- v-btn(nuxt :to='`/event/${event.next}`' color='primary' :disabled='!event.next' icon)
- v-icon mdi-arrow-right
-
- template(slot='extension')
- h2 {{event.title}}
- //- v-list-item
- //- i.el-icon-location-outline
- //- b.p-location {{event.place.name}}
- //- span - {{event.place.address}}
- //- v-spacer
- //- v-chip.p-category.ml-1(v-for='tag in event.tags' :key='tag' small color='secondary') {{tag}}
+ .v-btn--absolute.v-btn--right.v-btn--top
+ v-btn.mr-1(nuxt icon outlined color='primary'
+ :to='`/event/${event.prev}`' :disabled='!event.prev')
+ v-icon mdi-arrow-left
+ v-btn(nuxt bottom right outlined icon color='primary'
+ :to='`/event/${event.next}`' :disabled='!event.next')
+ v-icon mdi-arrow-right
v-card-text
v-dialog.embedDialog(:visible.sync='showEmbed')
@@ -65,31 +34,23 @@
//- event image
v-img.main_image.mb-3(
lazy
+ contain
:src='imgPath'
:lazy-src='thumbImgPath'
v-if='event.image_path')
p.p-description(v-html='event.description')
- v-btn.p-category.ml-1(type='text' plain round size='mini' v-for='tag in event.tags' :key='tag') {{tag}}
+ v-chip.p-category.ml-1(small v-for='tag in event.tags' color='primary' outlined :key='tag') {{tag}}
//- info & actions
- //- v-col
- v-list
- time.dt-start(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') {{event|when}}
{{event.start_datetime|from}}
- p
- i.el-icon-location-outline
- b.p-location {{event.place.name}}
- span - {{event.place.address}}
- v-divider {{$t('common.actions')}}
- v-list-item(
- v-clipboard:success='copyLink'
- v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}}
+ v-btn(text color='primary'
+ v-clipboard:success='copyLink'
+ v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}}
- v-list-item(@click='showEmbed=true') {{$t('common.embed')}}
+ v-btn(@click='showEmbed=true' text color='primary') {{$t('common.embed')}}
- v-list-item
- a(:href='`${settings.baseurl}/api/event/${event.id}.ics`') {{$t('common.add_to_calendar')}}
- EventAdmin(v-if='is_mine' :event='event')
+ v-btn(:href='`${settings.baseurl}/api/event/${event.id}.ics`' text color='primary') {{$t('common.add_to_calendar')}}
+ EventAdmin(v-if='is_mine' :event='event')
//- hr
@@ -137,7 +98,6 @@ import { mapState } from 'vuex'
import EventAdmin from './eventAdmin'
import EmbedEvent from './embedEvent'
import FollowMe from '../../components/FollowMe'
-import { Message, MessageBox } from 'element-ui'
import moment from 'moment-timezone'
const htmlToText = require('html-to-text')
@@ -269,7 +229,7 @@ export default {
},
async remove () {
try {
- await MessageBox.confirm(this.$t('event.remove_confirmation'), this.$t('common.confirm'), {
+ await this.$root.$confirm(this.$t('event.remove_confirmation'), this.$t('common.confirm'), {
confirmButtonText: this.$t('common.ok'),
cancelButtonText: this.$t('common.cancel'),
type: 'error'
@@ -300,18 +260,18 @@ export default {
},
async blockUser (resource) {
try {
- await MessageBox.confirm(this.$t('admin.user_block_confirm'), {
+ await this.$root.$confirm(this.$t('admin.user_block_confirm'), {
confirmButtonText: this.$t('common.ok'),
cancelButtonText: this.$t('common.cancel'),
type: 'error'
})
await this.$axios.post('/instances/toggle_user_block', { ap_id: resource.ap_user.ap_id })
- Message({ message: this.$t('admin.user_blocked', { user: resource.ap_user.ap_id }), type: 'success', showClose: true })
+ this.$root.$message({ message: this.$t('admin.user_blocked', { user: resource.ap_user.ap_id }), type: 'success' })
} catch (e) { }
},
async deleteResource (resource) {
try {
- await MessageBox.confirm(this.$t('admin.delete_resource_confirm'),
+ await this.$root.$confirm(this.$t('admin.delete_resource_confirm'),
this.$t('common.confirm'), {
confirmButtonText: this.$t('common.ok'),
cancelButtonText: this.$t('common.cancel'),
@@ -322,7 +282,7 @@ export default {
} catch (e) { }
},
copyLink () {
- Message({ message: this.$t('common.copied'), type: 'success', showClose: true })
+ this.$root.$message({ message: this.$t('common.copied'), type: 'success' })
},
// TOFIX
resource_filter (value) {
@@ -343,7 +303,21 @@ export default {
}
diff --git a/components/Nav.vue b/components/Nav.vue
index a40aeaf7..4df67797 100644
--- a/components/Nav.vue
+++ b/components/Nav.vue
@@ -68,54 +68,6 @@
v-btn(icon v-clipboard:copy='feedLink' v-clipboard:success='copyLink')
v-icon(color='orange') mdi-rss
- //- el-menu-item(type='text' v-clipboard:copy='feedLink' v-clipboard:success='copyLink')
- //- v-icon(color='orange' name='rss')
-
- //- el-header#header
- //- img(src='/favicon.ico')
- //- span.ml-1.hidden-xs-only {{settings.title}}
- //- small.hidden-sm-only {{settings.description}}
-
- //- el-menu#menu(mode='horizontal' router )
- //- el-menu-item(v-if='could_add' index='/add')
- //- i.el-icon-plus
- //- span.hidden-xs-only {{$t('common.add_event')}}
-
- //- //- nuxt-link(to='/export')
- //- el-menu-item(index='/export')
- //- i.el-icon-share
- //- span.hidden-xs-only {{$t('common.share')}}
-
- //- el-submenu(v-if='settings.enable_trusted_instances && settings.trusted_instances && settings.trusted_instances.length' index=4)
- //- template(slot='title')
- //- i.el-icon-guide
- //- span.hidden-xs-only {{$t('common.places')}}
- //- el-menu-item(v-for='instance in settings.trusted_instances' :key='instance.name')
- //- a(:href='instance.url' target='_link')
- //- img.mr-1(:src='`${instance.url}/favicon.ico`' style='height: 25px;')
- //- span.ml-1 {{instance.label || instance.name}}
-
- //- el-menu-item(v-if='!$auth.loggedIn' index='/login')
- //- i.el-icon-user
- //- span.hidden-xs-only {{$t('common.login')}}
-
- //- el-submenu(v-if='$auth.loggedIn' index=3)
- //- template(slot='title')
- //- i.el-icon-user
- //- span.hidden-xs-only {{$t('common.user')}}
- //- el-menu-item(divided index='/settings')
- //- i.el-icon-s-tools
- //- span {{$t('common.settings')}}
- //- el-menu-item(v-if='$auth.user.is_admin' index='/admin')
- //- i.el-icon-s-operation
- //- span {{$t('common.admin')}}
- //- el-menu-item(@click='logout')
- //- i.el-icon-switch-button
- //- span {{$t('common.logout')}}
-
- //- el-menu-item(type='text' v-clipboard:copy='feedLink' v-clipboard:success='copyLink')
- //- v-icon(color='orange' name='rss')
-
-
-
diff --git a/components/Search.vue b/components/Search.vue
index 7f1c9ad3..ef5891f5 100644
--- a/components/Search.vue
+++ b/components/Search.vue
@@ -11,19 +11,38 @@
:label="$t('event.show_past')"
v-model='showPast')
- v-autocomplete#searchInput.mt-0(:placeholder='$t("common.filter")'
- v-model='search' :debounce='200'
- :fetch-suggestions='querySearch' clearable
- @select='addFilter')
- template(slot-scope='{ item }')
- span.float-left {{ item.label }}
- i.float-right.el-icon-place(v-if='item.type==="place"')
- i.float-right.el-icon-collection-tag(v-if='item.type==="tag"')
- #filters
- v-vtn.mr-1.bg-dark(type='text' round plain v-for='t in filters.tags' size='mini'
- :key='t' @click='removeTag(t)') {{t}}
- v-btn.mr-1.bg-dark.text-warning(type='text' round plain v-for='p in selectedPlaces' size='mini'
- :key='p.id' @click='removePlace(p.id)') {{p.name}}
+ p {{filter}}
+ v-autocomplete.mt-0(
+ :label='$t("common.filter")'
+ :items='keywords'
+ v-model='filter'
+ :search-input.sync='search'
+ item-text='label'
+ chips
+ multiple
+ )
+ template(v-slot:selection="data")
+ v-chip(v-bind="data.attrs"
+ :input-value="data.selected"
+ close
+ @click="data.select"
+ @click:close="remove(data.item)")
+ v-avatar(left)
+ v-icon
+ //-
+ //-
+ span {{ data.item.name }}
+ template(v-slot:item='{ item }')
+ v-list-item-content
+ v-list-item-title(v-text='item.label')
+ //- span.float-left {{ item.label }}
+ //- i.float-right.el-icon-place(v-if='item.type==="place"')
+ //- i.float-right.el-icon-collection-tag(v-if='item.type==="tag"')
+ //- #filters
+ //- v-vtn.mr-1.bg-dark(type='text' round plain v-for='t in filters.tags' size='mini'
+ //- :key='t' @click='removeTag(t)') {{t}}
+ //- v-btn.mr-1.bg-dark.text-warning(type='text' round plain v-for='p in selectedPlaces' size='mini'
+ //- :key='p.id' @click='removePlace(p.id)') {{p.name}}
diff --git a/layouts/error.vue b/layouts/error.vue
index d145ae0c..cba06d62 100644
--- a/layouts/error.vue
+++ b/layouts/error.vue
@@ -1,7 +1,7 @@
- v-container.p-4.text-center#error
- h1(v-if="error.statusCode === 404") {{error.message}}
- h1(v-else) An error occurred: {{error.message}}
+ v-container.p-4.text-center
+ v-alert(v-if="error.statusCode === 404") ¯\_(ツ)_/¯ {{error.message}}
+ v-calert(v-else) warning An error occurred: {{error.message}}
nuxt-link(to='/') Back to home
@@ -16,10 +16,3 @@ export default {
}
}
-
diff --git a/locales/it.json b/locales/it.json
index a335b5f2..1e1ef4fc 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -80,7 +80,9 @@
"delete": "Elimina",
"announcements": "Annunci",
"url": "Indirizzo URL",
- "place": "Luogo"
+ "place": "Luogo",
+ "tags": "Tags",
+ "theme": "Tema"
},
"login": {
"description": "Entrando puoi pubblicare nuovi eventi.",
diff --git a/nuxt.config.js b/nuxt.config.js
index cf9d92dc..0630fa5b 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -24,13 +24,14 @@ module.exports = {
/*
** Global CSS
*/
- // css: [
+ css: [
+ '@mdi/font/css/materialdesignicons.css'
// 'bootstrap/dist/css/bootstrap.min.css',
// 'element-ui/lib/theme-chalk/index.css',
// 'element-ui/lib/theme-chalk/display.css',
// '@/assets/theme/index.css'
// '@/assets/style.less'
- // ],
+ ],
/*
** Plugins to load before mounting the App
@@ -98,6 +99,7 @@ module.exports = {
'@nuxtjs/vuetify'
],
vuetify: {
+ defaultAssets: false,
optionsPath: './vuetify.options.js'
/* module options */
},
diff --git a/package.json b/package.json
index c68624bc..f0aac2d4 100644
--- a/package.json
+++ b/package.json
@@ -33,16 +33,14 @@
"axios": "^0.19.2",
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.3",
- "bootstrap": "^4.5.0",
"config": "^3.3.1",
"consola": "^2.13.0",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"cross-env": "^7.0.2",
"date-fns": "^2.15.0",
- "dayjs": "^1.8.30",
+ "dayjs": "^1.8.31",
"dompurify": "^2.0.11",
- "element-ui": "^2.13.2",
"email-templates": "^7.1.0",
"express": "^4.17.1",
"express-oauth-server": "^2.0.0",
@@ -58,26 +56,25 @@
"moment-timezone": "^0.5.31",
"morgan": "^1.10.0",
"multer": "^1.4.2",
- "nominatim-geocoder": "^0.1.4",
- "nuxt": "^2.13.3",
+ "nuxt": "^2.14.0",
"nuxt-express-module": "^0.0.11",
"pg": "^8.3.0",
"sequelize": "^6.3.3",
"sequelize-cli": "^6.2.0",
"sharp": "^0.25.4",
"sqlite3": "^5.0.0",
- "tiptap": "^1.29.1",
- "tiptap-extensions": "^1.31.1",
+ "tiptap": "^1.29.3",
+ "tiptap-extensions": "^1.31.3",
"to-ico": "^1.1.5",
"url": "^0.11.0",
"v-calendar": "^1.0.8",
- "vue-awesome": "^4.1.0",
"vue-clipboard2": "^0.3.1",
- "vue-i18n": "^8.18.2",
+ "vue-i18n": "^8.20.0",
"yargs": "^15.4.1"
},
"devDependencies": {
- "@nuxtjs/eslint-config": "^3.0.0",
+ "@mdi/font": "^5.4.55",
+ "@nuxtjs/eslint-config": "^3.1.0",
"@nuxtjs/vuetify": "^1.11.2",
"babel-eslint": "^10.1.0",
"eslint": "^7.5.0",
@@ -124,8 +121,5 @@
"repository": {
"type": "git",
"url": "https://framagit.org/les/gancio"
- },
- "resolutions": {
- "prosemirror-model": "1.10.0"
}
}
diff --git a/pages/Admin.vue b/pages/Admin.vue
index 06ee2ed2..5fe0579f 100644
--- a/pages/Admin.vue
+++ b/pages/Admin.vue
@@ -52,7 +52,6 @@
diff --git a/components/admin/Theme.vue b/components/admin/Theme.vue
index dcc12ed7..cf54032f 100644
--- a/components/admin/Theme.vue
+++ b/components/admin/Theme.vue
@@ -1,15 +1,14 @@
- v-card
+ v-container
v-card-title {{$t('common.theme')}}
v-card-text
- p {{settings['theme.primary']}}
//- LOGO
v-file-input.mt-5(ref='upload'
:label="$t('admin.favicon')"
@change='uploadLogo'
accept='image/*')
template(slot='append-outer')
- v-btn(small @click='resetLogo') Reset
+ v-btn(small text @click='resetLogo') Reset
v-img(:src='`${settings.baseurl}/favicon.ico?${logoKey}`'
max-width="100px" max-height="80px" contain)
@@ -18,8 +17,8 @@
:label="$t('admin.is_dark')")
v-row
- v-col
- v-menu(v-model='primaryMenu'
+ v-col(v-for='(color, i) in colors' :key='i')
+ v-menu(v-model='menu[i]'
:close-on-content-click="false"
transition="slide-x-transition"
offset-y
@@ -28,51 +27,103 @@
max-width="290px"
min-width="290px")
template(v-slot:activator='{ on }')
- v-text-field(
- :label="$t('event.from')"
- :value='primary_color'
- v-on='on'
- clearable
- readonly)
- v-color-picker(
- mode='hexa'
- :label="$t('common.primary_color')"
- v-model='primary_color')
+ v-text-field(:value='colors[i]'
+ v-on='on' clearable readonly)
+ v-color-picker(light @update:color='c => updateColor(i, c)')
+
+ v-dialog(v-model='linkModal' width='500')
+ v-card
+ v-card-title Add footer link
+ v-card-text
+ v-form(v-model='valid' ref='linkModalForm')
+ v-text-field(v-model='link.label'
+ :rules="[validators.required('label')]"
+ label='Label')
+ v-text-field(v-model='link.href'
+ :rules="[validators.required('href')]"
+ label='Href')
+ v-card-actions
+ v-spacer
+ v-btn(link @click='linkModal=false' color='error') {{$t('common.cancel')}}
+ v-btn(link @click='addFooterLink' color='primary' :disabled='!valid') {{$t('common.add')}}
+
+ label Footer links
+ v-list
+ v-list-item(link @click='linkModal = true')
+ v-list-item-content
+ v-list-item-title Add
+ v-list-item-subtitle a new link
+ v-list-item(v-for='link in settings.footerLinks'
+ :key='`${link.label}`'
+ :to='link.href')
+ v-list-item-content
+ v-list-item-title {{link.label}}
+ v-list-item-subtitle {{link.href}}
+ v-list-item-action
+ v-btn(icon color='error' @click.prevent='removeFooterLink(link)')
+ v-icon mdi-delete-forever
+
diff --git a/components/admin/Users.vue b/components/admin/Users.vue
index 556c9591..fd7880c9 100644
--- a/components/admin/Users.vue
+++ b/components/admin/Users.vue
@@ -6,24 +6,24 @@
append-icon='mdi-magnify'
label='Search',
single-line hide-details)
- v-btn(text color='primary' small @click='newUserDialog = true') mdi-plus-user {{$t('common.new_user')}}
+ v-btn(color='primary' small @click='newUserDialog = true') mdi-plus {{$t('common.new_user')}}
//- ADD NEW USER
- v-dialog(v-model='newUserDialog' width='500')
+ v-dialog(v-model='newUserDialog' :fullscreen="$vuetify.breakpoint.xsOnly")
v-card
v-card-title {{$t('common.new_user')}}
v-card-text
- v-form
+ v-form(v-model='valid')
v-text-field(v-model='new_user.email'
:label="$t('common.email')"
- :rules="[$validators.required('email')]")
+ :rules="$validators.email")
v-switch(v-model='new_user.is_admin' :label="$t('common.admin')" inset)
v-alert(type='info' :closable='false') {{$t('admin.user_add_help')}}
v-card-actions
v-spacer
v-btn(@click='newUserDialog=false' color='error') {{$t('common.cancel')}}
- v-btn(@click='createUser' color='primary') {{$t('common.send')}}
+ v-btn(@click='createUser' :disabled='!valid' color='primary') {{$t('common.send')}}
v-card-text
//- USERS LIST
@@ -51,6 +51,7 @@ export default {
data () {
return {
newUserDialog: false,
+ valid: false,
new_user: {
email: '',
is_admin: false
@@ -66,9 +67,7 @@ export default {
computed: mapState(['settings']),
methods: {
async deleteUser (user) {
- const ret = await this.$root.$confirm(this.$t('common.confirm'),
- this.$t('admin.delete_user_confirm'),
- { type: 'error' })
+ const ret = await this.$root.$confirm(this.$t('common.confirm'), this.$t('admin.delete_user_confirm'))
if (!ret) { return }
await this.$axios.delete(`/user/${user.id}`)
this.$root.$message({ message: this.$t('admin.user_remove_ok') })
diff --git a/layouts/default.vue b/layouts/default.vue
index 64785d6e..ca94470d 100644
--- a/layouts/default.vue
+++ b/layouts/default.vue
@@ -30,3 +30,9 @@ export default {
}
}
+
diff --git a/pages/Admin.vue b/pages/Admin.vue
index 71b67bed..a2b9e507 100644
--- a/pages/Admin.vue
+++ b/pages/Admin.vue
@@ -15,7 +15,7 @@
//- USERS
v-tab
- v-badge(:value='unconfirmedUsers.length' :content='unconfirmedUsers.length') {{$t('common.users')}}
+ v-badge(:value='!!unconfirmedUsers.length' :content='unconfirmedUsers.length') {{$t('common.users')}}
v-tab-item
Users(:users='users')
@@ -26,15 +26,9 @@
//- EVENTS
v-tab
- v-badge(:value='events.length') {{$t('common.events')}}
+ v-badge(:value='!!unconfirmedEvents.length' :content='unconfirmedEvents.length') {{$t('common.events')}}
v-tab-item
- v-container
- v-card-title {{$t('common.events')}}
- v-card-subtitle {{$t('admin.event_confirm_description')}}
- v-card-text
- v-data-table(
- :items='events'
- :headers='eventHeaders')
+ Events(:unconfirmedEvents='unconfirmedEvents')
//- ANNOUNCEMENTS
v-tab {{$t('common.announcements')}}
@@ -55,6 +49,7 @@
-
From b1e6ff99ebc6ca432e0c689759bfcfc1eaf1832f Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 7 Oct 2020 10:05:09 +0200
Subject: [PATCH 038/363] fix editor overflow
---
components/Editor.vue | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/components/Editor.vue b/components/Editor.vue
index 44072733..37fa8704 100644
--- a/components/Editor.vue
+++ b/components/Editor.vue
@@ -173,14 +173,16 @@ export default {
.editor {
// max-height: auto;
// height: auto;
+ overflow-y: auto;
+ scrollbar-width: thin;
+ scrollbar-color: #FF4500 transparent;
+ scroll-behavior: smooth;
font-family: sans-serif;
font-size: 1.1em;
border-color: currentColor;
border-style: solid;
border-width: 0 0 thin 0;
// background-color: rgba(255,255,255,0.04);
- height: auto;
-
.focused {
opacity: 1 !important;
}
@@ -190,14 +192,6 @@ export default {
// position: absolute;
}
- .content {
- overflow-y: auto;
- scrollbar-width: thin;
- scrollbar-color: #FF4500 transparent;
- scroll-behavior: smooth;
- // padding-top: 30px;
- // padding: 30px;
- }
.ProseMirror {
padding: 15px;
outline: 0;
From b0428b59831c388609589241905c434ab4779967 Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 7 Oct 2020 10:05:18 +0200
Subject: [PATCH 039/363] minor
---
components/Search.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/Search.vue b/components/Search.vue
index ef5891f5..a8b01bc4 100644
--- a/components/Search.vue
+++ b/components/Search.vue
@@ -18,7 +18,7 @@
v-model='filter'
:search-input.sync='search'
item-text='label'
- chips
+ chips rounded outlined single-line
multiple
)
template(v-slot:selection="data")
From 63a717e4ff83bc86070677a58670f86d0f9adf5f Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 7 Oct 2020 10:05:36 +0200
Subject: [PATCH 040/363] clean admin announce
---
components/admin/Announcement.vue | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/components/admin/Announcement.vue b/components/admin/Announcement.vue
index 27ddf7f1..86cac628 100644
--- a/components/admin/Announcement.vue
+++ b/components/admin/Announcement.vue
@@ -6,26 +6,24 @@
v-card
v-card-title {{$t('admin.new_announcement')}}
v-card-text
- v-form(v-model='valid')
+ v-form(v-model='valid' ref='announcement')
v-text-field(v-model='announcement.title' :label='$t("common.title")')
Editor.mt-2(v-model='announcement.announcement' border no-save style='max-height: 400px;')
v-card-actions
v-spacer
+ v-btn(@click='dialog=false' color='error') {{$t('common.cancel')}}
v-btn(@click='save' color='primary') {{$t(`common.${editing?'save':'send'}`)}}
- v-card-actions
- v-spacer
- v-btn(@click='dialog=true' text color='primary') {{$t('common.add')}}
+ v-btn(@click='openDialog' text color='primary') mdi-plus {{$t('common.add')}}
v-card-text
v-data-table(
:headers='headers'
:items='announcements')
template(v-slot:item.actions='{ item }')
v-btn(text small @click.stop='toggle(item)'
- :color='item.visible?"warning":"success"') {{item.visible?$t('common.deactivate'):$t('common.activate')}}
- v-btn(text small @click='edit(item)') {{$t('common.edit')}}
- v-btn(text small @click='remove(item)'
- color='error') {{$t('common.delete')}}
+ :color='item.visible?"warning":"success"') {{item.visible?$t('common.disable'):$t('common.enable')}}
+ v-btn(text small @click='edit(item)' color='primary') {{$t('common.edit')}}
+ v-btn(text small @click='remove(item)' color='error') {{$t('common.delete')}}
diff --git a/locales/en.json b/locales/en.json
index 1fba4252..f86d3c6e 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -205,7 +205,8 @@
"add_link": "Add link",
"footer_links": "Footer links",
"delete_footer_link_confirm": "Sure to remove this link?",
- "edit_place": "Edit place"
+ "edit_place": "Edit place",
+ "new_announcement": "New announcement"
},
"auth": {
"not_confirmed": "Not confirmed yet...",
diff --git a/pages/Admin.vue b/pages/Admin.vue
index a2b9e507..58851eaf 100644
--- a/pages/Admin.vue
+++ b/pages/Admin.vue
@@ -88,17 +88,11 @@ export default {
this.$router.push(`/event/${id}`)
},
async confirm (id) {
- try {
- this.loading = true
- await this.$axios.$get(`/event/confirm/${id}`)
- this.loading = false
- this.$root.$message({
- message: this.$t('event.confirmed'),
- type: 'success'
- })
- this.unconfirmedEvents = this.unconfirmedEvents.filter(e => e.id !== id)
- } catch (e) {
- }
+ this.loading = true
+ await this.$axios.$get(`/event/confirm/${id}`)
+ this.loading = false
+ this.$root.$message('event.confirmed', { color: 'succes' })
+ this.unconfirmedEvents = this.unconfirmedEvents.filter(e => e.id !== id)
}
},
head () {
diff --git a/pages/Login.vue b/pages/Login.vue
index bdf8f593..29a61f1d 100644
--- a/pages/Login.vue
+++ b/pages/Login.vue
@@ -65,7 +65,7 @@ export default {
this.loading = true
await this.$axios.$post('/user/recover', { email: this.email })
this.loading = false
- this.$root.$message({ message: this.$t('login.check_email'), color: 'success' })
+ this.$root.$message('login.check_email', { color: 'success' })
},
async submit (e) {
e.preventDefault()
@@ -78,9 +78,9 @@ export default {
data.append('client_id', 'self')
await this.$auth.loginWith('local', { data })
this.loading = false
- this.$root.$message({ message: this.$t('login.ok'), color: 'success' })
+ this.$root.$message('login.ok',{ color: 'success' })
} catch (e) {
- this.$root.$message({ message: this.$t('login.error'), color: 'error' })
+ this.$root.$message('login.error',{ color: 'error' })
this.loading = false
return
}
diff --git a/pages/Register.vue b/pages/Register.vue
index 33191980..3ea4f0d6 100644
--- a/pages/Register.vue
+++ b/pages/Register.vue
@@ -67,13 +67,11 @@ export default {
const user = await this.$axios.$post('/user/register', this.user)
// this is the first user registered
const first_user = user && user.is_admin && user.is_active
- this.$root.$message({
- message: first_user ? this.$t('register.first_user') : this.$t('register.complete')
- })
+ this.$root.$message(first_user ? 'register.first_user': 'register.complete')
this.$router.replace('/')
} catch (e) {
const error = get(e, 'response.data.errors[0].message', String(e))
- this.$root.$message({ message: this.$t(error), color: 'error' })
+ this.$root.$message(error, { color: 'error' })
}
this.loading = false
}
diff --git a/pages/about.vue b/pages/about.vue
index 07152bb0..532fac9c 100644
--- a/pages/about.vue
+++ b/pages/about.vue
@@ -25,10 +25,7 @@ export default {
methods: {
...mapActions(['setSetting']),
save () {
- this.$root.$message({
- type: 'success',
- message: this.$t('common.done')
- })
+ this.$root.$message('commmon.done', { color: 'success' })
this.setSetting({ key: 'about', value: this.about })
}
},
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index b59a38dd..4d878a44 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -447,15 +447,15 @@ export default {
this.updateMeta()
this.$router.replace('/')
this.loading = false
- this.$root.$message({ type: 'success', message: this.$auth.loggedIn ? this.$t('event.added') : this.$t('event.added_anon') })
+ this.$root.$message(this.$auth.loggedIn ? 'event.added' : 'event.added_anon', { color: 'success' })
} catch (e) {
console.error(e.response)
switch (e.request.status) {
case 413:
- this.$root.$message({ type: 'error', message: this.$t('event.image_too_big') })
+ this.$root.$message('event.image_too_big', { color: 'error' })
break
default:
- this.$root.$message({ type: 'error', message: e.response.data })
+ this.$root.$message(e.response.data, { color: 'error' })
}
this.loading = false
}
@@ -477,26 +477,5 @@ export default {
.container {
max-width: 1400px;
}
-/* #edit_page
- i {
- font-size: 1.3em;
- }
-
- #picker {
- max-width: 600px;
- }
-
- #edit_page .el-form-item {
- display: inline-flex;
- }
-
- .el-upload,
- .el-upload-dragger {
- overflow: hidden;
- text-align: center;
- margin: 0 auto;
- max-width: 80%;
- font-size: 2em;
- } */
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index e377d3bb..068ebb56 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -243,22 +243,22 @@ export default {
},
async blockUser (resource) {
try {
- const ret = await this.$root.$confirm(this.$t('common.confirm'), this.$t('admin.user_block_confirm', { user: resource.ap_user.ap_id }))
+ const ret = await this.$root.$confirm('admin.user_block_confirm', { user: resource.ap_user.ap_id })
if (!ret) { return }
await this.$axios.post('/instances/toggle_user_block', { ap_id: resource.ap_user.ap_id })
- this.$root.$message({ message: this.$t('admin.user_blocked', { user: resource.ap_user.ap_id }), type: 'success' })
+ this.$root.$message('admin.user_blocked', { user: resource.ap_user.ap_id, color: 'success' })
} catch (e) { }
},
async deleteResource (resource) {
try {
- const ret = await this.$root.$confirm(this.$t('common.confirm'), this.$t('admin.delete_resource_confirm'))
+ const ret = await this.$root.$confirm('admin.delete_resource_confirm')
if (!ret) { return }
await this.$axios.delete(`/resources/${resource.id}`)
this.event.resources = this.event.resources.filter(r => r.id !== resource.id)
} catch (e) { }
},
copyLink () {
- this.$root.$message({ message: this.$t('common.copied'), type: 'success' })
+ this.$root.$message('common.copied', { color: 'success' })
},
// TOFIX
resource_filter (value) {
@@ -285,163 +285,5 @@ export default {
margin: 0 auto;
max-height: 83vh;
}
-
}
-// time {
-// margin: 0rem 0rem 0rem 1rem;
-// display: inline-block;
-// }
-
-// #arrow {
-// position: absolute;
-// top: 1em;
-// right: 1em;
-// }
-
-// .el-header {
-// height: auto !important;
-// position: sticky;
-// padding-top: .4em;
-// top: 0px;
-// border-bottom: 1px solid lightgray;
-// z-index: 1;
-// overflow: hidden;
-// }
-
-// .embedDialog {
-// .el-dialog {
-// min-height: 500px;
-// max-width: 1000px;
-// width: 100%;
-// }
-// }
-
-// .followDialog {
-// .el-dialog {
-// min-height: 300px;
-// max-width: 600px;
-// width: 100%;
-// .el-dialog__body {
-// word-break: normal !important;
-// }
-// }
-// }
-
-// .head {
-// z-index: 1;
-// position: sticky;
-// top: 0px;
-// padding-top: 10px;
-// padding-bottom: 10px;
-// background-color: white;
-// border-bottom: 1px solid #e6e6e6;
-// }
-
-// .menu {
-// border-right: none;
-// background-color: transparent;
-// }
-
-// div.menu {
-// border-left: 1px solid #e6e6e6;
-// p {
-// margin: 1rem 0rem 1rem 1rem;
-// }
-// }
-
-// .title {
-// display: table-cell;
-// padding-right: 70px;
-// height: 2.1em;
-// font-size: 1.6rem;
-// color: #404246;
-// line-height: 1;
-// vertical-align: middle;
-// }
-
- // pre {
- // white-space: pre-line;
- // word-break: break-word;
- // font-size: 1em;
- // font-family: inherit;
-
- // p:empty {
- // min-height: 1em;
- // }
- // // font-family: BlinkMacSystemFont, -apple-system, Segoe UI, Roboto, Oxygen,
- // // Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial,
- // // sans-serif !important;
- // }
-
-// .main_image {
-// width: 100%;
-// transition: height .100s;
-// height: auto;
-
-// img {
-// // object-fit: contain;
-// margin: 0 auto;
-// max-height: 88vh;
-// }
-
-// .loading {
-// display: flex;
-// justify-content: center;
-// align-items: center;
-// font-size: 30px;
-// margin: 0 auto;
-// height: 100px;
-// }
-// }
-
-// #resources {
-// img {
-// max-width: 100%;
-// }
-// .card-header {
-// border-left: 3px solid transparent;
-// }
-// .card-header:hover {
-// border-left: 3px solid #888;
-// }
-// .invisible {
-// visibility: visible !important;
-// }
-// .disabled {
-// opacity: 0.5;
-// }
-// .previewImage {
-// display: flex;
-// flex-flow: wrap;
-// justify-content: space-evenly;
-// img {
-// margin-left: 5px;
-// margin-top: 5px;
-// object-fit: cover;
-// min-height: 100px;
-// max-width: 45%;
-// border-radius: 5px;
-// border: 1px solid #ccc;
-// }
-// }
-// }
-// .nextprev {
-// font-size: 10px;
-// margin-bottom: 5px;
-// }
-// }
-
-// @media only screen and (max-width: 768px) {
-// #eventDetail {
-// .menu {
-// border: 0px !important;
-// }
-
-// .title {
-// // font-size: 1.1em;
-// line-height: 1.4em;
-// color: black;
-// }
-// }
-// }
diff --git a/pages/event/embedEvent.vue b/pages/event/embedEvent.vue
index cda05a31..f8f799d0 100644
--- a/pages/event/embedEvent.vue
+++ b/pages/event/embedEvent.vue
@@ -28,7 +28,7 @@ export default {
},
methods: {
copyLink () {
- this.$root.$message({ message: this.$t('common.copied'), type: 'success' })
+ this.$root.$message('common.copied', { color: 'success' })
}
}
}
diff --git a/pages/export.vue b/pages/export.vue
index c03d97d7..ec639dde 100644
--- a/pages/export.vue
+++ b/pages/export.vue
@@ -129,8 +129,7 @@ export default {
},
methods: {
copyLink () {
- // Message({ message: this.$t('common.copied'), type: 'success', showClose: true })
- this.$root.$message({ message: this.$t('common.feed_url_copied') })
+ this.$root.$message('common.feed_url_copied')
},
add_notification () {
if (!this.notification.email) {
diff --git a/pages/recover/_code.vue b/pages/recover/_code.vue
index fe5c32d6..6bf8ee51 100644
--- a/pages/recover/_code.vue
+++ b/pages/recover/_code.vue
@@ -38,15 +38,10 @@ export default {
async change_password () {
try {
await this.$axios.$post('/user/recover_password', { recover_code: this.code, password: this.new_password })
- this.$root.$message({
- message: this.$t('common.password_updated')
- })
+ this.$root.$message('common.password_updated')
this.$router.replace('/login')
} catch (e) {
- this.$root.$message({
- type: 'warning',
- message: e
- })
+ this.$root.$message(e, { color: 'warning' })
}
}
},
diff --git a/pages/user_confirm/_code.vue b/pages/user_confirm/_code.vue
index 3b0e9306..b16a0745 100644
--- a/pages/user_confirm/_code.vue
+++ b/pages/user_confirm/_code.vue
@@ -34,16 +34,10 @@ export default {
async change_password () {
try {
await this.$axios.$post('/user/recover_password', { recover_code: this.code, password: this.new_password })
- this.$root.$message({
- type: 'success',
- message: this.$t('common.password_updated')
- })
+ this.$root.$message('common.password_updated', { color: 'success' })
this.$router.replace('/login')
} catch (e) {
- this.$root.$message({
- type: 'warning',
- message: e
- })
+ this.$root.$message(e, { color: 'warning' })
}
}
}
diff --git a/pages/user_confirm_pwd/_code.vue b/pages/user_confirm_pwd/_code.vue
index 5b9055ca..bfa3d682 100644
--- a/pages/user_confirm_pwd/_code.vue
+++ b/pages/user_confirm_pwd/_code.vue
@@ -33,16 +33,10 @@ export default {
async change_password () {
try {
await this.$axios.$post('/user/recover_password', { recover_code: this.code, password: this.new_password })
- this.$root.$message({
- type: 'success',
- message: this.$t('common.password_updated')
- })
+ this.$root.$message('common.password_updated', { color: 'succes' })
this.$router.replace('/login')
} catch (e) {
- this.$root.$message({
- type: 'warning',
- message: e
- })
+ this.$root.$message(e, { color: 'warning' })
}
}
}
From 663eff8474d6a826dad05ff36d02e369d0a29ceb Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 7 Oct 2020 11:29:40 +0200
Subject: [PATCH 058/363] fix place update
---
components/admin/Places.vue | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/components/admin/Places.vue b/components/admin/Places.vue
index 8d748f98..7fe0aa55 100644
--- a/components/admin/Places.vue
+++ b/components/admin/Places.vue
@@ -21,7 +21,7 @@
v-card-actions
v-spacer
v-btn(@click='dialog=false' color='warning') {{$t('common.cancel')}}
- v-btn(@click='savePlace' color='primary') {{$t('common.save')}}
+ v-btn(@click='savePlace' color='primary' :loading='loading' :disable='loading') {{$t('common.save')}}
v-card-text
v-data-table(
@@ -33,10 +33,11 @@
v-icon mdi-pencil
diff --git a/pages/Login.vue b/pages/Login.vue
index 29a61f1d..ed7d5252 100644
--- a/pages/Login.vue
+++ b/pages/Login.vue
@@ -7,7 +7,7 @@
v-card-subtitle(v-text="$t('login.description')")
v-card-text
- v-form(v-model='valid' ref='form')
+ v-form(v-model='valid' ref='form' lazy-validation)
v-text-field(v-model='email' type='email'
:rules='$validators.email' autofocus
:placeholder='$t("common.email")'
@@ -68,7 +68,7 @@ export default {
this.$root.$message('login.check_email', { color: 'success' })
},
async submit (e) {
- e.preventDefault()
+ if (!this.$refs.form.validate()) return
try {
this.loading = true
const data = new URLSearchParams()
diff --git a/pages/about.vue b/pages/about.vue
index 532fac9c..7259de24 100644
--- a/pages/about.vue
+++ b/pages/about.vue
@@ -25,7 +25,7 @@ export default {
methods: {
...mapActions(['setSetting']),
save () {
- this.$root.$message('commmon.done', { color: 'success' })
+ this.$root.$message('common.ok', { color: 'success' })
this.setSetting({ key: 'about', value: this.about })
}
},
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index 4d878a44..e8ae5b1f 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -5,55 +5,49 @@
v-card-text
v-form(v-model='valid')
- //- NOT LOGGED EVENT
+ //- Not logged event
div(v-if='!$auth.loggedIn')
v-divider {{$t('event.anon')}}
p(v-html="$t('event.anon_description')")
- //- title
- v-text-field.mb-3(v-model='event.title'
+ //- Title
+ v-text-field.mb-3(
+ @change='v => event.title = v'
+ :value = 'event.title'
:rules="[$validators.required('common.title')]"
- :label="$t('event.what_description')"
+ :label="$t('event.what_description')"
autofocus
ref='title')
- //- description
- //- span {{$t('event.description_description')}}
+ //- Description
Editor(
v-model='event.description'
- :label="$t('event.description_description')"
- style='max-height: 400px;')
+ :placeholder="$t('event.description_description')"
+ max-height='400px')
- //- tags
- v-combobox.mt-3(v-model='event.tags'
- chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint
- :delimiters="[',', ' ']"
- :items="tags.map(t => t.tag)"
- :label="$t('common.tags')")
-
- //- WHERE
+ //- Where
v-combobox.mt-2(v-model='event.place.name'
- :rules="[$validators.required()]"
+ :rules="[$validators.required('common.where')]"
:label="$t('common.where')"
:hint="$t('event.where_description')"
persistent-hint
:items="places"
item-text='name'
- @input='selectPlace')
- template(v-slot:item="{ item }")
- v-list
- v-list-item-content
+ @change='selectPlace')
+ //- template(v-slot:item="{ item }")
+ v-list-item(color='primary')
+ v-list-item-content(color='pink')
v-list-item-title {{item.name}}
v-list-item-subtitle {{item.address}}
v-text-field.mt-3(ref='address'
- :rules="[$validators.required()]"
+ :rules="[$validators.required('common.address')]"
:label="$t('common.address')"
- v-model='event.place.address'
+ @change="v => event.place.address = v"
+ :value="event.place.address"
:disabled='disableAddress')
- //- WHEN
- //- v-divider {{$t('common.when')}}
+ //- When
.text-center
v-btn-toggle(v-model="event.type" color='primary')
v-btn(value='normal' label="normal") {{$t('event.normal')}}
@@ -97,7 +91,7 @@
template(v-slot:activator='{ on }')
v-text-field(
:label="$t('event.from')"
- :rules="[$validators.required()]"
+ :rules="[$validators.required('event.from')]"
:value='time.start'
v-on='on'
clearable)
@@ -148,6 +142,13 @@
persistent-hint
accept='image/*')
+ //- tags
+ v-combobox.mt-3(v-model='event.tags'
+ chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint
+ :delimiters="[',', ' ']"
+ :items="tags.map(t => t.tag)"
+ :label="$t('common.tags')")
+
v-card-actions
v-spacer
v-btn(@click='done' :loading='loading' :disabled='!valid || loading || !date'
@@ -228,7 +229,7 @@ export default {
loading: false,
mediaUrl: '',
queryTags: '',
- disableAddress: true,
+ disableAddress: false,
frequencies: [
{ value: '1w', text: this.$t('event.each_week') },
{ value: '2w', text: this.$t('event.each_2w') },
@@ -360,12 +361,10 @@ export default {
return attributes
}
},
- // mounted () {
- // this.$refs.title.focus()
- // },
methods: {
...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']),
selectPlace (p) {
+ console.error('sono dentro selectePlace')
const place = p && this.places.find(place => place.id === p.id)
if (place && place.address) {
this.event.place.name = p.name
@@ -375,7 +374,7 @@ export default {
this.disableAddress = false
this.event.place.address = ''
}
- this.$nextTick(this.$refs.address.focus)
+ // this.$nextTick(() => this.$refs.address.focus() )
},
// recurrentDays () {
// if (this.event.type !== 'recurrent' || !this.date || !this.date.length) { return }
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 427cee52..35f55942 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -1,59 +1,72 @@
v-card.h-event.eventDetail
v-container
- v-list-item(two-line)
- v-list-item-content
- v-list-item-title
- time.dt-start(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")')
- v-icon mdi-date
- b {{event|when}}
- small ({{event.start_datetime|from}})
- v-list-item-title
- b.p-location {{event.place.name}}
- span - {{event.place.address}}
- h2 {{event.title}}
- .v-btn--absolute.v-btn--right.v-btn--top
- v-btn.mr-1(nuxt icon outlined color='primary'
- :to='`/event/${event.prev}`' :disabled='!event.prev')
- v-icon mdi-arrow-left
- v-btn(nuxt bottom right outlined icon color='primary'
- :to='`/event/${event.next}`' :disabled='!event.next')
- v-icon mdi-arrow-right
+ //- event admin controls
+ EventAdmin(v-if='is_mine' :event='event')
+
+ //- v-list-item(two-line)
+ //- v-list-item-content
+ .text-h5.text-sm-h4
+ b {{event.title}}
+ v-row
+ v-col.col-12.col-lg-9
+ //- TOFIX: avoid reflow
+ //- event image
+ v-img.main_image.mb-3(
+ contain
+ :src='imgPath'
+ :lazy-src='thumbImgPath'
+ v-if='event.image_path')
+ //- template(v-slot:placeholder)
+ //- v-row(
+ //- class="fill-height ma-0"
+ //- align="center"
+ //- justify="center")
+ //- v-progress-circular(indeterminate
+ //- color="grey lighten-5")
+
+ v-col.col-12.col-lg-3
+ v-card(color='secondary')
+ v-card-text.white--text
+ time.dt-start.text-h5(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")')
+ v-icon mdi-calendar
+ b.ml-2 {{event|when}}
+ p.subtitle-1 {{event.start_datetime|from}}
+
+ .text-h5
+ v-icon mdi-map-marker
+ b.p-location.ml-2 {{event.place.name}}
+ p.subtitle-1 {{event.place.address}}
+
+ //- info & actions
+ v-list
+ v-list-item(link)
+ v-list-item-content.primary--text.text-uppercase(
+ v-clipboard:success='copyLink'
+ v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}}
+
+ v-list-item(link)
+ v-list-item-content.primary--text.text-uppercase(@click='showEmbed=true' text color='primary') {{$t('common.embed')}}
+
+ v-list-item(link)
+ v-list-item-content.primary--text.text-uppercase(:href='`${settings.baseurl}/api/event/${event.id}.ics`' text color='primary') {{$t('common.add_to_calendar')}}
v-container
v-dialog(v-model='showEmbed')
- EmbedEvent(:event='event')
-
- //- TOFIX: avoid reflow
- //- event image
- v-img.main_image.mb-3(
- contain
- :src='imgPath'
- :lazy-src='thumbImgPath'
- v-if='event.image_path')
- //- template(v-slot:placeholder)
- //- v-row(
- //- class="fill-height ma-0"
- //- align="center"
- //- justify="center")
- //- v-progress-circular(indeterminate
- //- color="grey lighten-5")
+ EmbedEvent(:event='event' @close='showEmbed=false')
div.p-description(v-html='event.description')
v-chip.p-category.ml-1(small v-for='tag in event.tags' color='primary' outlined :key='tag') {{tag}}
- //- info & actions
- v-btn(text color='primary'
- v-clipboard:success='copyLink'
- v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}}
+ //- //- info & actions
+ //- v-btn(text color='primary'
+ //- v-clipboard:success='copyLink'
+ //- v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}}
- v-btn(@click='showEmbed=true' text color='primary') {{$t('common.embed')}}
+ //- v-btn(@click='showEmbed=true' text color='primary') {{$t('common.embed')}}
- v-btn(:href='`${settings.baseurl}/api/event/${event.id}.ics`' text color='primary') {{$t('common.add_to_calendar')}}
- EventAdmin(v-if='is_mine' :event='event')
-
- //- hr
+ //- v-btn(:href='`${settings.baseurl}/api/event/${event.id}.ics`' text color='primary') {{$t('common.add_to_calendar')}}
//- resources from fediverse
#resources.mt-1(v-if='settings.enable_federation')
@@ -61,11 +74,11 @@
small.mr-3 🔖 {{event.likes.length}}
small ✊ {{event.boost.length}}
- p.p-2
- v-btn(type='text' @click='showFollowMe=true') {{$t('event.interact_with_me')}}
- span(v-if='settings.enable_resources && event.resources.length') - {{$tc('common.n_resources', event.resources.length)}}
+ //- p.p-2
+ //- v-btn(type='text' @click='showFollowMe=true') {{$t('event.interact_with_me')}}
+ //- span(v-if='settings.enable_resources && event.resources.length') - {{$tc('common.n_resources', event.resources.length)}}
- v-dialog(v-model='showFollowMe' destroy-on-close max-width='500px')
+ //- v-dialog(v-model='showFollowMe' destroy-on-close max-width='500px')
h4(slot='title') {{$t('common.follow_me_title')}}
FollowMe(@close='showFollowMe=false' is-dialog)
@@ -102,6 +115,15 @@
span.previewImage(@click='showResource(resource)')
img(v-for='img in resource.data.attachment' :src='img.url')
+ //- Next/prev arrow
+ .text-center
+ v-btn.mr-2(nuxt icon outlined color='primary'
+ :to='`/event/${event.prev}`' :disabled='!event.prev')
+ v-icon mdi-arrow-left
+ v-btn(nuxt bottom right outlined icon color='primary'
+ :to='`/event/${event.next}`' :disabled='!event.next')
+ v-icon mdi-arrow-right
+
\ No newline at end of file
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index e8ae5b1f..6d0d47f0 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -1,9 +1,15 @@
v-container.container
v-card
- v-card-title {{edit?$t('common.edit_event'):$t('common.add_event')}}
+ v-card-title
+ h4 {{edit?$t('common.edit_event'):$t('common.add_event')}}
+ v-spacer
+ v-btn(link text color='primary' @click='openImportDialog=true') mdi-file-import {{$t('event.import_URL')}}
+ v-dialog(v-model='openImportDialog')
+ ImportDialog(@close='openImportDialog=false' @imported='eventImported')
+
v-card-text
- v-form(v-model='valid')
+ v-form(v-model='valid' ref='form' lazy-validation)
//- Not logged event
div(v-if='!$auth.loggedIn')
@@ -151,7 +157,7 @@
v-card-actions
v-spacer
- v-btn(@click='done' :loading='loading' :disabled='!valid || loading || !date'
+ v-btn(@click='done' :loading='loading' :disabled='!valid || loading'
color='primary') {{edit?$t('common.edit'):$t('common.send')}}
@@ -161,10 +167,11 @@ import _ from 'lodash'
import moment from 'dayjs'
import Editor from '@/components/Editor'
import List from '@/components/List'
+import ImportDialog from './ImportDialog'
export default {
name: 'NewEvent',
- components: { List, Editor },
+ components: { List, Editor, ImportDialog },
validate ({ store }) {
return (store.state.auth.loggedIn || store.state.settings.allow_anon_event)
},
@@ -211,6 +218,7 @@ export default {
valid: false,
dueDateMenu: false,
fromDateMenu: false,
+ openImportDialog: false,
event: {
type: 'normal',
place: { name: '', address: '' },
@@ -363,6 +371,10 @@ export default {
},
methods: {
...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']),
+ eventImported (event) {
+ console.error('sono dentro event imported', event)
+ this.event = event
+ },
selectPlace (p) {
console.error('sono dentro selectePlace')
const place = p && this.places.find(place => place.id === p.id)
@@ -386,6 +398,7 @@ export default {
this.event.image = {}
},
async done () {
+ if (!this.$refs.form.validate()) return
this.loading = true
let start_datetime, end_datetime
const [start_hour, start_minute] = this.time.start.split(':')
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 35f55942..e2f9e3c1 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -8,7 +8,7 @@
//- v-list-item(two-line)
//- v-list-item-content
.text-h5.text-sm-h4
- b {{event.title}}
+ b.p-name {{event.title}}
v-row
v-col.col-12.col-lg-9
//- TOFIX: avoid reflow
@@ -34,10 +34,10 @@
b.ml-2 {{event|when}}
p.subtitle-1 {{event.start_datetime|from}}
- .text-h5
+ .text-h5.p-location
v-icon mdi-map-marker
- b.p-location.ml-2 {{event.place.name}}
- p.subtitle-1 {{event.place.address}}
+ b.vcard.ml-2 {{event.place.name}}
+ p.adr {{event.place.address}}
//- info & actions
v-list
@@ -56,7 +56,7 @@
v-dialog(v-model='showEmbed')
EmbedEvent(:event='event' @close='showEmbed=false')
- div.p-description(v-html='event.description')
+ p.p-description.text-h6(v-html='event.description')
v-chip.p-category.ml-1(small v-for='tag in event.tags' color='primary' outlined :key='tag') {{tag}}
//- //- info & actions
diff --git a/server/api/index.js b/server/api/index.js
index 65c24baf..0cff1eb1 100644
--- a/server/api/index.js
+++ b/server/api/index.js
@@ -12,7 +12,7 @@ const apUserController = require('./controller/ap_user')
const resourceController = require('./controller/resource')
const oauthController = require('./controller/oauth')
const announceController = require('./controller/announce')
-
+const helpers = require('../helpers')
const storage = require('./storage')
const upload = multer({ storage })
@@ -87,6 +87,8 @@ api.put('/place', isAdmin, eventController.updatePlace)
*/
api.post('/event', hasPerm('event:write'), upload.single('image'), eventController.add)
api.put('/event', hasPerm('event:write'), upload.single('image'), eventController.update)
+api.get('/event/import', helpers.importURL)
+
// remove event
api.delete('/event/:id', hasPerm('event:remove'), eventController.remove)
@@ -103,13 +105,14 @@ api.delete('/event/notification/:code', eventController.delNotification)
api.get('/settings', settingsController.getAllRequest)
api.post('/settings', isAdmin, settingsController.setRequest)
-api.get('/event/:event_id.:format?', cors, eventController.get)
api.post('/settings/logo', isAdmin, multer({ dest: config.upload_path }).single('logo'), settingsController.setLogo)
// confirm event
api.get('/event/confirm/:event_id', hasPerm('event:write'), eventController.confirm)
api.get('/event/unconfirm/:event_id', hasPerm('event:write'), eventController.unconfirm)
+// import event
+
// get event
api.get('/event/:event_id.:format?', cors, eventController.get)
diff --git a/server/helpers.js b/server/helpers.js
index 0f9cdacd..4c784632 100644
--- a/server/helpers.js
+++ b/server/helpers.js
@@ -9,6 +9,8 @@ const path = require('path')
const sharp = require('sharp')
const axios = require('axios')
const crypto = require('crypto')
+const Microformats = require('microformat-node')
+const get = require('lodash/get')
const DOMPurify = require('dompurify')
const { JSDOM } = require('jsdom')
@@ -104,6 +106,35 @@ module.exports = {
outStream.on('finish', () => resolve(filename))
})
+ },
+
+ async importURL (req, res) {
+ const URL = req.query.URL
+ try {
+ const response = await axios.get(URL)
+ Microformats.get({ html: response.data, filter: ['h-event'] }, (err, data) => {
+ if (!data.items.length || !data.items[0].properties) return res.sendStatus(404)
+ const event = data.items[0].properties
+ console.error(event)
+ return res.json({
+ title: get(event, 'name[0]', ''),
+ description: get(event, 'content[0]', ''),
+ place: get(event, 'location[0].properties.name', ''),
+ address: get(event, 'location[0].properties.street-address'),
+ start: get(event, 'start[0]', ''),
+ end: get(event, 'end[0]', ''),
+ tags: get(event, 'category', []),
+ image: get(event, 'featured[0]')
+ })
+ })
+ // const event = dom.window.document.querySelected(".h-event")
+ // console.error(event)
+ // console.error(response)
+ } catch(e){
+ console.error(e)
+ }
+
+ // res.json('ok')
}
}
From 7ce02c9e1e54b74f938221356b4eb8a82208efa0 Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 14 Oct 2020 21:13:20 +0200
Subject: [PATCH 078/363] testing ics / h-event import
---
assets/style.less | 3 +
components/Editor.vue | 10 +
locales/en.json | 7 +-
package.json | 12 +-
pages/add/ImportDialog.vue | 42 +-
pages/add/_edit.vue | 3 +-
pages/event/_id.vue | 136 ++--
server/api/models/event.js | 2 +-
yarn.lock | 1353 +++++++++++++++++++++++++++++++++---
9 files changed, 1373 insertions(+), 195 deletions(-)
diff --git a/assets/style.less b/assets/style.less
index 4ab71e68..48027994 100644
--- a/assets/style.less
+++ b/assets/style.less
@@ -1,3 +1,6 @@
+// .v-list {
+// color: pink;
+// }
// :focus {outline:none;}
// ::-moz-focus-inner {border:0;}
diff --git a/components/Editor.vue b/components/Editor.vue
index d8778cc9..3f83f6b4 100644
--- a/components/Editor.vue
+++ b/components/Editor.vue
@@ -84,6 +84,7 @@ export default {
name: 'Editor',
components: { EditorContent, EditorMenuBar, EditorMenuBubble },
props: {
+ label: { type: String, default: 'Editor' },
value: { type: String, default: '' },
border: { type: Boolean, default: false },
noSave: { type: Boolean, default: false },
@@ -155,6 +156,15 @@ export default {
font-style: italic;
}
.editor {
+ .label {
+ left: 0px;
+ position: absolute;
+ transition: translateY .3s, scale .3s;
+ &.focused {
+ color: orange;
+ transform: translateY(-10px) scale(0.75);
+ }
+ }
// max-height: auto;
// height: auto;
overflow-y: auto;
diff --git a/locales/en.json b/locales/en.json
index 460a5f76..785d3eec 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -83,7 +83,8 @@
"place": "Place",
"tags": "Tags",
"theme": "Theme",
- "reset": "Reset"
+ "reset": "Reset",
+ "import": "Import"
},
"login": {
"description": "By logging in you can publish new events.",
@@ -149,7 +150,9 @@
"interact_with_me_at": "Interact with me on fediverse at",
"follow_me_description": "One of the ways to stay up to date on events published here on {title},\nis following the account {account} from the fediverse, for example via mastodon, and possibly add resources to an event from there.
\nIf you have never heard of Mastodon and the fediverse we recommend reading this article.
Enter your instance below (e.g. mastodon.social)",
"interact_with_me": "Follow me",
- "remove_recurrent_confirmation": "Are you sure you want to remove this recurring event?\nPast events will be maintained, but no further events will be created."
+ "remove_recurrent_confirmation": "Are you sure you want to remove this recurring event?\nPast events will be maintained, but no further events will be created.",
+ "import_URL": "Import from URL",
+ "import_ICS": "Import from ICS"
},
"admin": {
"place_description": "If you have gotten the place or address wrong, you can change it.
All current and past events associated with this place will change address.",
diff --git a/package.json b/package.json
index 225bfd79..efe6f098 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,9 @@
"email-templates": "^7.1.1",
"express": "^4.17.1",
"express-oauth-server": "^2.0.0",
+ "fs": "^0.0.1-security",
"http-signature": "^1.3.5",
+ "ical.js": "^1.4.0",
"ics": "^2.25.0",
"inquirer": "^7.3.3",
"jsdom": "^16.4.0",
@@ -59,7 +61,7 @@
"multer": "^1.4.2",
"nuxt": "^2.14.6",
"nuxt-express-module": "^0.0.11",
- "pg": "^8.4.0",
+ "pg": "^8.4.1",
"sequelize": "^6.3.5",
"sequelize-cli": "^6.2.0",
"sharp": "^0.26.1",
@@ -78,7 +80,7 @@
"@nuxtjs/eslint-config": "^3.1.0",
"@nuxtjs/vuetify": "^1.11.2",
"babel-eslint": "^10.1.0",
- "eslint": "^7.10.0",
+ "eslint": "^7.11.0",
"eslint-config-prettier": "^6.12.0",
"eslint-config-standard": ">=14.1.1",
"eslint-loader": "^4.0.2",
@@ -89,15 +91,15 @@
"eslint-plugin-promise": ">=4.0.1",
"eslint-plugin-standard": ">=4.0.1",
"eslint-plugin-vue": "^7.0.1",
- "less-loader": "^7.0.1",
+ "less-loader": "^7.0.2",
"nodemon": "^2.0.4",
"prettier": "^2.1.2",
"pug-plain-loader": "^1.0.0",
"sass": "^1.27.0",
- "sass-loader": "^10.0.2",
+ "sass-loader": "^10.0.3",
"vue-cli-plugin-vuetify": "~2.0.7",
"vuetify-loader": "^1.3.0",
- "webpack-cli": "^3.3.12"
+ "webpack-cli": "^4.0.0"
},
"resolutions": {
"prosemirror-model": "1.11.2"
diff --git a/pages/add/ImportDialog.vue b/pages/add/ImportDialog.vue
index 4e0a3d33..59724434 100644
--- a/pages/add/ImportDialog.vue
+++ b/pages/add/ImportDialog.vue
@@ -1,24 +1,40 @@
v-card(color='secondary')
- v-card-title {{$t('event.importURL')}}
+ v-card-title {{$t('common.import')}}
v-card-text
v-form(v-model='valid' ref='form' lazy-validation)
- v-text-field(v-model='URL' :loading='loading' :error='error' :error-messages='errorMessage')
+ v-text-field(v-model='URL'
+ :label="$t('common.url')"
+ :hint="$t('event.import_URL')"
+ persistent-hint
+ :loading='loading' :error='error'
+ :error-messages='errorMessage')
+
+ v-file-input(
+ v-model='file'
+ accept=".ics"
+ :label="$t('common.ics')"
+ :hint="$t('event.import_ICS')"
+ persistent-hint
+ )
p {{event}}
v-card-actions
v-spacer
v-btn(@click='$emit("close")' color='warning') {{$t('common.cancel')}}
- v-btn(@click='importURL' :loading='loading' :disabled='loading'
+ v-btn(@click='importGeneric' :loading='loading' :disabled='loading'
color='primary') {{$t('common.import')}}
From be0cfc5d2aeacad4309aae1b219ca96993d83986 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 16 Oct 2020 14:46:45 +0200
Subject: [PATCH 085/363] s/moment/dayjs
---
plugins/filters.js | 35 +++++++++++++++++++++--------------
1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/plugins/filters.js b/plugins/filters.js
index 29da3cc3..259a2c67 100644
--- a/plugins/filters.js
+++ b/plugins/filters.js
@@ -1,52 +1,59 @@
import Vue from 'vue'
-import moment from 'moment-timezone'
+import dayjs from 'dayjs'
+import relativeTime from 'dayjs/plugin/relativeTime'
+import utc from 'dayjs/plugin/utc'
+import timezone from 'dayjs/plugin/timezone'
+
+dayjs.extend(relativeTime)
+dayjs.extend(utc)
+dayjs.extend(timezone)
export default ({ app, store }) => {
// set timezone to instance_timezone!!
// to show local time relative to event's place
// not where in the world I'm looking at the page from
- moment.tz.setDefault(store.state.settings.instance_timezone)
- moment.locale(store.state.locale)
+ dayjs.tz.setDefault(store.state.settings.instance_timezone)
+ dayjs.locale(store.state.locale)
// replace links with anchors
// TODO: remove fb tracking id?
Vue.filter('linkify', value => value.replace(/(https?:\/\/([^\s]+))/g, '$2'))
Vue.filter('url2host', url => url.match(/^https?:\/\/(.[^/:]+)/i)[1])
- Vue.filter('datetime', value => moment(value).locale(store.state.locale).format('ddd, D MMMM HH:mm'))
- Vue.filter('dateFormat', (value, format) => moment(value).format(format))
- Vue.filter('unixFormat', (timestamp, format) => moment.unix(timestamp).format(format))
+ Vue.filter('datetime', value => dayjs(value).locale(store.state.locale).format('ddd, D MMMM HH:mm'))
+ Vue.filter('dateFormat', (value, format) => dayjs(value).format(format))
+ Vue.filter('unixFormat', (timestamp, format) => dayjs.unix(timestamp).format(format))
// shown in mobile homepage
- Vue.filter('day', value => moment.unix(value).locale(store.state.locale).format('dddd, D MMM'))
+ Vue.filter('day', value => dayjs.unix(value).locale(store.state.locale).format('dddd, D MMM'))
- Vue.filter('from', timestamp => moment.unix(timestamp).from())
+ Vue.filter('from', timestamp => dayjs.unix(timestamp).from())
// format event start/end datetime based on page
Vue.filter('recurrentDetail', event => {
const { frequency, days, type } = event.parent.recurrent
let recurrent
if (frequency === '1w' || frequency === '2w') {
- recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => moment().day(d - 1).format('dddd')) })
+ recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => dayjs().day(d - 1).format('dddd')) })
} else if (frequency === '1m' || frequency === '2m') {
- const d = type === 'ordinal' ? days : days.map(d => moment().day(d - 1).format('dddd'))
+ const d = type === 'ordinal' ? days : days.map(d => dayjs().day(d - 1).format('dddd'))
recurrent = app.i18n.tc(`event.recurrent_${frequency}_${type}`, days.length, { days: d })
}
return recurrent
})
Vue.filter('when', (event) => {
- const start = moment.unix(event.start_datetime)
- const end = moment.unix(event.end_datetime)
+ const start = dayjs.unix(event.start_datetime)
+ const end = dayjs.unix(event.end_datetime)
// const normal = `${start.format('dddd, D MMMM (HH:mm-')}${end.format('HH:mm) ')}`
// // recurrent event
// if (event.parent && where !== 'home') {
// const { frequency, days, type } = event.parent.recurrent
// if (frequency === '1w' || frequency === '2w') {
- // const recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => moment().day(d - 1).format('dddd')) })
+ // const recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => dayjs().day(d - 1).format('dddd')) })
// return `${normal} - ${recurrent}`
// } else if (frequency === '1m' || frequency === '2m') {
- // const d = type === 'ordinal' ? days : days.map(d => moment().day(d - 1).format('dddd'))
+ // const d = type === 'ordinal' ? days : days.map(d => dayjs().day(d - 1).format('dddd'))
// const recurrent = app.i18n.tc(`event.recurrent_${frequency}_${type}`, days.length, { days: d })
// return `${normal} - ${recurrent}`
// }
From 4853e4fbdf85ef247e054506d8e5a5da9b33df00 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 16 Oct 2020 14:47:18 +0200
Subject: [PATCH 086/363] minor
---
components/Home.vue | 8 +++++++-
components/Nav.vue | 2 +-
locales/en.json | 3 ++-
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/components/Home.vue b/components/Home.vue
index cac7ead8..eb75a73f 100644
--- a/components/Home.vue
+++ b/components/Home.vue
@@ -1,13 +1,19 @@
v-container#home(fluid)
+
+ //- Announcements
Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement')
+
#calbar.row.mb-2
.col-xl-5.col-lg-5.col-sm-5.col-xs-12
+ //- this is needed as v-calendar does not support SSR
+ //- https://github.com/nathanreyes/v-calendar/issues/336
client-only
Calendar
+
.col
- Search(past-filter recurrent-filter)
+ Search
#events
Event(v-for='event in events' :key='event.id' :event='event')
diff --git a/components/Nav.vue b/components/Nav.vue
index 04386161..bceb5ed2 100644
--- a/components/Nav.vue
+++ b/components/Nav.vue
@@ -12,7 +12,7 @@
v-spacer
- v-tooltip(bottom) {{$t('common.add')}}
+ v-tooltip(bottom) {{$t('common.add_event')}}
template(v-slot:activator='{ on }')
v-btn(v-if='could_add' icon nuxt to='/add' v-on='on')
v-icon mdi-calendar-plus
diff --git a/locales/en.json b/locales/en.json
index 785d3eec..f9ed3528 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -152,7 +152,8 @@
"interact_with_me": "Follow me",
"remove_recurrent_confirmation": "Are you sure you want to remove this recurring event?\nPast events will be maintained, but no further events will be created.",
"import_URL": "Import from URL",
- "import_ICS": "Import from ICS"
+ "import_ICS": "Import from ICS",
+ "ics": "ICS"
},
"admin": {
"place_description": "If you have gotten the place or address wrong, you can change it.
All current and past events associated with this place will change address.",
From f1d7e698c42a148e627f18942f27c6dac0e0d8df Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 16 Oct 2020 14:47:32 +0200
Subject: [PATCH 087/363] minor
---
components/Search.vue | 44 +++++++++----------------------------------
1 file changed, 9 insertions(+), 35 deletions(-)
diff --git a/components/Search.vue b/components/Search.vue
index 2b3aec4a..7277f984 100644
--- a/components/Search.vue
+++ b/components/Search.vue
@@ -12,7 +12,7 @@
v-model='showPast')
v-autocomplete.mt-0(
- :label='$t("common.filter")'
+ :label='$t("common.search")'
:items='keywords'
v-model='filter'
:search-input.sync='search'
@@ -96,6 +96,14 @@ export default {
methods: {
...mapActions(['setSearchPlaces', 'setSearchTags',
'showPastEvents', 'showRecurrentEvents', 'updateEvent']),
+ remove (item) {
+ console.error(item)
+ if (item.type === 'tag') {
+ this.removeTag(item.id)
+ } else {
+ this.removePlace(item.id)
+ }
+ },
removeTag (tag) {
this.setSearchTags(this.filters.tags.filter(t => t !== tag))
},
@@ -120,37 +128,3 @@ export default {
}
}
-
From 093cdf16b397de72baebc215f59abc0b15f1ac78 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 16 Oct 2020 16:09:27 +0200
Subject: [PATCH 088/363] minor
---
layouts/error.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/layouts/error.vue b/layouts/error.vue
index 602a659e..6f2eb06d 100644
--- a/layouts/error.vue
+++ b/layouts/error.vue
@@ -1,7 +1,7 @@
v-container.p-4.text-center
v-alert(v-if="error.statusCode === 404") ¯\_(ツ)_/¯ {{error.message}}
- v-alert(v-else type='danger') mdi-warning An error occurred: {{error.message}}
+ v-alert(v-else type='error') mdi-warning An error occurred: {{error.message}}
nuxt-link(to='/') Back to home
From 6fc224d1c232202f16cbbe8ba556c1eb591524b9 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 16 Oct 2020 16:10:01 +0200
Subject: [PATCH 089/363] start to split complex WhenInput component
---
pages/add/WhenInput.vue | 187 +++++++++++++++++++++++++
pages/add/_edit.vue | 293 ++++++++++------------------------------
plugins/filters.js | 1 +
3 files changed, 258 insertions(+), 223 deletions(-)
create mode 100644 pages/add/WhenInput.vue
diff --git a/pages/add/WhenInput.vue b/pages/add/WhenInput.vue
new file mode 100644
index 00000000..856c59f5
--- /dev/null
+++ b/pages/add/WhenInput.vue
@@ -0,0 +1,187 @@
+
+.when
+ .text-center
+ v-btn-toggle(v-model="type" color='primary')
+ v-btn(value='normal' label="normal") {{$t('event.normal')}}
+ v-btn(value='multidate' label="multidate") {{$t('event.multidate')}}
+ v-btn(v-if='settings.allow_recurrent_event' value='recurrent' label="recurrent") {{$t('event.recurrent')}}
+
+ p {{$t(`event.${type}_description`)}}
+ v-select(v-if='type==="recurrent"'
+ :items="frequencies"
+ v-model='recurrent.frequency')
+ client-only
+ .datePicker
+ v-date-picker(
+ :mode='datePickerMode'
+ :attributes='attributes'
+ v-model='date'
+ :locale='$i18n.locale'
+ :is-dark="settings['theme.is_dark']"
+ is-inline
+ is-expanded
+ :min-date='type !== "recurrent" && new Date()')
+
+ div.text-center.mb-2(v-if='type === "recurrent"')
+ span(v-if='recurrent.frequency !== "1m" && recurrent.frequency !== "2m"') {{whenPatterns}}
+ v-btn-toggle.mt-1(v-else v-model='recurrent.type' color='primary')
+ v-btn(v-for='whenPattern in whenPatterns' :value='whenPattern.key' :key='whenPatterns.key' small)
+ span {{whenPattern.label}}
+
+ List(v-if='type==="normal" && todayEvents.length' :events='todayEvents' :title='$t("event.same_day")')
+
+
+
+
\ No newline at end of file
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index a4e5fe15..29705321 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -55,89 +55,62 @@
:disabled='disableAddress')
//- When
- .text-center
- v-btn-toggle(v-model="event.type" color='primary')
- v-btn(value='normal' label="normal") {{$t('event.normal')}}
- v-btn(value='multidate' label="multidate") {{$t('event.multidate')}}
- v-btn(v-if='settings.allow_recurrent_event' value='recurrent' label="recurrent") {{$t('event.recurrent')}}
+ WhenInput(v-model='date'
+ :rules="$validators.required('common.when')")
- p {{$t(`event.${event.type}_description`)}}
- v-select(v-if='event.type==="recurrent"'
- :items="frequencies"
- v-model='event.recurrent.frequency')
- client-only
- .datePicker
- v-date-picker(
- :mode='datePickerMode'
- :attributes='attributes'
- v-model='date'
- :locale='$i18n.locale'
- :from-page.sync='page'
- :is-dark="settings['theme.is_dark']"
- is-inline
- is-expanded
- :min-date='event.type !== "recurrent" && new Date()')
-
- div.text-center.mb-2(v-if='event.type === "recurrent"')
- span(v-if='event.recurrent.frequency !== "1m" && event.recurrent.frequency !== "2m"') {{whenPatterns}}
- v-btn-toggle.mt-1(v-else v-model='event.recurrent.type' color='primary')
- v-btn(v-for='whenPattern in whenPatterns' :value='whenPattern.key' :key='whenPatterns.key' small)
- span {{whenPattern.label}}
v-row
- v-col
- v-menu(v-model='fromDateMenu'
- :close-on-content-click="false"
- transition="slide-x-transition"
- ref='fromDateMenu'
- :return-value.sync="time.start"
- offset-y
- absolute
- top
- max-width="290px"
- min-width="290px")
- template(v-slot:activator='{ on }')
- v-text-field(
+ v-col
+ v-menu(v-model='fromDateMenu'
+ :close-on-content-click="false"
+ transition="slide-x-transition"
+ ref='fromDateMenu'
+ :return-value.sync="time.start"
+ offset-y
+ absolute
+ top
+ max-width="290px"
+ min-width="290px")
+ template(v-slot:activator='{ on }')
+ v-text-field(
+ :label="$t('event.from')"
+ :rules="[$validators.required('event.from')]"
+ :value='time.start'
+ v-on='on'
+ clearable)
+ v-time-picker(
+ v-if='fromDateMenu'
:label="$t('event.from')"
- :rules="[$validators.required('event.from')]"
- :value='time.start'
- v-on='on'
- clearable)
- v-time-picker(
- v-if='fromDateMenu'
- :label="$t('event.from')"
- format="24hr"
- ref='time_start'
- :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
- v-model='time.start'
- @click:minute="$refs.fromDateMenu.save(time.start)")
+ format="24hr"
+ ref='time_start'
+ :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
+ v-model='time.start'
+ @click:minute="$refs.fromDateMenu.save(time.start)")
- v-col
- v-menu(v-model='dueDateMenu'
- :close-on-content-click="false"
- transition="slide-x-transition"
- ref='dueDateMenu'
- :return-value.sync="time.end"
- offset-y
- absolute
- top
- max-width="290px"
- min-width="290px")
- template(v-slot:activator='{ on }')
- v-text-field(
+ v-col
+ v-menu(v-model='dueDateMenu'
+ :close-on-content-click="false"
+ transition="slide-x-transition"
+ ref='dueDateMenu'
+ :return-value.sync="time.end"
+ offset-y
+ absolute
+ top
+ max-width="290px"
+ min-width="290px")
+ template(v-slot:activator='{ on }')
+ v-text-field(
+ :label="$t('event.due')"
+ :value='time.end'
+ v-on='on'
+ clearable
+ readonly)
+ v-time-picker(
+ v-if='dueDateMenu'
:label="$t('event.due')"
- :value='time.end'
- v-on='on'
- clearable
- readonly)
- v-time-picker(
- v-if='dueDateMenu'
- :label="$t('event.due')"
- format="24hr"
- :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
- v-model='time.end'
- @click:minute="$refs.dueDateMenu.save(time.end)")
-
- List(v-if='event.type==="normal" && todayEvents.length' :events='todayEvents' :title='$t("event.same_day")')
+ format="24hr"
+ :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
+ v-model='time.end'
+ @click:minute="$refs.dueDateMenu.save(time.end)")
//- MEDIA / FLYER / POSTER
@@ -165,14 +138,15 @@
diff --git a/locales/esm.js b/locales/esm.js
index 106796f1..d3b9a6bb 100644
--- a/locales/esm.js
+++ b/locales/esm.js
@@ -4,5 +4,7 @@ export default {
es: 'Español',
ca: 'Català',
pl: 'Polski',
- eu: 'Euskara'
+ eu: 'Euskara',
+ nb_NO: 'Norwegian Bokmål',
+ fr: 'Francais'
}
diff --git a/nuxt.config.js b/nuxt.config.js
index 771c1756..8da3e506 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -41,6 +41,7 @@ module.exports = {
'@/plugins/vue-clipboard', // vuetify
'@/plugins/axios', // axios baseurl configuration
'@/plugins/validators', // inject validators
+ '@/plugins/api', // api helpers
{ src: '@/plugins/v-calendar', ssr: false } // calendar, fix ssr
],
diff --git a/pages/add/ImportDialog.vue b/pages/add/ImportDialog.vue
index 59724434..b1ced6c7 100644
--- a/pages/add/ImportDialog.vue
+++ b/pages/add/ImportDialog.vue
@@ -56,9 +56,7 @@ export default {
reader.readAsText(this.file)
reader.onload = () => {
const data = reader.result
- console.error(data)
const event = ical.parse(data)
- console.error(event)
this.event = {
title: event.name
}
@@ -79,7 +77,6 @@ export default {
this.event = ret
// check if contain an h-event
this.$emit('imported', ret)
- console.error(ret)
} catch (e) {
console.error(e)
this.error = true
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index 29705321..0e95fb01 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -281,7 +281,6 @@ export default {
}
if (this.event.image) {
- console.error(this.event.image)
formData.append('image', this.event.image)
}
formData.append('title', this.event.title)
@@ -307,7 +306,6 @@ export default {
this.loading = false
this.$root.$message(this.$auth.loggedIn ? 'event.added' : 'event.added_anon', { color: 'success' })
} catch (e) {
- console.error(e.response)
switch (e.request.status) {
case 413:
this.$root.$message('event.image_too_big', { color: 'error' })
diff --git a/pages/announcement/_id.vue b/pages/announcement/_id.vue
index 4c5f1957..18f5ccfb 100644
--- a/pages/announcement/_id.vue
+++ b/pages/announcement/_id.vue
@@ -17,7 +17,6 @@ export default {
try {
const id = Number(params.id)
const announcement = store.state.announcements.find(a => a.id === id)
- console.error(announcement)
return { announcement }
} catch (e) {
error({ statusCode: 404, message: 'Announcement not found' })
diff --git a/pages/export.vue b/pages/export.vue
index ec639dde..55c9a5c3 100644
--- a/pages/export.vue
+++ b/pages/export.vue
@@ -85,8 +85,7 @@ export default {
}
},
computed: {
- ...mapState(['filters', 'events', 'settings']),
- ...mapGetters(['filteredEvents']),
+ ...mapState(['filters', 'settings']),
domain () {
const URL = url.parse(this.settings.baseurl)
return URL.hostname
diff --git a/plugins/api.js b/plugins/api.js
new file mode 100644
index 00000000..77e664a7
--- /dev/null
+++ b/plugins/api.js
@@ -0,0 +1,34 @@
+
+export default ({ $axios, store }, inject) => {
+
+ const api = {
+
+ /**
+ * Get events
+ *
+ * filter: {
+ * start_datetime: unix_timestamp (default now)
+ * end_datetime: unix_timestamp
+ * tags: [tag, list],
+ * places: [place_id],
+ * limit: (default ∞)
+ * }
+ *
+ */
+ async getEvents (params) {
+ try {
+ const events = await $axios.$get(`/events`, { params: {
+ start: params.start,
+ end: params.end,
+ places: params.places && params.places.join(','),
+ tags: params.tags && params.tags.join(',')
+ }} )
+ return events
+ } catch (e) {
+ console.error(e)
+ return []
+ }
+ }
+ }
+ inject('api', api)
+}
\ No newline at end of file
diff --git a/server/api/controller/event.js b/server/api/controller/event.js
index 45246bf7..38e5f58a 100644
--- a/server/api/controller/event.js
+++ b/server/api/controller/event.js
@@ -417,17 +417,30 @@ const eventController = {
}
},
- async _select (start = moment().unix(), limit = 100) {
+ async _select ({ start, end, tags, places}) {
+
const where = {
// confirmed event only
recurrent: null,
is_visible: true,
- start_datetime: { [Op.gt]: start }
+ start_datetime: { [Op.gt]: start },
+ }
+
+ if (end) {
+ where['end_datetime'] = { [Op.lt]: end }
+ }
+
+ if (places) {
+ where.placeId = places.split(',')
+ }
+
+ let where_tags = {}
+ if (tags) {
+ where_tags = { where: { tag: tags.split(',') } }
}
const events = await Event.findAll({
where,
- limit,
attributes: {
exclude: ['slug', 'likes', 'boost', 'userId', 'is_visible', 'createdAt', 'updatedAt', 'placeId']
// include: [[Sequelize.fn('COUNT', Sequelize.col('activitypub_id')), 'ressources']]
@@ -435,7 +448,7 @@ const eventController = {
order: ['start_datetime', [Tag, 'weigth', 'DESC']],
include: [
{ model: Resource, required: false, attributes: ['id'] },
- { model: Tag, attributes: ['tag'], required: false, through: { attributes: [] } },
+ { model: Tag, attributes: ['tag'], required: tags ? true : false, ...where_tags, through: { attributes: [] } },
{ model: Place, required: false, attributes: ['id', 'name', 'address'] }
]
})
@@ -451,9 +464,14 @@ const eventController = {
* Select events based on params
*/
async select (req, res) {
- const start = req.query.start || moment().unix()
- const limit = req.query.limit || 100
- res.json(await eventController._select(start, limit))
+ const start = req.query.start
+ const end = req.query.end
+ const tags = req.query.tags
+ const places = req.query.places
+
+ res.json(await eventController._select({
+ start, end, places, tags
+ }))
},
/**
diff --git a/server/api/controller/settings.js b/server/api/controller/settings.js
index 2490450f..85b565df 100644
--- a/server/api/controller/settings.js
+++ b/server/api/controller/settings.js
@@ -125,7 +125,6 @@ const settingsController = {
.resize(400)
.png({ quality: 90 })
.toFile(baseImgPath + '.png', async (err, info) => {
- console.error(err)
const image = await readFile(baseImgPath + '.png')
const favicon = await toIco([image], { sizes: [64], resize: true })
writeFile(baseImgPath + '.ico', favicon)
diff --git a/server/api/index.js b/server/api/index.js
index 0cff1eb1..83140cbc 100644
--- a/server/api/index.js
+++ b/server/api/index.js
@@ -121,7 +121,7 @@ api.get('/export/:type', cors, exportController.export)
// get events in this range
// api.get('/event/:month/:year', cors, eventController.getAll)
-api.get('/event', cors, eventController.select)
+api.get('/events', cors, eventController.select)
api.get('/instances', isAdmin, instanceController.getAll)
api.get('/instances/:instance_domain', isAdmin, instanceController.get)
diff --git a/server/helpers.js b/server/helpers.js
index 4c784632..ec04b5e3 100644
--- a/server/helpers.js
+++ b/server/helpers.js
@@ -115,7 +115,6 @@ module.exports = {
Microformats.get({ html: response.data, filter: ['h-event'] }, (err, data) => {
if (!data.items.length || !data.items[0].properties) return res.sendStatus(404)
const event = data.items[0].properties
- console.error(event)
return res.json({
title: get(event, 'name[0]', ''),
description: get(event, 'content[0]', ''),
diff --git a/server/routes.js b/server/routes.js
index e7e83d5c..c28c312e 100644
--- a/server/routes.js
+++ b/server/routes.js
@@ -66,8 +66,8 @@ app.use((error, req, res, next) => {
// first nuxt component is ./pages/index.vue (with ./layouts/default.vue)
// prefill current events, tags, places and announcements (used in every path)
app.use(async (req, res, next) => {
- const start_datetime = getUnixTime(startOfWeek(startOfMonth(new Date())))
- req.events = await eventController._select(start_datetime, 100)
+ // const start_datetime = getUnixTime(startOfWeek(startOfMonth(new Date())))
+ // req.events = await eventController._select(start_datetime, 100)
req.meta = await eventController._getMeta()
req.announcements = await announceController._getVisible()
next()
diff --git a/store/index.js b/store/index.js
index bd4b6b10..abd14bfb 100644
--- a/store/index.js
+++ b/store/index.js
@@ -1,10 +1,10 @@
-import moment from 'moment-timezone'
+import dayjs from 'dayjs'
import intersection from 'lodash/intersection'
export const state = () => ({
locale: '',
user_locale: {},
- events: [],
+ filters: { tags: [], places: [] },
tags: [],
places: [],
settings: {
@@ -20,113 +20,27 @@ export const state = () => ({
enable_trusted_instances: true,
trusted_instances: []
},
- in_past: false,
- filters: {
- tags: [],
- places: [],
- show_past_events: false,
- show_recurrent_events: false,
- show_pinned_event: false
- },
announcements: []
})
-export const getters = {
-
- // filter matches search tag/place
- filteredEvents: state => {
- const search_for_tags = !!state.filters.tags.length
- const search_for_places = !!state.filters.places.length
-
- return state.events.filter(e => {
- // filter past events
- if (!state.filters.show_past_events && e.past) { return false }
-
- // filter recurrent events
- if (!state.filters.show_recurrent_events && e.parentId) { return false }
-
- if (search_for_places && !state.filters.places.includes(e.place.id)) {
- return false
- }
-
- if (search_for_tags) {
- const common_tags = intersection(e.tags, state.filters.tags)
- if (common_tags.length === 0) { return false }
- }
-
- if (!search_for_places && !search_for_tags) { return true }
-
- return true
- })
- },
-
- // filter matches search tag/place including past events
- filteredEventsWithPast: state => {
- const search_for_tags = !!state.filters.tags.length
- const search_for_places = !!state.filters.places.length
-
- return state.events.filter(e => {
- // filter recurrent events
- if (!state.filters.show_recurrent_events && e.parentId) { return false }
-
- if (search_for_places && !state.filters.places.includes(e.place.id)) {
- return false
- }
-
- if (search_for_tags) {
- const common_tags = intersection(e.tags, state.filters.tags)
- if (common_tags.length === 0) { return false }
- }
-
- return true
- })
- }
-}
-
export const mutations = {
- setEvents (state, events) {
- // set`past` and `newDay` flags to event
- let lastDay = null
- state.events = events.map(e => {
- const currentDay = moment.unix(e.start_datetime).date()
- e.newDay = (!lastDay || lastDay !== currentDay) && currentDay
- lastDay = currentDay
- const end_datetime = e.end_datetime || e.start_datetime + 3600 * 2
- const past = ((moment().unix()) - end_datetime) > 0
- e.past = !!past
- return e
- })
- },
- addEvent (state, event) {
- state.events.push(event)
- },
- updateEvent (state, event) {
- state.events = state.events.map((e) => {
- if (e.id !== event.id) { return e }
- return event
- })
- },
- delEvent (state, eventId) {
- state.events = state.events.filter(ev => {
- return ev.id !== eventId
- })
- },
+ // setEvents (state, events) {
+ // // set`past` and `newDay` flags to event
+ // let lastDay = null
+ // state.events = events.map(e => {
+ // const currentDay = dayjs.unix(e.start_datetime).date()
+ // e.newDay = (!lastDay || lastDay !== currentDay) && currentDay
+ // lastDay = currentDay
+ // const end_datetime = e.end_datetime || e.start_datetime + 3600 * 2
+ // const past = ((dayjs().unix()) - end_datetime) > 0
+ // e.past = !!past
+ // return e
+ // })
+ // },
update (state, { tags, places }) {
state.tags = tags
state.places = places
},
- setSearchTags (state, tags) {
- state.filters.tags = tags
- },
- setSearchPlaces (state, places) {
- state.filters.places = places
- },
- showPastEvents (state, show) {
- state.filters.show_past_events = show
- },
- showRecurrentEvents (state, show) {
- state.filters.show_recurrent_events = show
- },
setSettings (state, settings) {
state.settings = settings
},
@@ -136,8 +50,9 @@ export const mutations = {
setLocale (state, locale) {
state.locale = locale
},
- setPast (state, in_past) {
- state.in_past = in_past
+ setFilters (state, filters) {
+ state.filters.tags = [...filters.tags]
+ state.filters.places = [...filters.places]
},
setAnnouncements (state, announcements) {
state.announcements = announcements
@@ -149,23 +64,8 @@ export const actions = {
// we use it to get configuration from db, set locale, etc...
nuxtServerInit ({ commit }, { req }) {
commit('setSettings', req.settings)
-
- commit('setEvents', req.events)
commit('setAnnouncements', req.announcements)
commit('update', req.meta)
-
- // apply settings
- commit('showRecurrentEvents', req.settings.allow_recurrent_event && req.settings.recurrent_event_visible)
- },
- async updateEvents ({ commit }, page) {
- const [month, year] = [moment().month(), moment().year()]
- const in_past = page.year < year || (page.year === year && page.month <= month)
- // commit('setPast', in_past)
- const start_datetime = moment().year(page.year).month(page.month - 1).startOf('month').startOf('week').unix()
- const query = `start=${start_datetime}`
- const events = await this.$axios.$get(`/event?${query}`)
- commit('setEvents', events)
- commit('showPastEvents', in_past)
},
async updateAnnouncements ({ commit }) {
const announcements = await this.$axios.$get('/announcements')
@@ -176,16 +76,13 @@ export const actions = {
commit('update', { tags, places })
},
async addEvent ({ commit }, formData) {
- const event = await this.$axios.$post('/event', formData)
- if (event.user) {
- commit('addEvent', event)
- }
+ await this.$axios.$post('/event', formData)
},
async updateEvent ({ commit }, formData) {
- const event = await this.$axios.$put('/event', formData)
- if (event.user) {
- commit('updateEvent', event)
- }
+ await this.$axios.$put('/event', formData)
+ },
+ setFilters({ commit }, filters) {
+ commit('setFilters', filters)
},
setAnnouncements ({ commit }, announcements) {
commit('setAnnouncements', announcements)
@@ -193,18 +90,6 @@ export const actions = {
delEvent ({ commit }, eventId) {
commit('delEvent', eventId)
},
- setSearchTags ({ commit }, tags) {
- commit('setSearchTags', tags)
- },
- setSearchPlaces ({ commit }, places) {
- commit('setSearchPlaces', places)
- },
- showPastEvents ({ commit }, show) {
- commit('showPastEvents', show)
- },
- showRecurrentEvents ({ commit }, show) {
- commit('showRecurrentEvents', show)
- },
async setSetting ({ commit }, setting) {
await this.$axios.$post('/settings', setting)
commit('setSetting', setting)
From 9d4ec11562ede5810412149815ef77fbe984ecaf Mon Sep 17 00:00:00 2001
From: lesion
Date: Sat, 17 Oct 2020 21:24:16 +0000
Subject: [PATCH 102/363] Translated using Weblate (Polish)
Currently translated at 100.0% (10 of 10 strings)
Translation: Gancio/Email
Translate-URL: https://hosted.weblate.org/projects/gancio/email/pl/
---
locales/email/pl.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/locales/email/pl.json b/locales/email/pl.json
index d04691fd..e33c1125 100644
--- a/locales/email/pl.json
+++ b/locales/email/pl.json
@@ -13,7 +13,7 @@
},
"recover": {
"subject": "Odzyskiwanie hasła",
- "content": "Cześć, poprosiłeś(-aś) o odzyskanie hasła na {{config.title}}. Wejdź tutaj aby potwierdzić"
+ "content": "Cześć, poprosiłeś(-aś) o odzyskanie hasła na {{config.title}}. Wejdź tutaj aby potwierdzić."
},
"admin_register": {
"subject": "Nowa rejestracja",
From 731d00682bfa2896b1cb1735a12881d3074267ae Mon Sep 17 00:00:00 2001
From: Nathan
Date: Tue, 20 Oct 2020 17:05:22 +0000
Subject: [PATCH 103/363] Translated using Weblate (French)
Currently translated at 98.2% (220 of 224 strings)
Translation: Gancio/Web
Translate-URL: https://hosted.weblate.org/projects/gancio/web/fr/
---
locales/fr.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/locales/fr.json b/locales/fr.json
index dba99710..8bd1ee20 100644
--- a/locales/fr.json
+++ b/locales/fr.json
@@ -122,7 +122,8 @@
"what_description": "Titre",
"same_day": "le même jour",
"anon_description": "Vous pouvez ajouter un évènement sans vous inscrire ni vous connecter, mais vous devrez attendre que quelqu'un le lise et\nconfirme qu'il s'agit d'un évènement conforme. Il ne sera pas possible de le modifier.
\nVous pouvez plutôt vous connecter ou vous inscrire. Sinon allez-y et obtenez une réponse au plus vite. ",
- "anon": "Anonyme"
+ "anon": "Anonyme",
+ "ics": "ICS"
},
"register": {
"description": "Les mouvements sociaux doivent s'organiser et s'autofinancer.
\n
Avant de pouvoir publier, le compte doit être approuvé, considérez que derrière ce site vous trouverez de vraies personnes, à qui vous pouvez écrire en deux lignes pour exprimer les évènements que vous souhaiteriez publier.",
From ec29d97e3751676b6986574c14c9dcb9b742f1e0 Mon Sep 17 00:00:00 2001
From: abidin toumi
Date: Thu, 22 Oct 2020 23:09:02 +0200
Subject: [PATCH 104/363] Added translation using Weblate (Arabic)
---
locales/ar.json | 1 +
1 file changed, 1 insertion(+)
create mode 100644 locales/ar.json
diff --git a/locales/ar.json b/locales/ar.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/locales/ar.json
@@ -0,0 +1 @@
+{}
From 0045800f998e409d0771dcef80b0e0a0bcec8309 Mon Sep 17 00:00:00 2001
From: Weblate
Date: Thu, 22 Oct 2020 23:09:07 +0200
Subject: [PATCH 105/363] Added translation using Weblate (Arabic)
---
locales/email/ar.json | 1 +
1 file changed, 1 insertion(+)
create mode 100644 locales/email/ar.json
diff --git a/locales/email/ar.json b/locales/email/ar.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/locales/email/ar.json
@@ -0,0 +1 @@
+{}
From 85339bd9a73553b9d6b4d70df76b405d25d7ea9d Mon Sep 17 00:00:00 2001
From: les
Date: Sun, 25 Oct 2020 00:30:28 +0200
Subject: [PATCH 106/363] home refactoring
---
components/Event.vue | 2 +-
components/Home.vue | 56 +++++++++++++++++++++++++++++---------------
2 files changed, 38 insertions(+), 20 deletions(-)
diff --git a/components/Event.vue b/components/Event.vue
index 9be5bdb2..5ec95749 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -7,7 +7,7 @@
v-card-title.text-h5 {{event.title}}
v-card-text
-
+
time.text-h6(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') mdi-event {{ event|when }}
v-btn.d-block.text-h6(text color='primary' big @click="$emit('placeclick', event.place.id)") mdi-map-marker {{event.place.name}}
diff --git a/components/Home.vue b/components/Home.vue
index 21129339..c3b17ef4 100644
--- a/components/Home.vue
+++ b/components/Home.vue
@@ -7,11 +7,12 @@
#calbar.row.mb-2
.col-xl-5.col-lg-5.col-sm-5.col-xs-12
- //- this is needed as v-calendar does not support SSR
- //- https://github.com/nathanreyes/v-calendar/issues/336
- client-only
- Calendar(@dayclick='dayClick'
- @monthchange='monthChange' :events='events')
+ v-date-picker(
+ @update:picker-date='monthChange'
+ :locale='settings.locale'
+ :events='calendarEvents'
+ v-model='date'
+ landscape)
.col
Search(
@@ -19,10 +20,10 @@
@update='updateFilters'
)
- .text-h3.text-center(v-if='selectedDay') {{selectedDay|day}}
+ v-chip.text-h3.text-center(v-if='selectedDay' close) {{selectedDay|day}}
#events
Event(v-for='event in events'
- :key='event.id' :event='event'
+ :key='event.id' :event='event'
@tagclick='tagClick' @placeclick='placeClick')
@@ -37,27 +38,42 @@ import Search from '@/components/Search'
export default {
name: 'Home',
+ components: { Calendar, Event, Search, Announcement },
+ async asyncData ({ params }) {
+ const events = await this.$api.getEvents({
+ start: this.start,
+ end: this.end,
+ places: this.filters.places,
+ tags: this.filters.tags
+ })
+ return { events }
+ },
data () {
return {
+ date: dayjs().format('YYYY-MM-DD'),
events: [],
- start: null,
+ start: dayjs().format('YYYY-MM-DD'),
end: null,
- filters: { tags: [], places: []},
+ filters: { tags: [], places: [] },
selectedDay: null
}
},
- components: { Calendar, Event, Search, Announcement },
computed: {
- ...mapState(['settings', 'announcements'])
+ ...mapState(['settings', 'announcements']),
+ calendarEvents () {
+ return this.events.map(e => dayjs.unix(e.start_datetime).format('YYYY-MM-DD'))
+ }
},
methods: {
...mapActions(['setFilters']),
async updateEvents () {
this.events = await this.$api.getEvents({
- start: this.start, end: this.end,
- places: this.filters.places, tags: this.filters.tags
+ start: this.start,
+ end: this.end,
+ places: this.filters.places,
+ tags: this.filters.tags
})
- this.setFilters(this.filters)
+ // this.setFilters(this.filters)
},
placeClick (place_id) {
if (this.filters.places.includes(place_id)) {
@@ -79,10 +95,12 @@ export default {
this.filters = filters
this.updateEvents()
},
- monthChange (page) {
- this.start = dayjs().year(page.year).month(page.month - 1).startOf('month').startOf('week').unix()
- this.end = dayjs().year(page.year).month(page.month - 1).endOf('month').endOf('week').unix()
- this.updateEvents ()
+ monthChange (monthYear) {
+ // return
+ const [year, month] = monthYear.split('-')
+ this.start = dayjs().year(year).month(month - 1).startOf('month').unix() // .startOf('week').unix()
+ this.end = dayjs().year(year).month(month - 1).endOf('month').unix() // .endOf('week').unix()
+ this.updateEvents()
},
async dayClick (day) {
const datetime = day.dateTime / 1000
@@ -94,7 +112,7 @@ export default {
this.selectedDay = datetime
this.events = await this.$api.getEvents({
start: this.selectedDay,
- end: this.selectedDay+24*60*60
+ end: this.selectedDay + 24 * 60 * 60
})
}
},
From 732643ecf3f316a55df2221dd389de29c9c45b24 Mon Sep 17 00:00:00 2001
From: les
Date: Sun, 25 Oct 2020 00:31:01 +0200
Subject: [PATCH 107/363] minor
---
layouts/error.vue | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/layouts/error.vue b/layouts/error.vue
index 6f2eb06d..05b82718 100644
--- a/layouts/error.vue
+++ b/layouts/error.vue
@@ -9,10 +9,10 @@
import { mapState } from 'vuex'
export default {
- props: { error: { type: Object } },
- computed: mapState(['settings']),
+ props: { error: { type: Object, default: () => ({ }) } },
head () {
return { title: `${this.settings.title} - Error` }
- }
+ },
+ computed: mapState(['settings'])
}
From cf5975e7ba8f784494db88c8ac98237c46c2b7b9 Mon Sep 17 00:00:00 2001
From: les
Date: Sun, 25 Oct 2020 00:31:38 +0200
Subject: [PATCH 108/363] split add event in smaller components
---
pages/add/DateInput.vue | 237 +++++++++++++++++++++++++++++++++++++
pages/add/HourInput.vue | 77 ++++++++++++
pages/add/ImportDialog.vue | 2 +-
pages/add/WhenInput.vue | 187 -----------------------------
pages/add/WhereInput.vue | 60 ++++++++++
pages/add/_edit.vue | 184 ++++++++--------------------
6 files changed, 423 insertions(+), 324 deletions(-)
create mode 100644 pages/add/DateInput.vue
create mode 100644 pages/add/HourInput.vue
delete mode 100644 pages/add/WhenInput.vue
create mode 100644 pages/add/WhereInput.vue
diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue
new file mode 100644
index 00000000..1a36244d
--- /dev/null
+++ b/pages/add/DateInput.vue
@@ -0,0 +1,237 @@
+
+v-row
+ v-menu(
+ v-model="datePickerMenu"
+ :close-on-content-click="false"
+ :nudge-right="40"
+ transition="scale-transition"
+ offset-y
+ min-width="290px"
+ )
+ template(v-slot:activator="{ on, attrs }")
+ v-text-field.col-md-8(
+ v-model='date'
+ :label="$t('common.when')"
+ :rules="[$validators.required('common.when')]"
+ prepend-icon='mdi-calendar'
+ readonly
+ v-bind="attrs"
+ v-on="on")
+ v-date-picker(
+ :min='today'
+ v-model="date"
+ :range="type === 'multidate'"
+ :locale='settings.locale'
+ @input="pick")
+
+ v-btn-toggle.col-md-4(@change='changeType' color='primary' :value='type')
+ v-btn(value='normal') {{$t('event.normal')}}
+ v-btn(value='multidate') {{$t('event.multidate')}}
+ v-menu(v-if='settings.allow_recurrent_event' offset-y open-on-hover)
+ template(v-slot:activator="{ on, attrs }")
+ v-btn(value='recurrent' v-on='on') {{$t('event.recurrent')}}
+ v-list
+ v-list-item(v-for='f in frequencies' :key='f.value'
+ @click='selectFrequency(f.value)') {{f.text}}
+
+ //- //- p.col-12 {{$t(`event.${type}_description`)}}
+ //- v-btn-toggle(v-if="type === 'recurrent'" v-model='recurrent.frequency' color='primary')
+ //- v-btn(v-for='f in frequencies' :value='f.value') {{f.text}}
+
+ //- .datePicker
+ //- v-date-picker(
+ //- :mode='datePickerMode'
+ //- v-model='date'
+ //- :rules="[$validators.required('event.when')]"
+ //- :locale='$i18n.locale'
+ //- :is-dark="settings['theme.is_dark']"
+ //- is-inline
+ //- is-expanded
+ //- :min-date='type !== "recurrent" && new Date()')
+
+ div.text-center.mb-2(v-if='type === "recurrent"')
+ span(v-if='recurrent.frequency !== "1m" && recurrent.frequency !== "2m"') {{whenPatterns}}
+ v-btn-toggle.mt-1(v-else v-model='recurrent.type' color='primary')
+ v-btn(v-for='whenPattern in whenPatterns' :value='whenPattern.key' :key='whenPatterns.key' small)
+ span {{whenPattern.label}}
+
+ //- List(v-if='type==="normal" && todayEvents.length' :events='todayEvents' :title='$t("event.same_day")')
+
+
+
diff --git a/pages/add/HourInput.vue b/pages/add/HourInput.vue
new file mode 100644
index 00000000..96916284
--- /dev/null
+++ b/pages/add/HourInput.vue
@@ -0,0 +1,77 @@
+
+ v-row
+ v-col.col-6
+ v-menu(v-model='startTimeMenu'
+ :close-on-content-click="false"
+ transition="slide-x-transition"
+ ref='startTimeMenu'
+ :return-value.sync="time.start"
+ offset-y
+ absolute
+ top
+ max-width="290px"
+ min-width="290px")
+ template(v-slot:activator='{ on }')
+ v-text-field(
+ :label="$t('event.from')"
+ :rules="[$validators.required('event.from')]"
+ :value='time.start'
+ v-on='on'
+ clearable)
+ v-time-picker(
+ v-if='startTimeMenu'
+ :label="$t('event.from')"
+ format="24hr"
+ ref='time_start'
+ :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
+ v-model='time.start'
+ @click:minute="selectTime('start')")
+
+ v-col.col-6
+ v-menu(v-model='endTimeMenu'
+ :close-on-content-click="false"
+ transition="slide-x-transition"
+ ref='endTimeMenu'
+ :return-value.sync="time.end"
+ offset-y
+ absolute
+ top
+ max-width="290px"
+ min-width="290px")
+ template(v-slot:activator='{ on }')
+ v-text-field(
+ :label="$t('event.due')"
+ :value='time.end'
+ v-on='on'
+ clearable
+ readonly)
+ v-time-picker(
+ v-if='endTimeMenu'
+ :label="$t('event.due')"
+ format="24hr"
+ :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
+ v-model='time.end'
+ @click:minute="selectTime('end')")
+
+
+
diff --git a/pages/add/ImportDialog.vue b/pages/add/ImportDialog.vue
index b1ced6c7..a61cfaa7 100644
--- a/pages/add/ImportDialog.vue
+++ b/pages/add/ImportDialog.vue
@@ -13,7 +13,7 @@
v-file-input(
v-model='file'
accept=".ics"
- :label="$t('common.ics')"
+ :label="$t('event.ics')"
:hint="$t('event.import_ICS')"
persistent-hint
)
diff --git a/pages/add/WhenInput.vue b/pages/add/WhenInput.vue
deleted file mode 100644
index 856c59f5..00000000
--- a/pages/add/WhenInput.vue
+++ /dev/null
@@ -1,187 +0,0 @@
-
-.when
- .text-center
- v-btn-toggle(v-model="type" color='primary')
- v-btn(value='normal' label="normal") {{$t('event.normal')}}
- v-btn(value='multidate' label="multidate") {{$t('event.multidate')}}
- v-btn(v-if='settings.allow_recurrent_event' value='recurrent' label="recurrent") {{$t('event.recurrent')}}
-
- p {{$t(`event.${type}_description`)}}
- v-select(v-if='type==="recurrent"'
- :items="frequencies"
- v-model='recurrent.frequency')
- client-only
- .datePicker
- v-date-picker(
- :mode='datePickerMode'
- :attributes='attributes'
- v-model='date'
- :locale='$i18n.locale'
- :is-dark="settings['theme.is_dark']"
- is-inline
- is-expanded
- :min-date='type !== "recurrent" && new Date()')
-
- div.text-center.mb-2(v-if='type === "recurrent"')
- span(v-if='recurrent.frequency !== "1m" && recurrent.frequency !== "2m"') {{whenPatterns}}
- v-btn-toggle.mt-1(v-else v-model='recurrent.type' color='primary')
- v-btn(v-for='whenPattern in whenPatterns' :value='whenPattern.key' :key='whenPatterns.key' small)
- span {{whenPattern.label}}
-
- List(v-if='type==="normal" && todayEvents.length' :events='todayEvents' :title='$t("event.same_day")')
-
-
-
-
\ No newline at end of file
diff --git a/pages/add/WhereInput.vue b/pages/add/WhereInput.vue
new file mode 100644
index 00000000..0b278c18
--- /dev/null
+++ b/pages/add/WhereInput.vue
@@ -0,0 +1,60 @@
+
+ v-row
+ v-combobox.col-md-6(ref='place'
+ :rules="[$validators.required('common.where')]"
+ :label="$t('common.where')"
+ :hint="$t('event.where_description')"
+ :hide-no-data="!place._name"
+ :search-input.sync="place._name"
+ persistent-hint
+ :items="places"
+ item-text='name'
+ @change='selectPlace')
+ template(v-slot:no-data)
+ v-list-item
+ p Create {{place._name}}
+
+ v-text-field.col-md-6(ref='address'
+ :disabled='disableAddress'
+ :rules="[$validators.required('common.address')]"
+ :label="$t('common.address')"
+ @change="changeAddress"
+ :value="place.address")
+
+
+
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index 0e95fb01..c9d0d6b8 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -4,130 +4,59 @@
v-card-title
h4 {{edit?$t('common.edit_event'):$t('common.add_event')}}
v-spacer
- v-btn(link text color='primary' @click='openImportDialog=true')
+ v-btn(link text color='primary' @click='openImportDialog=true')
mdi-file-import {{$t('common.import')}}
v-dialog(v-model='openImportDialog')
ImportDialog(@close='openImportDialog=false' @imported='eventImported')
v-card-text
v-form(v-model='valid' ref='form' lazy-validation)
+ v-container
+ v-row
+ //- Not logged event
+ v-col.col-12(v-if='!$auth.loggedIn')
+ v-divider {{$t('event.anon')}}
+ p(v-html="$t('event.anon_description')")
- //- Not logged event
- div(v-if='!$auth.loggedIn')
- v-divider {{$t('event.anon')}}
- p(v-html="$t('event.anon_description')")
+ //- Title
+ v-text-field.col-12(
+ @change='v => event.title = v'
+ :value = 'event.title'
+ :rules="[$validators.required('common.title')]"
+ :hint="$t('event.what_description')"
+ :label="$t('common.title')"
+ autofocus
+ ref='title')
- //- Title
- v-text-field.mb-3(
- @change='v => event.title = v'
- :value = 'event.title'
- :rules="[$validators.required('common.title')]"
- :label="$t('event.what_description')"
- autofocus
- ref='title')
+ //- Where
+ WhereInput.col-12(v-model='event.place')
- //- Description
- Editor(
- v-model='event.description'
- :placeholder="$t('event.description_description')"
- max-height='400px')
+ //- When
+ DateInput.col-12(v-model='date')
+ HourInput.col-12(v-model='time')
- //- Where
- v-combobox.mt-2(v-model='event.place.name'
- :rules="[$validators.required('common.where')]"
- :label="$t('common.where')"
- :hint="$t('event.where_description')"
- persistent-hint
- :items="places"
- item-text='name'
- @change='selectPlace')
- //- template(v-slot:item="{ item }")
- v-list-item(color='primary')
- v-list-item-content(color='pink')
- v-list-item-title {{item.name}}
- v-list-item-subtitle {{item.address}}
+ //- Description
+ Editor.col-12.mb-3(
+ v-model='event.description'
+ :placeholder="$t('event.description_description')"
+ max-height='400px')
- v-text-field.mt-3(ref='address'
- :rules="[$validators.required('common.address')]"
- :label="$t('common.address')"
- @change="v => event.place.address = v"
- :value="event.place.address"
- :disabled='disableAddress')
+ //- MEDIA / FLYER / POSTER
- //- When
- WhenInput(v-model='date'
- :rules="$validators.required('common.when')")
+ v-file-input.col-6.mt-3(
+ :label="$t('common.media')"
+ :hint="$t('event.media_description')"
+ prepend-icon="mdi-camera"
+ v-model='event.image'
+ persistent-hint
+ accept='image/*')
- v-row
- v-col
- v-menu(v-model='fromDateMenu'
- :close-on-content-click="false"
- transition="slide-x-transition"
- ref='fromDateMenu'
- :return-value.sync="time.start"
- offset-y
- absolute
- top
- max-width="290px"
- min-width="290px")
- template(v-slot:activator='{ on }')
- v-text-field(
- :label="$t('event.from')"
- :rules="[$validators.required('event.from')]"
- :value='time.start'
- v-on='on'
- clearable)
- v-time-picker(
- v-if='fromDateMenu'
- :label="$t('event.from')"
- format="24hr"
- ref='time_start'
- :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
- v-model='time.start'
- @click:minute="$refs.fromDateMenu.save(time.start)")
-
- v-col
- v-menu(v-model='dueDateMenu'
- :close-on-content-click="false"
- transition="slide-x-transition"
- ref='dueDateMenu'
- :return-value.sync="time.end"
- offset-y
- absolute
- top
- max-width="290px"
- min-width="290px")
- template(v-slot:activator='{ on }')
- v-text-field(
- :label="$t('event.due')"
- :value='time.end'
- v-on='on'
- clearable
- readonly)
- v-time-picker(
- v-if='dueDateMenu'
- :label="$t('event.due')"
- format="24hr"
- :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]"
- v-model='time.end'
- @click:minute="$refs.dueDateMenu.save(time.end)")
-
- //- MEDIA / FLYER / POSTER
-
- v-file-input(
- :label="$t('common.media')"
- :hint="$t('event.media_description')"
- prepend-icon="mdi-camera"
- v-model='event.image'
- persistent-hint
- accept='image/*')
-
- //- tags
- v-combobox.mt-3(v-model='event.tags'
- chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint
- :delimiters="[',', ' ']"
- :items="tags.map(t => t.tag)"
- :label="$t('common.tags')")
+ //- tags
+ v-combobox.col-6.mt-3(v-model='event.tags'
+ chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint
+ :delimiters="[',', ' ']"
+ :items="tags.map(t => t.tag)"
+ :label="$t('common.tags')")
v-card-actions
v-spacer
@@ -142,11 +71,13 @@ import dayjs from 'dayjs'
import Editor from '@/components/Editor'
import List from '@/components/List'
import ImportDialog from './ImportDialog'
-import WhenInput from './WhenInput'
+import DateInput from './DateInput'
+import HourInput from './HourInput'
+import WhereInput from './WhereInput'
export default {
name: 'NewEvent',
- components: { List, Editor, ImportDialog, WhenInput },
+ components: { List, Editor, ImportDialog, WhereInput, HourInput, DateInput },
validate ({ store }) {
return (store.state.auth.loggedIn || store.state.settings.allow_anon_event)
},
@@ -191,8 +122,6 @@ export default {
const year = dayjs().year()
return {
valid: false,
- dueDateMenu: false,
- fromDateMenu: false,
openImportDialog: false,
event: {
type: 'normal',
@@ -200,7 +129,7 @@ export default {
title: '',
description: '',
tags: [],
- image: {},
+ image: null,
recurrent: { frequency: '1m', days: [], type: 'weekday_desc' }
},
page: { month, year },
@@ -211,29 +140,17 @@ export default {
edit: false,
loading: false,
mediaUrl: '',
- disableAddress: false,
+ disableAddress: false
}
},
computed: {
- ...mapState(['tags', 'places', 'events', 'settings']),
+ ...mapState(['tags', 'places', 'events', 'settings'])
},
methods: {
...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']),
eventImported (event) {
this.event = Object.assign(this.event, event)
},
- selectPlace (p) {
- const place = p && this.places.find(place => place.id === p.id)
- if (place && place.address) {
- this.event.place.name = p.name
- this.event.place.address = place.address
- this.disableAddress = true
- } else {
- this.disableAddress = false
- this.event.place.address = ''
- }
- // this.$nextTick(() => this.$refs.address.focus() )
- },
// recurrentDays () {
// if (this.event.type !== 'recurrent' || !this.date || !this.date.length) { return }
// const type = this.event.recurrent.type
@@ -244,7 +161,7 @@ export default {
this.event.image = {}
},
async done () {
- if (!this.$refs.form.validate()) return
+ if (!this.$refs.form.validate()) { return }
this.loading = true
let start_datetime, end_datetime
const [start_hour, start_minute] = this.time.start.split(':')
@@ -325,11 +242,6 @@ export default {
}
diff --git a/plugins/filters.js b/plugins/filters.js
index eb4e01a6..f3d09329 100644
--- a/plugins/filters.js
+++ b/plugins/filters.js
@@ -34,8 +34,7 @@ export default ({ app, store }) => {
// shown in mobile homepage
Vue.filter('day', value => dayjs.unix(value).locale(store.state.locale).format('dddd, D MMM'))
- Vue.filter('from', timestamp => dayjs.unix(timestamp).from())
- // format event start/end datetime based on page
+ Vue.filter('from', timestamp => dayjs.unix(timestamp).fromNow())
Vue.filter('recurrentDetail', event => {
const { frequency, days, type } = event.parent.recurrent
diff --git a/server/api/models/event.js b/server/api/models/event.js
index bcf82d2d..a04a8a88 100644
--- a/server/api/models/event.js
+++ b/server/api/models/event.js
@@ -57,43 +57,43 @@ Resource.belongsTo(Event)
Event.hasMany(Event, { as: 'child', foreignKey: 'parentId' })
Event.belongsTo(Event, { as: 'parent' })
-Event.prototype.toAP = function (username, locale, to = []) {
+Event.prototype.toAPNote = function (username, locale, to = []) {
const tags = this.tags && this.tags.map(t => t.tag.replace(/[ #]/g, '_'))
const plainDescription = htmlToText.fromString(this.description.replace('\n', '').slice(0, 1000))
- const summary = `
- 📍 ${this.place && this.place.name}
- 📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')}
+ const content = `
+ ${this.title}
+ 📍 ${this.place && this.place.name}
+ 📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')}
- ${plainDescription}
+ ${plainDescription}
+
+ ${config.baseurl}/event/${this.id}
${tags && tags.map(t => `#${t}`)}
-
`
- const attachment = []
- if (this.image_path) {
- attachment.push({
- type: 'Document',
- mediaType: 'image/jpeg',
- url: `${config.baseurl}/media/${this.image_path}`,
- name: null,
- blurHash: null
- })
- }
-
- to.push('https://www.w3.org/ns/activitystreams#Public')
+ // const attachment = []
+ // if (this.image_path) {
+ // attachment.push({
+ // type: 'Document',
+ // mediaType: 'image/jpeg',
+ // url: `${config.baseurl}/media/${this.image_path}`,
+ // name: null,
+ // blurHash: null
+ // })
+ // }
return {
id: `${config.baseurl}/federation/m/${this.id}`,
- name: this.title,
+ // name: this.title,
url: `${config.baseurl}/event/${this.id}`,
type: 'Note',
- startTime: moment.unix(this.start_datetime).locale(locale).format(),
- endTime: moment.unix(this.end_datetime).locale(locale).format(),
- location: {
- name: this.place && this.place.name
- },
- attachment,
+ // startTime: moment.unix(this.start_datetime).locale(locale).format(),
+ // endTime: moment.unix(this.end_datetime).locale(locale).format(),
+ // location: {
+ // name: this.place && this.place.name
+ // },
+ // attachment,
tag: tags && tags.map(tag => ({
type: 'Hashtag',
name: '#' + tag,
@@ -101,9 +101,9 @@ Event.prototype.toAP = function (username, locale, to = []) {
})),
published: this.createdAt,
attributedTo: `${config.baseurl}/federation/u/${username}`,
- to,
- cc: [`${config.baseurl}/federation/u/${username}/followers`],
- summary
+ to: 'https://www.w3.org/ns/activitystreams#Public',
+ // cc: [`${config.baseurl}/federation/u/${username}/followers`],
+ content
}
}
diff --git a/server/federation/helpers.js b/server/federation/helpers.js
index 2765732a..3d1bad5b 100644
--- a/server/federation/helpers.js
+++ b/server/federation/helpers.js
@@ -78,17 +78,19 @@ const Helpers = {
const body = {
id: `${config.baseurl}/federation/m/${event.id}#create`,
type,
- to: recipients[sharedInbox],
- cc: ['https://www.w3.org/ns/activitystreams#Public', `${config.baseurl}/federation/u/${settingsController.settings.instance_name}/followers`],
+ to: ['https://www.w3.org/ns/activitystreams#Public'],
+ cc: [...recipients[sharedInbox], `${config.baseurl}/federation/u/${settingsController.settings.instance_name}/followers`],
actor: `${config.baseurl}/federation/u/${settingsController.settings.instance_name}`,
- object: event.toAP(settingsController.settings.instance_name,
+ object: event.toAPNote(settingsController.settings.instance_name,
settingsController.settings.instance_locale,
recipients[sharedInbox])
}
body['@context'] = [
'https://www.w3.org/ns/activitystreams',
'https://w3id.org/security/v1',
- { Hashtag: 'as:Hashtag' }]
+ {
+ Hashtag: 'as:Hashtag'
+ }]
Helpers.signAndSend(body, sharedInbox)
}
},
diff --git a/server/federation/index.js b/server/federation/index.js
index fe87f5dd..70b1f1f6 100644
--- a/server/federation/index.js
+++ b/server/federation/index.js
@@ -37,7 +37,7 @@ router.get('/m/:event_id', async (req, res) => {
const event = await Event.findByPk(req.params.event_id, { include: [User, Tag, Place] })
if (!event) { return res.status(404).send('Not found') }
- return res.json(event.toAP(event.user.username, req.settings.locale))
+ return res.json(event.toAPNote(event.user.username, req.settings.locale))
})
// get any message coming from federation
diff --git a/server/federation/users.js b/server/federation/users.js
index 27d9e70a..d1eeb42c 100644
--- a/server/federation/users.js
+++ b/server/federation/users.js
@@ -12,7 +12,6 @@ module.exports = {
const name = req.params.name
if (!name) { return res.status(400).send('Bad request.') }
- // const user = await User.findOne({ where: { username: name } })
if (name !== req.settings.instance_name) { return res.status(404).send(`No record found for ${name}`) }
const ret = {
'@context': [
@@ -74,8 +73,8 @@ module.exports = {
id: `${config.baseurl}/federation/u/${name}/followers`,
type: 'OrderedCollection',
totalItems: followers.length,
- first: `${config.baseurl}/federation/u/${name}/followers?page=true`,
- last: `${config.baseurl}/federation/u/${name}/followers?page=true`,
+ // first: `${config.baseurl}/federation/u/${name}/followers?page=true`,
+ // last: `${config.baseurl}/federation/u/${name}/followers?page=true`,
orderedItems: followers.map(f => f.ap_id)
})
}
@@ -84,7 +83,7 @@ module.exports = {
id: `${config.baseurl}/federation/u/${name}/followers?page=${page}`,
type: 'OrderedCollectionPage',
totalItems: followers.length,
- partOf: `${config.baseurl}/federation/u/${name}/followers`,
+ // partOf: `${config.baseurl}/federation/u/${name}/followers`,
orderedItems: followers.map(f => f.ap_id)
})
},
@@ -92,35 +91,41 @@ module.exports = {
async outbox (req, res) {
// TODO
const name = req.params.name
- const page = req.query.page
+ // const page = req.query.page
if (!name) { return res.status(400).send('Bad request.') }
if (name !== req.settings.instance_name) { return res.status(404).send(`No record found for ${name}`) }
const events = await Event.findAll({ include: [{ model: Tag, required: false }, Place] })
- debug('Inside outbox, should return all events from this user')
+ debug('Inside outbox, should return all events from this user -> ', events.length)
// https://www.w3.org/TR/activitypub/#outbox
res.type('application/activity+json; charset=utf-8')
- if (!page) {
- return res.json({
- '@context': 'https://www.w3.org/ns/activitystreams',
- id: `${config.baseurl}/federation/u/${name}/outbox`,
- type: 'OrderedCollection',
- totalItems: events.length,
- first: `${config.baseurl}/federation/u/${name}/outbox?page=true`,
- last: `${config.baseurl}/federation/u/${name}/outbox?page=true`
- })
- }
+ // if (!page) {
+ // return res.json({
+ // '@context': 'https://www.w3.org/ns/activitystreams',
+ // id: `${config.baseurl}/federation/u/${name}/outbox`,
+ // type: 'OrderedCollection',
+ // totalItems: events.length,
+ // first: `${config.baseurl}/federation/u/${name}/outbox?page=true`,
+ // last: `${config.baseurl}/federation/u/${name}/outbox?page=true`
+ // })
+ // }
- debug('With pagination %s', page)
+ // debug('With pagination %s', page)
return res.json({
- '@context': ['https://www.w3.org/ns/activitystreams', { Hashtag: 'as:Hashtag' }],
- id: `${config.baseurl}/federation/u/${name}/outbox?page=${page}`,
+ '@context': [
+ 'https://www.w3.org/ns/activitystreams',
+ 'https://w3id.org/security/v1',
+ {
+ hashtag: 'as:Hashtag'
+ }
+ ],
+ id: `${config.baseurl}/federation/u/${name}/outbox`,
type: 'OrderedCollectionPage',
totalItems: events.length,
- partOf: `${config.baseurl}/federation/u/${name}/outbox`,
+ // partOf: `${config.baseurl}/federation/u/${name}/outbox`,
orderedItems:
events.map(e => ({
id: `${config.baseurl}/federation/m/${e.id}#create`,
@@ -129,7 +134,7 @@ module.exports = {
cc: [`${config.baseurl}/federation/u/${name}/followers`],
published: e.createdAt,
actor: `${config.baseurl}/federation/u/${name}`,
- object: e.toAP(name, req.settings.locale)
+ object: e.toAPNote(name, req.settings.locale)
}))
})
}
diff --git a/server/helpers.js b/server/helpers.js
index ec04b5e3..3aa5e0ae 100644
--- a/server/helpers.js
+++ b/server/helpers.js
@@ -23,6 +23,8 @@ domPurify.addHook('beforeSanitizeElements', node => {
if (node.hasAttribute && node.hasAttribute('href')) {
const href = node.getAttribute('href')
const text = node.textContent
+
+ // remove FB tracking param
if (href.includes('fbclid=')) {
try {
const url = new URL.URL(href)
@@ -113,7 +115,9 @@ module.exports = {
try {
const response = await axios.get(URL)
Microformats.get({ html: response.data, filter: ['h-event'] }, (err, data) => {
- if (!data.items.length || !data.items[0].properties) return res.sendStatus(404)
+ if (err || !data.items.length || !data.items[0].properties) {
+ return res.sendStatus(404)
+ }
const event = data.items[0].properties
return res.json({
title: get(event, 'name[0]', ''),
@@ -129,7 +133,7 @@ module.exports = {
// const event = dom.window.document.querySelected(".h-event")
// console.error(event)
// console.error(response)
- } catch(e){
+ } catch (e) {
console.error(e)
}
diff --git a/yarn.lock b/yarn.lock
index 40931c10..530607ae 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -993,10 +993,10 @@
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==
-"@eslint/eslintrc@^0.2.0":
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.0.tgz#bc7e3c4304d4c8720968ccaee793087dfb5fe6b4"
- integrity sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ==
+"@eslint/eslintrc@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c"
+ integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
@@ -1863,17 +1863,17 @@
"@webassemblyjs/wast-parser" "1.9.0"
"@xtuc/long" "4.2.2"
-"@webpack-cli/info@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.0.2.tgz#7ba1a7cfa9efa5b51e76b20ada88ac33b0340ad3"
- integrity sha512-FEfLQwmN4pXZSYSrtp+KC84rFanoCIxXFpS2wUvviDCE2fnajwxw2GXzbj83IlH4Dl8Wq8kJjavVwvxv3YJmnw==
+"@webpack-cli/info@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.1.0.tgz#c596d5bc48418b39df00c5ed7341bf0f102dbff1"
+ integrity sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ==
dependencies:
envinfo "^7.7.3"
-"@webpack-cli/serve@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.0.1.tgz#28abe7dcb18224ccd4b4e2d37f70e5be66c3d6a9"
- integrity sha512-WGMaTMTK6NOe29Hw1WBEok9vGLfKg5C6jWzNOS/6HH1YadR+RL+TRWRcSyc81Dzulljhk/Ree9mrDM4Np9GGOQ==
+"@webpack-cli/serve@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.1.0.tgz#13ad38f89b6e53d1133bac0006a128217a6ebf92"
+ integrity sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
@@ -2040,7 +2040,7 @@ ansi-colors@^4.1.1:
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-ansi-escapes@^4.2.1, ansi-escapes@^4.3.1:
+ansi-escapes@^4.2.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
@@ -3341,10 +3341,10 @@ commander@^5.1.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
-commander@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc"
- integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA==
+commander@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75"
+ integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==
commondir@^1.0.1:
version "1.0.1"
@@ -3927,10 +3927,10 @@ dayjs@^1.8.16:
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.31.tgz#0cd1114c2539dd5ad9428be0c38df6d4bb40b9d3"
integrity sha512-mPh1mslned+5PuIuiUfbw4CikHk6AEAf2Baxih+wP5fssv+wmlVhvgZ7mq+BhLt7Sr/Hc8leWDiwe6YnrpNt3g==
-dayjs@^1.9.4:
- version "1.9.4"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.4.tgz#fcde984e227f4296f04e7b05720adad2e1071f1b"
- integrity sha512-ABSF3alrldf7nM9sQ2U+Ln67NRwmzlLOqG7kK03kck0mw3wlSSEKv/XhKGGxUjQcS57QeiCyNdrFgtj9nWlrng==
+dayjs@^1.9.5:
+ version "1.9.5"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.5.tgz#fd49994ebe71639d2ce9575e97186642dfce9808"
+ integrity sha512-WULIw7UpW/E0y6VywewpbXAMH3d5cZijEhoHLwM+OMVbk/NtchKS/W+57H/0P1rqU7gHrAArjiRLHCUhgMQl6w==
de-indent@^1.0.2:
version "1.0.2"
@@ -4240,10 +4240,10 @@ domhandler@^3.0.0:
dependencies:
domelementtype "^2.0.1"
-dompurify@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.0.tgz#51d34e76faa38b5d6b4e83a0678530f27fe3965c"
- integrity sha512-bqFOQ7XRmmozp0VsKdIEe8UwZYxj0yttz7l80GBtBqdVRY48cOpXH2J/CVO7AEkV51qY0EBVXfilec18mdmQ/w==
+dompurify@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.2.tgz#cb8c2b1a2f3c8a0b565127504ae4eedec176a972"
+ integrity sha512-BsGR4nDLaC5CNBnyT5I+d5pOeaoWvgVeg6Gq/aqmKYWMPR07131u60I80BvExLAJ0FQEIBQ1BTicw+C5+jOyrg==
domutils@1.5.1:
version "1.5.1"
@@ -4426,7 +4426,7 @@ enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
-enquirer@^2.3.4, enquirer@^2.3.5:
+enquirer@^2.3.5, enquirer@^2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -4596,10 +4596,10 @@ eslint-ast-utils@^1.1.0:
lodash.get "^4.4.2"
lodash.zip "^4.2.0"
-eslint-config-prettier@^6.14.0:
- version "6.14.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz#390e7863a8ae99970981933826476169285b3a27"
- integrity sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ==
+eslint-config-prettier@^6.15.0:
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
+ integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
dependencies:
get-stdin "^6.0.0"
@@ -4608,10 +4608,10 @@ eslint-config-standard@^14.1.1:
resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea"
integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==
-eslint-config-standard@^15.0.0:
- version "15.0.0"
- resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-15.0.0.tgz#459f823b47ac0541b0a22b1d0a161a9da543f687"
- integrity sha512-MZ8KRhUJLtMbjQo9PsEzFG29vqbQJfLoLBHrTaAaFMtDx9PIm1GZgyUanOLgf1xOE1aWrtZZSbxBYCy8dJCCBg==
+eslint-config-standard@^16.0.1:
+ version "16.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.1.tgz#9a385eea27f96b7918cb53f07e01e9d10cc56401"
+ integrity sha512-WBBiQQZdaPyL+4sPkGWhWrHCDtvJoU195B9j8yXE9uFQnX34gMXI5CeBRm95gx3PMEZPM5OpwET10hH4F4SxCA==
eslint-import-resolver-node@^0.3.4:
version "0.3.4"
@@ -4806,13 +4806,13 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-eslint@^7.12.0:
- version "7.12.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.0.tgz#7b6a85f87a9adc239e979bb721cde5ce0dc27da6"
- integrity sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA==
+eslint@^7.12.1:
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.1.tgz#bd9a81fa67a6cfd51656cdb88812ce49ccec5801"
+ integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg==
dependencies:
"@babel/code-frame" "^7.0.0"
- "@eslint/eslintrc" "^0.2.0"
+ "@eslint/eslintrc" "^0.2.1"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
@@ -4970,10 +4970,10 @@ execa@^3.4.0:
signal-exit "^3.0.2"
strip-final-newline "^2.0.0"
-execa@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2"
- integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==
+execa@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
dependencies:
cross-spawn "^7.0.0"
get-stream "^5.0.0"
@@ -6092,10 +6092,10 @@ iconv-lite@0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
-ics@^2.26.0:
- version "2.26.0"
- resolved "https://registry.yarnpkg.com/ics/-/ics-2.26.0.tgz#67c17d6bcac02b1547cc97bfbe3b99f057900b39"
- integrity sha512-j9ffwzVlO4h7iXP0V/3ma55fT+mnk9fS2NsIo9tu0SAnJ9B92qTeJ7r23nscBkNEfzy6yCXBm+3cI6CeFFG24A==
+ics@^2.26.1:
+ version "2.26.1"
+ resolved "https://registry.yarnpkg.com/ics/-/ics-2.26.1.tgz#3d1228df16263f8e51e975ca40a6a51d19bdebc5"
+ integrity sha512-C2tspVID1sINpeVea0HMuZeMCHdRBiUHNAWG4P7EuSIrDZ6M/cOe48MTF2a36DCOqEld7LDKkLNDFVnGbGPepA==
dependencies:
"@hapi/joi" "^17.1.1"
uuid "^3.3.3"
@@ -6269,7 +6269,7 @@ interpret@^1.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
-interpret@^2.0.0:
+interpret@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
@@ -7007,6 +7007,11 @@ less@^3.12.2:
native-request "^1.0.5"
source-map "~0.6.0"
+leven@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -8797,10 +8802,10 @@ pg-int8@1.0.1:
resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c"
integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==
-pg-pool@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.1.tgz#5f4afc0f58063659aeefa952d36af49fa28b30e0"
- integrity sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==
+pg-pool@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.2.tgz#a560e433443ed4ad946b84d774b3f22452694dff"
+ integrity sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA==
pg-protocol@^1.3.0:
version "1.3.0"
@@ -8818,15 +8823,15 @@ pg-types@^2.1.0:
postgres-date "~1.0.4"
postgres-interval "^1.1.0"
-pg@^8.4.1:
- version "8.4.1"
- resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.1.tgz#06cfb6208ae787a869b2f0022da11b90d13d933e"
- integrity sha512-NRsH0aGMXmX1z8Dd0iaPCxWUw4ffu+lIAmGm+sTCwuDDWkpEgRCAHZYDwqaNhC5hG5DRMOjSUFasMWhvcmLN1A==
+pg@^8.4.2:
+ version "8.4.2"
+ resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.2.tgz#2aa58166a23391e91d56a7ea57c6d99931c0642a"
+ integrity sha512-E9FlUrrc7w3+sbRmL1CSw99vifACzB2TjhMM9J5w9D1LIg+6un0jKkpHS1EQf2CWhKhec2bhrBLVMmUBDbjPRQ==
dependencies:
buffer-writer "2.0.0"
packet-reader "1.0.0"
pg-connection-string "^2.4.0"
- pg-pool "^3.2.1"
+ pg-pool "^3.2.2"
pg-protocol "^1.3.0"
pg-types "^2.1.0"
pgpass "1.x"
@@ -10674,10 +10679,10 @@ safe-regex@^2.1.1:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-sass-loader@^10.0.4:
- version "10.0.4"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.4.tgz#ec7181096947d078d60a1d76d527f47c19b151d8"
- integrity sha512-zhdZ8qvZM4iL5XjLVEjJLvKWvC+MB+hHgzL2x/Nf7UHpUNmPYsJvypW79bW39g4LZ603dH/dRSsRYzJJIljtdA==
+sass-loader@^10.0.5:
+ version "10.0.5"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.5.tgz#f53505b5ddbedf43797470ceb34066ded82bb769"
+ integrity sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w==
dependencies:
klona "^2.0.4"
loader-utils "^2.0.0"
@@ -10703,10 +10708,10 @@ sass@^1.26.5:
dependencies:
chokidar ">=2.0.0 <4.0.0"
-sass@^1.27.0:
- version "1.27.0"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.27.0.tgz#0657ff674206b95ec20dc638a93e179c78f6ada2"
- integrity sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig==
+sass@^1.29.0:
+ version "1.29.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.29.0.tgz#ec4e1842c146d8ea9258c28c141b8c2b7c6ab7f1"
+ integrity sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==
dependencies:
chokidar ">=2.0.0 <4.0.0"
@@ -12268,11 +12273,16 @@ uuid@^8.1.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea"
integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==
-v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0:
+v8-compile-cache@^2.0.3:
version "2.1.1"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745"
integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==
+v8-compile-cache@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
+ integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
+
valid-data-url@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f"
@@ -12539,23 +12549,23 @@ webpack-bundle-analyzer@^3.9.0:
opener "^1.5.1"
ws "^6.0.0"
-webpack-cli@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.1.0.tgz#3a8fe05326015cc92b67abea68e3c320d418b16e"
- integrity sha512-NdhxXMZmoik62Y05t0h1y65LjBM7BwFPq311ihXuMM3RY6dlc4KkCTyHLzTuBEc+bqq6d3xh+CWmU0xRexNJBA==
+webpack-cli@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.2.0.tgz#10a09030ad2bd4d8b0f78322fba6ea43ec56aaaa"
+ integrity sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA==
dependencies:
- "@webpack-cli/info" "^1.0.2"
- "@webpack-cli/serve" "^1.0.1"
- ansi-escapes "^4.3.1"
+ "@webpack-cli/info" "^1.1.0"
+ "@webpack-cli/serve" "^1.1.0"
colorette "^1.2.1"
command-line-usage "^6.1.0"
- commander "^6.0.0"
- enquirer "^2.3.4"
- execa "^4.0.0"
+ commander "^6.2.0"
+ enquirer "^2.3.6"
+ execa "^4.1.0"
import-local "^3.0.2"
- interpret "^2.0.0"
+ interpret "^2.2.0"
+ leven "^3.1.0"
rechoir "^0.7.0"
- v8-compile-cache "^2.1.0"
+ v8-compile-cache "^2.2.0"
webpack-merge "^4.2.2"
webpack-dev-middleware@^3.7.2:
From 43ba760bb8b68960c53a046c0a0228cf8b99680b Mon Sep 17 00:00:00 2001
From: les
Date: Thu, 12 Nov 2020 18:00:46 +0100
Subject: [PATCH 130/363] places and tags are always taken server side
---
pages/export.vue | 4 ----
1 file changed, 4 deletions(-)
diff --git a/pages/export.vue b/pages/export.vue
index 55c9a5c3..3f673218 100644
--- a/pages/export.vue
+++ b/pages/export.vue
@@ -72,10 +72,6 @@ export default {
name: 'Exports',
components: { List, FollowMe },
async asyncData ({ $axios, params, store }) {
- // get metadata just in case we are not coming from home
- if (store.state.tags.length) { return }
- const { tags, places } = await $axios.$get('/event/meta')
- store.commit('update', { tags, places })
},
data () {
return {
From ba8b7028c72826f2e5a1c60d8f820236de8b2a34 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 13 Nov 2020 00:12:05 +0100
Subject: [PATCH 131/363] remove v-calendar deps and makes Home a page not a
component
---
components/Calendar.vue | 96 ----------------------
components/Home.vue | 159 -------------------------------------
nuxt.config.js | 1 -
pages/event/eventAdmin.vue | 3 -
pages/index.vue | 157 +++++++++++++++++++++++++++++++++---
plugins/v-calendar.js | 7 --
6 files changed, 146 insertions(+), 277 deletions(-)
delete mode 100644 components/Calendar.vue
delete mode 100644 components/Home.vue
delete mode 100644 plugins/v-calendar.js
diff --git a/components/Calendar.vue b/components/Calendar.vue
deleted file mode 100644
index 9f9f0c92..00000000
--- a/components/Calendar.vue
+++ /dev/null
@@ -1,96 +0,0 @@
-
- #calendar
- v-calendar(
- title-position='left'
- :is-dark="settings['theme.is_dark']"
- @update:from-page='updatePage'
- :locale='$i18n.locale'
- :attributes='attributes'
- transition='fade'
- is-expanded
- is-inline
- @dayclick='click')
-
-
-
-
-
diff --git a/components/Home.vue b/components/Home.vue
deleted file mode 100644
index d07a0902..00000000
--- a/components/Home.vue
+++ /dev/null
@@ -1,159 +0,0 @@
-
- v-container#home(fluid)
-
- //- Announcements
- Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement')
-
- v-row#calbarmb-2
- .col-xl-5.col-lg-5.col-md-6.col-sm-12.col-xs-12
- v-date-picker(
- @update:picker-date='monthChange'
- @click:date='dayChange'
- :locale='settings.locale'
- :events='calendarEvents'
- :value='date'
- landscape)
-
- .col
- Search(
- :filters='filters'
- @update='updateFilters')
- v-chip(v-if='selectedDay' close @click:close='dayChange(selectedDay)') {{selectedDay}}
-
- #events
- Event(v-for='event in events'
- :key='event.id' :event='event'
- @tagclick='tagClick' @placeclick='placeClick')
-
-
-
-
-
diff --git a/nuxt.config.js b/nuxt.config.js
index c760cd87..610b4b3a 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -42,7 +42,6 @@ module.exports = {
'@/plugins/axios', // axios baseurl configuration
'@/plugins/validators', // inject validators
'@/plugins/api' // api helpers
- // { src: '@/plugins/v-calendar', ssr: false } // calendar, fix ssr
],
render: {
diff --git a/pages/event/eventAdmin.vue b/pages/event/eventAdmin.vue
index 4239bbc1..9d37dec2 100644
--- a/pages/event/eventAdmin.vue
+++ b/pages/event/eventAdmin.vue
@@ -16,7 +16,6 @@ div
v-btn(text color='primary' @click='remove(true)') {{$t('common.remove')}}
+
diff --git a/plugins/v-calendar.js b/plugins/v-calendar.js
deleted file mode 100644
index 29f0414e..00000000
--- a/plugins/v-calendar.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// import Vue from 'vue'
-// import VCalendar from 'v-calendar'
-// export default () => {
-// Vue.use(VCalendar, {
-// firstDayOfWeek: 2
-// })
-// }
From c41c930f7054702b7fbbca60d51c392d1835a166 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 13 Nov 2020 00:12:14 +0100
Subject: [PATCH 132/363] fix Confirm title
---
components/Confirm.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/Confirm.vue b/components/Confirm.vue
index 18702406..bc6d3bb0 100644
--- a/components/Confirm.vue
+++ b/components/Confirm.vue
@@ -63,7 +63,7 @@ export default {
methods: {
open (message, options = {}) {
this.dialog = true
- this.title = options.title || 'Confirm'
+ this.title = options.title || this.$t('common.confirm')
this.message = this.$t(message, options)
this.options = Object.assign(this.options, options)
return new Promise((resolve, reject) => {
From 95e473d531fdf5fb440fb233458ad5532abfc03a Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 13 Nov 2020 00:13:44 +0100
Subject: [PATCH 133/363] cleaning export
---
assets/style.less | 5 ++
components/FollowMe.vue | 7 +-
components/List.vue | 14 ++--
components/Search.vue | 15 ++--
docs/assets/css/style.css | 6 +-
locales/it.json | 4 +-
package.json | 12 ++--
pages/event/_id.vue | 1 +
pages/export.vue | 146 ++++++++++++++++++++++----------------
plugins/api.js | 21 +++---
server/helpers.js | 6 +-
store/index.js | 9 ---
12 files changed, 134 insertions(+), 112 deletions(-)
diff --git a/assets/style.less b/assets/style.less
index 11785459..2cc3e325 100644
--- a/assets/style.less
+++ b/assets/style.less
@@ -1,3 +1,8 @@
html, body {
scrollbar-width: thin;
+ scrollbar-color: orange;
}
+
+li {
+ margin-left: 10px;
+}
\ No newline at end of file
diff --git a/components/FollowMe.vue b/components/FollowMe.vue
index 620eed66..a486eb2f 100644
--- a/components/FollowMe.vue
+++ b/components/FollowMe.vue
@@ -1,5 +1,5 @@
- v-card(color='secondary')
+ v-card(:color='isDialog ? "secondary" : null')
v-card-title(v-text="$t('common.follow_me_title')")
v-card-text
p(v-html="$t('event.follow_me_description', { title: settings.title, account: `@${settings.instance_name}@${domain}`})")
@@ -22,9 +22,8 @@ import url from 'url'
export default {
name: 'FollowMe',
- props: [
- { isDialog: { type: Boolean, default: false }}
- ],
+ props:
+ { isDialog: { type: Boolean, default: false } },
data () {
return {
instance_hostname: '',
diff --git a/components/List.vue b/components/List.vue
index bc3ce6ea..f5f70833 100644
--- a/components/List.vue
+++ b/components/List.vue
@@ -3,11 +3,11 @@ div#list
p(v-if='title') {{title}}
v-timeline(dense)
v-timeline-item(
- v-for='event in events'
+ v-for='event in computedEvents'
:key='`${event.id}_${event.start_datetime}`')
- div {{event|when}}
- a(:href='`/event/${event.id}`' target='_blank') {{event.title}}
- small.float-right @{{event.place.name}}
+ .text-subtitle {{event|when}}
+ .text-subtitle.float-right @{{event.place.name}}
+ a.text-h5(:href='`/event/${event.id}`' target='_blank') {{event.title}}
diff --git a/components/Search.vue b/components/Search.vue
index 8e8c3798..0732c2b7 100644
--- a/components/Search.vue
+++ b/components/Search.vue
@@ -6,11 +6,6 @@
:label="$t('event.show_recurrent')"
@change="v => $emit('showrecurrent', v)")
- v-switch.mt-0(
- v-if='pastFilter' inset color='primary'
- :label="$t('event.show_past')"
- @change="v => $emit('showpast', v)")
-
v-autocomplete.mt-0(
:label='$t("common.search")'
:items='keywords'
@@ -36,7 +31,7 @@
diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css
index 895bcced..632592e0 100644
--- a/docs/assets/css/style.css
+++ b/docs/assets/css/style.css
@@ -1,4 +1,4 @@
-.navigation-list-item {
+/* .navigation-list-item {
font-size: 18px !important;
padding: 4px;
}
@@ -10,3 +10,7 @@ html, body {
.page-content h1:first-of-type {
font-weight: 500;
}
+
+li {
+ margin-left: 10px;
+} */
\ No newline at end of file
diff --git a/locales/it.json b/locales/it.json
index ccde9915..4f864209 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -165,8 +165,8 @@
"user_create_ok": "Utente creato",
"allow_registration_description": "Vuoi abilitare la registrazione?",
"allow_anon_event": "Si possono inserire eventi anonimi (previa conferma)?",
- "allow_recurrent_event": "Abilita eventi fissi",
- "recurrent_event_visible": "Appuntamenti fissi visibili di default",
+ "allow_recurrent_event": "Abilita eventi ricorrenti",
+ "recurrent_event_visible": "Appuntamenti ricorrenti visibili di default",
"federation": "Federazione / ActivityPub",
"enable_federation": "Abilita la federazione",
"enable_federation_help": "Sarà possibile seguire questa istanza dal fediverso",
diff --git a/package.json b/package.json
index bdfd5a4e..aafd1424 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
"cors": "^2.8.5",
"cross-env": "^7.0.2",
"date-fns": "^2.16.1",
- "dayjs": "^1.9.5",
+ "dayjs": "^1.9.6",
"dompurify": "^2.2.2",
"email-templates": "^7.1.2",
"express": "^4.17.1",
@@ -61,7 +61,7 @@
"multer": "^1.4.2",
"nuxt": "^2.14.7",
"nuxt-express-module": "^0.0.11",
- "pg": "^8.4.2",
+ "pg": "^8.5.0",
"sequelize": "^6.3.5",
"sequelize-cli": "^6.2.0",
"sharp": "^0.26.2",
@@ -79,7 +79,7 @@
"@nuxtjs/eslint-config": "^4.0.0",
"@nuxtjs/vuetify": "^1.11.2",
"babel-eslint": "^10.1.0",
- "eslint": "^7.12.1",
+ "eslint": "^7.13.0",
"eslint-config-prettier": "^6.15.0",
"eslint-config-standard": "^16.0.1",
"eslint-loader": "^4.0.2",
@@ -88,14 +88,14 @@
"eslint-plugin-nuxt": "^1.0.0",
"eslint-plugin-prettier": "^3.1.4",
"eslint-plugin-promise": ">=4.0.1",
- "eslint-plugin-standard": "^4.0.2",
+ "eslint-plugin-standard": "^4.1.0",
"eslint-plugin-vue": "^7.1.0",
- "less-loader": "^7.0.2",
+ "less-loader": "^7.1.0",
"nodemon": "^2.0.6",
"prettier": "^2.1.2",
"pug-plain-loader": "^1.0.0",
"sass": "^1.29.0",
- "sass-loader": "^10.0.5",
+ "sass-loader": "^10.1.0",
"vue-cli-plugin-vuetify": "~2.0.7",
"vuetify-loader": "^1.3.0",
"webpack-cli": "^4.2.0"
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 2ece5023..a3cc3227 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -144,6 +144,7 @@ const htmlToText = require('html-to-text')
export default {
name: 'Event',
components: { EventAdmin, EmbedEvent, FollowMe },
+ transition: null,
async asyncData ({ $axios, params, error, store }) {
try {
const event = await $axios.$get(`/event/${params.id}`)
diff --git a/pages/export.vue b/pages/export.vue
index 3f673218..4e82bfe9 100644
--- a/pages/export.vue
+++ b/pages/export.vue
@@ -1,87 +1,109 @@
v-container
p {{$t('export.intro')}}
- //- Search
- v-tabs(v-model='type')
+ Search(
+ :filters='filters'
+ @update='updateFilters')
+ v-card(outlined)
+ v-tabs(v-model='type')
- //- TOFIX
- //- v-tab.pt-1(label='email' name='email')
- //- v-tab-item
- //- p(v-html='$t(`export.email_description`)')
- //- el-form(@submit.native.prevent)
- //- //- el-switch(v-model='notification.notify_on_add' :active-text="$t('notify_on_insert')")
- //- //- br
- //- //- el-switch.mt-2(v-model='notification.send_notification' :active-text="$t('send_notification')")
- //- el-input.mt-2(v-model='notification.email' :placeholder="$t('export.insert_your_address')" ref='email')
- //- el-button.mt-2.float-right(native-type= 'submit' type='success' @click='add_notification') {{$t('common.send')}}
+ //- TOFIX
+ //- v-tab.pt-1(label='email' name='email')
+ //- v-tab-item
+ //- p(v-html='$t(`export.email_description`)')
+ //- el-form(@submit.native.prevent)
+ //- //- el-switch(v-model='notification.notify_on_add' :active-text="$t('notify_on_insert')")
+ //- //- br
+ //- //- el-switch.mt-2(v-model='notification.send_notification' :active-text="$t('send_notification')")
+ //- el-input.mt-2(v-model='notification.email' :placeholder="$t('export.insert_your_address')" ref='email')
+ //- el-button.mt-2.float-right(native-type= 'submit' type='success' @click='add_notification') {{$t('common.send')}}
- v-tab {{$t('common.feed')}}
- v-tab-item
- v-card
- v-card-text
- p(v-html='$t(`export.feed_description`)')
- v-text-field(v-model='link' readonly)
- v-btn(slot='append' plain text color='primary'
- v-clipboard:copy='link'
- v-clipboard:success='copyLink') {{$t("common.copy")}}
- v-icon.ml-1 mdi-content-copy
+ v-tab {{$t('common.feed')}}
+ v-tab-item
+ v-card
+ v-card-text
+ p(v-html='$t(`export.feed_description`)')
+ v-text-field(v-model='link' readonly)
+ v-btn(slot='prepend' plain text color='primary'
+ v-clipboard:copy='link'
+ v-clipboard:success='copyLink') {{$t("common.copy")}}
+ v-icon.ml-1 mdi-content-copy
- v-tab(v-if='settings.enable_federation') {{$t('common.fediverse')}}
- v-tab-item
- FollowMe
+ v-tab(v-if='settings.enable_federation') {{$t('common.fediverse')}}
+ v-tab-item
+ FollowMe
- v-tab ics/ical
- v-tab-item
- v-card
- v-card-text
- p(v-html='$t(`export.ical_description`)')
- v-text-field(v-model='link')
- v-btn(slot='append' v-clipboard:copy='link' v-clipboard:success='copyLink') {{$t("common.copy")}}
+ v-tab ics/ical
+ v-tab-item
+ v-card
+ v-card-text
+ p(v-html='$t(`export.ical_description`)')
+ v-text-field(v-model='link')
+ v-btn(slot='prepend' plain text color='primary'
+ v-clipboard:copy='link' v-clipboard:success='copyLink') {{$t("common.copy")}}
+ v-icon.ml-1 mdi-content-copy
- v-tab List
- v-tab-item
- v-container
- p(v-html='$t(`export.list_description`)')
+ v-tab List
+ v-tab-item
+ v-container
+ p(v-html='$t(`export.list_description`)')
- v-row
- v-col.mr-2(:span='11')
- v-text-field(v-model='list.title') Title
- v-col.float-right(:span='12')
- List(
- :title='list.title'
- :events='filteredEvents')
- v-text-field.mb-1(type='textarea' v-model='listScript' readonly )
- v-btn(plain v-clipboard:copy='listScript' v-clipboard:success='copyLink') {{$t('common.copy')}}
+ v-row
+ v-col.mr-2(:span='11')
+ v-text-field(v-model='list.title' )
+ v-text-field(v-model='list.maxEvents' type='number')
+ v-col.float-right(:span='12')
+ List(
+ :title='list.title'
+ :maxEvents='list.maxEvents'
+ :events='events')
+ v-text-field.mb-1(type='textarea' v-model='listScript' readonly )
+ v-btn(slot='prepend' plain text
+ color='primary' v-clipboard:copy='listScript' v-clipboard:success='copyLink') {{$t('common.copy')}}
+ v-icon.ml-1 mdi-content-copy
- //- TOFIX
- //- v-tab.pt-1(label='calendar' name='calendar')
- //- v-tab-item
- //- p(v-html='$t(`export.calendar_description`)')
- //- //- no-ssr
- //- Calendar.mb-1
- //- v-text-field.mb-1(type='textarea' v-model='script')
- //- el-button.float-right(plain type="primary" icon='el-icon-document') Copy
+ //- TOFIX
+ //- v-tab.pt-1(label='calendar' name='calendar')
+ //- v-tab-item
+ //- p(v-html='$t(`export.calendar_description`)')
+ //- //- no-ssr
+ //- Calendar.mb-1
+ //- v-text-field.mb-1(type='textarea' v-model='script')
+ //- el-button.float-right(plain type="primary" icon='el-icon-document') Copy
diff --git a/plugins/api.js b/plugins/api.js
index 77e664a7..edd450e6 100644
--- a/plugins/api.js
+++ b/plugins/api.js
@@ -1,11 +1,10 @@
export default ({ $axios, store }, inject) => {
-
const api = {
/**
* Get events
- *
+ *
* filter: {
* start_datetime: unix_timestamp (default now)
* end_datetime: unix_timestamp
@@ -13,16 +12,18 @@ export default ({ $axios, store }, inject) => {
* places: [place_id],
* limit: (default ∞)
* }
- *
+ *
*/
async getEvents (params) {
try {
- const events = await $axios.$get(`/events`, { params: {
- start: params.start,
- end: params.end,
- places: params.places && params.places.join(','),
- tags: params.tags && params.tags.join(',')
- }} )
+ const events = await $axios.$get('/events', {
+ params: {
+ start: params.start,
+ end: params.end,
+ places: params.places && params.places.join(','),
+ tags: params.tags && params.tags.join(',')
+ }
+ })
return events
} catch (e) {
console.error(e)
@@ -31,4 +32,4 @@ export default ({ $axios, store }, inject) => {
}
}
inject('api', api)
-}
\ No newline at end of file
+}
diff --git a/server/helpers.js b/server/helpers.js
index 3aa5e0ae..f02278c2 100644
--- a/server/helpers.js
+++ b/server/helpers.js
@@ -1,6 +1,6 @@
const settingsController = require('./api/controller/settings')
const acceptLanguage = require('accept-language')
-const moment = require('moment-timezone')
+const dayjs = require('dayjs')
const config = require('config')
const debug = require('debug')('helpers')
const pkg = require('../package.json')
@@ -66,8 +66,8 @@ module.exports = {
acceptLanguage.languages(Object.keys(locales))
req.settings.locale = acceptLanguage.get(acceptedLanguages)
req.settings.user_locale = settingsController.user_locale[req.settings.locale]
- moment.locale(req.settings.locale)
- moment.tz.setDefault(req.settings.instance_timezone)
+ dayjs.locale(req.settings.locale)
+ dayjs.tz.setDefault(req.settings.instance_timezone)
next()
},
diff --git a/store/index.js b/store/index.js
index 7ee8c80a..23646ad9 100644
--- a/store/index.js
+++ b/store/index.js
@@ -72,21 +72,12 @@ export const actions = {
const { tags, places } = await this.$axios.$get('/event/meta')
commit('update', { tags, places })
},
- async addEvent ({ commit }, formData) {
- await this.$axios.$post('/event', formData)
- },
- async updateEvent ({ commit }, formData) {
- await this.$axios.$put('/event', formData)
- },
setFilters ({ commit }, filters) {
commit('setFilters', filters)
},
setAnnouncements ({ commit }, announcements) {
commit('setAnnouncements', announcements)
},
- delEvent ({ commit }, eventId) {
- commit('delEvent', eventId)
- },
async setSetting ({ commit }, setting) {
await this.$axios.$post('/settings', setting)
commit('setSetting', setting)
From f22c6b848390bb628e0e200a56eda5c99991de65 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 13 Nov 2020 00:13:59 +0100
Subject: [PATCH 134/363] DateInput
---
pages/add/DateInput.vue | 29 +++++++++++++----------------
pages/add/_edit.vue | 16 +++++++++-------
2 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue
index c5a1cf60..95e56101 100644
--- a/pages/add/DateInput.vue
+++ b/pages/add/DateInput.vue
@@ -20,11 +20,11 @@ v-row
v-date-picker(
:min='today'
v-model="value.date"
- :range="type === 'multidate'"
+ :range="value.type === 'multidate'"
:locale='settings.locale'
@input="pick")
- v-btn-toggle.col-md-4(@change='changeType' color='primary' :value='type')
+ v-btn-toggle.col-md-4(@change='changeType' color='primary' :value='value.type')
v-btn(value='normal') {{$t('event.normal')}}
v-btn(value='multidate') {{$t('event.multidate')}}
v-menu(v-if='settings.allow_recurrent_event' offset-y open-on-hover)
@@ -34,8 +34,8 @@ v-row
v-list-item(v-for='f in frequencies' :key='f.value'
@click='selectFrequency(f.value)') {{f.text}}
- //- //- p.col-12 {{$t(`event.${type}_description`)}}
- //- v-btn-toggle(v-if="type === 'recurrent'" v-model='recurrent.frequency' color='primary')
+ p.col-12 {{$t(`event.${value.type}_description`)}}
+ //- v-btn-toggle(v-if="type === 'recurrent'" v-model='value.recurrent.frequency' color='primary')
//- v-btn(v-for='f in frequencies' :value='f.value') {{f.text}}
//- .datePicker
@@ -49,9 +49,9 @@ v-row
//- is-expanded
//- :min-date='type !== "recurrent" && new Date()')
- div.text-center.mb-2(v-if='type === "recurrent"')
- span(v-if='recurrent.frequency !== "1m" && recurrent.frequency !== "2m"') {{whenPatterns}}
- v-btn-toggle.mt-1(v-else v-model='recurrent.type' color='primary')
+ div.text-center.mb-2(v-if='value.type === "recurrent"')
+ span(v-if='value.recurrent.frequency !== "1m" && value.recurrent.frequency !== "2m"') {{whenPatterns}}
+ v-btn-toggle.mt-1(v-else v-model='value.recurrent.type' color='primary')
v-btn(v-for='whenPattern in whenPatterns' :value='whenPattern.key' :key='whenPatterns.key' small)
span {{whenPattern.label}}
@@ -72,7 +72,6 @@ export default {
},
data () {
return {
- date: null,
datePickerMenu: false,
today: dayjs().format('YYYY-MM-DD'),
type: 'normal',
@@ -95,10 +94,10 @@ export default {
return modeMap[this.type]
},
whenPatterns () {
- if (!this.date) { return }
- const date = dayjs(this.date)
+ if (!this.value.date) { return }
+ const date = dayjs(this.value.date)
- const freq = this.recurrent.frequency
+ const freq = this.value.recurrent.frequency
const weekDay = date.format('dddd')
if (freq === '1w' || freq === '2w') {
return this.$t(`event.recurrent_${freq}_days`, { days: weekDay })
@@ -219,15 +218,13 @@ export default {
},
methods: {
changeType (type) {
- this.date = null
- this.type = type || 'normal'
+ this.$emit('input', { type: type || 'normal', date: undefined })
},
selectFrequency (f) {
- this.recurrent.frequency = f
- this.type = 'recurrent'
+ this.$emit('input', { recurrent: { frequency: f }, date: null, type: 'recurrent' })
},
pick (value) {
- if (this.type === 'normal' || this.type === 'recurrent' || this.date.length === 2) {
+ if (this.value.type === 'normal' || this.value.type === 'recurrent' || this.value.date.length === 2) {
this.datePickerMenu = false
}
}
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index 205bb3a8..1b92a357 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -99,10 +99,11 @@ export default {
data.event.place.address = event.place.address || ''
data.date = {}
if (event.multidate) {
+ const start = dayjs.unix(event.start_datetime).format('YYYY-MM-DD')
+ const end = dayjs.unix(event.end_datetime).format('YYYY-MM-DD')
data.date = {
type: 'multidate',
- start: dayjs.unix(event.start_datetime).toDate(),
- end: dayjs.unix(event.end_datetime).toDate()
+ date: [start, end]
}
} else if (event.recurrent) {
data.date.type = 'recurrent'
@@ -150,10 +151,10 @@ export default {
}
},
computed: {
- ...mapState(['tags', 'places', 'events', 'settings'])
+ ...mapState(['tags', 'places', 'settings'])
},
methods: {
- ...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']),
+ ...mapActions(['updateMeta']),
eventImported (event) {
this.event = Object.assign(this.event, event)
},
@@ -179,6 +180,7 @@ export default {
const formData = new FormData()
if (this.date.type === 'multidate') {
+ console.error('sono in multidate!')
start_datetime = dayjs(this.date.date[0])
.set('hour', start_hour).set('minute', start_minute)
end_datetime = dayjs(this.date.date[1])
@@ -210,7 +212,7 @@ export default {
formData.append('place_name', this.event.place.name)
formData.append('place_address', this.event.place.address)
formData.append('description', this.event.description)
- formData.append('multidate', this.event.type === 'multidate')
+ formData.append('multidate', this.date.type === 'multidate')
formData.append('start_datetime', start_datetime.unix())
formData.append('end_datetime', end_datetime.unix())
@@ -220,9 +222,9 @@ export default {
if (this.event.tags) { this.event.tags.forEach(tag => formData.append('tags[]', tag.tag || tag)) }
try {
if (this.edit) {
- await this.updateEvent(formData)
+ await this.$axios.$put('/event', formData)
} else {
- await this.addEvent(formData)
+ await this.$axios.$post('/event', formData)
}
this.updateMeta()
this.$router.replace('/')
From e87cbbad889e443b56b537e82d42211516ca85fd Mon Sep 17 00:00:00 2001
From: lesion
Date: Fri, 13 Nov 2020 10:52:10 +0000
Subject: [PATCH 135/363] Translated using Weblate (German)
Currently translated at 28.1% (63 of 224 strings)
Translation: Gancio/Web
Translate-URL: https://hosted.weblate.org/projects/gancio/web/de/
---
locales/de.json | 68 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 67 insertions(+), 1 deletion(-)
diff --git a/locales/de.json b/locales/de.json
index 0967ef42..614195c6 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -1 +1,67 @@
-{}
+{
+ "common": {
+ "title": "Titel",
+ "user": "Nutzer:in",
+ "moderation": "Moderation",
+ "follow": "Folgen",
+ "feed_url_copied": "Öffne die kopierte Feed-URL in deinem RSS-Reader",
+ "feed": "RSS Feed",
+ "embed_help": "Kopiere den folgenden Code in deine Webseite und die Veranstaltung wird wie hier angezeigt",
+ "embed_title": "Bette diese Veranstaltung in deine Webseite ein",
+ "embed": "Einbetten",
+ "copied": "Kopiert",
+ "instances": "Instanzen",
+ "add_to_calendar": "Zu einem Kalender hinzufügen",
+ "send_via_mail": "E-Mail versenden",
+ "copy_link": "Link kopieren",
+ "set_password": "Passwort erstellen",
+ "displayname": "Anzeigename",
+ "activate_user": "Bestätigt",
+ "password_updated": "Passwort geändert.",
+ "me": "Du",
+ "disable": "ausschalten",
+ "enable": "einschalten",
+ "cancel": "Abbrechen",
+ "ok": "Ok",
+ "new_user": "Neue:r Nutzer:in",
+ "new_password": "Neues Passwort",
+ "recover_password": "Passwort wiederherstellen",
+ "copy": "Kopieren",
+ "logout_ok": "Abgemeldet",
+ "add": "Hinzufügen",
+ "edit_event": "Veranstaltung bearbeiten",
+ "name": "Name",
+ "share": "Teilen",
+ "logout": "Ausloggen",
+ "preview": "Vorschau",
+ "save": "Speichern",
+ "activate": "Aktivieren",
+ "remove_admin": "Admin entfernen",
+ "deactivate": "Deaktivieren",
+ "actions": "Aktionen",
+ "settings": "Einstellungen",
+ "places": "Orte",
+ "events": "Veranstaltungen",
+ "users": "Nutzer:innen",
+ "admin": "Admin",
+ "confirm": "Bestätigen",
+ "edit": "Bearbeiten",
+ "search": "Suchen",
+ "hide": "Verstecken",
+ "remove": "Entfernen",
+ "description": "Beschreibung",
+ "register": "Registrieren",
+ "password": "Passwort",
+ "email": "E-Mail",
+ "login": "Login",
+ "media": "Dateien",
+ "what": "Was",
+ "when": "Wann",
+ "address": "Adresse",
+ "where": "Wo",
+ "send": "Abschicken",
+ "export": "Exportieren",
+ "next": "Weiter",
+ "add_event": "Veranstaltung hinzufügen"
+ }
+}
From 0d036eb70750a4827d95966c250d9b6d2cea5658 Mon Sep 17 00:00:00 2001
From: les
Date: Tue, 17 Nov 2020 00:31:55 +0100
Subject: [PATCH 136/363] fix trusted instances
---
components/Footer.vue | 16 ++++++++++++++++
components/admin/Federation.vue | 8 ++++++--
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/components/Footer.vue b/components/Footer.vue
index 2b623f6c..8873532a 100644
--- a/components/Footer.vue
+++ b/components/Footer.vue
@@ -3,6 +3,22 @@
v-btn(color='primary' text href='https://gancio.org') Gancio {{settings.version}}
v-btn(v-for='link in settings.footerLinks'
:key='link.label' color='primary' text :href='link.href') {{link.label}}
+
+ v-menu(v-if='settings.enable_trusted_instances && settings.trusted_instances && settings.trusted_instances.length'
+ offset-y bottom open-on-hover transition="slide-y-transition")
+ template(v-slot:activator="{ on, attrs }")
+ v-btn(v-bind='attrs' v-on='on' color='primary' text) {{$t('common.places')}}
+ v-list
+ v-list-item(v-for='instance in settings.trusted_instances'
+ :key='instance.name'
+ :href='instance.url'
+ two-line)
+ v-list-item-avatar
+ v-img(:src='`${instance.url}/favicon.ico`')
+ v-list-item-content
+ v-list-item-title {{instance.name}}
+ v-list-item-subtitle {{instance.label}}
+
//- v-btn(v-if='settings.enable_federation' text rel='me' @click.prevent='showFollowMe=true') follow me
//- v-btn(nuxt to='/about' text) about
//- v-btn(href='https://blog.gancio.org' text) blog
diff --git a/components/admin/Federation.vue b/components/admin/Federation.vue
index 061a2383..84fa007a 100644
--- a/components/admin/Federation.vue
+++ b/components/admin/Federation.vue
@@ -112,8 +112,11 @@ export default {
methods: {
...mapActions(['setSetting']),
async createTrustedInstance () {
- if (!this.$refs.form.validate()) return
+ if (!this.$refs.form.validate()) { return }
try {
+ if (!this.instance_url.startsWith('http')) {
+ this.instance_url = `https://${this.instance_url}`
+ }
const instance = await axios.get(`${this.instance_url}/.well-known/nodeinfo/2.1`)
this.setSetting({
key: 'trusted_instances',
@@ -123,7 +126,8 @@ export default {
label: instance.data.metadata.nodeLabel
})
})
- this.instance_url = ''
+ this.$refs.form.reset()
+ this.dialogAddInstance = false
} catch (e) {
this.$root.$message(e, { color: 'error' })
}
From 291c8360a8ea30e0ad2285515460ca036c9ff8e6 Mon Sep 17 00:00:00 2001
From: les
Date: Tue, 17 Nov 2020 00:32:14 +0100
Subject: [PATCH 137/363] fix editor style / focus
---
components/Editor.vue | 120 ++++++++++++++++++++++++++++++------------
1 file changed, 85 insertions(+), 35 deletions(-)
diff --git a/components/Editor.vue b/components/Editor.vue
index 3f83f6b4..76623335 100644
--- a/components/Editor.vue
+++ b/components/Editor.vue
@@ -1,8 +1,9 @@
- .editor
+ .editor(:class='focused')
+ .label {{label}}
editor-menu-bar.menubar.is-hidden(:editor='editor'
:keep-in-bounds='true' v-slot='{ commands, isActive, getMarkAttrs, focused }')
- v-btn-toggle(dense :class="{ focused }")
+ v-btn-toggle(dense)
v-btn(icon text tabindex='-1'
:class="{ primary: isActive.bold() }"
@click="commands.bold")
@@ -96,7 +97,8 @@ export default {
options: [],
linkActive: false,
editor: null,
- update: false
+ update: false,
+ focused: ''
}
},
watch: {
@@ -110,6 +112,12 @@ export default {
},
mounted () {
this.editor = new Editor({
+ onFocus: () => {
+ this.focused = 'editor--focused'
+ },
+ onBlur: () => {
+ this.focused = ''
+ },
onUpdate: _.debounce(({ getHTML }) => {
this.update = true
this.$emit('input', getHTML())
@@ -135,7 +143,7 @@ export default {
emptyNodeClass: 'is-empty',
emptyNodeText: this.placeholder,
showOnlyWhenEditable: true,
- showOnlyCurrent: true,
+ showOnlyCurrent: true
})
]
})
@@ -146,48 +154,90 @@ export default {
}
diff --git a/plugins/v-calendar.js b/plugins/v-calendar.js
new file mode 100644
index 00000000..29f0414e
--- /dev/null
+++ b/plugins/v-calendar.js
@@ -0,0 +1,7 @@
+// import Vue from 'vue'
+// import VCalendar from 'v-calendar'
+// export default () => {
+// Vue.use(VCalendar, {
+// firstDayOfWeek: 2
+// })
+// }
From a965a525c7d9809adeeb32103b1bd51501b20bc4 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 4 Dec 2020 17:24:52 +0100
Subject: [PATCH 150/363] colored tags in cal
---
components/Calendar.vue | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/components/Calendar.vue b/components/Calendar.vue
index 9f9f0c92..886d9319 100644
--- a/components/Calendar.vue
+++ b/components/Calendar.vue
@@ -3,6 +3,7 @@
v-calendar(
title-position='left'
:is-dark="settings['theme.is_dark']"
+ :columns="$screens({ default: 1, md: 2 })"
@update:from-page='updatePage'
:locale='$i18n.locale'
:attributes='attributes'
@@ -13,7 +14,7 @@
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index 6dd51e17..207d244c 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -34,16 +34,15 @@
//- When
DateInput.col-12(v-model='date')
- HourInput.col-12(v-model='time')
//- Description
Editor.col-12.mb-3(
+ :label="$t('event.description_description')"
v-model='event.description'
:placeholder="$t('event.description_description')"
max-height='400px')
//- MEDIA / FLYER / POSTER
-
v-file-input.col-6.mt-3(
:label="$t('common.media')"
:hint="$t('event.media_description')"
@@ -84,7 +83,7 @@ export default {
},
async asyncData ({ params, $axios, error, store }) {
if (params.edit) {
- const data = { time: {}, event: { place: {} } }
+ const data = { event: { place: {} } }
data.id = params.edit
data.edit = true
let event
@@ -97,25 +96,12 @@ export default {
data.event.place.name = event.place.name
data.event.place.address = event.place.address || ''
- data.date = {}
- if (event.multidate) {
- const start = dayjs.unix(event.start_datetime).format('YYYY-MM-DD')
- const end = dayjs.unix(event.end_datetime).format('YYYY-MM-DD')
- data.date = {
- type: 'multidate',
- date: [start, end]
- }
- } else if (event.recurrent) {
- data.date.type = 'recurrent'
- data.date.recurrent = event.recurrent
- } else {
- data.date.type = 'normal'
- data.date.date = dayjs.unix(event.start_datetime).format('YYYY-MM-DD')
+ data.date = {
+ recurrent: event.recurrent,
+ from: new Date(dayjs.unix(event.start_datetime)),
+ due: new Date(dayjs.unix(event.end_datetime))
}
- data.time.start = dayjs.unix(event.start_datetime).format('HH:mm')
- data.time.end = dayjs.unix(event.end_datetime).format('HH:mm')
-
data.event.title = event.title
data.event.description = event.description
data.event.id = event.id
@@ -131,25 +117,27 @@ export default {
valid: false,
openImportDialog: false,
event: {
- type: 'normal',
place: { name: '', address: '' },
title: '',
description: '',
tags: [],
- image: null,
- recurrent: { frequency: '1m', days: [], type: 'weekday_desc' }
+ image: null
},
page: { month, year },
fileList: [],
id: null,
- date: { type: 'normal', recurrent: {} },
- time: { start: null, end: null },
+ date: { from: 0, due: 0, recurrent: null },
edit: false,
loading: false,
mediaUrl: '',
disableAddress: false
}
},
+ head () {
+ return {
+ title: `${this.settings.title} - ${this.$t('common.add_event')}`
+ }
+ },
computed: {
...mapState(['tags', 'places', 'settings'])
},
@@ -158,46 +146,16 @@ export default {
eventImported (event) {
this.event = Object.assign(this.event, event)
},
- // recurrentDays () {
- // if (this.event.type !== 'recurrent' || !this.date || !this.date.length) { return }
- // const type = this.event.recurrent.type
- // if (type === 'ordinal') { return map(this.date, d => dayjs(d).date()) } else if (type === 'weekday') { return map(this.date, d => dayjs(d).day() + 1) }
- // },
- // },
cleanFile () {
this.event.image = {}
},
async done () {
if (!this.$refs.form.validate()) { return }
this.loading = true
- let start_datetime, end_datetime
- const [start_hour, start_minute] = this.time.start.split(':')
- if (!this.time.end) {
- this.time.end = (Number(start_hour) + 2) + ':' + start_minute
- }
- const [end_hour, end_minute] = this.time.end.split(':')
const formData = new FormData()
- if (this.date.type === 'multidate') {
- start_datetime = dayjs(this.date.date[0])
- .hour(start_hour).minute(start_minute)
- end_datetime = dayjs(this.date.date[1])
- .hour(end_hour).minute(end_minute)
- } else if (this.date.type === 'normal') {
- start_datetime = dayjs(this.date.date).hour(start_hour).minute(start_minute)
- end_datetime = dayjs(this.date.date).hour(end_hour).minute(end_minute)
- if (end_hour < start_hour) {
- end_datetime = end_datetime.add(1, 'day')
- }
- } else if (this.date.type === 'recurrent') {
- start_datetime = dayjs(this.date.date).set('hour', start_hour).set('minute', start_minute)
- end_datetime = dayjs(this.date.date).set('hour', end_hour).set('minute', end_minute)
- if (end_hour < start_hour) {
- end_datetime = end_datetime.add(1, 'day')
- }
- formData.append('recurrent', JSON.stringify(this.date.recurrent))
- }
+ formData.append('recurrent', JSON.stringify(this.date.recurrent))
if (this.event.image) {
formData.append('image', this.event.image)
@@ -206,9 +164,9 @@ export default {
formData.append('place_name', this.event.place.name)
formData.append('place_address', this.event.place.address)
formData.append('description', this.event.description)
- formData.append('multidate', this.date.type === 'multidate')
- formData.append('start_datetime', start_datetime.unix())
- formData.append('end_datetime', end_datetime.unix())
+ // formData.append('multidate', this.date.type === 'multidate')
+ formData.append('start_datetime', dayjs(this.date.from).unix())
+ formData.append('end_datetime', this.date.due && dayjs(this.date.due).unix())
if (this.edit) {
formData.append('id', this.event.id)
@@ -222,7 +180,6 @@ export default {
}
this.updateMeta()
this.$router.replace('/')
- this.loading = false
this.$root.$message(this.$auth.loggedIn ? 'event.added' : 'event.added_anon', { color: 'success' })
} catch (e) {
switch (e.request.status) {
@@ -235,11 +192,6 @@ export default {
this.loading = false
}
}
- },
- head () {
- return {
- title: `${this.settings.title} - ${this.$t('common.add_event')}`
- }
}
}
From f7d0f408503749952fdbcfaa81a971d1d205500e Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 4 Dec 2020 17:28:11 +0100
Subject: [PATCH 155/363] reuse v-calendar
---
pages/event/_id.vue | 12 ------------
plugins/v-calendar.js | 15 ++++++++-------
2 files changed, 8 insertions(+), 19 deletions(-)
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index a3cc3227..6e403934 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -56,18 +56,6 @@ v-container
v-btn.ml-2(large icon v-on='on' color='primary'
:href='`/api/event/${event.id}.ics`')
v-icon mdi-calendar-export
- //- v-list
- v-list-item(link)
- v-list-item-content.primary--text.text-uppercase(
- v-clipboard:success='copyLink'
- v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}}
-
- v-list-item(link)
- v-list-item-content.primary--text.text-uppercase(@click='showEmbed=true' text color='primary') {{$t('common.embed')}}
-
- v-list-item(link :href='`/api/event/${event.id}.ics`')
- v-list-item-content.primary--text.text-uppercase
- //- v-btn(nuxt block link :href='`/api/event/${event.id}.ics`' text color='primary') {{$t('common.add_to_calendar')}}
.p-description.text-h6(v-html='event.description')
v-chip.p-category.ml-1(v-for='tag in event.tags' color='primary'
diff --git a/plugins/v-calendar.js b/plugins/v-calendar.js
index 29f0414e..3d4aef0d 100644
--- a/plugins/v-calendar.js
+++ b/plugins/v-calendar.js
@@ -1,7 +1,8 @@
-// import Vue from 'vue'
-// import VCalendar from 'v-calendar'
-// export default () => {
-// Vue.use(VCalendar, {
-// firstDayOfWeek: 2
-// })
-// }
+ import Vue from 'vue'
+ import VCalendar from 'v-calendar'
+ export default () => {
+ Vue.use(VCalendar, {
+ // why is that ?!
+ firstDayOfWeek: 2
+ })
+ }
From 08292c350d39d4cc99044d1b35ff56d885ef44c3 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 4 Dec 2020 17:28:41 +0100
Subject: [PATCH 156/363] minor
---
server/api/controller/event.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/server/api/controller/event.js b/server/api/controller/event.js
index aadf30ae..199ef588 100644
--- a/server/api/controller/event.js
+++ b/server/api/controller/event.js
@@ -418,7 +418,6 @@ const eventController = {
},
async _select ({ start, end, tags, places }) {
- debug('_select start: %s, end: %s, tags: %s', dayjs.unix(start), end, tags)
const where = {
recurrent: null,
// confirmed event only
@@ -504,7 +503,7 @@ const eventController = {
if (frequency[1] === 'w') {
cursor = cursor.day(start_date.day())
if (cursor.isBefore(dayjs())) {
- cursor = cursos.add(7, 'day')
+ cursor = cursor.add(7, 'day')
}
if (frequency[0] === 2) {
cursor = cursor.add(7, 'day')
From a44712c1f539453c849a9fbf3ccb4ab145be0e11 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 4 Dec 2020 17:28:54 +0100
Subject: [PATCH 157/363] minor
---
pages/index.vue | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/pages/index.vue b/pages/index.vue
index 150c39a6..a1f0ebcd 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -4,22 +4,19 @@
//- Announcements
Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement')
+ //- Calendar and search bar
v-row#calbarmb-2
.col-xl-5.col-lg-5.col-md-6.col-sm-12.col-xs-12
- v-date-picker(
- @update:picker-date='monthChange'
- @click:date='dayChange'
- :locale='settings.locale'
- :events='calendarEvents'
- :value='date'
- landscape)
+ //- this is needed as v-calendar does not support SSR
+ //- https://github.com/nathanreyes/v-calendar/issues/336
+ client-only
+ Calendar(@dayclick='dayChange' @monthchange='monthChange' :events='events')
.col
- Search(
- :filters='filters'
- @update='updateFilters')
+ Search(:filters='filters' @update='updateFilters')
v-chip(v-if='selectedDay' close @click:close='dayChange(selectedDay)') {{selectedDay}}
+ //- Events
#events
Event(v-for='event in events'
:key='event.id' :event='event'
@@ -33,10 +30,11 @@ import dayjs from 'dayjs'
import Event from '@/components/Event'
import Announcement from '@/components/Announcement'
import Search from '@/components/Search'
+import Calendar from '@/components/Calendar'
export default {
name: 'Index',
- components: { Event, Search, Announcement },
+ components: { Event, Search, Announcement, Calendar },
async asyncData ({ params, $api }) {
const events = await $api.getEvents({
start: dayjs().unix()
@@ -55,9 +53,6 @@ export default {
},
computed: {
...mapState(['settings', 'announcements']),
- calendarEvents () {
- return this.events.map(e => dayjs.unix(e.start_datetime).format('YYYY-MM-DD'))
- }
},
methods: {
...mapActions(['setFilters']),
@@ -90,9 +85,8 @@ export default {
this.filters = filters
this.updateEvents()
},
- monthChange (monthYear) {
+ monthChange ({ year, month }) {
this.selectedDay = null
- const [year, month] = monthYear.split('-')
// check if current month is selected
if (month - 1 === dayjs().month()) {
From 0726701b62360f21bcc0221af31b7e8335dd413b Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 4 Dec 2020 17:29:43 +0100
Subject: [PATCH 158/363] minor
---
nuxt.config.js | 3 ++-
package.json | 31 ++++++++++++++++---------------
2 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/nuxt.config.js b/nuxt.config.js
index 610b4b3a..7a428010 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -41,7 +41,8 @@ module.exports = {
'@/plugins/vue-clipboard', // vuetify
'@/plugins/axios', // axios baseurl configuration
'@/plugins/validators', // inject validators
- '@/plugins/api' // api helpers
+ '@/plugins/api', // api helpers
+ { src: '@/plugins/v-calendar', ssr: false } // v-calendar
],
render: {
diff --git a/package.json b/package.json
index 401e0aaa..3b15c245 100644
--- a/package.json
+++ b/package.json
@@ -28,26 +28,26 @@
],
"dependencies": {
"@nuxtjs/auth": "^4.9.1",
- "@nuxtjs/axios": "^5.12.2",
+ "@nuxtjs/axios": "^5.12.3",
"accept-language": "^3.0.18",
"axios": "^0.21.0",
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.3",
- "config": "^3.3.2",
+ "config": "^3.3.3",
"consola": "^2.15.0",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
- "cross-env": "^7.0.2",
+ "cross-env": "^7.0.3",
"date-fns": "^2.16.1",
"dayjs": "^1.9.6",
"dompurify": "^2.2.2",
- "email-templates": "^7.1.2",
+ "email-templates": "^8.0.2",
"express": "^4.17.1",
"express-oauth-server": "^2.0.0",
"fs": "^0.0.1-security",
"http-signature": "^1.3.5",
"ical.js": "^1.4.0",
- "ics": "^2.26.1",
+ "ics": "^2.26.2",
"inquirer": "^7.3.3",
"jsdom": "^16.4.0",
"jsonwebtoken": "^8.5.1",
@@ -59,7 +59,7 @@
"moment-timezone": "^0.5.32",
"morgan": "^1.10.0",
"multer": "^1.4.2",
- "nuxt": "^2.14.7",
+ "nuxt": "^2.14.9",
"nuxt-express-module": "^0.0.11",
"pg": "^8.5.1",
"sequelize": "^6.3.5",
@@ -70,8 +70,9 @@
"tiptap-extensions": "^1.33.2",
"to-ico": "^1.1.5",
"url": "^0.11.0",
+ "v-calendar": "^2.1.1",
"vue-clipboard2": "^0.3.1",
- "vue-i18n": "^8.22.1",
+ "vue-i18n": "^8.22.2",
"yargs": "^16.1.1"
},
"devDependencies": {
@@ -79,29 +80,29 @@
"@nuxtjs/eslint-config": "^5.0.0",
"@nuxtjs/vuetify": "^1.11.2",
"babel-eslint": "^10.1.0",
- "eslint": "^7.13.0",
+ "eslint": "^7.14.0",
"eslint-config-prettier": "^6.15.0",
- "eslint-config-standard": "^16.0.1",
+ "eslint-config-standard": "^16.0.2",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": ">=11.1.0",
"eslint-plugin-nuxt": "^2.0.0",
- "eslint-plugin-prettier": "^3.1.4",
+ "eslint-plugin-prettier": "^3.2.0",
"eslint-plugin-promise": ">=4.0.1",
- "eslint-plugin-standard": "^4.1.0",
- "eslint-plugin-vue": "^7.1.0",
+ "eslint-plugin-standard": "^5.0.0",
+ "eslint-plugin-vue": "^7.2.0",
"less-loader": "^7.1.0",
"nodemon": "^2.0.6",
- "prettier": "^2.1.2",
+ "prettier": "^2.2.1",
"pug-plain-loader": "^1.0.0",
"sass": "^1.29.0",
"sass-loader": "^10.1.0",
- "vue-cli-plugin-vuetify": "~2.0.7",
+ "vue-cli-plugin-vuetify": "~2.0.8",
"vuetify-loader": "^1.3.0",
"webpack-cli": "^4.2.0"
},
"resolutions": {
- "prosemirror-model": "1.11.2"
+ "prosemirror-model": "1.12.0"
},
"bin": {
"gancio": "server/cli.js"
From 84d362ef1d41b3abeccf4c4b79c9ffebc0b47dff Mon Sep 17 00:00:00 2001
From: mv87
Date: Thu, 3 Dec 2020 23:00:17 +0000
Subject: [PATCH 159/363] Translated using Weblate (German)
Currently translated at 59.8% (134 of 224 strings)
Translation: Gancio/Web
Translate-URL: https://hosted.weblate.org/projects/gancio/web/de/
---
locales/de.json | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/locales/de.json b/locales/de.json
index ded76100..60aea5a0 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -81,7 +81,8 @@
"federation": "Föderation",
"n_resources": "keine Ressource|eine Ressource|{n} Ressourcen",
"resources": "Ressourcen",
- "info": "Infos"
+ "info": "Infos",
+ "theme": "Thema"
},
"admin": {
"delete_footer_link_confirm": "Sicher, diesen Link zu entfernen?",
@@ -146,7 +147,9 @@
"list_description": "Wenn Sie eine Website haben und eine Liste von Ereignissen anzeigen möchten, verwenden Sie den folgenden Code",
"ical_description": "Computer und Smartphones sind üblicherweise mit einer Kalenderanwendung ausgestattet, mit der ein Fernkalender importiert werden kann.",
"insert_your_address": "Geben Sie Ihre E-Mail-Adresse ein",
- "email_description": "Sie können interessante Ereignisse per E-Mail erhalten."
+ "email_description": "Sie können interessante Ereignisse per E-Mail erhalten.",
+ "feed_description": "Um Updates auf deinem Computer oder Smartphone zu erhalten, ohne regelmäßig diese Seite zu öffnen, kannst du RSS-Feeds benutzen.
\n\n Mit RSS-Feeds nutzt du eine spezielle App, um Updates von den Seiten, die dich interessieren, zu erhalten. Damit kannst du rasch vielen Seiten folgen, ohne einen\nAccount erstellen zu müssen und ohne sonstige Komplikationen.
\n\n Für Android-Geräte empfehlen wir Flym oder Feeder \n Auf iPhones / iPads kannst du Feed4U nutzen\n Auf Desktop-PCs oder Laptops empfehlen wir Feedbro, den du in Firefox oder Chrome installieren kannst. \n
\nIndem du diesen Link deinem RSS-Feed-Reader hinzufügst, wirst du auf dem Laufenden gehalten.",
+ "intro": "Anders als unsoziale Netzwerke, die alles unternehmen, um Nutzer und deren Daten bei sich zu (be)halten, glauben wir, dass Informationen und Leute gleichermaßen frei sein müssen. Deshalb kannst du dich über Veranstaltungen auf dem Laufenden halten, ohne zwangsläufig über diese Seite zu gehen."
},
"recover": {
"not_valid_code": "Etwas ist schief gelaufen."
From 9854c7ad970faecd0a16228a9b59c7305838ac63 Mon Sep 17 00:00:00 2001
From: mv87
Date: Thu, 3 Dec 2020 22:51:24 +0000
Subject: [PATCH 160/363] Translated using Weblate (German)
Currently translated at 100.0% (10 of 10 strings)
Translation: Gancio/Email
Translate-URL: https://hosted.weblate.org/projects/gancio/email/de/
---
locales/email/de.json | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/locales/email/de.json b/locales/email/de.json
index 0967ef42..d9dffc37 100644
--- a/locales/email/de.json
+++ b/locales/email/de.json
@@ -1 +1,22 @@
-{}
+{
+ "admin_register": {
+ "content": "{{user.email}} hat eine Registrierung auf {{config.title}} angefordert:
{{user.description}}
Bitte bestätigen here.",
+ "subject": "Neue Registrierung"
+ },
+ "recover": {
+ "content": "Hallo, du hast die Wiederherstellung deines Passworts angefordert {{config.title}}. Klicke hier, um zu bestätigen.",
+ "subject": "Passwortwiederherstellung"
+ },
+ "user_confirm": {
+ "content": "Hallo, dein Account auf {{config.title}} wurde erstellt. Bestätige ihn und wähle ein Kennwort..",
+ "subject": "Du kannst jetzt damit beginnen, Events zu veröffentlichen"
+ },
+ "confirm": {
+ "content": "Hallo, dein Account auf {{config.title}} wurde bestätigt. Anfragen kannst du an {{config.admin_email}} stellen.",
+ "subject": "Du kannst jetzt damit beginnen, Events zu veröffentlichen"
+ },
+ "register": {
+ "content": "Wir haben die Registrierungsanfrage erhalten. Wir werden sie so bald wie möglich bestätigen.",
+ "subject": "Registrierungsanfrage erhalten"
+ }
+}
From 539c0fa9333f2124e0db811c01c60e31741912c7 Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 14 Dec 2020 18:48:15 +0100
Subject: [PATCH 161/363] left/right keys goes to prev/next event
---
pages/event/_id.vue | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 6e403934..b25fede3 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -249,7 +249,21 @@ export default {
)
}
},
+ mounted () {
+ window.addEventListener('keydown', this.keyDown)
+ },
+ destroyed () {
+ window.removeEventListener('keydown', this.keyDown)
+ },
methods: {
+ keyDown (ev) {
+ if (ev.key === 'ArrowRight' && this.event.next) {
+ this.$router.push(`/event/${this.event.next}`)
+ }
+ if (ev.key === 'ArrowLeft' && this.event.prev) {
+ this.$router.push(`/event/${this.event.prev}`)
+ }
+ },
showResource (resource) {
this.showResources = true
this.selectedResource = resource
From 3abb39f62bde2f68d641e5f52b540dc45d025220 Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 11 Jan 2021 00:17:56 +0100
Subject: [PATCH 162/363] keep migrating to vuetify
---
assets/style.less | 1 +
components/Calendar.vue | 7 +-
components/Event.vue | 125 +-
components/Nav.vue | 22 +-
components/Search.vue | 18 +-
locales/esm.js | 2 +-
locales/index.js | 2 +-
locales/it.json | 9 +-
package.json | 34 +-
pages/Admin.vue | 2 +-
pages/add/DateInput.vue | 53 +-
pages/add/ImportDialog.vue | 14 +-
pages/add/_edit.vue | 1 -
pages/event/_id.vue | 5 +-
pages/event/embedEvent.vue | 11 +-
pages/event/eventAdmin.vue | 5 +-
pages/export.vue | 10 +-
pages/index.vue | 65 +-
plugins/api.js | 5 +-
plugins/filters.js | 6 +-
server/api/controller/event.js | 41 +-
server/helpers.js | 58 +-
server/taskManager.js | 3 +-
yarn.lock | 2272 +++++++++++++++-----------------
24 files changed, 1382 insertions(+), 1389 deletions(-)
diff --git a/assets/style.less b/assets/style.less
index 2cc3e325..00dd8007 100644
--- a/assets/style.less
+++ b/assets/style.less
@@ -1,6 +1,7 @@
html, body {
scrollbar-width: thin;
scrollbar-color: orange;
+ overflow: auto !important;
}
li {
diff --git a/components/Calendar.vue b/components/Calendar.vue
index 886d9319..2049405f 100644
--- a/components/Calendar.vue
+++ b/components/Calendar.vue
@@ -3,7 +3,7 @@
v-calendar(
title-position='left'
:is-dark="settings['theme.is_dark']"
- :columns="$screens({ default: 1, md: 2 })"
+ :columns="2"
@update:from-page='updatePage'
:locale='$i18n.locale'
:attributes='attributes'
@@ -21,7 +21,7 @@ import { take, get } from 'lodash'
export default {
name: 'Calendar',
props: {
- events: { type: Array, default: [] }
+ events: { type: Array, default: () => [] }
},
data () {
const month = dayjs().month() + 1
@@ -35,13 +35,14 @@ export default {
// TODO: could be better
attributes () {
+ return []
const colors = ['blue', 'orange', 'yellow', 'teal', 'indigo', 'green', 'red', 'purple', 'pink', 'gray']
const tags = take(this.tags, 10).map(t => t.tag)
let attributes = []
attributes.push({ key: 'today', dates: new Date(), highlight: { color: 'green', fillMode: 'outline' } })
function getColor (event) {
- const color = { class: 'vc-rounded-full', color: 'blue', fillMode: 'outline' }
+ const color = { class: 'vc-rounded-full', color: 'blue', fillMode: 'normal' }
const tag = get(event, 'tags[0]')
if (!tag) { return color }
const idx = tags.indexOf(tag)
diff --git a/components/Event.vue b/components/Event.vue
index 27292fea..562fac1a 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -1,78 +1,83 @@
-
+
v-card.h-event.event.mt-1
- nuxt-link(:to='`/event/${event.id}`')
- v-img.align-end.white--text(:src="`/media/thumb/${event.image_path}`"
- gradient="to bottom, rgba(0,0,0,.1), rgba(0,0,0,.7), rgba(0,0,0,.9)"
- height="250" position="top top")
- v-card-title.text-h5 {{event.title}}
+ template(v-if='props.show')
+ nuxt-link(:to='`/event/${props.event.id}`')
+ v-img.align-end.white--text(:src="`/media/thumb/${props.event.image_path}`"
+ gradient="to bottom, rgba(0,0,0,.1), rgba(0,0,0,.7), rgba(0,0,0,.9)"
+ height="250" position="top top")
+ v-card-title.text-h5.p-name {{props.event.title}}
- v-card-text
+ v-card-text
+ v-icon.float-right(v-if='props.event.parentId' color='success') mdi-repeat
+ //- time.text-h6.dt-start(:datetime='props.event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') mdi-event {{ event|when }}
+ .d-none.dt-end {{props.event.end_datetime|unixFormat('YYYY-MM-DD HH:mm')}}
+ v-btn.d-block.text-h6.p-location(text color='primary' big @click="$emit('placeclick', props.event.place.id)") mdi-map-marker {{props.event.place.name}}
- time.text-h6(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') mdi-event {{ event|when }}
- v-btn.d-block.text-h6(text color='primary' big @click="$emit('placeclick', event.place.id)") mdi-map-marker {{event.place.name}}
+ v-card-actions
+ v-chip.ml-1(v-for='tag in props.event.tags' link
+ :key='tag' outlined color='primary' @click="$emit('tagclick',tag)") {{tag}}
+ v-spacer
- v-card-actions
- v-chip.ml-1(v-for='tag in event.tags' link
- :key='tag' outlined color='primary' @click="$emit('tagclick',tag)") {{tag}}
- v-spacer
+ v-menu(offset-y)
+ template(v-slot:activator="{on}")
+ v-btn(icon v-on='on' color='primary')
+ v-icon mdi-dots-vertical
+ v-list(dense)
+ v-list-item-group
+ v-list-item(v-clipboard:success='copyLink'
+ v-clipboard:copy='`${parent.settings.baseurl}/event/${props.event.id}`')
+ v-list-item-icon
+ v-icon mdi-content-copy
+ v-list-item-content
+ v-list-item-title {{parent.$t('common.copy_link')}}
+ v-list-item(:href='`/api/event/${props.event.id}.ics`')
+ v-list-item-icon
+ v-icon mdi-calendar-export
+ v-list-item-content
+ v-list-item-title {{parent.$t('common.add_to_calendar')}}
- v-menu(offset-y)
- template(v-slot:activator="{on}")
- v-btn(icon v-on='on' color='primary')
- v-icon mdi-dots-vertical
- v-list(dense)
- v-list-item-group
- v-list-item(v-clipboard:success='copyLink'
- v-clipboard:copy='`${settings.baseurl}/event/${event.id}`')
- v-list-item-icon
- v-icon mdi-content-copy
- v-list-item-content
- v-list-item-title {{$t('common.copy_link')}}
- v-list-item(:href='`/api/event/${event.id}.ics`')
- v-list-item-icon
- v-icon mdi-calendar-export
- v-list-item-content
- v-list-item-title {{$t('common.add_to_calendar')}}
-
diff --git a/pages/add/WhereInput.vue b/pages/add/WhereInput.vue
index b87bb187..353d0a35 100644
--- a/pages/add/WhereInput.vue
+++ b/pages/add/WhereInput.vue
@@ -21,7 +21,7 @@
v-text-field.col-md-6(ref='address'
prepend-icon='mdi-map'
- :disabled='disableAddress'
+ v-show='!disableAddress'
:rules="[$validators.required('common.address')]"
:label="$t('common.address')"
@change="changeAddress"
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index c9721eae..a20f4484 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -1,5 +1,5 @@
- v-container.container
+ v-container.container.px-0.px-md-3
v-card
v-card-title
h4 {{edit?$t('common.edit_event'):$t('common.add_event')}}
@@ -9,13 +9,12 @@
v-dialog(v-model='openImportDialog')
ImportDialog(@close='openImportDialog=false' @imported='eventImported')
- v-card-text
+ v-card-text.px-0.px-xs-2
v-form(v-model='valid' ref='form' lazy-validation)
v-container
v-row
//- Not logged event
v-col.col-12(v-if='!$auth.loggedIn')
- v-divider {{$t('event.anon')}}
p(v-html="$t('event.anon_description')")
//- Title
@@ -42,7 +41,7 @@
max-height='400px')
//- MEDIA / FLYER / POSTER
- v-file-input.col-6.mt-3(
+ v-file-input.col-12.col-sm-6.mt-3(
:label="$t('common.media')"
:hint="$t('event.media_description')"
prepend-icon="mdi-camera"
@@ -51,7 +50,7 @@
accept='image/*')
//- tags
- v-combobox.col-6.mt-3(v-model='event.tags'
+ v-combobox.col-12.col-sm-6.mt-3(v-model='event.tags'
prepend-icon="mdi-tag-multiple"
chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint
:delimiters="[',', ' ']"
@@ -98,7 +97,8 @@ export default {
data.date = {
recurrent: event.recurrent,
from: new Date(dayjs.unix(event.start_datetime)),
- due: new Date(dayjs.unix(event.end_datetime))
+ due: new Date(dayjs.unix(event.end_datetime)),
+ multidate: event.multidate
}
data.event.title = event.title
@@ -163,7 +163,7 @@ export default {
formData.append('place_name', this.event.place.name)
formData.append('place_address', this.event.place.address)
formData.append('description', this.event.description)
- // formData.append('multidate', this.date.type === 'multidate')
+ formData.append('multidate', !!this.date.multidate)
formData.append('start_datetime', dayjs(this.date.from).unix())
formData.append('end_datetime', this.date.due && dayjs(this.date.due).unix())
From c75eb19f052b5a14bdd659c4b159c95e29aa52c5 Mon Sep 17 00:00:00 2001
From: les
Date: Tue, 9 Feb 2021 12:13:38 +0100
Subject: [PATCH 182/363] minor
---
components/Event.vue | 19 ++++++++-----------
pages/add/ImportDialog.vue | 3 ++-
pages/event/_id.vue | 6 +++---
3 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/components/Event.vue b/components/Event.vue
index e43d096a..eb59a02e 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -1,16 +1,16 @@
v-card.h-event.event
nuxt-link(:to='`/event/${props.event.id}`')
- v-img.align-end.white--text(:src="`/media/thumb/${props.event.image_path || 'logo.png' }`"
- gradient="to bottom, rgba(0,0,0,.1), rgba(0,0,0,.7), rgba(0,0,0,.9)"
+ v-img.align-end(:src="`/media/thumb/${props.event.image_path || 'logo.png' }`"
height="250" position="top top" )
- v-card-title.text-h6.p-name {{props.event.title}}
+ v-icon.float-right(v-if='props.event.parentId' color='success') mdi-repeat
+ v-card-title.p-name.pb-0 {{props.event.title}}
+ //- gradient="to bottom, rgba(0,0,0,.1), rgba(0,0,0,.7), rgba(0,0,0,.9)"
v-card-text.pb-0
- v-icon.float-right(v-if='props.event.parentId' color='success') mdi-repeat
- time.dt-start(:datetime='props.event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') {{ props.event|when }}
+ time.dt-start.subtitle-1(:datetime='props.event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') {{ props.event|when }}
.d-none.dt-end {{props.event.end_datetime|unixFormat('YYYY-MM-DD HH:mm')}}
- v-btn.place.d-block.p-location(text color='primary' @click="listeners['placeclick'](props.event.place.id)") mdi-map-marker {{props.event.place.name}}
+ v-btn.place.d-block.p-location.pl-0(text color='primary' @click="listeners['placeclick'](props.event.place.id)") mdi-map-marker {{props.event.place.name}}
v-card-actions
v-chip.ml-1(v-for='tag in props.event.tags' link small
@@ -42,9 +42,6 @@ export default {
props: {
event: { type: Object, default: () => ({}) }
}
- // copyLink () {
- // this.$root.$message('common.copied', { color: 'success' })
- // },
}
From 9926699659c7072bcd8a26f2c38e22b88b536232 Mon Sep 17 00:00:00 2001
From: les
Date: Sat, 27 Feb 2021 00:53:12 +0100
Subject: [PATCH 193/363] cleaning DateInput
---
pages/add/DateInput.vue | 103 ++++++++++++++++++++++++----------------
1 file changed, 61 insertions(+), 42 deletions(-)
diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue
index 52281473..86b807dd 100644
--- a/pages/add/DateInput.vue
+++ b/pages/add/DateInput.vue
@@ -1,5 +1,5 @@
-.when {{value}}
+.when
.text-center
v-btn-toggle.v-col-6.flex-column.flex-sm-row(v-model='type' color='primary' @change='type => change("type", type)')
v-btn(value='normal' label="normal") {{$t('event.normal')}}
@@ -12,19 +12,22 @@
v-btn-toggle.v-col-6.flex-column.flex-sm-row(v-if='type === "recurrent"' color='primary' :value='value.recurrent.frequency' @change='fq => change("frequency", fq)')
v-btn(v-for='f in frequencies' :key='f.value' :value='f.value') {{f.text}}
+ p {{value}}
client-only
.datePicker.mt-3
- v-date-picker(
- :value='fromDate'
- @input="date => change('date', date)"
- :is-range='type === "multidate"'
- :attributes='attributes'
- :locale='$i18n.locale'
- :from-page.sync='page'
- :is-dark="settings['theme.is_dark']"
- is-inline
- is-expanded
- :min-date='type !== "recurrent" && new Date()')
+ v-input(:value='fromDate'
+ :rules="[$validators.required('common.when')]")
+ v-date-picker(
+ :value='fromDate'
+ @input="date => change('date', date)"
+ :is-range='type === "multidate"'
+ :attributes='attributes'
+ :locale='$i18n.locale'
+ :from-page.sync='page'
+ :is-dark="settings['theme.is_dark']"
+ is-inline
+ is-expanded
+ :min-date='type !== "recurrent" && new Date()')
div.text-center.mb-2(v-if='type === "recurrent"')
span(v-if='value.recurrent.frequency !== "1m" && value.recurrent.frequency !== "2m"') {{whenPatterns}}
@@ -33,11 +36,12 @@
v-row.mt-3.col-md-6.mx-auto
v-col.col-12.col-sm-6
- v-select(dense :label="$t('event.from')" :value='fromHour'
+ v-select(dense :label="$t('event.from')" :value='fromHour' clearable
+ :rules="[$validators.required('event.from')]"
:items='hourList' @change='hr => change("fromHour", hr)')
v-col.col-12.col-sm-6
- v-select(dense :label="$t('event.due')" :value='dueHour'
+ v-select(dense :label="$t('event.due')" :value='dueHour' clearable
:items='hourList' @change='hr => change("dueHour", hr)')
//- div.col-md-12(v-if='isRecurrent')
@@ -78,20 +82,17 @@ export default {
computed: {
...mapState(['settings', 'events']),
fromDate () {
- console.error('davvero in fromdate', this.value)
if (this.value.multidate) {
- console.error(this.value)
- console.error('son qui dentro!')
- return ({ start: this.value.from, end: this.value.due })
+ return ({ start: dayjs(this.value.from).toDate(), end: dayjs(this.value.due).toDate() })
}
- return dayjs(this.value.from || 0).toDate()
+ return this.value.from ? dayjs(this.value.from).toDate() : null
},
fromHour () {
- return dayjs(this.value.from || 0).format('HH:mm')
+ return this.value.from && this.value.fromHour ? dayjs(this.value.from).format('HH:mm') : null
},
dueHour () {
- return dayjs(this.value.due || 0).format('HH:mm')
+ return this.value.due && this.value.dueHour ? dayjs(this.value.due).format('HH:mm') : null
},
hourList () {
const hourList = []
@@ -183,26 +184,50 @@ export default {
} else if (what === 'frequency') {
this.$emit('input', { ...this.value, recurrent: { ...this.value.recurrent, frequency: value } })
} else if (what === 'fromHour') {
- const [hour, minute] = value.split(':')
- const from = dayjs(this.value.from).hour(hour).minute(minute)
- this.$emit('input', { ...this.value, from })
- } else if (what === 'dueHour') {
- const [hour, minute] = value.split(':')
- const fromHour = dayjs(this.value.from).hour()
-
- // add a day
- let due = dayjs(this.value.due)
- if (fromHour > Number(hour)) {
- due = due.add(1, 'day')
+ if (value) {
+ const [hour, minute] = value.split(':')
+ const from = dayjs(this.value.from).hour(hour).minute(minute)
+ this.$emit('input', { ...this.value, from, fromHour: true })
+ } else {
+ this.$emit('input', { ...this.value, fromHour: false })
+ }
+ } else if (what === 'dueHour') {
+ if (value) {
+ const [hour, minute] = value.split(':')
+ const fromHour = dayjs(this.value.from).hour()
+
+ // add a day
+ let due = dayjs(this.value.due)
+ if (fromHour > Number(hour) && !this.value.multidate) {
+ due = due.add(1, 'day')
+ }
+ due = due.hour(hour).minute(minute)
+ this.$emit('input', { ...this.value, due, dueHour: true })
+ } else {
+ this.$emit('input', { ...this.value, dueHour: false })
}
- due = due.hour(hour).minute(minute)
- this.$emit('input', { ...this.value, due })
} else if (what === 'date') {
console.error('dentro what date', value)
if (this.value.multidate) {
- this.$emit('input', { ...this.value, from: value.start, due: value.end })
+ let from = value.start
+ let due = value.end
+ if (this.value.fromHour) {
+ from = dayjs(value.start).hour(dayjs(this.value.from).hour())
+ }
+ if (this.value.dueHour) {
+ due = dayjs(value.end).hour(dayjs(this.value.due).hour())
+ }
+ this.$emit('input', { ...this.value, from, due })
} else {
- this.$emit('input', { ...this.value, from: value, due: value })
+ let from = value
+ let due = value
+ if (this.value.fromHour) {
+ from = dayjs(value).hour(dayjs(this.value.from).hour())
+ }
+ if (this.value.dueHour) {
+ due = dayjs(value).hour(dayjs(this.value.due).hour())
+ }
+ this.$emit('input', { ...this.value, from, due })
}
}
},
@@ -214,12 +239,6 @@ export default {
selectFrequency (f) {
this.$emit('input', { recurrent: { frequency: f }, from: this.value.from, due: this.value.due })
}
- // pick (date) {
- // if (this.value.type === 'normal' || this.value.type === 'recurrent' || (this.value.date && this.value.date.length === 2)) {
- // this.datePickerMenu = false
- // }
- // this.$emit('input', { date, recurrent: this.value.recurrent })
- // }
}
}
From 5222b24f88315cdcc28f9f83431777cc2094a6b4 Mon Sep 17 00:00:00 2001
From: les
Date: Sat, 27 Feb 2021 00:53:26 +0100
Subject: [PATCH 194/363] minor
---
pages/add/_edit.vue | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index a20f4484..a264ffb8 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -98,7 +98,9 @@ export default {
recurrent: event.recurrent,
from: new Date(dayjs.unix(event.start_datetime)),
due: new Date(dayjs.unix(event.end_datetime)),
- multidate: event.multidate
+ multidate: event.multidate,
+ fromHour: true,
+ dueHour: true
}
data.event.title = event.title
@@ -180,7 +182,7 @@ export default {
this.updateMeta()
this.$router.push('/')
this.$nextTick(() => {
- this.$root.$message(this.$auth.loggedIn ? 'event.added' : 'event.added_anon', { color: 'success' })
+ this.$root.$message(this.$auth.loggedIn ? (this.edit ? 'event.saved' : 'event.added') : 'event.added_anon', { color: 'success' })
})
} catch (e) {
switch (e.request.status) {
From 589a8ce939773431f631e5982a5aa343fadbc5a7 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 5 Mar 2021 14:11:33 +0100
Subject: [PATCH 195/363] fix dark/light mode dialog
---
assets/style.less | 4 ++++
components/Confirm.vue | 2 +-
components/FollowMe.vue | 2 +-
components/admin/Announcement.vue | 2 +-
components/admin/Federation.vue | 2 +-
layouts/default.vue | 6 +-----
pages/add/ImportDialog.vue | 2 +-
pages/event/embedEvent.vue | 2 +-
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/assets/style.less b/assets/style.less
index dbc36b8c..b610c571 100644
--- a/assets/style.less
+++ b/assets/style.less
@@ -7,4 +7,8 @@ html, body {
li {
margin-left: 10px;
+}
+
+.v-dialog .theme--dark.v-card {
+ background-color: #434343;
}
\ No newline at end of file
diff --git a/components/Confirm.vue b/components/Confirm.vue
index bc6d3bb0..57c5b279 100644
--- a/components/Confirm.vue
+++ b/components/Confirm.vue
@@ -6,7 +6,7 @@
:max-width='options.width'
:style="{ zIndex: options.zIndex, position: 'absolute' }"
@keydown.esc='cancel')
- v-card(color='secondary')
+ v-card
v-card-title {{ title }}
v-card-text(v-show='!!message') {{ message }}
v-card-actions
diff --git a/components/FollowMe.vue b/components/FollowMe.vue
index a486eb2f..7b9ddc55 100644
--- a/components/FollowMe.vue
+++ b/components/FollowMe.vue
@@ -1,5 +1,5 @@
- v-card(:color='isDialog ? "secondary" : null')
+ v-card
v-card-title(v-text="$t('common.follow_me_title')")
v-card-text
p(v-html="$t('event.follow_me_description', { title: settings.title, account: `@${settings.instance_name}@${domain}`})")
diff --git a/components/admin/Announcement.vue b/components/admin/Announcement.vue
index eb05b8b3..b3f4ffde 100644
--- a/components/admin/Announcement.vue
+++ b/components/admin/Announcement.vue
@@ -3,7 +3,7 @@
v-card-title {{$t('common.announcements')}}
v-card-subtitle(v-html="$t('admin.announcement_description')")
v-dialog(v-model='dialog' width='800px')
- v-card(color='secondary')
+ v-card
v-card-title {{$t('admin.new_announcement')}}
v-card-text
v-form(v-model='valid' ref='announcement' @submit.prevent='save')
diff --git a/components/admin/Federation.vue b/components/admin/Federation.vue
index e609ec51..aa21a10e 100644
--- a/components/admin/Federation.vue
+++ b/components/admin/Federation.vue
@@ -41,7 +41,7 @@
)
v-dialog(v-model='dialogAddInstance' width="500px")
- v-card(color='secondary')
+ v-card
v-card-title {{$t('admin.add_trusted_instance')}}
v-card-text
v-form(v-model='valid' ref='form' lazy-validation)
diff --git a/layouts/default.vue b/layouts/default.vue
index 78347819..023a2b9b 100644
--- a/layouts/default.vue
+++ b/layouts/default.vue
@@ -31,10 +31,6 @@ export default {
}
diff --git a/pages/add/ImportDialog.vue b/pages/add/ImportDialog.vue
index 4783decb..fd538d1d 100644
--- a/pages/add/ImportDialog.vue
+++ b/pages/add/ImportDialog.vue
@@ -1,5 +1,5 @@
- v-card(color='secondary')
+ v-card
v-card-title {{$t('common.import')}}
v-card-text
p(v-html="$t('event.import_description')")
diff --git a/pages/event/embedEvent.vue b/pages/event/embedEvent.vue
index 00fa46cf..9b98ad36 100644
--- a/pages/event/embedEvent.vue
+++ b/pages/event/embedEvent.vue
@@ -1,5 +1,5 @@
-v-card(color='secondary')
+v-card
v-card-title(v-text="$t('common.embed_title')")
v-card-text
v-row
From 65cb94dd6abc4ad5e5359dbc0a084582551bbbfb Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 5 Mar 2021 14:17:10 +0100
Subject: [PATCH 196/363] refactoring logs: use winston
---
package.json | 51 +-
server/api/auth.js | 7 +-
server/api/controller/announce.js | 10 +-
server/api/controller/event.js | 14 +-
server/api/controller/oauth.js | 10 +-
server/api/controller/settings.js | 10 +-
server/api/controller/user.js | 6 +-
server/api/index.js | 4 +-
server/api/mail.js | 5 +-
server/api/oauth.js | 4 +-
server/api/storage.js | 7 +-
server/federation/ego.js | 10 +-
server/federation/follows.js | 27 +-
server/federation/helpers.js | 47 +-
server/federation/resources.js | 22 +-
server/federation/webfinger.js | 20 +-
server/helpers.js | 6 +-
server/index.js | 9 +-
server/log.js | 17 +-
server/routes.js | 6 +-
server/taskManager.js | 6 +-
yarn.lock | 2908 ++++++++++++++++++-----------
22 files changed, 1977 insertions(+), 1229 deletions(-)
diff --git a/package.json b/package.json
index f5a52ef8..0e813fce 100644
--- a/package.json
+++ b/package.json
@@ -29,54 +29,55 @@
],
"dependencies": {
"@nuxtjs/auth": "^4.9.1",
- "@nuxtjs/axios": "^5.12.5",
+ "@nuxtjs/axios": "^5.13.1",
"accept-language": "^3.0.18",
"axios": "^0.21.1",
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.3",
- "config": "^3.3.3",
- "consola": "^2.15.0",
+ "config": "^3.3.4",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5",
"cross-env": "^7.0.3",
- "date-fns": "^2.16.1",
+ "date-fns": "^2.19.0",
"dayjs": "^1.10.4",
"dompurify": "^2.2.6",
"email-templates": "^8.0.3",
"express": "^4.17.1",
"express-oauth-server": "^2.0.0",
- "express-prom-bundle": "^6.3.1",
+ "express-prom-bundle": "^6.3.4",
"fs": "^0.0.1-security",
+ "global": "^4.4.0",
"http-signature": "^1.3.5",
"ical.js": "^1.4.0",
- "ics": "^2.26.2",
- "inquirer": "^7.3.3",
+ "ics": "^2.27.0",
+ "inquirer": "^8.0.0",
"jsdom": "^16.4.0",
"jsonwebtoken": "^8.5.1",
"less": "^4.1.1",
"linkifyjs": "^2.1.9",
- "lodash": "^4.17.20",
+ "lodash": "^4.17.21",
"microformat-node": "^2.0.1",
"mkdirp": "^1.0.4",
- "moment-timezone": "^0.5.32",
+ "moment-timezone": "^0.5.33",
"morgan": "^1.10.0",
"multer": "^1.4.2",
- "nuxt": "^2.14.12",
+ "nuxt": "^2.15.2",
"nuxt-express-module": "^0.0.11",
- "nuxt-winston-log": "^1.2.0",
"pg": "^8.5.1",
+ "pkg": "^4.4.9",
"prom-client": "^13.1.0",
"sequelize": "^6.5.0",
"sequelize-cli": "^6.2.0",
- "sharp": "^0.27.1",
- "sqlite3": "^5.0.1",
+ "sharp": "^0.27.2",
+ "sqlite3": "^5.0.2",
"tiptap": "^1.32.0",
"tiptap-extensions": "^1.35.0",
"to-ico": "^1.1.5",
"url": "^0.11.0",
- "v-calendar": "^2.2.2",
+ "v-calendar": "^2.2.4",
"vue-clipboard2": "^0.3.1",
- "vue-i18n": "^8.22.4",
+ "vue-i18n": "^8.23.0",
+ "winston": "^3.3.3",
"yargs": "^16.1.1"
},
"devDependencies": {
@@ -84,29 +85,29 @@
"@nuxtjs/eslint-config": "^5.0.0",
"@nuxtjs/vuetify": "^1.11.3",
"babel-eslint": "^10.1.0",
- "eslint": "^7.19.0",
- "eslint-config-prettier": "^7.2.0",
+ "eslint": "^7.21.0",
+ "eslint-config-prettier": "^8.1.0",
"eslint-config-standard": "^16.0.2",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": ">=11.1.0",
"eslint-plugin-nuxt": "^2.0.0",
"eslint-plugin-prettier": "^3.3.1",
- "eslint-plugin-promise": ">=4.0.1",
+ "eslint-plugin-promise": "^4.3.1",
"eslint-plugin-standard": "^5.0.0",
- "eslint-plugin-vue": "^7.5.0",
- "less-loader": "^7.3.0",
+ "eslint-plugin-vue": "^7.6.0",
+ "less-loader": "7",
"nodemon": "^2.0.7",
"prettier": "^2.2.1",
"pug-plain-loader": "^1.1.0",
- "sass": "^1.32.5",
- "sass-loader": "^10.1.1",
- "vue-cli-plugin-vuetify": "~2.1.0",
+ "sass": "^1.32.7",
+ "sass-loader": "10",
+ "vue-cli-plugin-vuetify": "~2.1.1",
"vuetify-loader": "^1.7.1",
- "webpack-cli": "^4.4.0"
+ "webpack-cli": "^4.5.0"
},
"resolutions": {
- "prosemirror-model": "1.13.1"
+ "prosemirror-model": "1.13.3"
},
"bin": {
"gancio": "server/cli.js"
diff --git a/server/api/auth.js b/server/api/auth.js
index 80b26e11..cdc9811b 100644
--- a/server/api/auth.js
+++ b/server/api/auth.js
@@ -1,4 +1,4 @@
-const debug = require('debug')('auth')
+const log = require('../log')
const oauth = require('./oauth')
const get = require('lodash/get')
@@ -40,14 +40,13 @@ const Auth = {
// TODO
hasPerm (scope) {
return (req, res, next) => {
- debug(scope, req.path)
+ log.debug(scope, req.path)
oauth.oauthServer.authenticate({ scope })(req, res, () => {
- debug('has perm')
+ log.debug('has perm')
next()
})
}
}
-
}
module.exports = Auth
diff --git a/server/api/controller/announce.js b/server/api/controller/announce.js
index 7ab106ec..7bd69727 100644
--- a/server/api/controller/announce.js
+++ b/server/api/controller/announce.js
@@ -1,5 +1,5 @@
const Announcement = require('../models/announcement')
-const debug = require('debug')('announcement:controller')
+const log = require('../../log')
const announceController = {
async getAll (req, res) {
@@ -17,7 +17,7 @@ const announceController = {
announcement: req.body.announcement,
visible: true
}
- debug('Create announcement ', req.body.title)
+ log.debug('Create announcement ', req.body.title)
const announce = await Announcement.create(announcementDetail)
res.json(announce)
},
@@ -34,20 +34,20 @@ const announceController = {
announce = await announce.update(announceDetails)
res.json(announce)
} catch (e) {
- debug('Toggle announcement failed ', e)
+ log.debug('Toggle announcement failed ', e)
res.sendStatus(404)
}
},
async remove (req, res) {
- debug('Remove announcement ', req.params.announce_id)
+ log.debug('Remove announcement ', req.params.announce_id)
const announce_id = req.params.announce_id
try {
const announce = await Announcement.findByPk(announce_id)
await announce.destroy()
res.sendStatus(200)
} catch (e) {
- debug('Remove announcement failed ', e)
+ log.debug('Remove announcement failed ', e)
res.sendStatus(404)
}
}
diff --git a/server/api/controller/event.js b/server/api/controller/event.js
index dfef5fca..e2cd22ee 100644
--- a/server/api/controller/event.js
+++ b/server/api/controller/event.js
@@ -52,7 +52,7 @@ const eventController = {
},
async getNotifications (event, action) {
- log.info('getNotifications "%s" (%s)', event.title, action)
+ log.debug(`getNotifications ${event.title} ${action}`)
function match (event, filters) {
// matches if no filter specified
if (!filters) { return true }
@@ -165,11 +165,16 @@ const eventController = {
async confirm (req, res) {
const id = Number(req.params.event_id)
const event = await Event.findByPk(id, { include: [Place, Tag] })
- if (!event) { return res.sendStatus(404) }
+ if (!event) {
+ log.warn(`Trying to confirm a unknown event, id: ${id}`)
+ return res.sendStatus(404)
+ }
if (!req.user.is_admin && req.user.id !== event.userId) {
+ log.warn(`Someone unallowed is trying to confirm -> "${event.title} `)
return res.sendStatus(403)
}
+ log.info(`Event "${event.title}" confirmed`)
try {
event.is_visible = true
@@ -189,7 +194,7 @@ const eventController = {
const notifier = require('../../notifier')
notifier.notifyEvent('Create', event.id)
} catch (e) {
- log.info(e)
+ log.error(e)
res.sendStatus(404)
}
},
@@ -326,8 +331,7 @@ const eventController = {
notifier.notifyEvent('Create', event.id)
}
} catch (e) {
- process.winstonLog.error(e)
- log.info(e)
+ log.error(e)
res.sendStatus(400)
}
},
diff --git a/server/api/controller/oauth.js b/server/api/controller/oauth.js
index 762d369f..ec789e82 100644
--- a/server/api/controller/oauth.js
+++ b/server/api/controller/oauth.js
@@ -7,8 +7,8 @@ const OAuthToken = require('../models/oauth_token')
const OAuthCode = require('../models/oauth_code')
const User = require('../models/user')
-const debug = require('debug')('oauth')
-const moment = require('dayjs')
+const log = require('../../log')
+const dayjs = require('dayjs')
async function randomString (len = 16) {
const bytes = await randomBytes(len * 8)
@@ -42,7 +42,7 @@ const oauthController = {
delete client.id
res.json(client)
} catch (e) {
- debug(e)
+ log.error(e)
res.status(400).json(e)
}
},
@@ -136,14 +136,14 @@ const oauthController = {
async saveAuthorizationCode (code, client, user) {
code.userId = user.id
code.clientId = client.id
- code.expiresAt = moment(code.expiresAt).toDate()
+ code.expiresAt = dayjs(code.expiresAt).toDate()
const ret = await OAuthCode.create(code)
return ret
},
// TODO
verifyScope (token, scope) {
- debug('VERIFY SCOPE ', scope)
+ log.debug('VERIFY SCOPE ', scope)
if (token.user.is_admin) {
return true
} else {
diff --git a/server/api/controller/settings.js b/server/api/controller/settings.js
index 85b565df..eeb31ebe 100644
--- a/server/api/controller/settings.js
+++ b/server/api/controller/settings.js
@@ -4,7 +4,6 @@ const consola = require('consola')
const path = require('path')
const fs = require('fs')
const pkg = require('../../../package.json')
-const debug = require('debug')('settings')
const crypto = require('crypto')
const util = require('util')
const toIco = require('to-ico')
@@ -12,6 +11,7 @@ const generateKeyPair = util.promisify(crypto.generateKeyPair)
const readFile = util.promisify(fs.readFile)
const writeFile = util.promisify(fs.writeFile)
const sharp = require('sharp')
+const log = require('../../log')
const defaultSettings = {
instance_timezone: 'Europe/Rome',
@@ -61,7 +61,7 @@ const settingsController = {
// add pub/priv instance key if needed
if (!settingsController.settings.publicKey) {
- debug('Instance priv/pub key not found')
+ log.debug('Instance priv/pub key not found')
const { publicKey, privateKey } = await generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
@@ -92,6 +92,7 @@ const settingsController = {
},
async set (key, value, is_secret = false) {
+ log.debug(`SET ${key} ${value}`)
try {
const [setting, created] = await Setting.findOrCreate({
where: { key },
@@ -101,7 +102,7 @@ const settingsController = {
settingsController[is_secret ? 'secretSettings' : 'settings'][key] = value
return true
} catch (e) {
- debug(e)
+ log.error(e)
return false
}
},
@@ -125,6 +126,9 @@ const settingsController = {
.resize(400)
.png({ quality: 90 })
.toFile(baseImgPath + '.png', async (err, info) => {
+ if (err) {
+ log.error(err)
+ }
const image = await readFile(baseImgPath + '.png')
const favicon = await toIco([image], { sizes: [64], resize: true })
writeFile(baseImgPath + '.ico', favicon)
diff --git a/server/api/controller/user.js b/server/api/controller/user.js
index 5368dacb..18cb3a43 100644
--- a/server/api/controller/user.js
+++ b/server/api/controller/user.js
@@ -4,7 +4,7 @@ const config = require('config')
const mail = require('../mail')
const User = require('../models/user')
const settingsController = require('./settings')
-const debug = require('debug')('user:controller')
+const log = require('../../log')
const linkify = require('linkifyjs')
const userController = {
@@ -96,9 +96,9 @@ const userController = {
return res.status(404).json('Invalid email')
}
- debug('Register user ', req.body.email)
+ log.debug('Register user ', req.body.email)
const user = await User.create(req.body)
- debug(`Sending registration email to ${user.email}`)
+ log.debug(`Sending registration email to ${user.email}`)
mail.send(user.email, 'register', { user, config }, req.settings.locale)
mail.send(config.admin_email, 'admin_register', { user, config })
res.sendStatus(200)
diff --git a/server/api/index.js b/server/api/index.js
index 4660c78d..7279ab33 100644
--- a/server/api/index.js
+++ b/server/api/index.js
@@ -17,7 +17,7 @@ const storage = require('./storage')
const upload = multer({ storage })
const config = require('config')
-const debug = require('debug')('api')
+const log = require('../log')
const api = express.Router()
api.use(express.urlencoded({ extended: false }))
@@ -144,7 +144,7 @@ api.use((req, res) => res.sendStatus(404))
// Handle 500
api.use((error, req, res, next) => {
- debug(error)
+ log.error(error)
res.status(500).send('500: Internal Server Error')
})
diff --git a/server/api/mail.js b/server/api/mail.js
index ea816a9e..5df442bb 100644
--- a/server/api/mail.js
+++ b/server/api/mail.js
@@ -3,7 +3,7 @@ const path = require('path')
const moment = require('dayjs')
const config = require('config')
const settingsController = require('./controller/settings')
-const log = process.winstonLog
+const log = require('../log')
const { Task, TaskManager } = require('../taskManager')
const locales = require('../../locales')
@@ -62,7 +62,8 @@ const mail = {
}
return email.send(msg)
.catch(e => {
- log.error('Error sending email =>', e.toString())
+ log.error('Error sending email =>')
+ log.error(e)
})
}
}
diff --git a/server/api/oauth.js b/server/api/oauth.js
index b6b4cc7f..1f2ccd8f 100644
--- a/server/api/oauth.js
+++ b/server/api/oauth.js
@@ -2,7 +2,7 @@ const express = require('express')
const OAuthServer = require('express-oauth-server')
const oauth = express.Router()
const oauthController = require('./controller/oauth')
-const debug = require('debug')('oauth')
+const log = require('../log')
const oauthServer = new OAuthServer({
model: oauthController.model,
@@ -34,7 +34,7 @@ oauth.use((req, res) => res.sendStatus(404))
oauth.use((err, req, res, next) => {
const error_msg = err.toString()
- debug(error_msg)
+ log.debug(error_msg)
res.status(500).send(error_msg)
})
diff --git a/server/api/storage.js b/server/api/storage.js
index 87099100..1692c99b 100644
--- a/server/api/storage.js
+++ b/server/api/storage.js
@@ -3,13 +3,13 @@ const path = require('path')
const crypto = require('crypto')
const mkdirp = require('mkdirp')
const sharp = require('sharp')
-const debug = require('debug')('storage')
+const log = require('../log')
const config = require('config')
try {
mkdirp.sync(config.upload_path + '/thumb')
} catch (e) {
- debug.warn(e)
+ log.error(e)
}
const DiskStorage = {
@@ -25,10 +25,11 @@ const DiskStorage = {
let onError = false
const err = e => {
if (onError) {
+ log.error(err)
return
}
onError = true
- debug(e)
+ log.error(e)
req.err = e
cb(null)
}
diff --git a/server/federation/ego.js b/server/federation/ego.js
index 2cc49f36..b8d57aa3 100644
--- a/server/federation/ego.js
+++ b/server/federation/ego.js
@@ -1,12 +1,12 @@
const Event = require('../api/models/event')
const config = require('config')
-const debug = require('debug')('fediverse:ego')
+const log = require('../log')
module.exports = {
async boost (req, res) {
const match = req.body.object.match(`${config.baseurl}/federation/m/(.*)`)
if (!match || match.length < 2) { return res.status(404).send('Event not found!') }
- debug('boost %s', match[1])
+ log.debug(`boost ${match[1]}`)
const event = await Event.findByPk(Number(match[1]))
if (!event) { return res.status(404).send('Event not found!') }
await event.update({ boost: [...event.boost, req.body.actor] })
@@ -16,7 +16,7 @@ module.exports = {
async unboost (req, res) {
const match = req.body.object.match(`${config.baseurl}/federation/m/(.*)`)
if (!match || match.length < 2) { return res.status(404).send('Event not found!') }
- debug('unboost %s', match[1])
+ log.debug(`unboost ${match[1]}`)
const event = await Event.findByPk(Number(match[1]))
if (!event) { return res.status(404).send('Event not found!') }
await event.update({ boost: event.boost.filter(actor => actor !== req.body.actor) })
@@ -26,7 +26,7 @@ module.exports = {
const match = req.body.object.match(`${config.baseurl}/federation/m/(.*)`)
if (!match || match.length < 2) { return res.status(404).send('Event not found!') }
const event = await Event.findByPk(Number(match[1]))
- debug('%s bookmark %s (%d)', req.body.actor, event.title, event.likes.length)
+ log.debug(`${req.body.actor} bookmark ${event.title} (${event.likes.length})`)
if (!event) { return res.status(404).send('Event not found!') }
await event.update({ likes: [...event.likes, req.body.actor] })
res.sendStatus(201)
@@ -38,7 +38,7 @@ module.exports = {
const match = object.object.match(`${config.baseurl}/federation/m/(.*)`)
if (!match || match.length < 2) { return res.status(404).send('Event not found!') }
const event = await Event.findByPk(Number(match[1]))
- debug('%s unbookmark %s (%d)', body.actor, event.title, event.likes.length)
+ log.debug(`${body.actor} unbookmark ${event.title} (${event.likes.length})`)
if (!event) { return res.status(404).send('Event not found!') }
await event.update({ likes: event.likes.filter(actor => actor !== body.actor) })
res.sendStatus(201)
diff --git a/server/federation/follows.js b/server/federation/follows.js
index deba6365..ae1d4d57 100644
--- a/server/federation/follows.js
+++ b/server/federation/follows.js
@@ -1,29 +1,33 @@
const config = require('config')
const Helpers = require('./helpers')
const crypto = require('crypto')
-const debug = require('debug')('federation:follows')
+const log = require('../log')
module.exports = {
// follow request from fediverse
async follow (req, res) {
const body = req.body
+ log.debug('follow')
if (typeof body.object !== 'string') { return }
const username = body.object.replace(`${config.baseurl}/federation/u/`, '')
- if (username !== req.settings.instance_name) { return res.status(404).send('User not found') }
+ if (username !== req.settings.instance_name) {
+ log.warn(`Following the wrong user: ${username} instead of ${req.settings.instance_name}`)
+ return res.status(404).send('User not found')
+ }
// check for duplicate
// if (!user.followers.includes(body.actor)) {
// await user.addFollowers([req.fedi_user.id])
// await user.update({ followers: [...user.followers, body.actor] })
await req.fedi_user.update({ follower: true })
- debug('Followed by %s', body.actor)
+ log.debug(`Followed by ${body.actor}`)
const guid = crypto.randomBytes(16).toString('hex')
const message = {
'@context': 'https://www.w3.org/ns/activitystreams',
- 'id': `${config.baseurl}/federation/${guid}`,
- 'type': 'Accept',
- 'actor': `${config.baseurl}/federation/u/${username}`,
- 'object': body
+ id: `${config.baseurl}/federation/${guid}`,
+ type: 'Accept',
+ actor: `${config.baseurl}/federation/u/${username}`,
+ object: body
}
Helpers.signAndSend(message, req.fedi_user.object.inbox)
res.sendStatus(200)
@@ -33,14 +37,17 @@ module.exports = {
async unfollow (req, res) {
const body = req.body
const username = body.object.object.replace(`${config.baseurl}/federation/u/`, '')
- if (username !== req.settings.instance_name) { return res.status(404).send('User not found') }
+ if (username !== req.settings.instance_name) {
+ log.warn(`Unfollowing wrong user: ${username} instead of ${req.settings.instance_name}`)
+ return res.status(404).send('User not found')
+ }
if (body.actor !== body.object.actor || body.actor !== req.fedi_user.ap_id) {
- debug('Unfollow an user created by a different actor !?!?')
+ log.debug('Unfollow an user created by a different actor !?!?')
return res.status(400).send('Bad things')
}
await req.fedi_user.update({ follower: false })
- debug('Unfollowed by %s', body.actor)
+ log.debug(`Unfollowed by ${body.actor}`)
res.sendStatus(200)
}
}
diff --git a/server/federation/helpers.js b/server/federation/helpers.js
index 3d1bad5b..f72a69c9 100644
--- a/server/federation/helpers.js
+++ b/server/federation/helpers.js
@@ -3,11 +3,11 @@ const axios = require('axios')
const crypto = require('crypto')
const config = require('config')
const httpSignature = require('http-signature')
-const debug = require('debug')('federation:helpers')
const APUser = require('../api/models/ap_user')
const Instance = require('../api/models/instance')
const url = require('url')
const settingsController = require('../api/controller/settings')
+const log = require('../log')
const Helpers = {
@@ -25,7 +25,11 @@ const Helpers = {
'/friendica/json',
'/poco'
]
- if (urlToIgnore.includes(req.path)) { return res.status(404).send('Not Found') }
+ if (urlToIgnore.includes(req.path)) {
+ log.debug(`Ignore noisy fediverse ${req.path}`)
+ log.debug(req)
+ return res.status(404).send('Not Found')
+ }
next()
},
@@ -53,15 +57,15 @@ const Helpers = {
method: 'post',
data: JSON.stringify(message)
})
- debug('sign %s => %s', ret.status, ret.data)
+ log.debug(`sign ${ret.status} => ${ret.data}`)
} catch (e) {
- debug('ERROR ', e.toString())
+ log.error(e)
}
},
async sendEvent (event, type = 'Create') {
if (!settingsController.settings.enable_federation) {
- debug('event not send, federation disabled')
+ log.debug('event not send, federation disabled')
return
}
@@ -74,7 +78,7 @@ const Helpers = {
})
for (const sharedInbox in recipients) {
- debug('Notify %s with event %s cc => %d', sharedInbox, event.title, recipients[sharedInbox].length)
+ log.debug(`Notify ${sharedInbox} with event ${event.title} cc => ${recipients[sharedInbox].length}`)
const body = {
id: `${config.baseurl}/federation/m/${event.id}#create`,
type,
@@ -112,18 +116,18 @@ const Helpers = {
fedi_user = await axios.get(URL, { headers: { Accept: 'application/jrd+json, application/json' } })
.then(res => {
if (res.status !== 200) {
- debug('[ERR] Actor %s => %s', URL, res.statusText)
+ log.warn(`Actor ${URL} => ${res.statusText}`)
return false
}
return res.data
})
.catch(e => {
- debug(`[ERR] ${URL}: ${e}`)
+ log.error(`${URL}: ${e}`)
return false
})
if (fedi_user) {
- debug(`Create a new AP User => ${URL}`)
+ log.debug(`Create a new AP User => ${URL}`)
fedi_user = await APUser.create({ ap_id: URL, object: fedi_user })
}
return fedi_user
@@ -133,7 +137,7 @@ const Helpers = {
actor_url = new url.URL(actor_url)
const domain = actor_url.host
const instance_url = `${actor_url.protocol}//${actor_url.host}`
- debug('getInstance %s', domain)
+ log.debug(`getInstance ${domain}`)
let instance
if (!force) {
instance = await Instance.findByPk(domain)
@@ -151,7 +155,7 @@ const Helpers = {
return Instance.create({ name: instance.title, domain, data, blocked: false })
})
.catch(e => {
- debug(e)
+ log.error(e)
return false
})
return instance
@@ -160,16 +164,22 @@ const Helpers = {
// ref: https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/
async verifySignature (req, res, next) {
const instance = await Helpers.getInstance(req.body.actor)
- if (!instance) { return res.status(401).send('Instance not found') }
+ if (!instance) {
+ log.warn(`[AP] Verify Signature: Instance not found ${req.body.actor}`)
+ return res.status(401).send('Instance not found')
+ }
if (instance.blocked) {
- debug('Instance %s blocked', instance.domain)
+ log.warn(`Instance ${instance.domain} blocked`)
return res.status(401).send('Instance blocked')
}
let user = await Helpers.getActor(req.body.actor, instance)
- if (!user) { return res.status(401).send('Actor not found') }
+ if (!user) {
+ log.info(`Actor ${req.body.actor} not found`)
+ return res.status(401).send('Actor not found')
+ }
if (user.blocked) {
- debug('User %s blocked', user.ap_id)
+ log.info(`User ${user.ap_id} blocked`)
return res.status(401).send('User blocked')
}
@@ -186,11 +196,14 @@ const Helpers = {
// signature not valid, try without cache
user = await Helpers.getActor(req.body.actor, instance, true)
- if (!user) { return res.status(401).send('Actor not found') }
+ if (!user) {
+ log.debug(`Actor ${req.body.actor} not found`)
+ return res.status(401).send('Actor not found')
+ }
if (httpSignature.verifySignature(parsed, user.object.publicKey.publicKeyPem)) { return next() }
// still not valid
- debug('Invalid signature from user %s', req.body.actor)
+ log.debug(`Invalid signature from user ${req.body.actor}`)
res.send('Request signature could not be verified', 401)
}
}
diff --git a/server/federation/resources.js b/server/federation/resources.js
index a0fb2e0a..0888e7db 100644
--- a/server/federation/resources.js
+++ b/server/federation/resources.js
@@ -2,7 +2,7 @@ const Event = require('../api/models/event')
const Resource = require('../api/models/resource')
const APUser = require('../api/models/ap_user')
-const debug = require('debug')('fediverse:resource')
+const log = require('../log')
const helpers = require('../helpers')
const linkifyHtml = require('linkifyjs/html')
@@ -11,7 +11,7 @@ module.exports = {
// create a resource from AP Note
async create (req, res) {
if (!req.settings.enable_resources) {
- debug('Ignore resource as it is disabled in settings')
+ log.info('Ignore resource as it is disabled in settings')
return
}
@@ -26,7 +26,7 @@ module.exports = {
if (inReplyTo) {
// .. to an event ?
const match = inReplyTo && inReplyTo.match('.*/federation/m/(.*)')
- debug('Event reply => ', inReplyTo)
+ log.info(`Event reply => ${inReplyTo}`)
if (match) {
event = await Event.findByPk(Number(match[1]))
} else {
@@ -36,10 +36,14 @@ module.exports = {
}
}
- debug('resource from %s to "%s"', req.body.actor, event && event.title)
+ if (!event) {
+ log.error('This is a direct message. Just ignore it')
+ log.error(body)
+ return res.status(404).send('Not found')
+ }
+
+ log.debug(`resource from ${req.body.actor} to "${event.title}"`)
- // TODO should probably map links here
- // clean resource
body.object.content = helpers.sanitizeHTML(linkifyHtml(body.object.content))
await Resource.create({
@@ -58,15 +62,15 @@ module.exports = {
include: [{ model: APUser, required: false, attributes: ['ap_id'] }]
})
if (!resource) {
- debug('Comment %s not found', req.body.object.id)
+ log.info(`Comment ${req.body.object.id} not found`)
return res.status(404).send('Not found')
}
// check if fedi_user that requested resource removal
// is the same that created the resource at first place
- debug(res.fedi_user.ap_id, resource.ap_user.ap_id)
+ log.debug(res.fedi_user.ap_id, resource.ap_user.ap_id)
if (res.fedi_user.ap_id === resource.ap_user.id) {
await resource.destroy()
- debug('Comment %s removed!', req.body.object.id)
+ log.info(`Comment ${req.body.object.id} removed`)
res.sendStatus(201)
} else {
res.sendStatus(403)
diff --git a/server/federation/webfinger.js b/server/federation/webfinger.js
index c571caa7..d833995f 100644
--- a/server/federation/webfinger.js
+++ b/server/federation/webfinger.js
@@ -8,19 +8,21 @@ const cors = require('cors')
const settingsController = require('../api/controller/settings')
const version = require('../../package.json').version
const url = require('url')
-const debug = require('debug')('webfinger')
+const log = require('../log')
router.use(cors())
router.use((req, res, next) => {
// is federation enabled ?
- if (req.settings.enable_federation) { return next() }
- debug('Federation disabled')
+ if (req.settings.enable_federation) {
+ return next()
+ }
+ log.debug('Federation disabled')
res.status(404).send('Federation disabled')
})
router.get('/webfinger', (req, res) => {
if (!req.query || !req.query.resource || !req.query.resource.includes('acct:')) {
- debug('Bad webfinger request => %s', req.query && req.query.resource)
+ log.debug('Bad webfinger request => ', req.query && req.query.resource)
return res.status(400).send('Bad request. Please make sure "acct:USER@DOMAIN" is what you are sending as the "resource" query parameter.')
}
@@ -28,14 +30,15 @@ router.get('/webfinger', (req, res) => {
const domain = (new url.URL(req.settings.baseurl)).host
const [, name, req_domain] = resource.match(/acct:(.*)@(.*)/)
if (domain !== req_domain) {
- debug('Bad webfinger request, requested domain "%s" instead of "%s"', req_domain, domain)
+ log.warn(`Bad webfinger request, requested domain "${req_domain}" instead of "${domain}"`)
return res.status(400).send('Bad request. Please make sure "acct:USER@DOMAIN" is what you are sending as the "resource" query parameter.')
}
if (name !== req.settings.instance_name) {
- debug('User not found: %s', name)
+ log.warn(`User not found: ${name}`)
return res.status(404).send(`No record found for ${name}`)
}
+ log.info(`webfinger ${resource} ${domain}`)
const ret = {
subject: `acct:${name}@${domain}`,
links: [
@@ -121,6 +124,7 @@ router.get('/nodeinfo', (req, res) => {
})
router.use('/host-meta', (req, res) => {
+ log.debug('host-meta')
res.type('application/xml')
res.send(`
@@ -130,13 +134,13 @@ router.use('/host-meta', (req, res) => {
// Handle 404
router.use((req, res) => {
- debug('404 Page not found: %s', req.path)
+ log.error('404 Page not found: ', req.path)
res.status(404).send('404: Page not Found')
})
// Handle 500
router.use((error, req, res, next) => {
- debug(error)
+ log.error(error)
res.status(500).send('500: Internal Server Error')
})
diff --git a/server/helpers.js b/server/helpers.js
index eeb43749..58c96196 100644
--- a/server/helpers.js
+++ b/server/helpers.js
@@ -7,7 +7,7 @@ const timezone = require('dayjs/plugin/timezone')
dayjs.extend(timezone)
const config = require('config')
-const debug = require('debug')('helpers')
+const log = require('./log')
const pkg = require('../package.json')
const fs = require('fs')
const path = require('path')
@@ -77,7 +77,7 @@ module.exports = {
},
async getImageFromURL (url) {
- debug(`getImageFromURL ${url}`)
+ log.debug(`getImageFromURL ${url}`)
const filename = crypto.randomBytes(16).toString('hex') + '.jpg'
const finalPath = path.resolve(config.upload_path, filename)
const thumbPath = path.resolve(config.upload_path, 'thumb', filename)
@@ -164,7 +164,7 @@ module.exports = {
// console.error(event)
// console.error(response)
} catch (e) {
- debug(e)
+ log.error(e)
}
// res.json('ok')
diff --git a/server/index.js b/server/index.js
index 6ce5d905..e8f03eed 100644
--- a/server/index.js
+++ b/server/index.js
@@ -3,7 +3,7 @@ const { Nuxt, Builder } = require('nuxt')
// Import and Set Nuxt.js options
const nuxtConfig = require('../nuxt.config.js')
const config = require('config')
-const consola = require('consola')
+const log = require('./log')
async function main () {
nuxtConfig.server = config.server
@@ -21,21 +21,20 @@ async function main () {
try {
await nuxt.listen()
} catch (e) {
- consola.error(e.toString())
- process.winstonLog.error(e)
+ log.err(e)
return
}
const { TaskManager } = require('./taskManager')
TaskManager.start()
const msg = `Listen on ${config.server.host}:${config.server.port} , visit me here => ${config.baseurl}`
- consola.info(msg)
- process.winstonLog.info(msg)
+ log.info(msg)
// close connections/port/unix socket
function shutdown () {
TaskManager.stop()
nuxt.close(async () => {
+ log.info('Closing DB')
const sequelize = require('./api/models')
await sequelize.close()
process.exit()
diff --git a/server/log.js b/server/log.js
index ed902372..0c72fcf9 100644
--- a/server/log.js
+++ b/server/log.js
@@ -1 +1,16 @@
-module.exports = process.winstonLog
+const { createLogger, transports, format } = require('winston')
+
+const logger = createLogger({
+ transports: process.env.NODE_ENV !== 'production'
+ ? [new transports.Console(
+ { level: 'debug', format: format.combine(format.colorize(), format.simple(), format.errors({ stack: true })) }
+ )]
+ : [new transports.File(
+ {
+ filename: 'gancio.log',
+ format: format.combine(format.simple(), format.errors({ stack: true }))
+ }
+ )]
+})
+
+module.exports = logger
diff --git a/server/routes.js b/server/routes.js
index e1fa68f3..2b7aae19 100644
--- a/server/routes.js
+++ b/server/routes.js
@@ -9,7 +9,7 @@ const cookieParser = require('cookie-parser')
const federation = require('./federation')
const webfinger = require('./federation/webfinger')
const { spamFilter } = require('./federation/helpers')
-const debug = require('debug')('routes')
+const log = require('./log')
const exportController = require('./api/controller/export')
const eventController = require('./api/controller/event')
const announceController = require('./api/controller/announce')
@@ -26,7 +26,7 @@ app.use(spamFilter)
app.use(metricsMiddleware)
app.use((req, res, next) => {
- debug(req.method, req.path)
+ log.debug(`${req.method} ${req.path}`)
next()
})
@@ -62,7 +62,7 @@ app.use('/oauth', oauth)
// // Handle 500
app.use((error, req, res, next) => {
- debug('Error 500: %s', error)
+ log.error(error)
res.status(500).send('500: Internal Server Error')
})
diff --git a/server/taskManager.js b/server/taskManager.js
index ecd918df..1fc40627 100644
--- a/server/taskManager.js
+++ b/server/taskManager.js
@@ -1,4 +1,4 @@
-const log = process.winstonLog // require('./log') // // require('debug')('TaskManager')
+const log = require('./log')
const eventController = require('./api/controller/event')
// const notifier = require('./notifier')
@@ -47,6 +47,8 @@ class Task {
class TaskManager {
constructor () {
this.tasks = []
+ this.interval = 1
+ this.timeout = null
}
start (interval = loopInterval) {
@@ -64,7 +66,7 @@ class TaskManager {
}
add (task) {
- log.info(`ADD TASK ${task.name}`)
+ log.debug(`[TASK] Add ${task.name} (${task.repeatEach * this.interval} seconds)`)
this.tasks.push(task)
}
diff --git a/yarn.lock b/yarn.lock
index 383405fd..b7b65cf2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,40 +2,48 @@
# yarn lockfile v1
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
+"@babel/code-frame@7.12.11", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
dependencies:
"@babel/highlight" "^7.10.4"
-"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
- integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
-
-"@babel/core@^7.12.9":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
- integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
+"@babel/code-frame@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
+ integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.10"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helpers" "^7.12.5"
- "@babel/parser" "^7.12.10"
- "@babel/template" "^7.12.7"
- "@babel/traverse" "^7.12.10"
- "@babel/types" "^7.12.10"
+ "@babel/highlight" "^7.12.13"
+
+"@babel/compat-data@^7.12.13", "@babel/compat-data@^7.13.0":
+ version "7.13.6"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.6.tgz#11972d07db4c2317afdbf41d6feb3a730301ef4e"
+ integrity sha512-VhgqKOWYVm7lQXlvbJnWOzwfAQATd2nV52koT0HZ/LdDH0m4DUDwkKYsH+IwpXb+bKPyBJzawA4I6nBKqZcpQw==
+
+"@babel/core@^7.13.1":
+ version "7.13.1"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.1.tgz#7ddd027176debe40f13bb88bac0c21218c5b1ecf"
+ integrity sha512-FzeKfFBG2rmFtGiiMdXZPFt/5R5DXubVi82uYhjGX4Msf+pgYQMCFIqFXZWs5vbIYbf14VeBIgdGI03CDOOM1w==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.13.0"
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helpers" "^7.13.0"
+ "@babel/parser" "^7.13.0"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
convert-source-map "^1.7.0"
debug "^4.1.0"
- gensync "^1.0.0-beta.1"
+ gensync "^1.0.0-beta.2"
json5 "^2.1.2"
lodash "^4.17.19"
- semver "^5.4.1"
+ semver "7.0.0"
source-map "^0.5.0"
-"@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
+"@babel/generator@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
@@ -44,6 +52,15 @@
jsesc "^2.5.1"
source-map "^0.5.0"
+"@babel/generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c"
+ integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw==
+ dependencies:
+ "@babel/types" "^7.13.0"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
"@babel/helper-annotate-as-pure@^7.10.4":
version "7.12.10"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
@@ -51,34 +68,41 @@
dependencies:
"@babel/types" "^7.12.10"
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3"
- integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==
+"@babel/helper-annotate-as-pure@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
+ integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
dependencies:
- "@babel/helper-explode-assignable-expression" "^7.10.4"
- "@babel/types" "^7.10.4"
+ "@babel/types" "^7.12.13"
-"@babel/helper-compilation-targets@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831"
- integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
+ integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
dependencies:
- "@babel/compat-data" "^7.12.5"
- "@babel/helper-validator-option" "^7.12.1"
+ "@babel/helper-explode-assignable-expression" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-compilation-targets@^7.12.17", "@babel/helper-compilation-targets@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1"
+ integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q==
+ dependencies:
+ "@babel/compat-data" "^7.13.0"
+ "@babel/helper-validator-option" "^7.12.17"
browserslist "^4.14.5"
- semver "^5.5.0"
+ semver "7.0.0"
-"@babel/helper-create-class-features-plugin@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e"
- integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==
+"@babel/helper-create-class-features-plugin@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.0.tgz#28d04ad9cfbd1ed1d8b988c9ea7b945263365846"
+ integrity sha512-twwzhthM4/+6o9766AW2ZBHpIHPSGrPGk1+WfHiu13u/lBnggXGNYCpeAyVfNwGDKfkhEDp+WOD/xafoJ2iLjA==
dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-member-expression-to-functions" "^7.12.1"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.10.4"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-member-expression-to-functions" "^7.13.0"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-split-export-declaration" "^7.12.13"
"@babel/helper-create-regexp-features-plugin@^7.12.1":
version "7.12.7"
@@ -88,23 +112,36 @@
"@babel/helper-annotate-as-pure" "^7.10.4"
regexpu-core "^4.7.1"
-"@babel/helper-define-map@^7.10.4":
- version "7.10.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30"
- integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==
+"@babel/helper-create-regexp-features-plugin@^7.12.13":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7"
+ integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==
dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/types" "^7.10.5"
- lodash "^4.17.19"
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ regexpu-core "^4.7.1"
-"@babel/helper-explode-assignable-expression@^7.10.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633"
- integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==
+"@babel/helper-define-polyfill-provider@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.4.tgz#b618b087c6a0328127e5d53576df818bcee2b15f"
+ integrity sha512-K5V2GaQZ1gpB+FTXM4AFVG2p1zzhm67n9wrQCJYNzvuLzQybhJyftW7qeDd2uUxPDNdl5Rkon1rOAeUeNDZ28Q==
dependencies:
- "@babel/types" "^7.12.1"
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/traverse" "^7.13.0"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+ semver "^6.1.2"
-"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11":
+"@babel/helper-explode-assignable-expression@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f"
+ integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==
+ dependencies:
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-function-name@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
@@ -113,6 +150,15 @@
"@babel/template" "^7.12.7"
"@babel/types" "^7.12.11"
+"@babel/helper-function-name@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
+ integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
"@babel/helper-get-function-arity@^7.12.10":
version "7.12.10"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
@@ -120,79 +166,99 @@
dependencies:
"@babel/types" "^7.12.10"
-"@babel/helper-hoist-variables@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
- integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==
+"@babel/helper-get-function-arity@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
+ integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
dependencies:
- "@babel/types" "^7.10.4"
+ "@babel/types" "^7.12.13"
-"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855"
- integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==
+"@babel/helper-hoist-variables@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8"
+ integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==
dependencies:
- "@babel/types" "^7.12.7"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5":
+"@babel/helper-member-expression-to-functions@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091"
+ integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==
+ dependencies:
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-module-imports@^7.0.0":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
dependencies:
"@babel/types" "^7.12.5"
-"@babel/helper-module-transforms@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
- integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==
+"@babel/helper-module-imports@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0"
+ integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==
dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-simple-access" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.11.0"
- "@babel/helper-validator-identifier" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.1"
- "@babel/types" "^7.12.1"
+ "@babel/types" "^7.12.13"
+
+"@babel/helper-module-transforms@^7.12.13", "@babel/helper-module-transforms@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1"
+ integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-simple-access" "^7.12.13"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/helper-validator-identifier" "^7.12.11"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
lodash "^4.17.19"
-"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
- integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
+"@babel/helper-optimise-call-expression@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
+ integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
dependencies:
- "@babel/types" "^7.12.10"
+ "@babel/types" "^7.12.13"
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
-"@babel/helper-remap-async-to-generator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd"
- integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- "@babel/helper-wrap-function" "^7.10.4"
- "@babel/types" "^7.12.1"
+"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
+ integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
-"@babel/helper-replace-supers@^7.12.1":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d"
- integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==
+"@babel/helper-remap-async-to-generator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209"
+ integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.12.7"
- "@babel/helper-optimise-call-expression" "^7.12.10"
- "@babel/traverse" "^7.12.10"
- "@babel/types" "^7.12.11"
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-wrap-function" "^7.13.0"
+ "@babel/types" "^7.13.0"
-"@babel/helper-simple-access@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136"
- integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==
+"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24"
+ integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==
dependencies:
- "@babel/types" "^7.12.1"
+ "@babel/helper-member-expression-to-functions" "^7.13.0"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
+
+"@babel/helper-simple-access@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4"
+ integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==
+ dependencies:
+ "@babel/types" "^7.12.13"
"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
version "7.12.1"
@@ -201,41 +267,48 @@
dependencies:
"@babel/types" "^7.12.1"
-"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11":
+"@babel/helper-split-export-declaration@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
dependencies:
"@babel/types" "^7.12.11"
+"@babel/helper-split-export-declaration@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
+ integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
+ dependencies:
+ "@babel/types" "^7.12.13"
+
"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f"
- integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==
+"@babel/helper-validator-option@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
+ integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
-"@babel/helper-wrap-function@^7.10.4":
- version "7.12.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9"
- integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==
+"@babel/helper-wrap-function@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4"
+ integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==
dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.10.4"
- "@babel/types" "^7.10.4"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
-"@babel/helpers@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
- integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
+"@babel/helpers@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0"
+ integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==
dependencies:
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.5"
- "@babel/types" "^7.12.5"
+ "@babel/template" "^7.12.13"
+ "@babel/traverse" "^7.13.0"
+ "@babel/types" "^7.13.0"
"@babel/highlight@^7.10.4":
version "7.10.4"
@@ -246,120 +319,147 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.6.0", "@babel/parser@^7.7.0", "@babel/parser@^7.9.6":
+"@babel/highlight@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
+ integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.6.0", "@babel/parser@^7.7.0", "@babel/parser@^7.9.6":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
-"@babel/plugin-proposal-async-generator-functions@^7.12.1":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566"
- integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==
+"@babel/parser@^7.12.13", "@babel/parser@^7.13.0":
+ version "7.13.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.4.tgz#340211b0da94a351a6f10e63671fa727333d13ab"
+ integrity sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA==
+
+"@babel/parser@^7.9.4":
+ version "7.13.9"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99"
+ integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==
+
+"@babel/plugin-proposal-async-generator-functions@^7.12.13":
+ version "7.13.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.5.tgz#69e3fbb9958949b09036e27b26eba1aafa1ba3db"
+ integrity sha512-8cErJEDzhZgNKzYyjCKsHuyPqtWxG8gc9h4OFSUDJu0vCAOsObPU2LcECnW0kJwh/b+uUz46lObVzIXw0fzAbA==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-remap-async-to-generator" "^7.12.1"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
"@babel/plugin-syntax-async-generators" "^7.8.0"
-"@babel/plugin-proposal-class-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
- integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
+"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37"
+ integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-proposal-decorators@^7.12.1":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.12.tgz#067a6d3d6ca86d54cf56bb183239199c20daeafe"
- integrity sha512-fhkE9lJYpw2mjHelBpM2zCbaA11aov2GJs7q4cFaXNrWx0H3bW58H9Esy2rdtYOghFBEYUDRIpvlgi+ZD+AvvQ==
+"@babel/plugin-proposal-decorators@^7.13.0":
+ version "7.13.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz#d28071457a5ba8ee1394b23e38d5dcf32ea20ef7"
+ integrity sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-decorators" "^7.12.1"
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-decorators" "^7.12.13"
-"@babel/plugin-proposal-dynamic-import@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc"
- integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==
+"@babel/plugin-proposal-dynamic-import@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.17.tgz#e0ebd8db65acc37eac518fa17bead2174e224512"
+ integrity sha512-ZNGoFZqrnuy9H2izB2jLlnNDAfVPlGl5NhFEiFe4D84ix9GQGygF+CWMGHKuE+bpyS/AOuDQCnkiRNqW2IzS1Q==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-dynamic-import" "^7.8.0"
-"@babel/plugin-proposal-export-namespace-from@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4"
- integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==
+"@babel/plugin-proposal-export-namespace-from@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d"
+ integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-"@babel/plugin-proposal-json-strings@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c"
- integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==
+"@babel/plugin-proposal-json-strings@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz#ced7888a2db92a3d520a2e35eb421fdb7fcc9b5d"
+ integrity sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-json-strings" "^7.8.0"
-"@babel/plugin-proposal-logical-assignment-operators@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751"
- integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==
+"@babel/plugin-proposal-logical-assignment-operators@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz#575b5d9a08d8299eeb4db6430da6e16e5cf14350"
+ integrity sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c"
- integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.0.tgz#1a96fdf2c43109cfe5568513c5379015a23f5380"
+ integrity sha512-UkAvFA/9+lBBL015gjA68NvKiCReNxqFLm3SdNKaM3XXoDisA7tMAIX4PmIwatFoFqMxxT3WyG9sK3MO0Kting==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
-"@babel/plugin-proposal-numeric-separator@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b"
- integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==
+"@babel/plugin-proposal-numeric-separator@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db"
+ integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
-"@babel/plugin-proposal-object-rest-spread@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
- integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
+"@babel/plugin-proposal-object-rest-spread@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.0.tgz#8f19ad247bb96bd5ad2d4107e6eddfe0a789937b"
+ integrity sha512-B4qphdSTp0nLsWcuei07JPKeZej4+Hd22MdnulJXQa1nCcGSBlk8FiqenGERaPZ+PuYhz4Li2Wjc8yfJvHgUMw==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
"@babel/plugin-syntax-object-rest-spread" "^7.8.0"
- "@babel/plugin-transform-parameters" "^7.12.1"
+ "@babel/plugin-transform-parameters" "^7.13.0"
-"@babel/plugin-proposal-optional-catch-binding@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942"
- integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==
+"@babel/plugin-proposal-optional-catch-binding@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz#4640520afe57728af14b4d1574ba844f263bcae5"
+ integrity sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-"@babel/plugin-proposal-optional-chaining@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c"
- integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==
+"@babel/plugin-proposal-optional-chaining@^7.12.17", "@babel/plugin-proposal-optional-chaining@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.0.tgz#75b41ce0d883d19e8fe635fc3f846be3b1664f4d"
+ integrity sha512-OVRQOZEBP2luZrvEbNSX5FfWDousthhdEoAOpej+Tpe58HFLvqRClT89RauIvBuCDFEip7GW1eT86/5lMy2RNA==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
"@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
"@babel/plugin-syntax-optional-chaining" "^7.8.0"
-"@babel/plugin-proposal-private-methods@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389"
- integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==
+"@babel/plugin-proposal-private-methods@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787"
+ integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+"@babel/plugin-proposal-unicode-property-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba"
+ integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.4.4":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072"
integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==
@@ -374,19 +474,19 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-class-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978"
- integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==
+"@babel/plugin-syntax-class-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-syntax-decorators@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz#81a8b535b284476c41be6de06853a8802b98c5dd"
- integrity sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==
+"@babel/plugin-syntax-decorators@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648"
+ integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-dynamic-import@^7.8.0":
version "7.8.3"
@@ -458,72 +558,79 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-top-level-await@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0"
- integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==
+"@babel/plugin-syntax-top-level-await@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178"
+ integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-arrow-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3"
- integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==
+"@babel/plugin-transform-arrow-functions@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae"
+ integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-transform-async-to-generator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1"
- integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==
+"@babel/plugin-transform-async-to-generator@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f"
+ integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==
dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-remap-async-to-generator" "^7.12.1"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
-"@babel/plugin-transform-block-scoped-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9"
- integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==
+"@babel/plugin-transform-block-scoped-functions@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4"
+ integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-block-scoping@^7.12.11":
- version "7.12.12"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca"
- integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==
+"@babel/plugin-transform-block-scoping@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61"
+ integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-classes@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6"
- integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==
+"@babel/plugin-transform-classes@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b"
+ integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- "@babel/helper-define-map" "^7.10.4"
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.10.4"
+ "@babel/helper-annotate-as-pure" "^7.12.13"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-optimise-call-expression" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-replace-supers" "^7.13.0"
+ "@babel/helper-split-export-declaration" "^7.12.13"
globals "^11.1.0"
-"@babel/plugin-transform-computed-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852"
- integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==
+"@babel/plugin-transform-computed-properties@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed"
+ integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-transform-destructuring@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847"
- integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==
+"@babel/plugin-transform-destructuring@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963"
+ integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4":
+"@babel/plugin-transform-dotall-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad"
+ integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-transform-dotall-regex@^7.4.4":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975"
integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==
@@ -531,223 +638,226 @@
"@babel/helper-create-regexp-features-plugin" "^7.12.1"
"@babel/helper-plugin-utils" "^7.10.4"
-"@babel/plugin-transform-duplicate-keys@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228"
- integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==
+"@babel/plugin-transform-duplicate-keys@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de"
+ integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-exponentiation-operator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0"
- integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==
+"@babel/plugin-transform-exponentiation-operator@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1"
+ integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-for-of@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa"
- integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==
+"@babel/plugin-transform-for-of@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062"
+ integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-transform-function-name@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667"
- integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==
+"@babel/plugin-transform-function-name@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051"
+ integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==
dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57"
- integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==
+"@babel/plugin-transform-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9"
+ integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-member-expression-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad"
- integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==
+"@babel/plugin-transform-member-expression-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40"
+ integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-modules-amd@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9"
- integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==
+"@babel/plugin-transform-modules-amd@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3"
+ integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==
dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-commonjs@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648"
- integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==
+"@babel/plugin-transform-modules-commonjs@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.0.tgz#276932693a20d12c9776093fdc99c0d9995e34c6"
+ integrity sha512-j7397PkIB4lcn25U2dClK6VLC6pr2s3q+wbE8R3vJvY6U1UTBBj0n6F+5v6+Fd/UwfDPAorMOs2TV+T4M+owpQ==
dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-simple-access" "^7.12.1"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/helper-simple-access" "^7.12.13"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-systemjs@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086"
- integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==
+"@babel/plugin-transform-modules-systemjs@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz#351937f392c7f07493fc79b2118201d50404a3c5"
+ integrity sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA==
dependencies:
- "@babel/helper-hoist-variables" "^7.10.4"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-validator-identifier" "^7.10.4"
+ "@babel/helper-hoist-variables" "^7.12.13"
+ "@babel/helper-module-transforms" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/helper-validator-identifier" "^7.12.11"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-umd@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902"
- integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==
+"@babel/plugin-transform-modules-umd@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b"
+ integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==
dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-module-transforms" "^7.13.0"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753"
- integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9"
+ integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
-"@babel/plugin-transform-new-target@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0"
- integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==
+"@babel/plugin-transform-new-target@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c"
+ integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-object-super@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e"
- integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==
+"@babel/plugin-transform-object-super@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7"
+ integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/helper-replace-supers" "^7.12.13"
-"@babel/plugin-transform-parameters@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d"
- integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==
+"@babel/plugin-transform-parameters@^7.12.13", "@babel/plugin-transform-parameters@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007"
+ integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-transform-property-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd"
- integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==
+"@babel/plugin-transform-property-literals@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81"
+ integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-regenerator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753"
- integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==
+"@babel/plugin-transform-regenerator@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5"
+ integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==
dependencies:
regenerator-transform "^0.14.2"
-"@babel/plugin-transform-reserved-words@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8"
- integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==
+"@babel/plugin-transform-reserved-words@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695"
+ integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-runtime@^7.12.1":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz#af0fded4e846c4b37078e8e5d06deac6cd848562"
- integrity sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==
+"@babel/plugin-transform-runtime@^7.13.2":
+ version "7.13.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.7.tgz#a856b53681da9193d98dfb03d8192b0a3f4cdd8a"
+ integrity sha512-pXfYTTSbU5ThVTUyQ6TUdUkonZYKKq8M6vDUkFCjFw8vT42hhayrbJPVWGC7B97LkzFYBtdW/SBGVZtRaopW6Q==
dependencies:
- "@babel/helper-module-imports" "^7.12.5"
- "@babel/helper-plugin-utils" "^7.10.4"
- semver "^5.5.1"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ babel-plugin-polyfill-corejs2 "^0.1.4"
+ babel-plugin-polyfill-corejs3 "^0.1.3"
+ babel-plugin-polyfill-regenerator "^0.1.2"
+ semver "7.0.0"
-"@babel/plugin-transform-shorthand-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3"
- integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==
+"@babel/plugin-transform-shorthand-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad"
+ integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-spread@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e"
- integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==
+"@babel/plugin-transform-spread@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd"
+ integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
"@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
-"@babel/plugin-transform-sticky-regex@^7.12.7":
- version "7.12.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad"
- integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==
+"@babel/plugin-transform-sticky-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f"
+ integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-template-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843"
- integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==
+"@babel/plugin-transform-template-literals@^7.12.13":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d"
+ integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.13.0"
-"@babel/plugin-transform-typeof-symbol@^7.12.10":
- version "7.12.10"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
- integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
+"@babel/plugin-transform-typeof-symbol@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f"
+ integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-unicode-escapes@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709"
- integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==
+"@babel/plugin-transform-unicode-escapes@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74"
+ integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==
dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-transform-unicode-regex@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb"
- integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==
+"@babel/plugin-transform-unicode-regex@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac"
+ integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
-"@babel/preset-env@^7.12.7":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9"
- integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==
+"@babel/preset-env@~7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.17.tgz#94a3793ff089c32ee74d76a3c03a7597693ebaaa"
+ integrity sha512-9PMijx8zFbCwTHrd2P4PJR5nWGH3zWebx2OcpTjqQrHhCiL2ssSR2Sc9ko2BsI2VmVBfoaQmPrlMTCui4LmXQg==
dependencies:
- "@babel/compat-data" "^7.12.7"
- "@babel/helper-compilation-targets" "^7.12.5"
- "@babel/helper-module-imports" "^7.12.5"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-validator-option" "^7.12.11"
- "@babel/plugin-proposal-async-generator-functions" "^7.12.1"
- "@babel/plugin-proposal-class-properties" "^7.12.1"
- "@babel/plugin-proposal-dynamic-import" "^7.12.1"
- "@babel/plugin-proposal-export-namespace-from" "^7.12.1"
- "@babel/plugin-proposal-json-strings" "^7.12.1"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
- "@babel/plugin-proposal-numeric-separator" "^7.12.7"
- "@babel/plugin-proposal-object-rest-spread" "^7.12.1"
- "@babel/plugin-proposal-optional-catch-binding" "^7.12.1"
- "@babel/plugin-proposal-optional-chaining" "^7.12.7"
- "@babel/plugin-proposal-private-methods" "^7.12.1"
- "@babel/plugin-proposal-unicode-property-regex" "^7.12.1"
+ "@babel/compat-data" "^7.12.13"
+ "@babel/helper-compilation-targets" "^7.12.17"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.12.13"
+ "@babel/helper-validator-option" "^7.12.17"
+ "@babel/plugin-proposal-async-generator-functions" "^7.12.13"
+ "@babel/plugin-proposal-class-properties" "^7.12.13"
+ "@babel/plugin-proposal-dynamic-import" "^7.12.17"
+ "@babel/plugin-proposal-export-namespace-from" "^7.12.13"
+ "@babel/plugin-proposal-json-strings" "^7.12.13"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.12.13"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.13"
+ "@babel/plugin-proposal-numeric-separator" "^7.12.13"
+ "@babel/plugin-proposal-object-rest-spread" "^7.12.13"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.12.13"
+ "@babel/plugin-proposal-optional-chaining" "^7.12.17"
+ "@babel/plugin-proposal-private-methods" "^7.12.13"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.12.13"
"@babel/plugin-syntax-async-generators" "^7.8.0"
- "@babel/plugin-syntax-class-properties" "^7.12.1"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
"@babel/plugin-syntax-dynamic-import" "^7.8.0"
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
"@babel/plugin-syntax-json-strings" "^7.8.0"
@@ -757,41 +867,41 @@
"@babel/plugin-syntax-object-rest-spread" "^7.8.0"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
"@babel/plugin-syntax-optional-chaining" "^7.8.0"
- "@babel/plugin-syntax-top-level-await" "^7.12.1"
- "@babel/plugin-transform-arrow-functions" "^7.12.1"
- "@babel/plugin-transform-async-to-generator" "^7.12.1"
- "@babel/plugin-transform-block-scoped-functions" "^7.12.1"
- "@babel/plugin-transform-block-scoping" "^7.12.11"
- "@babel/plugin-transform-classes" "^7.12.1"
- "@babel/plugin-transform-computed-properties" "^7.12.1"
- "@babel/plugin-transform-destructuring" "^7.12.1"
- "@babel/plugin-transform-dotall-regex" "^7.12.1"
- "@babel/plugin-transform-duplicate-keys" "^7.12.1"
- "@babel/plugin-transform-exponentiation-operator" "^7.12.1"
- "@babel/plugin-transform-for-of" "^7.12.1"
- "@babel/plugin-transform-function-name" "^7.12.1"
- "@babel/plugin-transform-literals" "^7.12.1"
- "@babel/plugin-transform-member-expression-literals" "^7.12.1"
- "@babel/plugin-transform-modules-amd" "^7.12.1"
- "@babel/plugin-transform-modules-commonjs" "^7.12.1"
- "@babel/plugin-transform-modules-systemjs" "^7.12.1"
- "@babel/plugin-transform-modules-umd" "^7.12.1"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1"
- "@babel/plugin-transform-new-target" "^7.12.1"
- "@babel/plugin-transform-object-super" "^7.12.1"
- "@babel/plugin-transform-parameters" "^7.12.1"
- "@babel/plugin-transform-property-literals" "^7.12.1"
- "@babel/plugin-transform-regenerator" "^7.12.1"
- "@babel/plugin-transform-reserved-words" "^7.12.1"
- "@babel/plugin-transform-shorthand-properties" "^7.12.1"
- "@babel/plugin-transform-spread" "^7.12.1"
- "@babel/plugin-transform-sticky-regex" "^7.12.7"
- "@babel/plugin-transform-template-literals" "^7.12.1"
- "@babel/plugin-transform-typeof-symbol" "^7.12.10"
- "@babel/plugin-transform-unicode-escapes" "^7.12.1"
- "@babel/plugin-transform-unicode-regex" "^7.12.1"
+ "@babel/plugin-syntax-top-level-await" "^7.12.13"
+ "@babel/plugin-transform-arrow-functions" "^7.12.13"
+ "@babel/plugin-transform-async-to-generator" "^7.12.13"
+ "@babel/plugin-transform-block-scoped-functions" "^7.12.13"
+ "@babel/plugin-transform-block-scoping" "^7.12.13"
+ "@babel/plugin-transform-classes" "^7.12.13"
+ "@babel/plugin-transform-computed-properties" "^7.12.13"
+ "@babel/plugin-transform-destructuring" "^7.12.13"
+ "@babel/plugin-transform-dotall-regex" "^7.12.13"
+ "@babel/plugin-transform-duplicate-keys" "^7.12.13"
+ "@babel/plugin-transform-exponentiation-operator" "^7.12.13"
+ "@babel/plugin-transform-for-of" "^7.12.13"
+ "@babel/plugin-transform-function-name" "^7.12.13"
+ "@babel/plugin-transform-literals" "^7.12.13"
+ "@babel/plugin-transform-member-expression-literals" "^7.12.13"
+ "@babel/plugin-transform-modules-amd" "^7.12.13"
+ "@babel/plugin-transform-modules-commonjs" "^7.12.13"
+ "@babel/plugin-transform-modules-systemjs" "^7.12.13"
+ "@babel/plugin-transform-modules-umd" "^7.12.13"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13"
+ "@babel/plugin-transform-new-target" "^7.12.13"
+ "@babel/plugin-transform-object-super" "^7.12.13"
+ "@babel/plugin-transform-parameters" "^7.12.13"
+ "@babel/plugin-transform-property-literals" "^7.12.13"
+ "@babel/plugin-transform-regenerator" "^7.12.13"
+ "@babel/plugin-transform-reserved-words" "^7.12.13"
+ "@babel/plugin-transform-shorthand-properties" "^7.12.13"
+ "@babel/plugin-transform-spread" "^7.12.13"
+ "@babel/plugin-transform-sticky-regex" "^7.12.13"
+ "@babel/plugin-transform-template-literals" "^7.12.13"
+ "@babel/plugin-transform-typeof-symbol" "^7.12.13"
+ "@babel/plugin-transform-unicode-escapes" "^7.12.13"
+ "@babel/plugin-transform-unicode-regex" "^7.12.13"
"@babel/preset-modules" "^0.1.3"
- "@babel/types" "^7.12.11"
+ "@babel/types" "^7.12.17"
core-js-compat "^3.8.0"
semver "^5.5.0"
@@ -806,14 +916,37 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.13.2":
+ version "7.13.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.7.tgz#d494e39d198ee9ca04f4dcb76d25d9d7a1dc961a"
+ integrity sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.8.4":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/template@^7.10.4", "@babel/template@^7.12.7":
+"@babel/runtime@^7.9.2":
+ version "7.13.9"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.9.tgz#97dbe2116e2630c489f22e0656decd60aaa1fcee"
+ integrity sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
+ integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/parser" "^7.12.13"
+ "@babel/types" "^7.12.13"
+
+"@babel/template@^7.12.7":
version "7.12.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
@@ -822,7 +955,22 @@
"@babel/parser" "^7.12.7"
"@babel/types" "^7.12.7"
-"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0":
+"@babel/traverse@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc"
+ integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@babel/generator" "^7.13.0"
+ "@babel/helper-function-name" "^7.12.13"
+ "@babel/helper-split-export-declaration" "^7.12.13"
+ "@babel/parser" "^7.13.0"
+ "@babel/types" "^7.13.0"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.19"
+
+"@babel/traverse@^7.7.0":
version "7.12.12"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
@@ -837,7 +985,7 @@
globals "^11.1.0"
lodash "^4.17.19"
-"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.7.0", "@babel/types@^7.9.6":
+"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.7.0", "@babel/types@^7.9.6":
version "7.12.12"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
@@ -846,20 +994,38 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
+"@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80"
+ integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
"@csstools/convert-colors@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==
+"@dabh/diagnostics@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31"
+ integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==
+ dependencies:
+ colorspace "1.1.x"
+ enabled "2.0.x"
+ kuler "^2.0.0"
+
"@discoveryjs/json-ext@^0.5.0":
version "0.5.2"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==
-"@eslint/eslintrc@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318"
- integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==
+"@eslint/eslintrc@^0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547"
+ integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
@@ -868,17 +1034,9 @@
ignore "^4.0.6"
import-fresh "^3.2.1"
js-yaml "^3.13.1"
- lodash "^4.17.20"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
-"@hapi/address@^4.0.1":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@hapi/address/-/address-4.1.0.tgz#d60c5c0d930e77456fdcde2598e77302e2955e1d"
- integrity sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==
- dependencies:
- "@hapi/hoek" "^9.0.0"
-
"@hapi/boom@^9.1.0":
version "9.1.1"
resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.1.tgz#89e6f0e01637c2a4228da0d113e8157c93677b04"
@@ -886,32 +1044,11 @@
dependencies:
"@hapi/hoek" "9.x.x"
-"@hapi/formula@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@hapi/formula/-/formula-2.0.0.tgz#edade0619ed58c8e4f164f233cda70211e787128"
- integrity sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==
-
"@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0":
version "9.1.1"
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa"
integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw==
-"@hapi/joi@^17.1.1":
- version "17.1.1"
- resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-17.1.1.tgz#9cc8d7e2c2213d1e46708c6260184b447c661350"
- integrity sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==
- dependencies:
- "@hapi/address" "^4.0.1"
- "@hapi/formula" "^2.0.0"
- "@hapi/hoek" "^9.0.0"
- "@hapi/pinpoint" "^2.0.0"
- "@hapi/topo" "^5.0.0"
-
-"@hapi/pinpoint@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@hapi/pinpoint/-/pinpoint-2.0.0.tgz#805b40d4dbec04fc116a73089494e00f073de8df"
- integrity sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw==
-
"@hapi/topo@^5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7"
@@ -963,126 +1100,133 @@
"@nodelib/fs.scandir" "2.1.4"
fastq "^1.6.0"
-"@nuxt/babel-preset-app@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/babel-preset-app/-/babel-preset-app-2.14.12.tgz#503380ec97bb5178d16163b572cc9c0fea5b7f9a"
- integrity sha512-6qAW5i4F+nCRWyGBytJAEJ/P0yH9RpYmIqWwkzQd1GQ1EuO1Fuc9QoOmmzbs+3MrwW7HzpQ5jJtLDuzhQ+e5/w==
+"@npmcli/move-file@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
+ integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
dependencies:
- "@babel/core" "^7.12.9"
- "@babel/helper-compilation-targets" "^7.12.5"
- "@babel/plugin-proposal-class-properties" "^7.12.1"
- "@babel/plugin-proposal-decorators" "^7.12.1"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
- "@babel/plugin-proposal-optional-chaining" "^7.12.7"
- "@babel/plugin-transform-runtime" "^7.12.1"
- "@babel/preset-env" "^7.12.7"
- "@babel/runtime" "^7.12.5"
+ mkdirp "^1.0.4"
+ rimraf "^3.0.2"
+
+"@nuxt/babel-preset-app@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/babel-preset-app/-/babel-preset-app-2.15.2.tgz#d344ad972df06424c42021fac1223f675cc4375f"
+ integrity sha512-x4qTsamLTo1TJ9fqFH6ANrHpwF7LDGkwN8LFLZoZIP9A7tYBiFJk0mVeODONMBW/6LCNhM3jR/+QUWxEA3Tlxw==
+ dependencies:
+ "@babel/compat-data" "^7.13.0"
+ "@babel/core" "^7.13.1"
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/plugin-proposal-class-properties" "^7.13.0"
+ "@babel/plugin-proposal-decorators" "^7.13.0"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.13.0"
+ "@babel/plugin-transform-runtime" "^7.13.2"
+ "@babel/preset-env" "~7.12.17"
+ "@babel/runtime" "^7.13.2"
"@vue/babel-preset-jsx" "^1.2.4"
core-js "^2.6.5"
+ core-js-compat "^3.9.0"
+ regenerator-runtime "^0.13.7"
-"@nuxt/builder@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/builder/-/builder-2.14.12.tgz#c8c9deecaf88e59db4be1e1f7f296bb9212f93b7"
- integrity sha512-I25K6BEZVJv7p2bAJfNFAXXEaSF41DGV/QZBAXVb/gFjmhZABNYfvIkwHGnAv5n1JPHHi2Y1R3gsFM4fFXkxxw==
+"@nuxt/builder@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/builder/-/builder-2.15.2.tgz#81cfd5d629ab14bcf07d4c0a462217e4035797a9"
+ integrity sha512-4TCjKm7Hz/5rfiaT6g7j6rtewWenqmXZyUMI8ctai7V8a0SExok8K+En3m2O5xPIB0h2MOFurX9LXgmdozjQ2w==
dependencies:
- "@nuxt/devalue" "^1.2.4"
- "@nuxt/utils" "2.14.12"
- "@nuxt/vue-app" "2.14.12"
- "@nuxt/webpack" "2.14.12"
- chalk "^3.0.0"
- chokidar "^3.4.3"
- consola "^2.15.0"
- fs-extra "^8.1.0"
+ "@nuxt/devalue" "^1.2.5"
+ "@nuxt/utils" "2.15.2"
+ "@nuxt/vue-app" "2.15.2"
+ "@nuxt/webpack" "2.15.2"
+ chalk "^4.1.0"
+ chokidar "^3.5.1"
+ consola "^2.15.3"
+ fs-extra "^9.1.0"
glob "^7.1.6"
hash-sum "^2.0.0"
ignore "^5.1.8"
- lodash "^4.17.20"
- pify "^4.0.1"
- semver "^7.3.2"
+ lodash "^4.17.21"
+ pify "^5.0.0"
serialize-javascript "^5.0.1"
upath "^2.0.1"
-"@nuxt/cli@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/cli/-/cli-2.14.12.tgz#1298ecbe4f2b44cd5c52cec58f01d9dfe4e16f47"
- integrity sha512-YRWY1Gg0c3kcO9vg9/Ig9ZMzih5mhxsBTm5b7DCLAEIALBVcJJLamLDnY2C52YLUeMIcY5XCi0HkizvPIv9r2w==
+"@nuxt/cli@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/cli/-/cli-2.15.2.tgz#aba0b077a68cbbb8ed914095392612b91ceaf289"
+ integrity sha512-BW3aBVFlVrOzF77/CAC5advjxa4J8cxf3Qfu2xGQU53dV+37AD/RcGAY/or9sEuqQweXogc6TEWR6Lb88cpO3A==
dependencies:
- "@nuxt/config" "2.14.12"
- "@nuxt/utils" "2.14.12"
- boxen "^4.2.0"
- chalk "^3.0.0"
+ "@nuxt/config" "2.15.2"
+ "@nuxt/utils" "2.15.2"
+ boxen "^5.0.0"
+ chalk "^4.1.0"
compression "^1.7.4"
connect "^3.7.0"
- consola "^2.15.0"
+ consola "^2.15.3"
crc "^3.8.0"
- destr "^1.0.1"
- esm "^3.2.25"
- execa "^3.4.0"
+ defu "^3.2.2"
+ destr "^1.1.0"
+ execa "^5.0.0"
exit "^0.1.2"
- fs-extra "^8.1.0"
- globby "^11.0.1"
+ fs-extra "^9.1.0"
+ globby "^11.0.2"
hable "^3.0.0"
+ lodash "^4.17.21"
minimist "^1.2.5"
opener "1.5.2"
- pretty-bytes "^5.4.1"
+ pretty-bytes "^5.6.0"
+ semver "^7.3.4"
serve-static "^1.14.1"
- std-env "^2.2.1"
+ std-env "^2.3.0"
upath "^2.0.1"
- wrap-ansi "^6.2.0"
+ wrap-ansi "^7.0.0"
-"@nuxt/components@^1.2.2":
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/@nuxt/components/-/components-1.2.5.tgz#0120d567d1c381312a9e88ee2375ca0fbf773aa5"
- integrity sha512-OgLO45JNYBus7+fh+nimniLlpD09ABHKLp7+ShrOAkWP8KmXTlZAj2IvYQX3Areau6sWepV2+3vg1SyErh/Fow==
+"@nuxt/components@^2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/components/-/components-2.1.2.tgz#151859853a8b8bfd265b0476d85a61b8de2c34a1"
+ integrity sha512-3zfsgYLU/s37d/voV13qoWCWGnenZySRew40XjqQiRRAL/4/Y/oizUEubq/pTI0HFhhKjr4VJVPOzqnuUdJuig==
dependencies:
chalk "^4.1.0"
- chokidar "^3.4.3"
+ chokidar "^3.5.1"
glob "^7.1.6"
- globby "^11.0.1"
- lodash "^4.17.20"
+ globby "^11.0.2"
+ scule "^0.1.1"
semver "^7.3.4"
upath "^2.0.1"
vue-template-compiler "^2.6.12"
-"@nuxt/config@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/config/-/config-2.14.12.tgz#077267c94ac4d30ed38f7642236f3523ee5280f2"
- integrity sha512-Ob861w1BjgI1IcpXRC14TKMpUSogGYX/BFn7q/0HkntYxSOQAkMaaUZ0/YEx6IR1fuZV2v+NB8M4IkyUrgW1YA==
+"@nuxt/config@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/config/-/config-2.15.2.tgz#3ccd981fed40fc56a1bbbdd9a037cb0b7da14065"
+ integrity sha512-nSiUvHQLyuvcylrlSmH+dfKuBP2yfvTBxfJmqu1FEew8aj6jjTF5Wfg3kZw6NkSKhuykWuII9WZxi97EzqoGUg==
dependencies:
- "@nuxt/ufo" "^0.5.0"
- "@nuxt/utils" "2.14.12"
- consola "^2.15.0"
- create-require "^1.1.1"
- defu "^2.0.4"
- destr "^1.0.1"
+ "@nuxt/utils" "2.15.2"
+ consola "^2.15.3"
+ defu "^3.2.2"
+ destr "^1.1.0"
dotenv "^8.2.0"
- esm "^3.2.25"
- jiti "^0.1.17"
+ lodash "^4.17.21"
rc9 "^1.2.0"
- std-env "^2.2.1"
+ std-env "^2.3.0"
+ ufo "^0.6.7"
-"@nuxt/core@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/core/-/core-2.14.12.tgz#8f35142bcff0b1bacde2516d5e04d69e34047a95"
- integrity sha512-J+ej2KYzB05jpGkEH5y+dHdOLEa/GKSJvJBWf5Zq0wgneOHUaxB+dnBNxIRO75eXHslHxE++y/PRIQ9ZlEdtOw==
+"@nuxt/core@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/core/-/core-2.15.2.tgz#3311551135b0d7d3705430b5b795a63c6d806236"
+ integrity sha512-xgzZUiVFBe611GnAKQmSoXX3k08JY5ASsP/a5EU6FE7oos7v6El4zEyNZ4UXn/9lP0/Ugh4299XYFWRWcCP8iA==
dependencies:
- "@nuxt/config" "2.14.12"
- "@nuxt/devalue" "^1.2.4"
- "@nuxt/server" "2.14.12"
- "@nuxt/utils" "2.14.12"
- "@nuxt/vue-renderer" "2.14.12"
- consola "^2.15.0"
- debug "^4.2.0"
- esm "^3.2.25"
- fs-extra "^8.1.0"
+ "@nuxt/config" "2.15.2"
+ "@nuxt/server" "2.15.2"
+ "@nuxt/utils" "2.15.2"
+ consola "^2.15.3"
+ fs-extra "^9.1.0"
hable "^3.0.0"
hash-sum "^2.0.0"
- std-env "^2.2.1"
+ lodash "^4.17.21"
-"@nuxt/devalue@^1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@nuxt/devalue/-/devalue-1.2.4.tgz#69eca032b7481fd3c019a78ade65d642da3f2f35"
- integrity sha512-hS87c2HdSfTk1d+2KQx7mQpebyd2HjguvZu/UBy9LB+kUgT1qz2+Sj38FH32yJALK6Fv49ZfOZEwgcZ4rcNLjg==
+"@nuxt/devalue@^1.2.5":
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/@nuxt/devalue/-/devalue-1.2.5.tgz#8d95e3e74b3332d3eb713342c5c4d18096047d66"
+ integrity sha512-Tg86C7tqzvZtZli2BQVqgzZN136mZDTgauvJXagglKkP2xt5Kw3NUIiJyjX0Ww/IZy2xVmD0LN+CEPpij4dB2g==
dependencies:
consola "^2.9.0"
@@ -1096,18 +1240,20 @@
error-stack-parser "^2.0.0"
string-width "^2.0.0"
-"@nuxt/generator@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/generator/-/generator-2.14.12.tgz#6db8ac0b2954e4b99c36a13c40b2e4d8043d7854"
- integrity sha512-r7+QW3gk0nUGaaHW8zCQ9DaBAmr+LvEI7YOLFeTQdJUjwHBdw65ga36KpL3aC1HIRkb7LgWD6lbyGKJiASkpWQ==
+"@nuxt/generator@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/generator/-/generator-2.15.2.tgz#2549d2d0b3e567495d42c3cc8c19a33fc8113d47"
+ integrity sha512-XNEvi8E5S9PZa/QAI7VUSJ7dPrUyPUUERJ07EJyrxUzpObAwXxEQakEQG4T6l/9d1TpOEKOfOUY+YRaztbR0gA==
dependencies:
- "@nuxt/utils" "2.14.12"
- chalk "^3.0.0"
- consola "^2.15.0"
+ "@nuxt/utils" "2.15.2"
+ chalk "^4.1.0"
+ consola "^2.15.3"
+ defu "^3.2.2"
devalue "^2.0.1"
- fs-extra "^8.1.0"
+ fs-extra "^9.1.0"
html-minifier "^4.0.0"
- node-html-parser "^2.0.0"
+ node-html-parser "^2.2.1"
+ ufo "^0.6.7"
"@nuxt/loading-screen@^2.0.3":
version "2.0.3"
@@ -1129,34 +1275,33 @@
consola "^2.15.0"
node-fetch "^2.6.1"
-"@nuxt/server@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/server/-/server-2.14.12.tgz#919ebe76d608a38cc9358c57ae0b76c1bd039ecb"
- integrity sha512-HDOYgjv01zRSmLxPutrXb/F7kwisR+Vur0b2MEyxqBTTy7OcxiyQn1CcXozl/Q21iqZdcGpu/tRpCHO7B8bKOQ==
+"@nuxt/server@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/server/-/server-2.15.2.tgz#80dc8f880ee8c899dd11a21e53120d6a8b904a72"
+ integrity sha512-LgNfZVsxD0zLWyTmbhDXA5WzmGqY7eMAojNEhPSCVo8N1djXpFZCjEkETcY4VpyuMiDxEl1VtKHwWE7ebZgqYw==
dependencies:
- "@nuxt/config" "2.14.12"
- "@nuxt/utils" "2.14.12"
- "@nuxt/vue-renderer" "2.14.12"
+ "@nuxt/utils" "2.15.2"
+ "@nuxt/vue-renderer" "2.15.2"
"@nuxtjs/youch" "^4.2.3"
- chalk "^3.0.0"
compression "^1.7.4"
connect "^3.7.0"
- consola "^2.15.0"
+ consola "^2.15.3"
etag "^1.8.1"
fresh "^0.5.2"
- fs-extra "^8.1.0"
+ fs-extra "^9.1.0"
ip "^1.1.5"
launch-editor-middleware "^2.2.1"
on-headers "^1.0.2"
- pify "^4.0.1"
- serve-placeholder "^1.2.2"
+ pify "^5.0.0"
+ serve-placeholder "^1.2.3"
serve-static "^1.14.1"
server-destroy "^1.0.1"
+ ufo "^0.6.7"
-"@nuxt/telemetry@^1.3.0":
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/@nuxt/telemetry/-/telemetry-1.3.2.tgz#a642888dd5d5e24b44b42028d2a10187348a88a1"
- integrity sha512-Hx16EwlKo1sjsyz6qhsBYp/IC/82vXwqLp71QIf2IXyLhFPSiqXzHMY3/BxGiLr1o92C9s8hct3EwuSFTiex8w==
+"@nuxt/telemetry@^1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@nuxt/telemetry/-/telemetry-1.3.3.tgz#beefa94c6032a1312c7dc9c8784c6b8cc3aa42ae"
+ integrity sha512-ElnoAJo1n/Ui0j9i3xqhXajoGJdEwmkEtsWftlZUpQNJxdfoz+623qnt9XHMYa0X5Nf1PXYdcUKa2u4AASXOjA==
dependencies:
arg "^5.0.0"
chalk "^4.1.0"
@@ -1164,114 +1309,116 @@
consola "^2.15.0"
create-require "^1.1.1"
defu "^3.2.2"
- destr "^1.0.1"
+ destr "^1.1.0"
dotenv "^8.2.0"
fs-extra "^8.1.0"
git-url-parse "^11.4.3"
inquirer "^7.3.3"
is-docker "^2.1.1"
- jiti "^1.0.0"
+ jiti "^1.3.0"
nanoid "^3.1.20"
node-fetch "^2.6.1"
parse-git-config "^3.0.0"
rc9 "^1.2.0"
std-env "^2.2.1"
-"@nuxt/ufo@^0.5.0":
- version "0.5.4"
- resolved "https://registry.yarnpkg.com/@nuxt/ufo/-/ufo-0.5.4.tgz#2e1428e2c947cc559d566c27786525bf0f40fbc8"
- integrity sha512-JZOGDlt2BvLCBmLhrchhRJ6tP9PBfSWLdsHC+JVJ5Qp8/hT/2u61cSsLS30zUOwcPRaQ3y2oHNkEiKJ5v90iEQ==
-
-"@nuxt/utils@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/utils/-/utils-2.14.12.tgz#7684ef732fba65608baff02bc4cce2b3ced891ac"
- integrity sha512-XAy18aT2JOuyGnCuGImelOMwheLRo/qBkjqufa/TLIqnBtywdv2y7WP7c9uGTZrwh+O6KHYFeeZjnLqFI0r/xQ==
+"@nuxt/utils@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/utils/-/utils-2.15.2.tgz#b21b8e74f7a1b81460b47f226bbf7f9edaf6912c"
+ integrity sha512-SlUJIl/hSJ73laYyL5YQO3oUiH7tnYz78tytnAVtiM/MRwigSA+SydvZRbGRECqY7uCo84fHL3nNNDxMURHwZA==
dependencies:
- "@nuxt/ufo" "^0.5.0"
- consola "^2.15.0"
- fs-extra "^8.1.0"
+ consola "^2.15.3"
+ create-require "^1.1.1"
+ fs-extra "^9.1.0"
hash-sum "^2.0.0"
- proper-lockfile "^4.1.1"
- semver "^7.3.2"
+ jiti "^1.3.0"
+ lodash "^4.17.21"
+ proper-lockfile "^4.1.2"
+ semver "^7.3.4"
serialize-javascript "^5.0.1"
signal-exit "^3.0.3"
- ua-parser-js "^0.7.22"
+ ua-parser-js "^0.7.24"
+ ufo "^0.6.7"
-"@nuxt/vue-app@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/vue-app/-/vue-app-2.14.12.tgz#1e41d64a8b18277d5db15158ca2a5d7fbcdf23dc"
- integrity sha512-DwkXh8Djn2wi2qLetupDKpRIFmBDNZKrdT94xFieI5qY32EhLj9d/T80wZoZNZkPVqAKcwq24WktCSVRQ/uiOw==
+"@nuxt/vue-app@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/vue-app/-/vue-app-2.15.2.tgz#9145b7f426a5ea5178b7beafb2b6decdfa01c5cd"
+ integrity sha512-wWh3yxiq5NfLXZS9chFsP8nEsXiCLKpOR9c9XQcuYLNumxys8+5Er8w+pUrrLgqTiShZD4ncXb6l7pgC51TIgQ==
dependencies:
- "@nuxt/ufo" "^0.5.0"
node-fetch "^2.6.1"
+ ufo "^0.6.7"
unfetch "^4.2.0"
vue "^2.6.12"
vue-client-only "^2.0.0"
vue-meta "^2.4.0"
vue-no-ssr "^1.1.1"
- vue-router "^3.4.9"
+ vue-router "^3.5.1"
vue-template-compiler "^2.6.12"
- vuex "^3.6.0"
+ vuex "^3.6.2"
-"@nuxt/vue-renderer@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/vue-renderer/-/vue-renderer-2.14.12.tgz#17343f8698037e6a24ca12bc5908301b8018f151"
- integrity sha512-bYqN1SIumi4EKWDaay6+V2NxcWS/IygOQekfuvNKYhQk97pzkBuXrBGgI6WRdSGLcEBFV0DpHxx66XWVXghL/g==
+"@nuxt/vue-renderer@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/vue-renderer/-/vue-renderer-2.15.2.tgz#27bbf12c577ba298ac0ac34fc996b10024d6ad1e"
+ integrity sha512-V1zUCynCl2FiO05mRs96leg9gOrxbJm7ANFWtX5NSvLX2+sOFW8EAnGYm+z7yBjAeRI/xVpLumhbJPLFk0O/dg==
dependencies:
- "@nuxt/devalue" "^1.2.4"
- "@nuxt/ufo" "^0.5.0"
- "@nuxt/utils" "2.14.12"
- consola "^2.15.0"
- fs-extra "^8.1.0"
+ "@nuxt/devalue" "^1.2.5"
+ "@nuxt/utils" "2.15.2"
+ consola "^2.15.3"
+ defu "^3.2.2"
+ fs-extra "^9.1.0"
+ lodash "^4.17.21"
lru-cache "^5.1.1"
+ ufo "^0.6.7"
vue "^2.6.12"
vue-meta "^2.4.0"
vue-server-renderer "^2.6.12"
-"@nuxt/webpack@2.14.12":
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/@nuxt/webpack/-/webpack-2.14.12.tgz#e1c394615056d7fc398f91d719b3937fe25935f2"
- integrity sha512-fZjs000HVkZ4zvVY5KVnRVBpOxAB4o+cx90rte9GZlU/GaJPZ5Go7KQmxnws0SaAqeN3MorURuu0JU05n3ko9g==
+"@nuxt/webpack@2.15.2":
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/webpack/-/webpack-2.15.2.tgz#421e419585c55701244b7f5372607de381e8e27b"
+ integrity sha512-SRx+ThTtNuW+ugkP6xl7buTaQtRYY8/F+d1AAuS/39kRo/IL8ManyUgmq+pUyYnYpZdOlOvmiF7NWWVweWfmgg==
dependencies:
- "@babel/core" "^7.12.9"
- "@nuxt/babel-preset-app" "2.14.12"
+ "@babel/core" "^7.13.1"
+ "@nuxt/babel-preset-app" "2.15.2"
"@nuxt/friendly-errors-webpack-plugin" "^2.5.0"
- "@nuxt/utils" "2.14.12"
+ "@nuxt/utils" "2.15.2"
babel-loader "^8.2.2"
cache-loader "^4.1.0"
- caniuse-lite "^1.0.30001164"
- chalk "^3.0.0"
- consola "^2.15.0"
- create-require "^1.1.1"
- css-loader "^3.6.0"
+ caniuse-lite "^1.0.30001191"
+ consola "^2.15.3"
+ css-loader "^4.3.0"
cssnano "^4.1.10"
eventsource-polyfill "^0.9.6"
- extract-css-chunks-webpack-plugin "^4.8.0"
- file-loader "^4.3.0"
+ extract-css-chunks-webpack-plugin "^4.9.0"
+ file-loader "^6.2.0"
glob "^7.1.6"
hard-source-webpack-plugin "^0.13.1"
hash-sum "^2.0.0"
- html-webpack-plugin "^4.5.0"
- memory-fs "^0.4.1"
+ html-webpack-plugin "^4.5.1"
+ lodash "^4.17.21"
+ memory-fs "^0.5.0"
optimize-css-assets-webpack-plugin "^5.0.4"
- pify "^4.0.1"
+ pify "^5.0.0"
+ pnp-webpack-plugin "^1.6.4"
postcss "^7.0.32"
postcss-import "^12.0.1"
postcss-import-resolver "^2.0.0"
postcss-loader "^3.0.0"
postcss-preset-env "^6.7.0"
postcss-url "^8.0.0"
- semver "^7.3.2"
- std-env "^2.2.1"
+ semver "^7.3.4"
+ std-env "^2.3.0"
style-resources-loader "^1.4.1"
- terser-webpack-plugin "^2.3.5"
- thread-loader "^2.1.3"
+ terser-webpack-plugin "^4.2.3"
+ thread-loader "^3.0.1"
time-fix-plugin "^2.0.7"
- url-loader "^2.3.0"
- vue-loader "^15.9.5"
- webpack "^4.44.2"
- webpack-bundle-analyzer "^3.9.0"
- webpack-dev-middleware "^3.7.2"
+ url-loader "^4.1.1"
+ vue-loader "^15.9.6"
+ vue-style-loader "^4.1.2"
+ vue-template-compiler "^2.6.12"
+ webpack "^4.46.0"
+ webpack-bundle-analyzer "^4.4.0"
+ webpack-dev-middleware "^4.1.0"
webpack-hot-middleware "^2.25.0"
webpack-node-externals "^2.5.2"
webpackbar "^4.0.0"
@@ -1290,7 +1437,18 @@
lodash "^4.17.15"
nanoid "^2.1.11"
-"@nuxtjs/axios@^5.12.5", "@nuxtjs/axios@^5.9.5":
+"@nuxtjs/axios@^5.13.1":
+ version "5.13.1"
+ resolved "https://registry.yarnpkg.com/@nuxtjs/axios/-/axios-5.13.1.tgz#70c7444e6be8989372c249637f9287c844340f42"
+ integrity sha512-vZpXV2AAkQ5Duejubt1k3ZgUnYowYnPvmcUt0hskd+OebmQ+jF6Wk6rOG0/9EeknOxm7mtTGgKSwdlE1jDo+xA==
+ dependencies:
+ "@nuxtjs/proxy" "^2.1.0"
+ axios "^0.21.1"
+ axios-retry "^3.1.9"
+ consola "^2.15.3"
+ defu "^3.2.2"
+
+"@nuxtjs/axios@^5.9.5":
version "5.12.5"
resolved "https://registry.yarnpkg.com/@nuxtjs/axios/-/axios-5.12.5.tgz#d4a1003052d21e54d93d97a895ca84f58e4bc8d9"
integrity sha512-KCZMLRZFYOKcGt9mKxJMH6UJMB6H6g+BF/YxXEYz3Urrf2U2XiNkj6rmBqgw0XLRY5XD9Wm8knTGp6955512fQ==
@@ -1342,6 +1500,28 @@
mustache "^2.3.0"
stack-trace "0.0.10"
+"@polka/url@^1.0.0-next.9":
+ version "1.0.0-next.11"
+ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
+ integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==
+
+"@sideway/address@^4.1.0":
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d"
+ integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+
+"@sideway/formula@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c"
+ integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==
+
+"@sideway/pinpoint@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
+ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
+
"@sindresorhus/is@^0.14.0":
version "0.14.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
@@ -1727,22 +1907,22 @@
"@webassemblyjs/wast-parser" "1.9.0"
"@xtuc/long" "4.2.2"
-"@webpack-cli/configtest@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.0.tgz#2aff5f1ebc6f793c13ba9b2a701d180eab17f5ee"
- integrity sha512-Un0SdBoN1h4ACnIO7EiCjWuyhNI0Jl96JC+63q6xi4HDUYRZn8Auluea9D+v9NWKc5J4sICVEltdBaVjLX39xw==
+"@webpack-cli/configtest@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.1.tgz#241aecfbdc715eee96bed447ed402e12ec171935"
+ integrity sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==
-"@webpack-cli/info@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.1.tgz#af98311f983d0b9fce7284cfcf1acaf1e9f4879c"
- integrity sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==
+"@webpack-cli/info@^1.2.2":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.2.tgz#ef3c0cd947a1fa083e174a59cb74e0b6195c236c"
+ integrity sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==
dependencies:
envinfo "^7.7.3"
-"@webpack-cli/serve@^1.2.2":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.2.2.tgz#1f8eee44f96524756268f5e3f43e9d943f864d41"
- integrity sha512-03GkWxcgFfm8+WIwcsqJb9agrSDNDDoxaNnexPnCCexP5SCE4IgFd9lNpSy+K2nFqVMpgTFw6SwbmVAVTndVew==
+"@webpack-cli/serve@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.3.0.tgz#2730c770f5f1f132767c63dcaaa4ec28f8c56a6c"
+ integrity sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
@@ -1798,6 +1978,11 @@ acorn-walk@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+acorn-walk@^8.0.0:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.2.tgz#d4632bfc63fd93d0f15fd05ea0e984ffd3f5a8c3"
+ integrity sha512-+bpA9MJsHdZ4bgfDcpk0ozQyhhVct7rzOmO0s1IIr0AGGgKBljss8n2zp11rRP2wid5VGeh04CgeKzgat5/25A==
+
acorn@^6.4.1:
version "6.4.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
@@ -1808,6 +1993,11 @@ acorn@^7.1.1, acorn@^7.4.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+acorn@^8.0.4:
+ version "8.0.5"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7"
+ integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==
+
aggregate-error@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
@@ -1858,11 +2048,6 @@ ansi-align@^3.0.0:
dependencies:
string-width "^3.0.0"
-ansi-colors@^3.0.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
- integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
-
ansi-colors@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
@@ -2095,16 +2280,21 @@ async-each@^1.0.1:
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-async-limiter@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
- integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+async@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
+ integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@@ -2176,6 +2366,30 @@ babel-plugin-dynamic-import-node@^2.3.3:
dependencies:
object.assign "^4.1.0"
+babel-plugin-polyfill-corejs2@^0.1.4:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.8.tgz#54ef37b1c4b2311e515029e8f1f07bbd4d7a5321"
+ integrity sha512-kB5/xNR9GYDuRmVlL9EGfdKBSUVI/9xAU7PCahA/1hbC2Jbmks9dlBBYjHF9IHMNY2jV/G2lIG7z0tJIW27Rog==
+ dependencies:
+ "@babel/compat-data" "^7.13.0"
+ "@babel/helper-define-polyfill-provider" "^0.1.4"
+ semver "^6.1.1"
+
+babel-plugin-polyfill-corejs3@^0.1.3:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.6.tgz#ed1b02fba4885e0892e06094e27865f499758d27"
+ integrity sha512-IkYhCxPrjrUWigEmkMDXYzM5iblzKCdCD8cZrSAkQOyhhJm26DcG+Mxbx13QT//Olkpkg/AlRdT2L+Ww4Ciphw==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.1.4"
+ core-js-compat "^3.8.1"
+
+babel-plugin-polyfill-regenerator@^0.1.2:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.5.tgz#f42a58fd86a1c97fbe3a2752d80a4a3e017203e1"
+ integrity sha512-EyhBA6uN94W97lR7ecQVTvH9F5tIIdEw3ZqHuU4zekMlW82k5cXNXniiB7PRxQm06BqAjVr4sDT1mOy4RcphIA==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.1.4"
+
babel-walk@3.0.0-canary-5:
version "3.0.0-canary-5"
resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11"
@@ -2235,16 +2449,6 @@ bcryptjs@^2.4.3:
resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb"
integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=
-bfj@^6.1.1:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f"
- integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==
- dependencies:
- bluebird "^3.5.5"
- check-types "^8.0.3"
- hoopy "^0.1.4"
- tryer "^1.0.1"
-
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@@ -2272,6 +2476,11 @@ bindings@^1.5.0:
dependencies:
file-uri-to-path "1.0.0"
+bintrees@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.1.tgz#0e655c9b9c2435eaab68bf4027226d2b55a34524"
+ integrity sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ=
+
bl@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489"
@@ -2368,6 +2577,20 @@ boxen@^4.2.0:
type-fest "^0.8.1"
widest-line "^3.1.0"
+boxen@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.0.tgz#64fe9b16066af815f51057adcc800c3730120854"
+ integrity sha512-5bvsqw+hhgUi3oYGK0Vf4WpIkyemp60WBInn7+WNfoISzAqk/HX4L7WNROq38E6UR/y3YADpv6pEm4BfkeEAdA==
+ dependencies:
+ ansi-align "^3.0.0"
+ camelcase "^6.2.0"
+ chalk "^4.1.0"
+ cli-boxes "^2.2.1"
+ string-width "^4.2.0"
+ type-fest "^0.20.2"
+ widest-line "^3.1.0"
+ wrap-ansi "^7.0.0"
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2481,6 +2704,17 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4
escalade "^3.1.1"
node-releases "^1.1.69"
+browserslist@^4.16.3:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
+ integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
+ dependencies:
+ caniuse-lite "^1.0.30001181"
+ colorette "^1.2.1"
+ electron-to-chromium "^1.3.649"
+ escalade "^3.1.1"
+ node-releases "^1.1.70"
+
buffer-alloc-unsafe@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
@@ -2559,6 +2793,11 @@ busboy@^0.2.11:
dicer "0.2.5"
readable-stream "1.1.x"
+byline@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
+ integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -2590,28 +2829,27 @@ cacache@^12.0.2:
unique-filename "^1.1.1"
y18n "^4.0.0"
-cacache@^13.0.1:
- version "13.0.1"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c"
- integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==
+cacache@^15.0.5:
+ version "15.0.5"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0"
+ integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==
dependencies:
- chownr "^1.1.2"
- figgy-pudding "^3.5.1"
+ "@npmcli/move-file" "^1.0.1"
+ chownr "^2.0.0"
fs-minipass "^2.0.0"
glob "^7.1.4"
- graceful-fs "^4.2.2"
infer-owner "^1.0.4"
- lru-cache "^5.1.1"
- minipass "^3.0.0"
+ lru-cache "^6.0.0"
+ minipass "^3.1.1"
minipass-collect "^1.0.2"
minipass-flush "^1.0.5"
minipass-pipeline "^1.2.2"
- mkdirp "^0.5.1"
- move-concurrently "^1.0.1"
- p-map "^3.0.0"
+ mkdirp "^1.0.3"
+ p-map "^4.0.0"
promise-inflight "^1.0.1"
- rimraf "^2.7.1"
- ssri "^7.0.0"
+ rimraf "^3.0.2"
+ ssri "^8.0.0"
+ tar "^6.0.2"
unique-filename "^1.1.1"
cache-base@^1.0.1:
@@ -2676,6 +2914,11 @@ caller-path@^2.0.0:
dependencies:
caller-callsite "^2.0.0"
+callsite@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
+ integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA=
+
callsites@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
@@ -2707,6 +2950,11 @@ camelcase@^5.0.0, camelcase@^5.3.1:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+camelcase@^6.0.0, camelcase@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
+ integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
+
caniuse-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
@@ -2717,11 +2965,16 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001164, caniuse-lite@^1.0.30001173:
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173:
version "1.0.30001177"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001177.tgz#2c3b384933aafda03e29ccca7bb3d8c3389e1ece"
integrity sha512-6Ld7t3ifCL02jTj3MxPMM5wAYjbo4h/TAQGFTgv1inihP1tWnWp8mxxT4ut4JBEHLbpFXEXJJQ119JCJTBkYDw==
+caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001191:
+ version "1.0.30001192"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001192.tgz#b848ebc0ab230cf313d194a4775a30155d50ae40"
+ integrity sha512-63OrUnwJj5T1rUmoyqYTdRWBqFFxZFlyZnRRjDR8NSUQFB6A+j/uBORU/SyJ5WzDLg4SPiZH40hQCBNdZ/jmAw==
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -2775,11 +3028,6 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-check-types@^8.0.3:
- version "8.0.3"
- resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552"
- integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==
-
cheerio-select-tmp@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646"
@@ -2826,7 +3074,7 @@ cheerio@^1.0.0-rc.3:
parse5 "^6.0.0"
parse5-htmlparser2-tree-adapter "^6.0.0"
-"chokidar@>=2.0.0 <4.0.0", chokidar@^3.2.2, chokidar@^3.4.1, chokidar@^3.4.3:
+"chokidar@>=2.0.0 <4.0.0", chokidar@^3.2.2, chokidar@^3.4.1, chokidar@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
@@ -2860,11 +3108,16 @@ chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
-chownr@^1.1.1, chownr@^1.1.2:
+chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+chownr@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+ integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
+
chrome-trace-event@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
@@ -2882,6 +3135,11 @@ ci-info@^2.0.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+ci-info@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a"
+ integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ==
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -2919,7 +3177,7 @@ clean-stack@^2.0.0:
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
-cli-boxes@^2.2.0:
+cli-boxes@^2.2.0, cli-boxes@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
@@ -3050,7 +3308,7 @@ color-name@^1.0.0, color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-color-string@^1.5.4:
+color-string@^1.5.2, color-string@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"
integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==
@@ -3058,6 +3316,14 @@ color-string@^1.5.4:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
+color@3.0.x:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a"
+ integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==
+ dependencies:
+ color-convert "^1.9.1"
+ color-string "^1.5.2"
+
color@^3.0.0, color@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
@@ -3071,6 +3337,19 @@ colorette@^1.2.1:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
+colors@^1.2.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+colorspace@1.1.x:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5"
+ integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==
+ dependencies:
+ color "3.0.x"
+ text-hex "1.0.x"
+
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -3078,7 +3357,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
-commander@^2.18.0, commander@^2.19.0, commander@^2.20.0:
+commander@^2.19.0, commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -3098,6 +3377,11 @@ commander@^6.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
+commander@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2"
+ integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -3151,10 +3435,10 @@ config-chain@^1.1.12:
ini "^1.3.4"
proto-list "~1.2.1"
-config@^3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/config/-/config-3.3.3.tgz#d3c110fce543022c2fde28712e4f1b8440dee101"
- integrity sha512-T3RmZQEAji5KYqUQpziWtyGJFli6Khz7h0rpxDwYNjSkr5ynyTWwO7WpfjHzTXclNCDfSWQRcwMb+NwxJesCKw==
+config@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/config/-/config-3.3.4.tgz#55811abc2752b38a7b806cbdbc2da79c428312b7"
+ integrity sha512-URO0m6z+rtENGHqtzO7W7C35iF+H9KVe7JJFps+3TIqZEOHl83NqTAgp5h8ah96m4NPQnx08nPBfbtDU+PgjVA==
dependencies:
json5 "^2.1.1"
@@ -3185,6 +3469,11 @@ consola@^2.10.0, consola@^2.11.3, consola@^2.15.0, consola@^2.6.0, consola@^2.9.
resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.0.tgz#40fc4eefa4d2f8ef2e2806147f056ea207fcc0e9"
integrity sha512-vlcSGgdYS26mPf7qNi+dCisbhiyDnrN1zaRbw3CSuc2wGOMEGGPsp46PdRG5gqXwgtJfjxDkxRNAgRPr1B77vQ==
+consola@^2.15.3:
+ version "2.15.3"
+ resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
+ integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==
+
console-browserify@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
@@ -3306,6 +3595,14 @@ core-js-compat@^3.8.0:
browserslist "^4.16.0"
semver "7.0.0"
+core-js-compat@^3.8.1, core-js-compat@^3.9.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56"
+ integrity sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==
+ dependencies:
+ browserslist "^4.16.3"
+ semver "7.0.0"
+
core-js@^2.6.5:
version "2.6.12"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
@@ -3397,7 +3694,7 @@ cross-env@^7.0.3:
dependencies:
cross-spawn "^7.0.1"
-cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -3456,24 +3753,23 @@ css-has-pseudo@^0.10.0:
postcss "^7.0.6"
postcss-selector-parser "^5.0.0-rc.4"
-css-loader@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645"
- integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==
+css-loader@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e"
+ integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==
dependencies:
- camelcase "^5.3.1"
+ camelcase "^6.0.0"
cssesc "^3.0.0"
icss-utils "^4.1.1"
- loader-utils "^1.2.3"
- normalize-path "^3.0.0"
+ loader-utils "^2.0.0"
postcss "^7.0.32"
postcss-modules-extract-imports "^2.0.0"
- postcss-modules-local-by-default "^3.0.2"
+ postcss-modules-local-by-default "^3.0.3"
postcss-modules-scope "^2.2.0"
postcss-modules-values "^3.0.0"
postcss-value-parser "^4.1.0"
- schema-utils "^2.7.0"
- semver "^6.3.0"
+ schema-utils "^2.7.1"
+ semver "^7.3.2"
css-prefers-color-scheme@^3.1.1:
version "3.1.1"
@@ -3695,12 +3991,22 @@ date-fns-tz@^1.0.12:
resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.0.12.tgz#2d680e1099767775cff7a30eac34362d52639fed"
integrity sha512-Ca+9pjGkU90XDHnclfSjz9o7g/ZqyYyYI0aCYmbf65P75oy8gktuaRslO3UPXl3ADgAnF9/KCykQkpU3/xvtWQ==
-date-fns@^2.16.1, date-fns@^2.8.1:
+date-fns@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1"
+ integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==
+
+date-fns@^2.8.1:
version "2.16.1"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b"
integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==
-dayjs@^1.10.3, dayjs@^1.9.6:
+dayjs@^1.10.4:
+ version "1.10.4"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
+ integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
+
+dayjs@^1.9.6:
version "1.10.3"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.3.tgz#cf3357c8e7f508432826371672ebf376cb7d619b"
integrity sha512-/2fdLN987N8Ki7Id8BUN2nhuiRyxTLumQnSQf9CNncFCyqFsSKb9TNhzRYcC8K8eJSJOKvbvkImo/MKKhNi4iw==
@@ -3731,6 +4037,13 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1:
dependencies:
ms "2.1.2"
+decache@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/decache/-/decache-4.6.0.tgz#87026bc6e696759e82d57a3841c4e251a30356e8"
+ integrity sha512-PppOuLiz+DFeaUvFXEYZjLxAkKiMYH/do/b/MxpDe/8AgKBi5GhZxridoVIbBq72GDbL36e4p0Ce2jTGUwwU+w==
+ dependencies:
+ callsite "^1.0.0"
+
decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -3859,11 +4172,16 @@ des.js@^1.0.0:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
-destr@^1.0.0, destr@^1.0.1:
+destr@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/destr/-/destr-1.0.1.tgz#d13db7f9d9c9ca4fcf24e86343d601217136ddc3"
integrity sha512-LnEdINrd1ydSqRiAGjMBVrG/G8hNruwE+fEKlkJA14MGPEoI9T7zJDwGpkMTyXT2ASE0ycnN2SYn4k6Q7j7lHg==
+destr@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/destr/-/destr-1.1.0.tgz#2da6add6ba71e04fd0abfb1e642d4f6763235095"
+ integrity sha512-Ev/sqS5AzzDwlpor/5wFCDu0dYMQu/0x2D6XfAsQ0E7uQmamIgYJ6Dppo2T2EOFVkeVYWjc+PCLKaqZZ57qmLg==
+
destroy@^1.0.4, destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
@@ -4068,7 +4386,7 @@ duplexer3@^0.1.4:
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
-duplexer@^0.1.1:
+duplexer@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
@@ -4113,16 +4431,16 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-ejs@^2.6.1:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
- integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
-
electron-to-chromium@^1.3.634:
version "1.3.641"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.641.tgz#03f14efd70a7971eff2efc947b3c1d0f717c82b9"
integrity sha512-b0DLhsHSHESC1I+Nx6n4w4Lr61chMd3m/av1rZQhS2IXTzaS5BMM5N+ldWdMIlni9CITMRM09m8He4+YV/92TA==
+electron-to-chromium@^1.3.649:
+ version "1.3.675"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.675.tgz#7ad29f98d7b48da581554eb28bb9a71fd5fd4956"
+ integrity sha512-GEQw+6dNWjueXGkGfjgm7dAMtXfEqrfDG3uWcZdeaD4cZ3dKYdPRQVruVXQRXtPLtOr5GNVVlNLRMChOZ611pQ==
+
elliptic@^6.5.3:
version "6.5.3"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
@@ -4166,6 +4484,11 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+enabled@2.0.x:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
+ integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -4370,10 +4693,10 @@ eslint-ast-utils@^1.1.0:
lodash.get "^4.4.2"
lodash.zip "^4.2.0"
-eslint-config-prettier@^7.2.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9"
- integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==
+eslint-config-prettier@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz#4ef1eaf97afe5176e6a75ddfb57c335121abc5a6"
+ integrity sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==
eslint-config-standard@^16.0.1, eslint-config-standard@^16.0.2:
version "16.0.2"
@@ -4469,11 +4792,16 @@ eslint-plugin-prettier@^3.3.1:
dependencies:
prettier-linter-helpers "^1.0.0"
-eslint-plugin-promise@>=4.0.1, eslint-plugin-promise@^4.2.1:
+eslint-plugin-promise@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==
+eslint-plugin-promise@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45"
+ integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==
+
eslint-plugin-standard@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz#0c3bf3a67e853f8bbbc580fb4945fbf16f41b7c5"
@@ -4513,15 +4841,15 @@ eslint-plugin-vue@^7.1.0:
semver "^7.3.2"
vue-eslint-parser "^7.3.0"
-eslint-plugin-vue@^7.5.0:
- version "7.5.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.5.0.tgz#cc6d983eb22781fa2440a7573cf39af439bb5725"
- integrity sha512-QnMMTcyV8PLxBz7QQNAwISSEs6LYk2LJvGlxalXvpCtfKnqo7qcY0aZTIxPe8QOnHd7WCwiMZLOJzg6A03T0Gw==
+eslint-plugin-vue@^7.6.0:
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.6.0.tgz#ea616e6dfd45d545adb16cba628c5a992cc31f0b"
+ integrity sha512-qYpKwAvpcQXyUXVcG8Zd+fxHDx9iSgTQuO7dql7Ug/2BCvNNDr6s3I9p8MoUo23JJdO7ZAjW3vSwY/EBf4uBcw==
dependencies:
eslint-utils "^2.1.0"
natural-compare "^1.4.0"
semver "^7.3.2"
- vue-eslint-parser "^7.4.1"
+ vue-eslint-parser "^7.5.0"
eslint-scope@^4.0.3:
version "4.0.3"
@@ -4566,13 +4894,13 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-eslint@^7.18.0:
- version "7.18.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.18.0.tgz#7fdcd2f3715a41fe6295a16234bd69aed2c75e67"
- integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==
+eslint@^7.21.0:
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.21.0.tgz#4ecd5b8c5b44f5dedc9b8a110b01bbfeb15d1c83"
+ integrity sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==
dependencies:
- "@babel/code-frame" "^7.0.0"
- "@eslint/eslintrc" "^0.3.0"
+ "@babel/code-frame" "7.12.11"
+ "@eslint/eslintrc" "^0.4.0"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
@@ -4583,9 +4911,9 @@ eslint@^7.18.0:
eslint-utils "^2.1.0"
eslint-visitor-keys "^2.0.0"
espree "^7.3.1"
- esquery "^1.2.0"
+ esquery "^1.4.0"
esutils "^2.0.2"
- file-entry-cache "^6.0.0"
+ file-entry-cache "^6.0.1"
functional-red-black-tree "^1.0.1"
glob-parent "^5.0.0"
globals "^12.1.0"
@@ -4609,11 +4937,6 @@ eslint@^7.18.0:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
-esm@^3.2.25:
- version "3.2.25"
- resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
- integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
-
espree@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
@@ -4637,13 +4960,20 @@ esprima@^4.0.0, esprima@^4.0.1:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.0.1, esquery@^1.2.0, esquery@^1.3.1:
+esquery@^1.0.1, esquery@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
dependencies:
estraverse "^5.1.0"
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
esrecurse@^4.1.0, esrecurse@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
@@ -4702,22 +5032,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
-execa@^3.4.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89"
- integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
- dependencies:
- cross-spawn "^7.0.0"
- get-stream "^5.0.0"
- human-signals "^1.1.1"
- is-stream "^2.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^4.0.0"
- onetime "^5.1.0"
- p-finally "^2.0.0"
- signal-exit "^3.0.2"
- strip-final-newline "^2.0.0"
-
execa@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376"
@@ -4770,6 +5084,14 @@ express-oauth-server@^2.0.0:
express "^4.13.3"
oauth2-server "3.0.0"
+express-prom-bundle@^6.3.4:
+ version "6.3.4"
+ resolved "https://registry.yarnpkg.com/express-prom-bundle/-/express-prom-bundle-6.3.4.tgz#4197f2eeba5e54d0e9ab04acbca6b8550377a4b4"
+ integrity sha512-nqjvTECB7WLdYQoj7U+T3Emcgco6+3aJp1cy7MmLak6i/iyGk9z7zORzBSqFHbAcgiGoL7W0JP86C3ke8CdjwQ==
+ dependencies:
+ on-finished "^2.3.0"
+ url-value-parser "^2.0.0"
+
express@^4.13.3, express@^4.16.3, express@^4.17.1:
version "4.17.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
@@ -4856,7 +5178,7 @@ extglob@^2.0.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-extract-css-chunks-webpack-plugin@^4.8.0:
+extract-css-chunks-webpack-plugin@^4.9.0:
version "4.9.0"
resolved "https://registry.yarnpkg.com/extract-css-chunks-webpack-plugin/-/extract-css-chunks-webpack-plugin-4.9.0.tgz#da5e6b1d8b39a398c817ffc98550f4ccb6d795e1"
integrity sha512-HNuNPCXRMqJDQ1OHAUehoY+0JVCnw9Y/H22FQzYVwo8Ulgew98AGDu0grnY5c7xwiXHjQa6yJ/1dxLCI/xqTyQ==
@@ -4908,6 +5230,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+fast-safe-stringify@^2.0.4:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743"
+ integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==
+
fastest-levenshtein@^1.0.12:
version "1.0.12"
resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
@@ -4927,6 +5254,11 @@ fault@^1.0.0:
dependencies:
format "^0.2.0"
+fecha@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41"
+ integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==
+
figgy-pudding@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -4939,14 +5271,14 @@ figures@^3.0.0:
dependencies:
escape-string-regexp "^1.0.5"
-file-entry-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
- integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
dependencies:
flat-cache "^3.0.4"
-file-loader@^4.0.0, file-loader@^4.3.0:
+file-loader@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af"
integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==
@@ -4954,6 +5286,14 @@ file-loader@^4.0.0, file-loader@^4.3.0:
loader-utils "^1.2.3"
schema-utils "^2.5.0"
+file-loader@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
file-type@^3.1.0, file-type@^3.8.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
@@ -4964,11 +5304,6 @@ file-uri-to-path@1.0.0:
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-filesize@^3.6.1:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
- integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
-
fill-range@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -5070,6 +5405,11 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
+fn.name@1.x.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
+ integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
+
follow-redirects@^1.0.0, follow-redirects@^1.10.0:
version "1.13.1"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7"
@@ -5116,7 +5456,7 @@ fresh@0.5.2, fresh@^0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-from2@^2.1.0:
+from2@^2.1.0, from2@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
@@ -5147,6 +5487,16 @@ fs-extra@^8.1.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
+fs-extra@^9.1.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-memo@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/fs-memo/-/fs-memo-1.2.0.tgz#a2ec3be606b902077adbb37ec529c5ec5fb2e037"
@@ -5166,6 +5516,11 @@ fs-minipass@^2.0.0:
dependencies:
minipass "^3.0.0"
+fs-monkey@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.1.tgz#4a82f36944365e619f4454d9fff106553067b781"
+ integrity sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA==
+
fs-write-stream-atomic@^1.0.8:
version "1.0.10"
resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
@@ -5233,7 +5588,7 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
-gensync@^1.0.0-beta.1:
+gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
@@ -5281,7 +5636,7 @@ get-stream@^4.1.0:
dependencies:
pump "^3.0.0"
-get-stream@^5.0.0, get-stream@^5.1.0:
+get-stream@^5.1.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
@@ -5364,7 +5719,7 @@ global-dirs@^2.0.1:
dependencies:
ini "1.3.7"
-global@~4.4.0:
+global@^4.4.0, global@~4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
@@ -5384,7 +5739,7 @@ globals@^12.1.0:
dependencies:
type-fest "^0.8.1"
-globby@^11.0.1:
+globby@^11.0.0, globby@^11.0.1, globby@^11.0.2:
version "11.0.2"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83"
integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==
@@ -5420,18 +5775,22 @@ got@^9.6.0:
to-readable-stream "^1.0.0"
url-parse-lax "^3.0.0"
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2:
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.4"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
-gzip-size@^5.0.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
- integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
+graceful-fs@^4.2.4:
+ version "4.2.6"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
+ integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
+
+gzip-size@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
+ integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
dependencies:
- duplexer "^0.1.1"
- pify "^4.0.1"
+ duplexer "^0.1.2"
hable@^3.0.0:
version "3.0.0"
@@ -5591,11 +5950,6 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-hoopy@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
- integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
-
hosted-git-info@^2.1.4:
version "2.8.8"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
@@ -5670,10 +6024,10 @@ html-to-text@6.0.0, html-to-text@^6.0.0:
lodash "^4.17.20"
minimist "^1.2.5"
-html-webpack-plugin@^4.5.0:
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz#40aaf1b5cb78f2f23a83333999625c20929cda65"
- integrity sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg==
+html-webpack-plugin@^4.5.1:
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12"
+ integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==
dependencies:
"@types/html-minifier-terser" "^5.0.0"
"@types/tapable" "^1.0.5"
@@ -5787,11 +6141,6 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
-human-signals@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
- integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
-
human-signals@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
@@ -5842,12 +6191,12 @@ iconv-lite@0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
-ics@^2.26.2:
- version "2.26.2"
- resolved "https://registry.yarnpkg.com/ics/-/ics-2.26.2.tgz#52d6ef16e552f3a395e31bb99f3a21e5209fe7bf"
- integrity sha512-FlgLVXnW+0v51g0r2xMLHye3yxUQZ6e0cBweR5SonR5FzoSQnjWoSiacPQ3v+Y8uEJ1kokfrF7TZh39WRd0Hdg==
+ics@^2.27.0:
+ version "2.27.0"
+ resolved "https://registry.yarnpkg.com/ics/-/ics-2.27.0.tgz#0279323e2489777b98ef9d8fbe7143275bf666f4"
+ integrity sha512-Qgf59OEE38EYX/tVPbo+4bsk0+91Io7jTfp37N3o8BbW/CBYHPdw3GcBov8u2ywjg35xNk8o2b+4UmFwdKOP8A==
dependencies:
- "@hapi/joi" "^17.1.1"
+ joi "^17.1.1"
uuid "^3.3.3"
icss-utils@^4.0.0, icss-utils@^4.1.1:
@@ -6019,6 +6368,25 @@ inquirer@^7.3.3:
strip-ansi "^6.0.0"
through "^2.3.6"
+inquirer@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.0.0.tgz#957a46db1abcf0fdd2ab82deb7470e90afc7d0ac"
+ integrity sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^4.1.0"
+ cli-cursor "^3.1.0"
+ cli-width "^3.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.21"
+ mute-stream "0.0.8"
+ run-async "^2.4.0"
+ rxjs "^6.6.6"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+ through "^2.3.6"
+
interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
@@ -6029,6 +6397,14 @@ interpret@^2.2.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
+into-stream@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.1.tgz#f9a20a348a11f3c13face22763f2d02e127f4db8"
+ integrity sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==
+ dependencies:
+ from2 "^2.3.0"
+ p-is-promise "^3.0.0"
+
ip-regex@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
@@ -6121,7 +6497,7 @@ is-color-stop@^1.0.0:
rgb-regex "^1.0.1"
rgba-regex "^1.0.0"
-is-core-module@^2.1.0:
+is-core-module@^2.1.0, is-core-module@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
@@ -6420,11 +6796,12 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-jest-worker@^25.4.0:
- version "25.5.0"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1"
- integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==
+jest-worker@^26.5.0:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
dependencies:
+ "@types/node" "*"
merge-stream "^2.0.0"
supports-color "^7.0.0"
@@ -6450,15 +6827,21 @@ jimp@^0.2.21:
tinycolor2 "^1.1.2"
url-regex "^3.0.0"
-jiti@^0.1.17:
- version "0.1.20"
- resolved "https://registry.yarnpkg.com/jiti/-/jiti-0.1.20.tgz#5fc8d4793f0e04e552f35c4a058ea62023e1bd36"
- integrity sha512-nlsuibooCG5yEjmGSVqxhjULy3rO1Gl0LDP+HpUMbzOSLcz5s1Gf5cPnjvHiei0JCG3SXX761HQArDzNIfdz4Q==
+jiti@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.3.0.tgz#9c6b8bde5744f732f33c1aa27108fd03b9a49d0d"
+ integrity sha512-CrRtGy3v7PE5dGWtMBe+FMaViXX2eUa7I+Cyo0WmyggVm61lfpEs1orBQalHx9KDIp0Kl5mNaXGHZCMgTpNDXw==
-jiti@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.2.0.tgz#15187ac6c49fb5ee4e04700bc05c1d5caed58546"
- integrity sha512-9YR5zusNf4qmOZAIMqja5pTeuojl5mG2sE4IGogwBoxyclX+Wm2yBZDo2nvuwkUOzUg/nmXwiI2Hz7d/d1UCyw==
+joi@^17.1.1:
+ version "17.4.0"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20"
+ integrity sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+ "@hapi/topo" "^5.0.0"
+ "@sideway/address" "^4.1.0"
+ "@sideway/formula" "^3.0.0"
+ "@sideway/pinpoint" "^2.0.0"
jpeg-js@^0.1.1:
version "0.1.2"
@@ -6612,6 +6995,15 @@ jsonfile@^4.0.0:
optionalDependencies:
graceful-fs "^4.1.6"
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonwebtoken@^8.5.1:
version "8.5.1"
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d"
@@ -6710,6 +7102,11 @@ klona@^2.0.4:
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
+kuler@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
+ integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
+
last-call-webpack-plugin@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
@@ -6740,7 +7137,7 @@ launch-editor@^2.2.1:
chalk "^2.3.0"
shell-quote "^1.6.1"
-less-loader@^7.3.0:
+less-loader@7:
version "7.3.0"
resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-7.3.0.tgz#f9d6d36d18739d642067a05fb5bd70c8c61317e5"
integrity sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==
@@ -6749,10 +7146,10 @@ less-loader@^7.3.0:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
-less@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/less/-/less-4.1.0.tgz#a12708d1951239db1c9d7eaa405f1ebac9a75b8d"
- integrity sha512-w1Ag/f34g7LwtQ/sMVSGWIyZx+gG9ZOAEtyxeX1fG75is6BMyC2lD5kG+1RueX7PkAvlQBm2Lf2aN2j0JbVr2A==
+less@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/less/-/less-4.1.1.tgz#15bf253a9939791dc690888c3ff424f3e6c7edba"
+ integrity sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==
dependencies:
copy-anything "^2.0.1"
parse-node-version "^1.0.1"
@@ -6853,11 +7250,16 @@ load-json-file@^2.0.0:
pify "^2.0.0"
strip-bom "^3.0.0"
-loader-runner@^2.3.1, loader-runner@^2.4.0:
+loader-runner@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+loader-runner@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
+ integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
+
loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
@@ -6914,6 +7316,11 @@ lodash.bind@^4.1.4:
resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
lodash.defaults@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -7044,15 +7451,31 @@ lodash.zip@^4.2.0:
resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020"
integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=
+lodash@4.17.20, lodash@^4.15.0, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.5:
+ version "4.17.20"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
lodash@4.17.4:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
-lodash@^4.15.0, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5:
- version "4.17.20"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
- integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+lodash@^4.17.19, lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+logform@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2"
+ integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==
+ dependencies:
+ colors "^1.2.1"
+ fast-safe-stringify "^2.0.4"
+ fecha "^4.2.0"
+ ms "^2.1.1"
+ triple-beam "^1.3.0"
lower-case@^1.1.1:
version "1.1.4"
@@ -7171,6 +7594,13 @@ make-plural@^6.2.2:
resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-6.2.2.tgz#beb5fd751355e72660eeb2218bb98eec92853c6c"
integrity sha512-8iTuFioatnTTmb/YJjywkVIHLjcwkFD9Ms0JpxjEm9Mo8eQYkh1z+55dwv4yc1jQ8ftVBxWQbihvZL1DfzGGWA==
+map-age-cleaner@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
+ dependencies:
+ p-defer "^1.0.0"
+
map-cache@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
@@ -7212,6 +7642,21 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+mem@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-8.0.0.tgz#b5e4b6d2d241c6296da05436173b4d0c7ae1f9ac"
+ integrity sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA==
+ dependencies:
+ map-age-cleaner "^0.1.3"
+ mimic-fn "^3.1.0"
+
+memfs@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26"
+ integrity sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A==
+ dependencies:
+ fs-monkey "1.0.1"
+
memoizee@^0.4.14:
version "0.4.15"
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72"
@@ -7348,7 +7793,19 @@ mime-db@1.45.0, "mime-db@>= 1.43.0 < 2":
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
-mime-types@^2.1.12, mime-types@^2.1.19, mime-types@~2.1.15, mime-types@~2.1.19, mime-types@~2.1.24:
+mime-db@1.46.0:
+ version "1.46.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee"
+ integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==
+
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.28, mime-types@~2.1.19:
+ version "2.1.29"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2"
+ integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==
+ dependencies:
+ mime-db "1.46.0"
+
+mime-types@^2.1.19, mime-types@~2.1.15, mime-types@~2.1.24:
version "2.1.28"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
@@ -7360,7 +7817,7 @@ mime@1.6.0, mime@^1.3.4, mime@^1.4.1:
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-mime@^2.3.1, mime@^2.4.4, mime@^2.4.6:
+mime@^2.3.1, mime@^2.4.6:
version "2.5.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1"
integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==
@@ -7370,6 +7827,11 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+mimic-fn@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74"
+ integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==
+
mimic-response@^1.0.0, mimic-response@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
@@ -7462,6 +7924,14 @@ minizlib@^1.2.1:
dependencies:
minipass "^2.9.0"
+minizlib@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+ integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
+ dependencies:
+ minipass "^3.0.0"
+ yallist "^4.0.0"
+
mississippi@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
@@ -7505,18 +7975,25 @@ mkdirp@0.5.1:
dependencies:
minimist "^1.2.5"
-mkdirp@^1.0.4:
+mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-moment-timezone@^0.5.31, moment-timezone@^0.5.32:
+moment-timezone@^0.5.31:
version "0.5.32"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.32.tgz#db7677cc3cc680fd30303ebd90b0da1ca0dfecc2"
integrity sha512-Z8QNyuQHQAmWucp8Knmgei8YNo28aLjJq6Ma+jy1ZSpSk5nyfRT8xgUbSQvD2+2UajISfenndwvFuH3NGS+nvA==
dependencies:
moment ">= 2.9.0"
+moment-timezone@^0.5.33:
+ version "0.5.33"
+ resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c"
+ integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==
+ dependencies:
+ moment ">= 2.9.0"
+
"moment@>= 2.9.0", moment@^2.26.0:
version "2.29.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
@@ -7595,6 +8072,14 @@ multimatch@^5.0.0:
arrify "^2.0.1"
minimatch "^3.0.4"
+multistream@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c"
+ integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.5"
+
mustache@^2.3.0:
version "2.3.2"
resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5"
@@ -7666,7 +8151,7 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2:
+neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@@ -7731,10 +8216,10 @@ node-gyp@3.x:
tar "^2.0.0"
which "1"
-node-html-parser@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-2.0.2.tgz#168c9cfb77ae58fe4038d84862a0fc8f2ad8e3fd"
- integrity sha512-N2000Ho9dkabvRZcyiwm6zOpdiAzxAxcJ0Z0WNoh/yXHG0YCuiK2WpNQfN+9vheLNY/h/It11Gk7uwT4QTfk9Q==
+node-html-parser@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-2.2.1.tgz#6507a8658810d1612890a8ddd534e01b2f97e07e"
+ integrity sha512-Vccqb62t6t7DkMVwqPQgb0NWO+gUMMDm+1X3LzqbtXLqjilCTtUYTlniKk08yuA1zIhEFVzu/dozpqs5KZbRFQ==
dependencies:
he "1.2.0"
@@ -7793,6 +8278,11 @@ node-releases@^1.1.69:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6"
integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==
+node-releases@^1.1.70:
+ version "1.1.71"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
+ integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
+
node-res@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/node-res/-/node-res-5.0.1.tgz#ffaa462e206509d66d0ba28a4daf1f032daa6460"
@@ -7932,7 +8422,7 @@ npm-packlist@^1.1.6:
npm-bundled "^1.0.1"
npm-normalize-package-bin "^1.0.1"
-npm-run-path@^4.0.0, npm-run-path@^4.0.1:
+npm-run-path@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
@@ -7988,20 +8478,26 @@ nuxt-express-module@^0.0.11:
dependencies:
express "^4.16.3"
-nuxt@^2.14.12:
- version "2.14.12"
- resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-2.14.12.tgz#836096ff62ba72554b73744d94f5547109e563f7"
- integrity sha512-tfGz7s0ahL6mCGzzVEWpHgv+/hekNXgY1fX0SBB0dvJKjVHKAdoMxaoHBYhoCYdNL2GNiNQncHRipxiEtuCtOQ==
+nuxt@^2.15.2:
+ version "2.15.2"
+ resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-2.15.2.tgz#88513c7694b851fef3fa629eaddfc8714f83cdba"
+ integrity sha512-TS3eM5JHv6RyFV79kREFFuqlYv531259Rxc3K474qtjrL/fiGWia88T9Gi7U5udYhKkC2SJYt+OZTNZz48dWRQ==
dependencies:
- "@nuxt/builder" "2.14.12"
- "@nuxt/cli" "2.14.12"
- "@nuxt/components" "^1.2.2"
- "@nuxt/core" "2.14.12"
- "@nuxt/generator" "2.14.12"
+ "@nuxt/babel-preset-app" "2.15.2"
+ "@nuxt/builder" "2.15.2"
+ "@nuxt/cli" "2.15.2"
+ "@nuxt/components" "^2.1.2"
+ "@nuxt/config" "2.15.2"
+ "@nuxt/core" "2.15.2"
+ "@nuxt/generator" "2.15.2"
"@nuxt/loading-screen" "^2.0.3"
"@nuxt/opencollective" "^0.3.2"
- "@nuxt/telemetry" "^1.3.0"
- "@nuxt/webpack" "2.14.12"
+ "@nuxt/server" "2.15.2"
+ "@nuxt/telemetry" "^1.3.3"
+ "@nuxt/utils" "2.15.2"
+ "@nuxt/vue-app" "2.15.2"
+ "@nuxt/vue-renderer" "2.15.2"
+ "@nuxt/webpack" "2.15.2"
nwsapi@^2.2.0:
version "2.2.0"
@@ -8116,6 +8612,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0:
dependencies:
wrappy "1"
+one-time@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
+ integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
+ dependencies:
+ fn.name "1.x.x"
+
onetime@^5.1.0, onetime@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
@@ -8131,7 +8634,7 @@ open@^7.3.0:
is-docker "^2.0.0"
is-wsl "^2.1.1"
-opener@1.5.2, opener@^1.5.1:
+opener@1.5.2, opener@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
@@ -8183,7 +8686,7 @@ os-homedir@^1.0.0:
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
+os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
@@ -8201,10 +8704,15 @@ p-cancelable@^1.0.0:
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
-p-finally@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561"
- integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+
+p-is-promise@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971"
+ integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==
p-limit@^1.1.0:
version "1.3.0"
@@ -8213,13 +8721,20 @@ p-limit@^1.1.0:
dependencies:
p-try "^1.0.0"
-p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0:
+p-limit@^2.0.0, p-limit@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
dependencies:
p-try "^2.0.0"
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -8241,10 +8756,10 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
-p-map@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d"
- integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
dependencies:
aggregate-error "^3.0.0"
@@ -8587,6 +9102,11 @@ pify@^4.0.1:
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+pify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f"
+ integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==
+
pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
@@ -8627,6 +9147,42 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
+pkg-fetch@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/pkg-fetch/-/pkg-fetch-2.6.9.tgz#c18c5fa9604c57a3df3d9630afb64e176bc8732d"
+ integrity sha512-EnVR8LRILXBvaNP+wJOSY02c3+qDDfyEyR+aqAHLhcc9PBnbxFT9UZ1+If49goPQzQPn26TzF//fc6KXZ0aXEg==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+ byline "^5.0.0"
+ chalk "^3.0.0"
+ expand-template "^2.0.3"
+ fs-extra "^8.1.0"
+ minimist "^1.2.5"
+ progress "^2.0.3"
+ request "^2.88.0"
+ request-progress "^3.0.0"
+ semver "^6.3.0"
+ unique-temp-dir "^1.0.0"
+
+pkg@^4.4.9:
+ version "4.4.9"
+ resolved "https://registry.yarnpkg.com/pkg/-/pkg-4.4.9.tgz#be04f8d03795772b7c4394724ae7252d7c2a4519"
+ integrity sha512-FK4GqHtcCY2PPPVaKViU0NyRzpo6gCS7tPKN5b7AkElqjAOCH1bsRKgohEnxThr6DWfTGByGqba2YHGR/BqbmA==
+ dependencies:
+ "@babel/parser" "^7.9.4"
+ "@babel/runtime" "^7.9.2"
+ chalk "^3.0.0"
+ escodegen "^1.14.1"
+ fs-extra "^8.1.0"
+ globby "^11.0.0"
+ into-stream "^5.1.1"
+ minimist "^1.2.5"
+ multistream "^2.1.1"
+ pkg-fetch "^2.6.9"
+ progress "^2.0.3"
+ resolve "^1.15.1"
+ stream-meter "^1.0.4"
+
pluralize@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
@@ -8637,6 +9193,13 @@ pngjs@^3.0.0, pngjs@^3.2.0:
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==
+pnp-webpack-plugin@^1.6.4:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149"
+ integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==
+ dependencies:
+ ts-pnp "^1.1.6"
+
posix-character-classes@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
@@ -8966,7 +9529,7 @@ postcss-modules-extract-imports@^2.0.0:
dependencies:
postcss "^7.0.5"
-postcss-modules-local-by-default@^3.0.2:
+postcss-modules-local-by-default@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0"
integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
@@ -9313,10 +9876,10 @@ postgres-interval@^1.1.0:
dependencies:
xtend "^4.0.0"
-prebuild-install@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.0.tgz#669022bcde57c710a869e39c5ca6bf9cd207f316"
- integrity sha512-h2ZJ1PXHKWZpp1caLw0oX9sagVpL2YTk+ZwInQbQ3QqNd4J03O6MpFNmMTJlkfgPENWqe5kP0WjQLqz5OjLfsw==
+prebuild-install@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.1.tgz#5902172f7a40eb67305b96c2a695db32636ee26d"
+ integrity sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ==
dependencies:
detect-libc "^1.0.3"
expand-template "^2.0.3"
@@ -9371,10 +9934,10 @@ prettier@^2.2.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
-pretty-bytes@^5.4.1:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e"
- integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==
+pretty-bytes@^5.6.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
+ integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
pretty-error@^2.1.1:
version "2.1.2"
@@ -9412,11 +9975,18 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-progress@^2.0.0:
+progress@^2.0.0, progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+prom-client@^13.1.0:
+ version "13.1.0"
+ resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-13.1.0.tgz#1185caffd8691e28d32e373972e662964e3dba45"
+ integrity sha512-jT9VccZCWrJWXdyEtQddCDszYsiuWj5T0ekrPszi/WEegj3IZy6Mm09iOOVM86A4IKMWq8hZkT2dD9MaSe+sng==
+ dependencies:
+ tdigest "^0.1.1"
+
promise-inflight@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
@@ -9438,12 +10008,12 @@ promisify-any@2.0.1:
co-bluebird "^1.1.0"
is-generator "^1.0.2"
-proper-lockfile@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.1.tgz#284cf9db9e30a90e647afad69deb7cb06881262c"
- integrity sha512-1w6rxXodisVpn7QYvLk706mzprPTAPCYAqxMvctmPN3ekuRk/kuGkGc82pangZiAt4R3lwSuUzheTTn0/Yb7Zg==
+proper-lockfile@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f"
+ integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==
dependencies:
- graceful-fs "^4.1.11"
+ graceful-fs "^4.2.4"
retry "^0.12.0"
signal-exit "^3.0.2"
@@ -9454,15 +10024,6 @@ prosemirror-collab@^1.2.2:
dependencies:
prosemirror-state "^1.0.0"
-prosemirror-commands@1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.4.tgz#991563e67623acab4f8c510fad1570f8b4693780"
- integrity sha512-kj4Qi+8h3EpJtZuuEDwZ9h2/QNGWDsIX/CzjmClxi9GhxWyBUMVUvIFk0mgdqHyX20lLeGmOpc0TLA5aPzgpWg==
- dependencies:
- prosemirror-model "^1.0.0"
- prosemirror-state "^1.0.0"
- prosemirror-transform "^1.0.0"
-
prosemirror-commands@^1.1.4:
version "1.1.5"
resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.5.tgz#3f07a5b13e424ad8728168b6b45e1b17e47c2b81"
@@ -9472,16 +10033,16 @@ prosemirror-commands@^1.1.4:
prosemirror-state "^1.0.0"
prosemirror-transform "^1.0.0"
-prosemirror-dropcursor@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.2.tgz#28738c4ed7102e814d7a8a26d70018523fc7cd6d"
- integrity sha512-4c94OUGyobGnwcQI70OXyMhE/9T4aTgjU+CHxkd5c7D+jH/J0mKM/lk+jneFVKt7+E4/M0D9HzRPifu8U28Thw==
+prosemirror-dropcursor@^1.3.2:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.3.tgz#583d6a82b4960d468132c07c40803cc1d697fda4"
+ integrity sha512-zavE+wh+qkDcP7LaWn+jXVujGyQzBYSmM8E2HSngQ3KaaR+HJYgEBYGs9ynLHqKWLlLCXsxWdVYPV49v4caFyg==
dependencies:
prosemirror-state "^1.0.0"
prosemirror-transform "^1.1.0"
prosemirror-view "^1.1.0"
-prosemirror-gapcursor@1.1.5:
+prosemirror-gapcursor@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.5.tgz#0c37fd6cbb1d7c46358c2e7397f8da9a8b5c6246"
integrity sha512-SjbUZq5pgsBDuV3hu8GqgIpZR5eZvGLM+gPQTqjVVYSMUCfKW3EGXTEYaLHEl1bGduwqNC95O3bZflgtAb4L6w==
@@ -9500,7 +10061,7 @@ prosemirror-history@^1.1.3:
prosemirror-transform "^1.0.0"
rope-sequence "^1.3.0"
-prosemirror-inputrules@1.1.3, prosemirror-inputrules@^1.1.2:
+prosemirror-inputrules@^1.1.2, prosemirror-inputrules@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.3.tgz#93f9199ca02473259c30d7e352e4c14022d54638"
integrity sha512-ZaHCLyBtvbyIHv0f5p6boQTIJjlD6o2NPZiEaZWT2DA+j591zS29QQEMT4lBqwcLW3qRSf7ZvoKNbf05YrsStw==
@@ -9508,7 +10069,7 @@ prosemirror-inputrules@1.1.3, prosemirror-inputrules@^1.1.2:
prosemirror-state "^1.0.0"
prosemirror-transform "^1.0.0"
-prosemirror-keymap@1.1.4, prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2:
+prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.4.tgz#8b481bf8389a5ac40d38dbd67ec3da2c7eac6a6d"
integrity sha512-Al8cVUOnDFL4gcI5IDlG6xbZ0aOD/i3B17VT+1JbHWDguCgt/lBHVTHUBcKvvbSg6+q/W4Nj1Fu6bwZSca3xjg==
@@ -9516,10 +10077,10 @@ prosemirror-keymap@1.1.4, prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2:
prosemirror-state "^1.0.0"
w3c-keyname "^2.2.0"
-prosemirror-model@1.13.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.13.1, prosemirror-model@^1.8.1:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.13.1.tgz#fa3dc888cf6928bd3968620588ffe6458d201f9f"
- integrity sha512-PNH+b5bilAJi1B5yJ8QzoNY3ZV+nlD0jKG3XCBk7PmE/YUTJomBkFBS005vfU+3M9yeVR8/6spAEDsfVFUhNeQ==
+prosemirror-model@1.13.3, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.13.1, prosemirror-model@^1.8.1:
+ version "1.13.3"
+ resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.13.3.tgz#3ccfde73b9c9e706933c72bdf7462906509ff1c9"
+ integrity sha512-wujIYYQEcxdkbKmIJiekVjqtylKxuoEcc+w2PnN7Itc58m/75J4rCUz2dibygVQJFi3gZrD2DNFLjOS6LP4w1g==
dependencies:
orderedmap "^1.1.0"
@@ -9531,7 +10092,7 @@ prosemirror-schema-list@^1.1.4:
prosemirror-model "^1.0.0"
prosemirror-transform "^1.0.0"
-prosemirror-state@1.3.3, prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.3:
+prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.3.tgz#b2862866b14dec2b3ae1ab18229f2bd337651a2c"
integrity sha512-PLXh2VJsIgvlgSTH6I2Yg6vk1CzPDp21DFreVpQtDMY2S6WaMmrQgDTLRcsrD8X38v8Yc873H7+ogdGzyIPn+w==
@@ -9557,20 +10118,6 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor
dependencies:
prosemirror-model "^1.0.0"
-prosemirror-utils@^0.9.6:
- version "0.9.6"
- resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.6.tgz#3d97bd85897e3b535555867dc95a51399116a973"
- integrity sha512-UC+j9hQQ1POYfMc5p7UFxBTptRiGPR7Kkmbl3jVvU8VgQbkI89tR/GK+3QYC8n+VvBZrtAoCrJItNhWSxX3slA==
-
-prosemirror-view@1.16.5:
- version "1.16.5"
- resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.16.5.tgz#1a4646832e16c1cf116b54b9becf4b0663821125"
- integrity sha512-cFEjzhqQZIRDALEgQt8CNn+Qb+BUOvNxxaljaWoCbAYlsWGMiNNQG06I1MwbRNDcwnZKeFmOGpLEB4eorYYGig==
- dependencies:
- prosemirror-model "^1.1.0"
- prosemirror-state "^1.0.0"
- prosemirror-transform "^1.1.0"
-
prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.16.5:
version "1.17.2"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.17.2.tgz#666c865ae79e129a8933112bdcdf218a42c5a3b5"
@@ -9931,7 +10478,7 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -10005,7 +10552,7 @@ regenerate@^1.4.0:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-regenerator-runtime@^0.13.4:
+regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
version "0.13.7"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
@@ -10104,6 +10651,13 @@ repeat-string@^1.6.1:
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+request-progress@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
+ integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=
+ dependencies:
+ throttleit "^1.0.0"
+
request-promise-core@1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f"
@@ -10120,7 +10674,7 @@ request-promise-native@^1.0.8:
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
-request@^2.65.0, request@^2.87.0, request@^2.88.2:
+request@^2.65.0, request@^2.87.0, request@^2.88.0, request@^2.88.2:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@@ -10218,6 +10772,14 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.
is-core-module "^2.1.0"
path-parse "^1.0.6"
+resolve@^1.14.2:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
responselike@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
@@ -10265,7 +10827,7 @@ rgba-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
+rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -10316,6 +10878,13 @@ rxjs@^6.6.0:
dependencies:
tslib "^1.9.0"
+rxjs@^6.6.6:
+ version "6.6.6"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70"
+ integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==
+ dependencies:
+ tslib "^1.9.0"
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -10345,7 +10914,7 @@ safe-regex@^2.1.1:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-sass-loader@^10.1.1:
+sass-loader@10, sass-loader@^10.1.1:
version "10.1.1"
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d"
integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==
@@ -10363,10 +10932,10 @@ sass@^1.32.4:
dependencies:
chokidar ">=2.0.0 <4.0.0"
-sass@^1.32.5:
- version "1.32.5"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.5.tgz#2882d22ad5748c05fa9bff6c3b0ffbc4f4b9e1dc"
- integrity sha512-kU1yJ5zUAmPxr7f3q0YXTAd1oZjSR1g3tYyv+xu0HZSl5JiNOaE987eiz7wCUvbm4I9fGWGU2TgApTtcP4GMNQ==
+sass@^1.32.7:
+ version "1.32.7"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.7.tgz#632a9df2b85dc4b346977fcaf2d5e6f2b7039fd8"
+ integrity sha512-C8Z4bjqGWnsYa11o8hpKAuoyFdRhrSHcYjCr+XAWVPSIQqC8mp2f5Dx4em0dKYehPzg5XSekmCjqJnEZbIls9A==
dependencies:
chokidar ">=2.0.0 <4.0.0"
@@ -10391,7 +10960,7 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
-schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0:
+schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
@@ -10409,6 +10978,11 @@ schema-utils@^3.0.0:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
+scule@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/scule/-/scule-0.1.1.tgz#6bf026f1815c646f061761f9bfd7a3e783f2d05c"
+ integrity sha512-1j2RlmUNADEprCkzDaeo8w2tdum/mvQWAKdRaS2raud7IOnPaDbLSFKhcY5xXPbAFYWk4ZQ0BUnfmg0ZUcI+Pg==
+
select@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
@@ -10421,7 +10995,7 @@ semver-diff@^3.1.1:
dependencies:
semver "^6.3.0"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -10431,7 +11005,7 @@ semver@7.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -10485,10 +11059,10 @@ sequelize-pool@^6.0.0:
resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-6.1.0.tgz#caaa0c1e324d3c2c3a399fed2c7998970925d668"
integrity sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==
-sequelize@^6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.4.0.tgz#02c7e06aa7371488c23f110cdd7e4c2666d92142"
- integrity sha512-XiSAaYMidgLHgOFz0d0rMlSXP07YoL3GwuG0KTtXR6moR+lfdAA93vhLaN9K6f1ElLMutNTx2f7bNK6mACYfIA==
+sequelize@^6.5.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.5.0.tgz#c968a03f6fbbcda40717f73edb39fadf27b85e96"
+ integrity sha512-owBt8fnzVy8E1OvyCyfCdVk7OOLyPVrBCMEf+CvRReC5oCyo+UqeXCtwaex9L6LM9ifZ1i3TG3sFeM5MgLK0CQ==
dependencies:
debug "^4.1.1"
dottie "^2.0.0"
@@ -10525,7 +11099,7 @@ serialize-javascript@^5.0.1:
dependencies:
randombytes "^2.1.0"
-serve-placeholder@^1.2.2:
+serve-placeholder@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/serve-placeholder/-/serve-placeholder-1.2.3.tgz#d2e778c6fedfe6e6ca48aff0b4627bbe2c4aa2ca"
integrity sha512-DC7t66WeIrlVzVMzickfHIn1zHu7eMsVNiH0nkD/wCrijFQdvgyfH2zc5lkFf79EApUgRhZntkpKjfgLkn2i/Q==
@@ -10587,17 +11161,17 @@ shallow-clone@^3.0.0:
dependencies:
kind-of "^6.0.2"
-sharp@^0.27.0:
- version "0.27.0"
- resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.27.0.tgz#523fba913ba674985dcc688a6a5237384079d80f"
- integrity sha512-II+YBCW3JuVWQZdpTEA2IBjJcYXPuoKo3AUqYuW+FK9Um93v2gPE2ihICCsN5nHTUoP8WCjqA83c096e8n//Rw==
+sharp@^0.27.2:
+ version "0.27.2"
+ resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.27.2.tgz#a939775e630e88600c0b5e68f20593aea722252f"
+ integrity sha512-w3FVoONPG/x5MXCc3wsjOS+b9h3CI60qkus6EPQU4dkT0BDm0PyGhDCK6KhtfT3/vbeOMOXAKFNSw+I3QGWkMA==
dependencies:
array-flatten "^3.0.0"
color "^3.1.3"
detect-libc "^1.0.3"
node-addon-api "^3.1.0"
npmlog "^4.1.2"
- prebuild-install "^6.0.0"
+ prebuild-install "^6.0.1"
semver "^7.3.4"
simple-get "^4.0.0"
tar-fs "^2.1.1"
@@ -10669,6 +11243,15 @@ simple-swizzle@^0.2.2:
dependencies:
is-arrayish "^0.3.1"
+sirv@^1.0.7:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.11.tgz#81c19a29202048507d6ec0d8ba8910fda52eb5a4"
+ integrity sha512-SR36i3/LSWja7AJNRBz4fF/Xjpn7lQFI30tZ434dIy+bitLYSP+ZEenHg36i23V2SGEz+kqjksg0uOGZ5LPiqg==
+ dependencies:
+ "@polka/url" "^1.0.0-next.9"
+ mime "^2.3.1"
+ totalist "^1.0.0"
+
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
@@ -10748,7 +11331,7 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-support@~0.5.12:
+source-map-support@~0.5.12, source-map-support@~0.5.19:
version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
@@ -10776,7 +11359,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@^0.7.3:
+source-map@^0.7.3, source-map@~0.7.2:
version "0.7.3"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
@@ -10836,10 +11419,10 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-sqlite3@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.1.tgz#d5b58c8d1568bbaf13062eb9465982f36324f78a"
- integrity sha512-kh2lTIcYNfmVcvhVJihsYuPj9U0xzBbh6bmqILO2hkryWSC9RRhzYmkIDtJkJ+d8Kg4wZRJ0T1reyHUEspICfg==
+sqlite3@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.2.tgz#00924adcc001c17686e0a6643b6cbbc2d3965083"
+ integrity sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==
dependencies:
node-addon-api "^3.0.0"
node-pre-gyp "^0.11.0"
@@ -10868,12 +11451,11 @@ ssri@^6.0.1:
dependencies:
figgy-pudding "^3.5.1"
-ssri@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d"
- integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==
+ssri@^8.0.0:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
+ integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
dependencies:
- figgy-pudding "^3.5.1"
minipass "^3.1.1"
stable@^0.1.6, stable@^0.1.8:
@@ -10881,7 +11463,7 @@ stable@^0.1.6, stable@^0.1.8:
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-stack-trace@0.0.10:
+stack-trace@0.0.10, stack-trace@0.0.x:
version "0.0.10"
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
@@ -10916,6 +11498,13 @@ std-env@^2.2.1:
dependencies:
ci-info "^1.6.0"
+std-env@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.0.tgz#66d4a4a4d5224242ed8e43f5d65cfa9095216eee"
+ integrity sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw==
+ dependencies:
+ ci-info "^3.0.0"
+
stealthy-require@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
@@ -10948,6 +11537,13 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
+stream-meter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/stream-meter/-/stream-meter-1.0.4.tgz#52af95aa5ea760a2491716704dbff90f73afdd1d"
+ integrity sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=
+ dependencies:
+ readable-stream "^2.1.4"
+
stream-shift@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
@@ -11229,6 +11825,25 @@ tar@^4:
safe-buffer "^5.1.2"
yallist "^3.0.3"
+tar@^6.0.2:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
+ integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
+ dependencies:
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ minipass "^3.0.0"
+ minizlib "^2.1.1"
+ mkdirp "^1.0.3"
+ yallist "^4.0.0"
+
+tdigest@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.1.tgz#2e3cb2c39ea449e55d1e6cd91117accca4588021"
+ integrity sha1-Ljyyw56kSeVdHmzZEReszKRYgCE=
+ dependencies:
+ bintrees "1.0.1"
+
term-size@^2.1.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
@@ -11249,22 +11864,22 @@ terser-webpack-plugin@^1.4.3:
webpack-sources "^1.4.0"
worker-farm "^1.7.0"
-terser-webpack-plugin@^2.3.5:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724"
- integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==
+terser-webpack-plugin@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a"
+ integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==
dependencies:
- cacache "^13.0.1"
+ cacache "^15.0.5"
find-cache-dir "^3.3.1"
- jest-worker "^25.4.0"
- p-limit "^2.3.0"
- schema-utils "^2.6.6"
- serialize-javascript "^4.0.0"
+ jest-worker "^26.5.0"
+ p-limit "^3.0.2"
+ schema-utils "^3.0.0"
+ serialize-javascript "^5.0.1"
source-map "^0.6.1"
- terser "^4.6.12"
+ terser "^5.3.4"
webpack-sources "^1.4.3"
-terser@^4.1.2, terser@^4.6.12, terser@^4.6.3:
+terser@^4.1.2, terser@^4.6.3:
version "4.8.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
@@ -11273,19 +11888,38 @@ terser@^4.1.2, terser@^4.6.12, terser@^4.6.3:
source-map "~0.6.1"
source-map-support "~0.5.12"
+terser@^5.3.4:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2"
+ integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.7.2"
+ source-map-support "~0.5.19"
+
+text-hex@1.0.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
+ integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
+
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-thread-loader@^2.1.3:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda"
- integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==
+thread-loader@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-3.0.1.tgz#059752d5c3e223ec58fad5868fe6405e8375d480"
+ integrity sha512-c8Mr7jooXEAochk72XoQ1vPauwFToz9GVwqevqQShAypCUW0nRzYIbkzZo3KErNhhYf/+ga5cUQWxVXQteJj/g==
dependencies:
- loader-runner "^2.3.1"
- loader-utils "^1.1.0"
- neo-async "^2.6.0"
+ loader-runner "^4.1.0"
+ loader-utils "^2.0.0"
+ neo-async "^2.6.2"
+
+throttleit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
+ integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
through2@^2.0.0:
version "2.0.5"
@@ -11335,10 +11969,10 @@ tinycolor2@^1.1.2:
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
-tiptap-commands@^1.16.0:
- version "1.16.0"
- resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.16.0.tgz#02ba31c386ab22c3999ea620787761e014b99809"
- integrity sha512-/8QUHLOqyGc0d8KVzGlFJtf71gtK4+yxF/BURbUQyee1YshhbUYFV1xMG0muSyqdxWDuvKB5BUPqyEfckdiYeg==
+tiptap-commands@^1.17.1:
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.17.1.tgz#a8974a26d87db57b2fd4fc56a552520c69e43a4a"
+ integrity sha512-CyGvMD/c6fNer5LThWGtrVMXHAqHn93ivGQpqJ58x3HNZFuoIiF9QTWXAiWbY/4QrG0ANYHKCSe9n5afickTqw==
dependencies:
prosemirror-commands "^1.1.4"
prosemirror-inputrules "^1.1.2"
@@ -11346,13 +11980,12 @@ tiptap-commands@^1.16.0:
prosemirror-schema-list "^1.1.4"
prosemirror-state "^1.3.3"
prosemirror-tables "^1.1.1"
- prosemirror-utils "^0.9.6"
- tiptap-utils "^1.12.0"
+ tiptap-utils "^1.13.1"
-tiptap-extensions@^1.34.0:
- version "1.34.0"
- resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.34.0.tgz#59889315ebb843c2b7a7326090a0f5ec13873bd0"
- integrity sha512-aKTGGPW6dWdVQfyXnuG4KLF+wWE5h7RZYCY72VkaybE1xft2lVcMvWl5G1wi4mvo9RVZYR8SJSGFzLsWLetOkg==
+tiptap-extensions@^1.35.0:
+ version "1.35.1"
+ resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.35.1.tgz#6227362b08dbad8d0ab0141b508876deca276c55"
+ integrity sha512-aCYvEKPUUtHBALBFQ9n70Iy/nfu/8DHHYkeXMgUJuwLLJ6LrJQBqUnV5EGRwPxNalNdqTdXjV+2z5flZfisovQ==
dependencies:
lowlight "^1.17.0"
prosemirror-collab "^1.2.2"
@@ -11361,37 +11994,35 @@ tiptap-extensions@^1.34.0:
prosemirror-state "^1.3.3"
prosemirror-tables "^1.1.1"
prosemirror-transform "^1.2.8"
- prosemirror-utils "^0.9.6"
prosemirror-view "^1.16.5"
- tiptap "^1.31.0"
- tiptap-commands "^1.16.0"
- tiptap-utils "^1.12.0"
+ tiptap "^1.32.1"
+ tiptap-commands "^1.17.1"
+ tiptap-utils "^1.13.1"
-tiptap-utils@^1.12.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.12.0.tgz#56b8cb95db8af8172083f1c7e0cab74a8c6d6ca9"
- integrity sha512-FdygaOf2EbC55Ba9cEAz2DPuyOD9XAfSo3ICxuCjP5JGV7o9nULF1ABZbVHVdx6A52vsu7v4MOHs8f5hDrW7pw==
+tiptap-utils@^1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.13.1.tgz#f2150ded432465d66aa03a5ab333803415cddd20"
+ integrity sha512-RoCvMfkdu7fp9u7nsRr1OgsYU8RFjoHKHEKpx075rJ9X0t+j5Vxah9n6QzTTr4yjvcavq22WO2flFacm36zYtA==
dependencies:
prosemirror-model "^1.13.1"
prosemirror-state "^1.3.3"
prosemirror-tables "^1.1.1"
- prosemirror-utils "^0.9.6"
-tiptap@^1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.31.0.tgz#298775603b5e16afe36448c486a2bd1e63ffa690"
- integrity sha512-FY0juyY7yQwASvGKzle9ndCXlqMzBHZxUQDx2ybI8ghWVNavkMWUUDa+QGbscITYlQc2y43G0QEOqhzzZGLZ7g==
+tiptap@^1.32.0, tiptap@^1.32.1:
+ version "1.32.1"
+ resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.32.1.tgz#92b47008d163e31d25d44dc18809a7e928fe1daf"
+ integrity sha512-jXET6IAuvE67GdpcGdNE/RQ7I1eoeULXSrbriAa5fnyTUJQsDICd31/8LVaCh10OV1qkvQVCg/6oL1lQdakBLA==
dependencies:
- prosemirror-commands "1.1.4"
- prosemirror-dropcursor "1.3.2"
- prosemirror-gapcursor "1.1.5"
- prosemirror-inputrules "1.1.3"
- prosemirror-keymap "1.1.4"
- prosemirror-model "1.13.1"
- prosemirror-state "1.3.3"
- prosemirror-view "1.16.5"
- tiptap-commands "^1.16.0"
- tiptap-utils "^1.12.0"
+ prosemirror-commands "^1.1.4"
+ prosemirror-dropcursor "^1.3.2"
+ prosemirror-gapcursor "^1.1.5"
+ prosemirror-inputrules "^1.1.3"
+ prosemirror-keymap "^1.1.4"
+ prosemirror-model "^1.13.1"
+ prosemirror-state "^1.3.3"
+ prosemirror-view "^1.16.5"
+ tiptap-commands "^1.17.1"
+ tiptap-utils "^1.13.1"
titleize@^2.1.0:
version "2.1.0"
@@ -11488,6 +12119,11 @@ toposort-class@^1.0.1:
resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988"
integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=
+totalist@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
+ integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
+
touch@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
@@ -11519,10 +12155,15 @@ tr46@^2.0.2:
dependencies:
punycode "^2.1.1"
-tryer@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
- integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+triple-beam@^1.2.0, triple-beam@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
+ integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
+
+ts-pnp@^1.1.6:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
+ integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
tsconfig-paths@^3.9.0:
version "3.9.0"
@@ -11587,6 +12228,11 @@ type-fest@^0.11.0:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
type-fest@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
@@ -11635,21 +12281,31 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-ua-parser-js@^0.7.22:
- version "0.7.23"
- resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b"
- integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==
+ua-parser-js@^0.7.24:
+ version "0.7.24"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.24.tgz#8d3ecea46ed4f1f1d63ec25f17d8568105dc027c"
+ integrity sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==
uc.micro@^1.0.1:
version "1.0.6"
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+ufo@^0.6.7:
+ version "0.6.7"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.6.7.tgz#e39995c2208ac66f23fc1dfbc090e307ab0ab92b"
+ integrity sha512-pSaIXMAb5RTmuGEzSwqxvIt9x6qgsSXh3/dJXAaLGedT9oz2xqWCXvliFTCSUQxwHlG2fL3tseCFKoNEWpo31w==
+
uglify-js@^3.5.1:
version "3.12.4"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.4.tgz#93de48bb76bb3ec0fc36563f871ba46e2ee5c7ee"
integrity sha512-L5i5jg/SHkEqzN18gQMTWsZk3KelRsfD1wUVNqtq0kzqWQqcJjyL8yc1o8hJgRrWqrAl2mUFbhfznEIoi7zi2A==
+uid2@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82"
+ integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=
+
umzug@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/umzug/-/umzug-2.3.0.tgz#0ef42b62df54e216b05dcaf627830a6a8b84a184"
@@ -11743,11 +12399,25 @@ unique-string@^2.0.0:
dependencies:
crypto-random-string "^2.0.0"
+unique-temp-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385"
+ integrity sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=
+ dependencies:
+ mkdirp "^0.5.1"
+ os-tmpdir "^1.0.1"
+ uid2 "0.0.3"
+
universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -11812,14 +12482,14 @@ urix@^0.1.0:
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-url-loader@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b"
- integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==
+url-loader@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2"
+ integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==
dependencies:
- loader-utils "^1.2.3"
- mime "^2.4.4"
- schema-utils "^2.5.0"
+ loader-utils "^2.0.0"
+ mime-types "^2.1.27"
+ schema-utils "^3.0.0"
url-parse-lax@^3.0.0:
version "3.0.0"
@@ -11835,6 +12505,11 @@ url-regex@^3.0.0:
dependencies:
ip-regex "^1.0.1"
+url-value-parser@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/url-value-parser/-/url-value-parser-2.0.1.tgz#c8179a095ab9ec1f5aa17ca36af5af396b4e95ed"
+ integrity sha512-bexECeREBIueboLGM3Y1WaAzQkIn+Tca/Xjmjmfd0S/hFHSCEoFkNh0/D0l9G4K74MkEP/lLFRlYnxX3d68Qgw==
+
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -11905,15 +12580,15 @@ uuid@^8.1.0, uuid@^8.3.1:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-v-calendar@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-2.2.0.tgz#087551f8a777056af1e97d18c9ae2eda30ac9945"
- integrity sha512-7f0deCPdRJ8sWPR6N756is09oj6Rk8PfnJNHD1XshD+DiOn29lxTMbKgznglgQwnvhd/f7+O8pR/iESoFKqWyQ==
+v-calendar@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-2.2.4.tgz#d552b7e1c90e279b3a1115b88fae7e5e5cc72bbd"
+ integrity sha512-th3g2jAsExroVNZVZ2pCfKh69LQaGi0QxKUzdz+hv/APd6mI0AEKZSF2wwLQSPfB9ypmQ/233shCMCmVI+0D5Q==
dependencies:
core-js "^3.6.5"
date-fns "^2.8.1"
date-fns-tz "^1.0.12"
- lodash "^4.17.15"
+ lodash "4.17.20"
v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0:
version "2.2.0"
@@ -11967,10 +12642,10 @@ void-elements@^3.1.0:
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"
integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=
-vue-cli-plugin-vuetify@~2.0.9:
- version "2.0.9"
- resolved "https://registry.yarnpkg.com/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.0.9.tgz#982991aec28e79d1f0c2eb8f6e3d62e042087ee8"
- integrity sha512-J4fzpz27OmCCAA3CI56ulYsUrZ859dQAh58Z9XZilY03kd/M+svLlPkK45cBIrGGfjSqQ40oyWezA3NiPBEG8g==
+vue-cli-plugin-vuetify@~2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.1.1.tgz#9328cf730ba220a8ce564cc04cacec3c8605ca9d"
+ integrity sha512-JM4KpH+CNAmDWpxgzPkOfcXYSv6O3dFvnZdS7e6JmuOi8xpuTic5qzvaewOFnEa9BEAragyqiSPh5/L1PyJ1Rg==
dependencies:
null-loader "^3.0.0"
semver "^7.1.2"
@@ -12000,16 +12675,16 @@ vue-eslint-parser@^7.1.1, vue-eslint-parser@^7.3.0:
esquery "^1.0.1"
lodash "^4.17.15"
-vue-eslint-parser@^7.4.1:
- version "7.4.1"
- resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.4.1.tgz#e4adcf7876a7379758d9056a72235af18a587f92"
- integrity sha512-AFvhdxpFvliYq1xt/biNBslTHE/zbEvSnr1qfHA/KxRIpErmEDrQZlQnvEexednRHmLfDNOMuDYwZL5xkLzIXQ==
+vue-eslint-parser@^7.5.0:
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.5.0.tgz#b68221c55fee061899afcfb4441ec74c1495285e"
+ integrity sha512-6EHzl00hIpy4yWZo3qSbtvtVw1A1cTKOv1w95QSuAqGgk4113XtRjvNIiEGo49r0YWOPYsrmI4Dl64axL5Agrw==
dependencies:
debug "^4.1.1"
eslint-scope "^5.0.0"
eslint-visitor-keys "^1.1.0"
espree "^6.2.1"
- esquery "^1.0.1"
+ esquery "^1.4.0"
lodash "^4.17.15"
vue-hot-reload-api@^2.3.0:
@@ -12017,12 +12692,12 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
-vue-i18n@^8.22.4:
- version "8.22.4"
- resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.22.4.tgz#255cbdab4ffa7337c5819b82dd171208af74e385"
- integrity sha512-XLI5s0AdqMP2Lf4I4CmdmOq8kjb5DDFGR77wAuxCfpEuYSfhTRyyx6MetgZMiL6Lxa0DasjBOiOcciU3NkL3/Q==
+vue-i18n@^8.23.0:
+ version "8.23.0"
+ resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.23.0.tgz#4a65681a1dfe716d47e1d00ddbd6e0b88ea36735"
+ integrity sha512-mXgniaumwca8tKdp55fmvqIcW658vQQXq0zEyRHp8sgZ6t+Md+Whhu6CCPg9/erVNlvpKzsGsucGjt2N8GrFCA==
-vue-loader@^15.9.5:
+vue-loader@^15.9.6:
version "15.9.6"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.6.tgz#f4bb9ae20c3a8370af3ecf09b8126d38ffdb6b8b"
integrity sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==
@@ -12045,10 +12720,10 @@ vue-no-ssr@^1.1.1:
resolved "https://registry.yarnpkg.com/vue-no-ssr/-/vue-no-ssr-1.1.1.tgz#875f3be6fb0ae41568a837f3ac1a80eaa137b998"
integrity sha512-ZMjqRpWabMPqPc7gIrG0Nw6vRf1+itwf0Itft7LbMXs2g3Zs/NFmevjZGN1x7K3Q95GmIjWbQZTVerxiBxI+0g==
-vue-router@^3.4.9:
- version "3.4.9"
- resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.9.tgz#c016f42030ae2932f14e4748b39a1d9a0e250e66"
- integrity sha512-CGAKWN44RqXW06oC+u4mPgHLQQi2t6vLD/JbGRDAXm0YpMv0bgpKuU5bBd7AvMgfTz9kXVRIWKHqRwGEb8xFkA==
+vue-router@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.1.tgz#edf3cf4907952d1e0583e079237220c5ff6eb6c9"
+ integrity sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw==
vue-server-renderer@^2.6.12:
version "2.6.12"
@@ -12064,7 +12739,7 @@ vue-server-renderer@^2.6.12:
serialize-javascript "^3.1.0"
source-map "0.5.6"
-vue-style-loader@^4.1.0:
+vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8"
integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==
@@ -12090,7 +12765,7 @@ vue@^2.6.12:
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==
-vuetify-loader@^1.3.0, vuetify-loader@^1.6.0:
+vuetify-loader@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.6.0.tgz#05df0805b3ab2ff0de198109d34f9da3f69da667"
integrity sha512-1bx3YeZ712dT1+QMX+XSFlP0O5k5O5Ui9ysBBmUZ9bWkAEHWZJQI9soI+qG5qmeFxUC0L9QYMCIKP0hOL/pf3Q==
@@ -12098,15 +12773,24 @@ vuetify-loader@^1.3.0, vuetify-loader@^1.6.0:
file-loader "^4.0.0"
loader-utils "^1.2.0"
+vuetify-loader@^1.7.1:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.7.2.tgz#5cdc45309496cf3a5fe431fd7611706ffa4aa8c8"
+ integrity sha512-2GSo4KvRAOThBsj8mvtIEeIoyBAZx38GDfh8D90e/or7Hzx4813krJKvcQAllyLO/Ln0eQWrq2IuvBXnZ55cSA==
+ dependencies:
+ decache "^4.6.0"
+ file-loader "^6.2.0"
+ loader-utils "^2.0.0"
+
vuetify@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.4.2.tgz#d37d160c1fc6b241fc166a32980b34590a017d6e"
integrity sha512-8W1928Fv6GKwLiOThutYf2wtD5C9+vcCavlI8NT0YxNOVvluoL8xrep8mGGwDsCkay+4LzaAX92owKeNi3kpWg==
-vuex@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.0.tgz#95efa56a58f7607c135b053350833a09e01aa813"
- integrity sha512-W74OO2vCJPs9/YjNjW8lLbj+jzT24waTo2KShI8jLvJW8OaIkgb3wuAMA7D+ZiUxDOx3ubwSZTaJBip9G8a3aQ==
+vuex@^3.6.2:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71"
+ integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==
w3c-hr-time@^1.0.2:
version "1.0.2"
@@ -12167,36 +12851,32 @@ webidl-conversions@^6.1.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
-webpack-bundle-analyzer@^3.9.0:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c"
- integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==
- dependencies:
- acorn "^7.1.1"
- acorn-walk "^7.1.1"
- bfj "^6.1.1"
- chalk "^2.4.1"
- commander "^2.18.0"
- ejs "^2.6.1"
- express "^4.16.3"
- filesize "^3.6.1"
- gzip-size "^5.0.0"
- lodash "^4.17.19"
- mkdirp "^0.5.1"
- opener "^1.5.1"
- ws "^6.0.0"
-
-webpack-cli@^4.4.0:
+webpack-bundle-analyzer@^4.4.0:
version "4.4.0"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.4.0.tgz#38c7fa01ea31510f5c490245dd1bb28018792f1b"
- integrity sha512-/Qh07CXfXEkMu5S8wEpjuaw2Zj/CC0hf/qbTDp6N8N7JjdGuaOjZ7kttz+zhuJO/J5m7alQEhNk9lsc4rC6xgQ==
+ resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.0.tgz#74013106e7e2b07cbd64f3a5ae847f7e814802c7"
+ integrity sha512-9DhNa+aXpqdHk8LkLPTBU/dMfl84Y+WE2+KnfI6rSpNRNVKa0VGLjPd2pjFubDeqnWmulFggxmWBxhfJXZnR0g==
+ dependencies:
+ acorn "^8.0.4"
+ acorn-walk "^8.0.0"
+ chalk "^4.1.0"
+ commander "^6.2.0"
+ gzip-size "^6.0.0"
+ lodash "^4.17.20"
+ opener "^1.5.2"
+ sirv "^1.0.7"
+ ws "^7.3.1"
+
+webpack-cli@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.5.0.tgz#b5213b84adf6e1f5de6391334c9fa53a48850466"
+ integrity sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==
dependencies:
"@discoveryjs/json-ext" "^0.5.0"
- "@webpack-cli/configtest" "^1.0.0"
- "@webpack-cli/info" "^1.2.1"
- "@webpack-cli/serve" "^1.2.2"
+ "@webpack-cli/configtest" "^1.0.1"
+ "@webpack-cli/info" "^1.2.2"
+ "@webpack-cli/serve" "^1.3.0"
colorette "^1.2.1"
- commander "^6.2.0"
+ commander "^7.0.0"
enquirer "^2.3.6"
execa "^5.0.0"
fastest-levenshtein "^1.0.12"
@@ -12206,16 +12886,17 @@ webpack-cli@^4.4.0:
v8-compile-cache "^2.2.0"
webpack-merge "^5.7.3"
-webpack-dev-middleware@^3.7.2:
- version "3.7.3"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5"
- integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
+webpack-dev-middleware@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.1.0.tgz#f0c1f12ff4cd855b3b5eec89ee0f69bcc5336364"
+ integrity sha512-mpa/FY+DiBu5+r5JUIyTCYWRfkWgyA3/OOE9lwfzV9S70A4vJYLsVRKj5rMFEsezBroy2FmPyQ8oBRVW8QmK1A==
dependencies:
- memory-fs "^0.4.1"
- mime "^2.4.4"
- mkdirp "^0.5.1"
+ colorette "^1.2.1"
+ mem "^8.0.0"
+ memfs "^3.2.0"
+ mime-types "^2.1.28"
range-parser "^1.2.1"
- webpack-log "^2.0.0"
+ schema-utils "^3.0.0"
webpack-hot-middleware@^2.25.0:
version "2.25.0"
@@ -12227,14 +12908,6 @@ webpack-hot-middleware@^2.25.0:
querystring "^0.2.0"
strip-ansi "^3.0.0"
-webpack-log@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
- integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
- dependencies:
- ansi-colors "^3.0.0"
- uuid "^3.3.2"
-
webpack-merge@^5.7.3:
version "5.7.3"
resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213"
@@ -12256,7 +12929,7 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^4.44.2:
+webpack@^4.46.0:
version "4.46.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542"
integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==
@@ -12363,6 +13036,29 @@ wildcard@^2.0.0:
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
+winston-transport@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59"
+ integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==
+ dependencies:
+ readable-stream "^2.3.7"
+ triple-beam "^1.2.0"
+
+winston@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170"
+ integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==
+ dependencies:
+ "@dabh/diagnostics" "^2.0.2"
+ async "^3.1.0"
+ is-stream "^2.0.0"
+ logform "^2.2.0"
+ one-time "^1.0.0"
+ readable-stream "^3.4.0"
+ stack-trace "0.0.x"
+ triple-beam "^1.3.0"
+ winston-transport "^4.4.0"
+
with@^7.0.0:
version "7.0.2"
resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac"
@@ -12401,7 +13097,7 @@ wrap-ansi@^5.1.0:
string-width "^3.0.0"
strip-ansi "^5.0.0"
-wrap-ansi@^6.0.0, wrap-ansi@^6.2.0:
+wrap-ansi@^6.0.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
@@ -12455,17 +13151,10 @@ write-json-file@^2.3.0:
sort-keys "^2.0.0"
write-file-atomic "^2.0.0"
-ws@^6.0.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
- integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
- dependencies:
- async-limiter "~1.0.0"
-
-ws@^7.2.3:
- version "7.4.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
- integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
+ws@^7.2.3, ws@^7.3.1:
+ version "7.4.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd"
+ integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==
xdg-basedir@^4.0.0:
version "4.0.0"
@@ -12588,3 +13277,8 @@ yargs@^16.1.1:
string-width "^4.2.0"
y18n "^5.0.5"
yargs-parser "^20.2.2"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
From f5c0ef99f488d84a94cbbff42122fa670955f3d2 Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 5 Mar 2021 14:19:52 +0100
Subject: [PATCH 197/363] split /inbox fediverse management
---
server/federation/inbox.js | 48 ++++++++++++++++++++++++++++++++
server/federation/index.js | 56 ++++----------------------------------
server/notifier.js | 10 +++----
3 files changed, 59 insertions(+), 55 deletions(-)
create mode 100644 server/federation/inbox.js
diff --git a/server/federation/inbox.js b/server/federation/inbox.js
new file mode 100644
index 00000000..ae7893e8
--- /dev/null
+++ b/server/federation/inbox.js
@@ -0,0 +1,48 @@
+const Follows = require('./follows')
+const Resources = require('./resources')
+const Ego = require('./ego')
+const log = require('../log')
+
+module.exports = async (req, res) => {
+ const b = req.body
+ log.debug(b.type)
+ switch (b.type) {
+ case 'Follow':
+ Follows.follow(req, res)
+ break
+ case 'Undo':
+ // unfollow || unlike || unboost
+ if (b.object.type === 'Follow') {
+ Follows.unfollow(req, res)
+ } else if (b.object.type === 'Like') {
+ Ego.unbookmark(req, res)
+ } else if (b.object.type === 'Announce') {
+ Ego.unboost(req, res)
+ }
+ break
+ case 'Announce':
+ Ego.boost(req, res)
+ break
+ case 'Note':
+ log.debug('This is a note! I probably should create a comment here')
+ break
+ case 'Like':
+ Ego.bookmark(req, res)
+ break
+ case 'Delete':
+ await Resources.remove(req, res)
+ break
+ case 'Create':
+ // this is a reply
+ if (b.object.type === 'Note') {
+ log.debug('Create a resource!')
+ await Resources.create(req, res)
+ } else if (b.object.type === 'Event') {
+ log.debug('Event type is coming!!')
+ } else {
+ // await Resources.create(req, res)
+ log.warn(`Create with unsupported Object or not a reply => ${b.object.type}`)
+ }
+ break
+ }
+}
diff --git a/server/federation/index.js b/server/federation/index.js
index 70b1f1f6..62db5b41 100644
--- a/server/federation/index.js
+++ b/server/federation/index.js
@@ -1,7 +1,6 @@
const express = require('express')
const router = express.Router()
const cors = require('cors')
-const Follows = require('./follows')
const Users = require('./users')
const Event = require('../api/models/event')
const User = require('../api/models/user')
@@ -9,10 +8,9 @@ const Tag = require('../api/models/tag')
const Place = require('../api/models/place')
const settingsController = require('../api/controller/settings')
-const Resources = require('./resources')
const Helpers = require('./helpers')
-const Ego = require('./ego')
-const debug = require('debug')('federation')
+const Inbox = require('./inbox')
+const log = require('../log')
/**
* Federation is calling!
@@ -24,7 +22,7 @@ router.use(cors())
// is federation enabled? middleware
router.use((req, res, next) => {
if (settingsController.settings.enable_federation) { return next() }
- debug('Federation disabled!')
+ log.debug('Federation disabled!')
res.status(401).send('Federation disabled')
next(false)
})
@@ -32,6 +30,7 @@ router.use((req, res, next) => {
router.use(express.json({ type: ['application/json', 'application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'] }))
router.get('/m/:event_id', async (req, res) => {
+ log.debug('[AP] Get event details ')
const event_id = req.params.event_id
if (req.accepts('html')) { return res.redirect(301, `/event/${event_id}`) }
@@ -41,50 +40,7 @@ router.get('/m/:event_id', async (req, res) => {
})
// get any message coming from federation
-// Federation is calling!
-router.post('/u/:name/inbox', Helpers.verifySignature, async (req, res) => {
- const b = req.body
- debug(b.type)
- switch (b.type) {
- case 'Follow':
- Follows.follow(req, res)
- break
- case 'Undo':
- // unfollow || unlike || unboost
- if (b.object.type === 'Follow') {
- Follows.unfollow(req, res)
- } else if (b.object.type === 'Like') {
- Ego.unbookmark(req, res)
- } else if (b.object.type === 'Announce') {
- Ego.unboost(req, res)
- }
- break
- case 'Announce':
- Ego.boost(req, res)
- break
- case 'Note':
- debug('This is a note! I probably should create a comment here')
- break
- case 'Like':
- Ego.bookmark(req, res)
- break
- case 'Delete':
- await Resources.remove(req, res)
- break
- case 'Create':
- // this is a reply
- if (b.object.type === 'Note') {
- debug('Create a resource!')
- await Resources.create(req, res)
- } else if (b.object.type === 'Event') {
- debug('Event type is coming!!')
- } else {
- // await Resources.create(req, res)
- debug('Create with unsupported Object or not a reply => %s ', b.object.type)
- }
- break
- }
-})
+router.post('/u/:name/inbox', Helpers.verifySignature, Inbox)
function redirect_on_html_accepted (req, res, next) {
if (req.accepts('html')) {
@@ -99,7 +55,7 @@ router.get('/u/:name', redirect_on_html_accepted, Users.get)
// Handle 404
router.use((req, res) => {
- debug('404 Page not found: %s', req.path)
+ log.warn(`404 Page not found: ${req.path}`)
res.status(404).send('404: Page not Found')
})
diff --git a/server/notifier.js b/server/notifier.js
index 0dcef354..3fc77c3c 100644
--- a/server/notifier.js
+++ b/server/notifier.js
@@ -1,6 +1,6 @@
const mail = require('./api/mail')
const config = require('config')
-const debug = require('debug')('notifier')
+const log = require('./log')
const fediverseHelpers = require('./federation/helpers')
const Event = require('./api/models/event')
@@ -16,7 +16,7 @@ const notifier = {
sendNotification (notification, event) {
const promises = []
- debug('Send %s notification %s', notification.type, notification.action)
+ log.debug(`Send ${notification.type} notification ${notification.action}`)
let p
switch (notification.type) {
// case 'mail': TODO: locale?
@@ -38,7 +38,7 @@ const notifier = {
include: [Tag, Place, Notification, User]
})
- debug('%s -> %s', action, event.title)
+ log.debug(action, event.title)
// insert notifications
const notifications = await eventController.getNotifications(event, action)
@@ -51,7 +51,7 @@ const notifier = {
await notifier.sendNotification(notification, event)
notification.event_notification.status = 'sent'
} catch (err) {
- debug(err)
+ log.error(err)
notification.event_notification.status = 'error'
}
return notification.event_notification.save()
@@ -71,7 +71,7 @@ const notifier = {
e.status = 'sent'
return e.save()
} catch (err) {
- debug(err)
+ log.error(err)
e.status = 'error'
e.error = err
return e.save()
From e4d43bd7a26a3a7f23e0676a85dc46e7ac0e5bfa Mon Sep 17 00:00:00 2001
From: les
Date: Fri, 5 Mar 2021 14:20:23 +0100
Subject: [PATCH 198/363] meta on Announcements
---
pages/index.vue | 41 ++++++++++++++++++++++-------------------
1 file changed, 22 insertions(+), 19 deletions(-)
diff --git a/pages/index.vue b/pages/index.vue
index 42cfa832..d6b38749 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -2,7 +2,8 @@
v-container#home(fluid)
//- Announcements
- Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement')
+ #announcements.mr-1
+ Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement')
//- Calendar and search bar
v-row
@@ -54,9 +55,23 @@ export default {
// intersecting: {}
}
},
- computed: {
- ...mapState(['settings', 'announcements'])
+ head () {
+ return {
+ title: this.settings.title,
+ meta: [
+ // hid is used as unique identifier. Do not use `vmid` for it as it will not work
+ { hid: 'description', name: 'description', content: this.settings.description },
+ { hid: 'og-description', name: 'og:description', content: this.settings.description },
+ { hid: 'og-title', property: 'og:title', content: this.settings.title },
+ { hid: 'og-url', property: 'og:url', content: this.settings.baseurl },
+ { property: 'og:image', content: this.settings.baseurl + '/favicon.ico' }
+ ],
+ link: [
+ { rel: 'alternate', type: 'application/rss+xml', title: this.settings.title, href: this.settings.baseurl + '/feed/rss' }
+ ]
+ }
},
+ computed: mapState(['settings', 'announcements']),
methods: {
// onIntersect (isIntersecting, eventId) {
// this.intersecting[eventId] = isIntersecting
@@ -72,6 +87,7 @@ export default {
}).then(events => {
this.events = events
this.setFilters(this.filters)
+ this.$nuxt.$loading.finish()
})
},
placeClick (place_id) {
@@ -99,6 +115,7 @@ export default {
this.first = false
return
}
+ this.$nuxt.$loading.start()
this.selectedDay = null
// check if current month is selected
@@ -127,28 +144,14 @@ export default {
this.selectedDay = date
this.updateEvents()
}
- },
- head () {
- return {
- title: this.settings.title,
- meta: [
- // hid is used as unique identifier. Do not use `vmid` for it as it will not work
- { hid: 'description', name: 'description', content: this.settings.description },
- { hid: 'og-description', name: 'og:description', content: this.settings.description },
- { hid: 'og-title', property: 'og:title', content: this.settings.title },
- { hid: 'og-url', property: 'og:url', content: this.settings.baseurl },
- { property: 'og:image', content: this.settings.baseurl + '/favicon.ico' }
- ],
- link: [
- { rel: 'alternate', type: 'application/rss+xml', title: this.settings.title, href: this.settings.baseurl + '/feed/rss' }
- ]
- }
}
}
diff --git a/pages/index.vue b/pages/index.vue
index 77c79213..0b12fae6 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -144,18 +144,3 @@ export default {
}
}
-
From cb7084b56aa858d3d07afd16b2ec21ec33d5503a Mon Sep 17 00:00:00 2001
From: les
Date: Tue, 16 Mar 2021 19:57:00 +0100
Subject: [PATCH 231/363] use vc as v-calendar component prefix
---
components/Calendar.vue | 2 +-
pages/add/DateInput.vue | 2 +-
plugins/v-calendar.js | 17 +++++++++--------
3 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/components/Calendar.vue b/components/Calendar.vue
index ac89e7e3..4e49ebfa 100644
--- a/components/Calendar.vue
+++ b/components/Calendar.vue
@@ -1,6 +1,6 @@
#calendar
- v-calendar(
+ vc-calendar(
title-position='left'
:is-dark="settings['theme.is_dark']"
:columns="$screens({ sm: 2 }, 1)"
diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue
index e1239730..54e1b046 100644
--- a/pages/add/DateInput.vue
+++ b/pages/add/DateInput.vue
@@ -14,7 +14,7 @@
.datePicker.mt-3
v-input(:value='fromDate'
:rules="[$validators.required('common.when')]")
- v-date-picker(
+ vc-date-picker(
:value='fromDate'
@input="date => change('date', date)"
:is-range='type === "multidate"'
diff --git a/plugins/v-calendar.js b/plugins/v-calendar.js
index 3d4aef0d..0037ea61 100644
--- a/plugins/v-calendar.js
+++ b/plugins/v-calendar.js
@@ -1,8 +1,9 @@
- import Vue from 'vue'
- import VCalendar from 'v-calendar'
- export default () => {
- Vue.use(VCalendar, {
- // why is that ?!
- firstDayOfWeek: 2
- })
- }
+import Vue from 'vue'
+import VCalendar from 'v-calendar'
+export default () => {
+ Vue.use(VCalendar, {
+ componentPrefix: 'vc',
+ // why is that ?!
+ firstDayOfWeek: 2
+ })
+}
From 01976356ce9742132320775232fd8197778beedc Mon Sep 17 00:00:00 2001
From: les
Date: Tue, 16 Mar 2021 19:57:34 +0100
Subject: [PATCH 232/363] event component is not functional anymore
---
components/Event.vue | 48 +++++++++++++++++---------------------------
1 file changed, 18 insertions(+), 30 deletions(-)
diff --git a/components/Event.vue b/components/Event.vue
index 8140fcda..76a47f6f 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -1,19 +1,19 @@
-
+
v-card.h-event.event
- nuxt-link(:to='`/event/${props.event.id}`')
- v-img.img(:src="`/media/thumb/${props.event.image_path || 'logo.png' }`")
- v-icon.float-right.mr-1(v-if='props.event.parentId' color='success') mdi-repeat
- .title.p-name {{props.event.title}}
+ nuxt-link(:to='`/event/${event.id}`')
+ v-img.img(:src="`/media/thumb/${event.image_path || 'logo.png' }`")
+ v-icon.float-right.mr-1(v-if='event.parentId' color='success') mdi-repeat
+ .title.p-name {{event.title}}
v-card-text.body.pt-0.pb-0
- time.dt-start.subtitle-1(:datetime='props.event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') mdi-calendar {{ props.event|when }}
- .d-none.dt-end {{props.event.end_datetime|unixFormat('YYYY-MM-DD HH:mm')}}
- a.place.d-block.p-location.pl-0(text color='primary' @click="listeners['placeclick'](props.event.place.id)") mdi-map-marker {{props.event.place.name}}
+ time.dt-start.subtitle-1(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') mdi-calendar {{ event|when }}
+ .d-none.dt-end {{event.end_datetime|unixFormat('YYYY-MM-DD HH:mm')}}
+ a.place.d-block.p-location.pl-0(text color='primary' @click="$emit('placeclick', event.place.id)") mdi-map-marker {{event.place.name}}
v-card-actions.actions.justify-space-between
.tags
- v-chip.ml-1.px-2(v-for='tag in props.event.tags' small
- :key='tag' outlined color='primary' @click="listeners['tagclick'](tag)") {{tag}}
+ v-chip.ml-1.px-2(v-for='tag in event.tags' small
+ :key='tag' outlined color='primary' @click="$emit('tagclick', tag)") {{tag}}
v-menu(offset-y)
template(v-slot:activator="{on}")
@@ -21,25 +21,27 @@
v-icon mdi-dots-vertical
v-list(dense)
v-list-item-group
- v-list-item(v-clipboard:success="() => parent.$root.$message('common.copied', { color: 'success' })"
- v-clipboard:copy='`${parent.settings.baseurl}/event/${props.event.id}`')
+ v-list-item(v-clipboard:success="() => $root.$message('common.copied', { color: 'success' })"
+ v-clipboard:copy='`${settings.baseurl}/event/${event.id}`')
v-list-item-icon
v-icon mdi-content-copy
v-list-item-content
- v-list-item-title {{parent.$t('common.copy_link')}}
- v-list-item(:href='`/api/event/${props.event.id}.ics`')
+ v-list-item-title {{$t('common.copy_link')}}
+ v-list-item(:href='`/api/event/${event.id}.ics`')
v-list-item-icon
v-icon mdi-calendar-export
v-list-item-content
- v-list-item-title {{parent.$t('common.add_to_calendar')}}
+ v-list-item-title {{$t('common.add_to_calendar')}}
diff --git a/layouts/iframe.vue b/layouts/iframe.vue
index 5b7dff00..1c4a03d0 100644
--- a/layouts/iframe.vue
+++ b/layouts/iframe.vue
@@ -1,8 +1,9 @@
-
-
+
+ v-app#iframe
+ nuxt
diff --git a/pages/embed/list.vue b/pages/embed/list.vue
index 90bd02e4..78f698f6 100644
--- a/pages/embed/list.vue
+++ b/pages/embed/list.vue
@@ -5,13 +5,8 @@
import List from '../../components/List'
export default {
- layout: 'iframe',
components: { List },
- data () {
- return {
- title: ''
- }
- },
+ layout: 'iframe',
async asyncData ({ query, $axios }) {
const title = query.title
const tags = query.tags
From a7d57dad9b639e2167786961d4eadd6cfa5036ca Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 24 Mar 2021 21:03:58 +0100
Subject: [PATCH 251/363] update deps
---
package.json | 18 ++---
yarn.lock | 203 +++++++++++++--------------------------------------
2 files changed, 61 insertions(+), 160 deletions(-)
diff --git a/package.json b/package.json
index 31dd8843..5b29a195 100644
--- a/package.json
+++ b/package.json
@@ -64,9 +64,8 @@
"nuxt": "^2.15.3",
"nuxt-express-module": "^0.0.11",
"pg": "^8.5.1",
- "pkg": "^4.4.9",
"prom-client": "^13.1.0",
- "sequelize": "^6.5.1",
+ "sequelize": "^6.6.2",
"sequelize-cli": "^6.2.0",
"sharp": "^0.27.2",
"sqlite3": "^5.0.2",
@@ -76,7 +75,7 @@
"url": "^0.11.0",
"v-calendar": "2.3.0",
"vue-clipboard2": "^0.3.1",
- "vue-i18n": "^8.24.1",
+ "vue-i18n": "^8.24.2",
"winston": "^3.3.3",
"yargs": "^16.1.1"
},
@@ -84,6 +83,7 @@
"@mdi/font": "^5.9.55",
"@nuxtjs/eslint-config": "^6.0.0",
"@nuxtjs/vuetify": "^1.11.3",
+ "@popperjs/core": "^2.9.1",
"babel-eslint": "^10.1.0",
"bufferutil": "^4.0.3",
"canvas": "^2.7.0",
@@ -97,27 +97,27 @@
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-standard": "^5.0.0",
- "eslint-plugin-vue": "^7.7.0",
+ "eslint-plugin-vue": "^7.8.0",
"fibers": "^5.0.0",
"jquery": "^3.6.0",
"less-loader": "7",
- "node-gyp": "^7.1.2",
+ "node-gyp": "3.x",
"node-sass": "^5.0.0",
"nodemon": "^2.0.7",
"pg-native": "^3.0.0",
"prettier": "^2.2.1",
"pug": "^3.0.2",
"pug-plain-loader": "^1.1.0",
- "react": "^17.0.1",
- "react-dom": "^17.0.1",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2",
"sass": "^1.32.7",
"sass-loader": "10",
"typescript": "^4.2.3",
"utf-8-validate": "^5.0.4",
"vue": "^2.6.12",
- "vue-cli-plugin-vuetify": "~2.2.2",
+ "vue-cli-plugin-vuetify": "~2.3.1",
"vue-template-compiler": "^2.6.12",
- "vuetify": "^2.4.6",
+ "vuetify": "^2.4.8",
"vuetify-loader": "^1.7.1",
"webpack": "4",
"webpack-cli": "^4.5.0"
diff --git a/yarn.lock b/yarn.lock
index e8b41966..9d43bbdb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -417,7 +417,7 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.10.tgz#8f8f9bf7b3afa3eabd061f7a5bcdf4fec3c48409"
integrity sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ==
-"@babel/parser@^7.13.4", "@babel/parser@^7.9.4":
+"@babel/parser@^7.13.4":
version "7.13.9"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99"
integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==
@@ -1013,13 +1013,6 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.9.2":
- version "7.13.9"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.9.tgz#97dbe2116e2630c489f22e0656decd60aaa1fcee"
- integrity sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==
- dependencies:
- regenerator-runtime "^0.13.4"
-
"@babel/template@^7.12.13":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
@@ -1589,6 +1582,11 @@
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==
+"@popperjs/core@^2.9.1":
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.1.tgz#7f554e7368c9ab679a11f4a042ca17149d70cf12"
+ integrity sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==
+
"@sideway/address@^4.1.0":
version "4.1.1"
resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d"
@@ -2899,11 +2897,6 @@ busboy@^0.2.11:
dicer "0.2.5"
readable-stream "1.1.x"
-byline@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
- integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
-
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -4813,18 +4806,6 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-escodegen@^1.14.1:
- version "1.14.3"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
- integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
- dependencies:
- esprima "^4.0.1"
- estraverse "^4.2.0"
- esutils "^2.0.2"
- optionator "^0.8.1"
- optionalDependencies:
- source-map "~0.6.1"
-
escodegen@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
@@ -4990,6 +4971,16 @@ eslint-plugin-vue@^7.7.0:
semver "^7.3.2"
vue-eslint-parser "^7.6.0"
+eslint-plugin-vue@^7.8.0:
+ version "7.8.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.8.0.tgz#cb0e85d65b65fa8d15e783fbb03c049d2c4cfdae"
+ integrity sha512-OGrnPz+PuYL2HmVyBHxm4mRjxW2kfFCQE6Hw9G6qOHs/Pcu0srOlCCW0FMa8SLzIEqxl8WuKoBSPcMnrjUG2vw==
+ dependencies:
+ eslint-utils "^2.1.0"
+ natural-compare "^1.4.0"
+ semver "^7.3.2"
+ vue-eslint-parser "^7.6.0"
+
eslint-scope@5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5"
@@ -5129,7 +5120,7 @@ esrecurse@^4.1.0, esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"
-estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.1.1:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
@@ -5619,7 +5610,7 @@ fresh@0.5.2, fresh@^0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-from2@^2.1.0, from2@^2.3.0:
+from2@^2.1.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
@@ -5921,7 +5912,7 @@ globals@^13.6.0:
dependencies:
type-fest "^0.20.2"
-globby@^11.0.0, globby@^11.0.1, globby@^11.0.2:
+globby@^11.0.1, globby@^11.0.2:
version "11.0.2"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83"
integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==
@@ -6595,14 +6586,6 @@ interpret@^2.2.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
-into-stream@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.1.tgz#f9a20a348a11f3c13face22763f2d02e127f4db8"
- integrity sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==
- dependencies:
- from2 "^2.3.0"
- p-is-promise "^3.0.0"
-
ip-regex@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd"
@@ -8335,14 +8318,6 @@ multimatch@^5.0.0:
arrify "^2.0.1"
minimatch "^3.0.4"
-multistream@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c"
- integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==
- dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.5"
-
mustache@^2.3.0:
version "2.3.2"
resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5"
@@ -8484,7 +8459,7 @@ node-gyp@3.x:
tar "^2.0.0"
which "1"
-node-gyp@^7.1.0, node-gyp@^7.1.2:
+node-gyp@^7.1.0:
version "7.1.2"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae"
integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==
@@ -9008,7 +8983,7 @@ os-homedir@^1.0.0:
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
@@ -9031,11 +9006,6 @@ p-defer@^1.0.0:
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
-p-is-promise@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971"
- integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==
-
p-limit@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
@@ -9500,42 +9470,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
-pkg-fetch@^2.6.9:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/pkg-fetch/-/pkg-fetch-2.6.9.tgz#c18c5fa9604c57a3df3d9630afb64e176bc8732d"
- integrity sha512-EnVR8LRILXBvaNP+wJOSY02c3+qDDfyEyR+aqAHLhcc9PBnbxFT9UZ1+If49goPQzQPn26TzF//fc6KXZ0aXEg==
- dependencies:
- "@babel/runtime" "^7.9.2"
- byline "^5.0.0"
- chalk "^3.0.0"
- expand-template "^2.0.3"
- fs-extra "^8.1.0"
- minimist "^1.2.5"
- progress "^2.0.3"
- request "^2.88.0"
- request-progress "^3.0.0"
- semver "^6.3.0"
- unique-temp-dir "^1.0.0"
-
-pkg@^4.4.9:
- version "4.4.9"
- resolved "https://registry.yarnpkg.com/pkg/-/pkg-4.4.9.tgz#be04f8d03795772b7c4394724ae7252d7c2a4519"
- integrity sha512-FK4GqHtcCY2PPPVaKViU0NyRzpo6gCS7tPKN5b7AkElqjAOCH1bsRKgohEnxThr6DWfTGByGqba2YHGR/BqbmA==
- dependencies:
- "@babel/parser" "^7.9.4"
- "@babel/runtime" "^7.9.2"
- chalk "^3.0.0"
- escodegen "^1.14.1"
- fs-extra "^8.1.0"
- globby "^11.0.0"
- into-stream "^5.1.1"
- minimist "^1.2.5"
- multistream "^2.1.1"
- pkg-fetch "^2.6.9"
- progress "^2.0.3"
- resolve "^1.15.1"
- stream-meter "^1.0.4"
-
pluralize@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
@@ -10333,7 +10267,7 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-progress@^2.0.0, progress@^2.0.3:
+progress@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
@@ -10830,19 +10764,19 @@ rc@^1.2.7, rc@^1.2.8:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-react-dom@^17.0.1:
- version "17.0.1"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6"
- integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==
+react-dom@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
+ integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
- scheduler "^0.20.1"
+ scheduler "^0.20.2"
-react@^17.0.1:
- version "17.0.1"
- resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
- integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==
+react@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
+ integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
@@ -10912,7 +10846,7 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -11115,13 +11049,6 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-request-progress@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
- integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=
- dependencies:
- throttleit "^1.0.0"
-
request-promise-core@1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f"
@@ -11425,10 +11352,10 @@ saxes@^5.0.1:
dependencies:
xmlchars "^2.2.0"
-scheduler@^0.20.1:
- version "0.20.1"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c"
- integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==
+scheduler@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
+ integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
@@ -11549,10 +11476,10 @@ sequelize-pool@^6.0.0:
resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-6.1.0.tgz#caaa0c1e324d3c2c3a399fed2c7998970925d668"
integrity sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==
-sequelize@^6.5.1:
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.5.1.tgz#bb08c001515afe159f9efe8c1d59b7a07c43a608"
- integrity sha512-DWgaF+Vw+gWpxomyyYppUOCWzP0ReoMol8EEaDMA+cbSUevyMb74BEwSAd0c8GKgDYiOjpq4DmKBQLHtLAgS1g==
+sequelize@^6.6.2:
+ version "6.6.2"
+ resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.6.2.tgz#3681b0a4aeb106e31079d3a537d88542051dab2e"
+ integrity sha512-H/zrzmTK+tis9PJaSigkuXI57nKBvNCtPQol0yxCvau1iWLzSOuq8t3tMOVeQ+Ep8QH2HoD9/+FCCIAqzUr/BQ==
dependencies:
debug "^4.1.1"
dottie "^2.0.0"
@@ -12041,13 +11968,6 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
-stream-meter@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/stream-meter/-/stream-meter-1.0.4.tgz#52af95aa5ea760a2491716704dbff90f73afdd1d"
- integrity sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=
- dependencies:
- readable-stream "^2.1.4"
-
stream-shift@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
@@ -12434,11 +12354,6 @@ thread-loader@^3.0.1:
loader-utils "^2.0.0"
neo-async "^2.6.2"
-throttleit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
- integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
-
through2@^2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
@@ -12836,11 +12751,6 @@ uglify-js@^3.5.1:
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.4.tgz#93de48bb76bb3ec0fc36563f871ba46e2ee5c7ee"
integrity sha512-L5i5jg/SHkEqzN18gQMTWsZk3KelRsfD1wUVNqtq0kzqWQqcJjyL8yc1o8hJgRrWqrAl2mUFbhfznEIoi7zi2A==
-uid2@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82"
- integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=
-
umzug@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/umzug/-/umzug-2.3.0.tgz#0ef42b62df54e216b05dcaf627830a6a8b84a184"
@@ -12934,15 +12844,6 @@ unique-string@^2.0.0:
dependencies:
crypto-random-string "^2.0.0"
-unique-temp-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385"
- integrity sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=
- dependencies:
- mkdirp "^0.5.1"
- os-tmpdir "^1.0.1"
- uid2 "0.0.3"
-
universalify@^0.1.0, universalify@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
@@ -13184,10 +13085,10 @@ void-elements@^3.1.0:
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"
integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=
-vue-cli-plugin-vuetify@~2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.2.2.tgz#4b29854ad199d811941b8ca894ca34593127e0bf"
- integrity sha512-e0p9fuc7YDDUjTi8Uw5XNEwfTZmY+5+kZ22k9ZGsWtDOtWt1dW/oZt3aZtSLrhzEPSimkOWNBD7KZOB3fxNEGA==
+vue-cli-plugin-vuetify@~2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.3.1.tgz#9e45a686902351320e876881d057eb69c646a22b"
+ integrity sha512-96NLmCE12FalyWSxbfFerbOKSwuPq5b4zYRei5BRLbdCBq+YgmCMv8zgZl8Rx/kR/91T4i8XZDCNgfQ78mpQ3A==
dependencies:
null-loader "^3.0.0"
semver "^7.1.2"
@@ -13234,10 +13135,10 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
-vue-i18n@^8.24.1:
- version "8.24.1"
- resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.1.tgz#c3582bd61bb3a978f00c75e1ac850efc89b3916f"
- integrity sha512-iqM+npjvI9SGOAYkw1Od/y4O74gpvn5WOHeb3K125TmDJssvR62tDMMLIasPmKNbePZ1BMZ6d5jOBsrB/cK8Lw==
+vue-i18n@^8.24.2:
+ version "8.24.2"
+ resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.2.tgz#4bfba15a89c0697220b55f787bbcb05a461d5482"
+ integrity sha512-+TkAPBQw4Cp2bQrSPtPNkhET7XcWYjjDt1UjWYQs+xbT41q5OAl1I3IZyhg0drjn1nlC1K0f8sLVB/nshUcF1Q==
vue-loader@^15.9.6:
version "15.9.6"
@@ -13337,10 +13238,10 @@ vuetify@^2.4.2:
resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.4.2.tgz#d37d160c1fc6b241fc166a32980b34590a017d6e"
integrity sha512-8W1928Fv6GKwLiOThutYf2wtD5C9+vcCavlI8NT0YxNOVvluoL8xrep8mGGwDsCkay+4LzaAX92owKeNi3kpWg==
-vuetify@^2.4.6:
- version "2.4.6"
- resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.4.6.tgz#127b37bd36c7a63f61615e0cd6f97e8b203e7a07"
- integrity sha512-oqAWKAin07ip/QuT/p4bL1LegE3MYPbfojrOcj80RATZDSnJyco2PZD8QuIzd0RhYfdAuSTkY8elvHsLu90RuQ==
+vuetify@^2.4.8:
+ version "2.4.8"
+ resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.4.8.tgz#c6e883a9b2560f9906bd8b9f9eb58b001200aeef"
+ integrity sha512-rJYyzSO4Qsm/Q79W4FAUedgIDzUvx2uXzXXQ7OB2z9kAAkVOpTdMFY0CnpBcvlYbXOYy/mJ81/yUCV1ZAvJ3FQ==
vuex@^3.6.2:
version "3.6.2"
From 0dc156e540e156a115932b99cb5b8f2f86fe0b83 Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 24 Mar 2021 21:05:21 +0100
Subject: [PATCH 252/363] minor on style
---
assets/style.less | 51 ++++++++++++++++++++++++++++++++++++++++++-
components/Editor.vue | 2 +-
components/Event.vue | 51 +------------------------------------------
3 files changed, 52 insertions(+), 52 deletions(-)
diff --git a/assets/style.less b/assets/style.less
index 8d986ba3..ff847188 100644
--- a/assets/style.less
+++ b/assets/style.less
@@ -1,7 +1,7 @@
html, body {
scrollbar-width: thin;
overflow: auto !important;
- scrollbar-color: #555 #111;
+ scrollbar-color: #FF4511 #111;
font-family: sans-serif;
}
@@ -46,4 +46,53 @@ li {
.v-autocomplete__content.v-menu__content {
scrollbar-width: thin;
scrollbar-color: #FF4511 #111;
+}
+
+// EVENT
+.event {
+ display: flex;
+ position: relative;
+ flex-direction: column;
+ width: 330px;
+ max-width: 500px;
+ flex-grow: 1;
+ margin-top: .4em;
+ margin-right: .4em;
+ overflow: hidden;
+
+ .title {
+ display: block;
+ max-height: 3.3em;
+ overflow: hidden;
+ margin: 0.5rem 1rem 0.5rem 1rem;
+ // color: white;
+ border-bottom: 1px solid rgba(4,4,4,0.2);
+ font-size: 1.2em !important;
+ line-height: 1.1em;
+ font-weight: 500;
+ }
+
+ .body {
+ flex: 1 1 auto;
+ }
+
+ .img {
+ width: 100%;
+ max-height: 250px;
+ object-fit: cover;
+ object-position: top;
+ }
+
+ .place {
+ max-width: 100%;
+ span {
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+ a {
+ text-decoration: none;
+ }
}
\ No newline at end of file
diff --git a/components/Editor.vue b/components/Editor.vue
index bce977ed..b2d353fc 100644
--- a/components/Editor.vue
+++ b/components/Editor.vue
@@ -1,5 +1,5 @@
- .editor(:class='focused')
+ .editor.grey.darken-4(:class='focused')
.label {{label}}
editor-menu-bar.menubar.is-hidden(:editor='editor'
:keep-in-bounds='true' v-slot='{ commands, isActive, getMarkAttrs, focused }')
diff --git a/components/Event.vue b/components/Event.vue
index b4cebd1c..e8009b26 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -43,53 +43,4 @@ export default {
},
computed: mapState(['settings'])
}
-
-
+
\ No newline at end of file
From 8a6f53794088e54f72dda3cc30c4475b0bbe9495 Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 24 Mar 2021 21:05:48 +0100
Subject: [PATCH 253/363] fix footer position
---
components/Footer.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/Footer.vue b/components/Footer.vue
index 8873532a..873cd5ca 100644
--- a/components/Footer.vue
+++ b/components/Footer.vue
@@ -1,5 +1,5 @@
- v-footer(app absolute color='secondary')
+ v-footer(color='secondary')
v-btn(color='primary' text href='https://gancio.org') Gancio {{settings.version}}
v-btn(v-for='link in settings.footerLinks'
:key='link.label' color='primary' text :href='link.href') {{link.label}}
From 9e9643e652b780f6ce212dd121889d27de50c9f8 Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 24 Mar 2021 21:07:03 +0100
Subject: [PATCH 254/363] minor
---
layouts/default.vue | 17 +----------------
pages/about.vue | 2 +-
2 files changed, 2 insertions(+), 17 deletions(-)
diff --git a/layouts/default.vue b/layouts/default.vue
index 023a2b9b..4f3a305c 100644
--- a/layouts/default.vue
+++ b/layouts/default.vue
@@ -29,19 +29,4 @@ export default {
this.$vuetify.theme.themes.light.primary = this.settings['theme.primary']
}
}
-
-
+
\ No newline at end of file
diff --git a/pages/about.vue b/pages/about.vue
index 2400779e..6ed150b6 100644
--- a/pages/about.vue
+++ b/pages/about.vue
@@ -6,7 +6,7 @@
v-card-text(v-else v-html='about')
v-card-actions(v-if='$auth.user && $auth.user.is_admin')
v-spacer
- v-btn(color='primary' plain
+ v-btn(color='primary' text
@click='save') {{$t('common.save')}}
\ No newline at end of file
+
diff --git a/package.json b/package.json
index 5b29a195..e75dd049 100644
--- a/package.json
+++ b/package.json
@@ -67,6 +67,7 @@
"prom-client": "^13.1.0",
"sequelize": "^6.6.2",
"sequelize-cli": "^6.2.0",
+ "sequelize-slugify": "^1.5.0",
"sharp": "^0.27.2",
"sqlite3": "^5.0.2",
"tiptap": "^1.32.0",
diff --git a/server/api/controller/event.js b/server/api/controller/event.js
index 727879d5..eb95df40 100644
--- a/server/api/controller/event.js
+++ b/server/api/controller/event.js
@@ -86,14 +86,21 @@ const eventController = {
},
async get (req, res) {
- log.error('get')
const format = req.params.format || 'json'
const is_admin = req.user && req.user.is_admin
- const id = Number(req.params.event_id)
+ const slug = req.params.event_id
+ const id = Number(req.params.event_id) || -1
+ console.error(slug)
let event
try {
- event = await Event.findByPk(id, {
+ event = await Event.findOne({
+ where: {
+ [Op.or]: {
+ slug,
+ id
+ }
+ },
attributes: {
exclude: ['createdAt', 'updatedAt', 'placeId']
},
@@ -112,6 +119,7 @@ const eventController = {
order: [[Resource, 'id', 'DESC']]
})
} catch (e) {
+ console.error(e)
return res.sendStatus(400)
}
@@ -119,6 +127,7 @@ const eventController = {
return res.sendStatus(400)
}
+ console.error('diocane')
// get prev and next event
const next = await Event.findOne({
attributes: ['id'],
@@ -446,7 +455,7 @@ const eventController = {
const events = await Event.findAll({
where,
attributes: {
- exclude: ['slug', 'likes', 'boost', 'userId', 'is_visible', 'createdAt', 'updatedAt', 'description', 'resources']
+ exclude: ['likes', 'boost', 'userId', 'is_visible', 'createdAt', 'updatedAt', 'description', 'resources']
},
order: ['start_datetime', Sequelize.literal('(SELECT COUNT("tagTag") FROM event_tags WHERE "tagTag" = tag) DESC')],
include: [
diff --git a/server/api/models/event.js b/server/api/models/event.js
index 2f04b142..f1975a0c 100644
--- a/server/api/models/event.js
+++ b/server/api/models/event.js
@@ -3,6 +3,8 @@ const moment = require('dayjs')
const htmlToText = require('html-to-text')
const { Model, DataTypes } = require('sequelize')
+const SequelizeSlugify = require('sequelize-slugify')
+
const sequelize = require('./index')
const Resource = require('./resource')
@@ -26,7 +28,11 @@ Event.init({
autoIncrement: true
},
title: DataTypes.STRING,
- slug: DataTypes.STRING,
+ slug: {
+ type: DataTypes.STRING,
+ index: true,
+ unique: true
+ },
description: DataTypes.TEXT,
multidate: DataTypes.BOOLEAN,
start_datetime: {
@@ -62,6 +68,8 @@ Resource.belongsTo(Event)
Event.hasMany(Event, { as: 'child', foreignKey: 'parentId' })
Event.belongsTo(Event, { as: 'parent' })
+SequelizeSlugify.slugifyModel(Event, { source: ['title'] })
+
Event.prototype.toAPNote = function (username, locale, to = []) {
const tags = this.tags && this.tags.map(t => t.tag.replace(/[ #]/g, '_'))
const plainDescription = htmlToText.fromString(this.description && this.description.replace('\n', '').slice(0, 1000))
From 6dfa77e55ab57f26455fb35db1fc982acb032dae Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 14 Apr 2021 01:30:51 +0200
Subject: [PATCH 266/363] more on slugify
---
components/List.vue | 2 +-
pages/embed/_event_id.vue | 4 ++--
pages/event/_id.vue | 6 +++---
pages/event/embedEvent.vue | 6 +++---
server/api/controller/event.js | 2 --
server/api/controller/export.js | 2 +-
server/api/models/event.js | 6 +++---
server/migrations/20210413152837-slugify.js | 18 ++++++++++++++++++
8 files changed, 31 insertions(+), 15 deletions(-)
create mode 100644 server/migrations/20210413152837-slugify.js
diff --git a/components/List.vue b/components/List.vue
index 7984c837..23be8723 100644
--- a/components/List.vue
+++ b/components/List.vue
@@ -5,7 +5,7 @@ div#list
h3(v-if='title') {{title}}
v-list-item(
target='_blank'
- :to='`/event/${event.id}`'
+ :to='`/event/${event.slug || event.id}`'
v-for='event in computedEvents'
:key='`${event.id}_${event.start_datetime}`' small)
v-list-item-content
diff --git a/pages/embed/_event_id.vue b/pages/embed/_event_id.vue
index 2a2dd42e..b1e13aa9 100644
--- a/pages/embed/_event_id.vue
+++ b/pages/embed/_event_id.vue
@@ -1,5 +1,5 @@
- nuxt-link.embed_event(:to='`/event/${id}`' target='_blank' :class='{ withImg: event.image_path }')
+ nuxt-link.embed_event(:to='`/event/${event.slug || event.id}`' target='_blank' :class='{ withImg: event.image_path }')
//- image
img.float-left(:src='`/media/thumb/${event.image_path || "logo.png"}`')
@@ -18,7 +18,7 @@ export default {
async asyncData ({ $axios, params, error, store }) {
try {
const event = await $axios.$get(`/event/${params.event_id}`)
- return { event, id: Number(params.event_id) }
+ return { event }
} catch (e) {
error({ statusCode: 404, message: 'Event not found' })
}
diff --git a/pages/event/_id.vue b/pages/event/_id.vue
index 20257fb2..5ee84705 100644
--- a/pages/event/_id.vue
+++ b/pages/event/_id.vue
@@ -54,7 +54,7 @@ v-container
template(v-slot:activator="{on, attrs} ")
v-btn.ml-2(large icon v-on='on' color='primary'
v-clipboard:success='copyLink'
- v-clipboard:copy='`${settings.baseurl}/event/${event.id}`')
+ v-clipboard:copy='`${settings.baseurl}/event/${event.slug || event.id}`')
v-icon mdi-content-copy
v-tooltip(bottom) {{$t('common.embed')}}
template(v-slot:activator="{on, attrs} ")
@@ -63,7 +63,7 @@ v-container
v-tooltip(bottom) {{$t('common.add_to_calendar')}}
template(v-slot:activator="{on, attrs} ")
v-btn.ml-2(large icon v-on='on' color='primary'
- :href='`/api/event/${event.id}.ics`')
+ :href='`/api/event/${event.slug || event.id}.ics`')
v-icon mdi-calendar-export
.p-description.text-body-1(v-if='event.image_path' v-html='event.description')
@@ -191,7 +191,7 @@ export default {
{
hid: 'og-url',
property: 'og:url',
- content: `${this.settings.baseurl}/event/${this.event.id}`
+ content: `${this.settings.baseurl}/event/${this.event.slug || this.event.id}`
},
{ property: 'og:type', content: 'event' },
{
diff --git a/pages/event/embedEvent.vue b/pages/event/embedEvent.vue
index 0b4fcb08..72429d1f 100644
--- a/pages/event/embedEvent.vue
+++ b/pages/event/embedEvent.vue
@@ -6,7 +6,7 @@ v-card
v-col.col-12
v-alert.mb-1.mt-1(type='info' show-icon) {{$t('common.embed_help')}}
v-text-field(v-model='code')
- v-btn(slot='prepend' plain text color='primary'
+ v-btn(slot='prepend' text color='primary'
v-clipboard:copy='code'
v-clipboard:success='copyLink') {{$t("common.copy")}}
v-icon.ml-1 mdi-content-copy
@@ -23,13 +23,13 @@ import { mapState } from 'vuex'
export default {
name: 'EmbedEvent',
props: {
- event: { type: Object, default: () => ({})}
+ event: { type: Object, default: () => ({}) }
},
computed: {
...mapState(['settings']),
code () {
const style = "style='border: 0; width: 100%; height: 215px;'"
- const src = `${this.settings.baseurl}/embed/${this.event.id}`
+ const src = `${this.settings.baseurl}/embed/${this.event.slug || this.event.id}`
const code = ``
return code
}
diff --git a/server/api/controller/event.js b/server/api/controller/event.js
index eb95df40..0bdb3a7f 100644
--- a/server/api/controller/event.js
+++ b/server/api/controller/event.js
@@ -90,7 +90,6 @@ const eventController = {
const is_admin = req.user && req.user.is_admin
const slug = req.params.event_id
const id = Number(req.params.event_id) || -1
- console.error(slug)
let event
try {
@@ -127,7 +126,6 @@ const eventController = {
return res.sendStatus(400)
}
- console.error('diocane')
// get prev and next event
const next = await Event.findOne({
attributes: ['id'],
diff --git a/server/api/controller/export.js b/server/api/controller/export.js
index cf6e7bc3..26e53dbc 100644
--- a/server/api/controller/export.js
+++ b/server/api/controller/export.js
@@ -72,7 +72,7 @@ const exportController = {
title: `[${req.settings.title}] ${e.title}`,
description: e.description,
location: `${e.place.name} - ${e.place.address}`,
- url: `${req.settings.baseurl}/event/${e.id}`,
+ url: `${req.settings.baseurl}/event/${e.slug || e.id}`,
alarms
}
})
diff --git a/server/api/models/event.js b/server/api/models/event.js
index f1975a0c..111347ad 100644
--- a/server/api/models/event.js
+++ b/server/api/models/event.js
@@ -1,6 +1,6 @@
const config = require('config')
const moment = require('dayjs')
-const htmlToText = require('html-to-text')
+const { htmlToText } = require('html-to-text')
const { Model, DataTypes } = require('sequelize')
const SequelizeSlugify = require('sequelize-slugify')
@@ -72,7 +72,7 @@ SequelizeSlugify.slugifyModel(Event, { source: ['title'] })
Event.prototype.toAPNote = function (username, locale, to = []) {
const tags = this.tags && this.tags.map(t => t.tag.replace(/[ #]/g, '_'))
- const plainDescription = htmlToText.fromString(this.description && this.description.replace('\n', '').slice(0, 1000))
+ const plainDescription = htmlToText(this.description && this.description.replace('\n', '').slice(0, 1000))
const content = `
${this.title}
📍 ${this.place && this.place.name}
@@ -80,7 +80,7 @@ Event.prototype.toAPNote = function (username, locale, to = []) {
${plainDescription}
- ${config.baseurl}/event/${this.id}
+ ${config.baseurl}/event/${this.slug || this.id}
${tags && tags.map(t => `#${t}`)}
`
diff --git a/server/migrations/20210413152837-slugify.js b/server/migrations/20210413152837-slugify.js
new file mode 100644
index 00000000..48ac2c26
--- /dev/null
+++ b/server/migrations/20210413152837-slugify.js
@@ -0,0 +1,18 @@
+module.exports = {
+ up: (queryInterface, Sequelize) => {
+ return queryInterface.changeColumn('events', 'slug', {
+ type: Sequelize.STRING,
+ index: true,
+ unique: true
+ })
+ },
+
+ down: async (queryInterface, Sequelize) => {
+ /**
+ * Add reverting commands here.
+ *
+ * Example:
+ * await queryInterface.dropTable('users');
+ */
+ }
+};
From 6fb73272bb5a19be75e6e406ab8991de6c19ab28 Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 14 Apr 2021 01:33:01 +0200
Subject: [PATCH 267/363] fix filters on export
---
pages/export.vue | 32 ++++++++++++++++++--------------
plugins/api.js | 2 +-
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/pages/export.vue b/pages/export.vue
index fc7e2561..785707e1 100644
--- a/pages/export.vue
+++ b/pages/export.vue
@@ -125,27 +125,31 @@ export default {
}
if (this.filters.tags.length) {
- params.push(`tags=${this.filters.tags.map(t => t.id)}`)
+ params.push(`tags=${this.filters.tags.join(',')}`)
}
+ if (this.filters.show_recurrent) {
+ params.push('show_recurrent=true')
+ }
return ``
},
link () {
const typeMap = ['rss', 'ics', 'list']
- const tags = this.filters.tags.join(',')
- const places = this.filters.places.join(',')
- let query = ''
- if (tags || places) {
- query = '?'
- if (tags) {
- query += 'tags=' + tags
- if (places) { query += '&places=' + places }
- } else {
- query += 'places=' + places
- }
+ const params = []
+
+ if (this.filters.tags.length) {
+ params.push(`tags=${this.filters.tags.join(',')}`)
}
- return `${this.settings.baseurl}/feed/${typeMap[this.type]}${query}`
+ if (this.filters.places.length) {
+ params.push(`places=${this.filters.places.join(',')}`)
+ }
+
+ if (this.filters.show_recurrent) {
+ params.push('show_recurrent=true')
+ }
+
+ return `${this.settings.baseurl}/feed/${typeMap[this.type]}?${params.join('&')}`
},
showLink () {
return (['rss', 'ics'].includes(this.type))
@@ -158,7 +162,7 @@ export default {
start: dayjs().unix(),
places: this.filters.places,
tags: this.filters.tags,
- show_recurrent: this.filters.show_recurrent
+ show_recurrent: !!this.filters.show_recurrent
})
},
copyLink (type) {
diff --git a/plugins/api.js b/plugins/api.js
index d1b5959b..c81179a2 100644
--- a/plugins/api.js
+++ b/plugins/api.js
@@ -22,7 +22,7 @@ export default ({ $axios, store }, inject) => {
end: params.end,
places: params.places && params.places.join(','),
tags: params.tags && params.tags.join(','),
- show_recurrent: params.show_recurrent
+ show_recurrent: !!params.show_recurrent
}
})
return events.map(e => Object.freeze(e))
From 3bb73cd75707f313b5d58753c3d88783f7b117cd Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 14 Apr 2021 01:35:18 +0200
Subject: [PATCH 268/363] loading on filters update
---
pages/index.vue | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/pages/index.vue b/pages/index.vue
index 0b12fae6..70c9f7e9 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -71,6 +71,13 @@ export default {
}
},
computed: mapState(['settings', 'announcements', 'filters']),
+ mounted () {
+ const tags = document.location.hash.split('#').map(tag => decodeURIComponent(tag))
+ if (tags) {
+ this.setFilters({ ...this.filters, tags })
+ this.updateEvents()
+ }
+ },
methods: {
// onIntersect (isIntersecting, eventId) {
// this.intersecting[eventId] = isIntersecting
@@ -95,8 +102,9 @@ export default {
this.updateEvents()
},
tagClick (tag) {
+ this.$nuxt.$loading.start()
+ this.$router.push(`#${tag}`)
if (this.filters.tags.includes(tag)) {
- this.filters.tags = this.filters.tags.filter(t => t !== tag)
this.setFilters({ ...this.filters, tags: this.filters.tags.filter(t => t !== tag) })
} else {
this.setFilters({ ...this.filters, tags: [].concat(this.filters.tags, tag) })
@@ -124,15 +132,17 @@ export default {
this.updateEvents()
},
updateFilters (filters) {
+ this.$nuxt.$loading.start()
this.setFilters(filters)
this.updateEvents()
},
dayChange (day) {
+ this.$nuxt.$loading.start()
const date = dayjs(day.date).format('YYYY-MM-DD')
if (this.selectedDay === date) {
this.selectedDay = null
- this.start = dayjs().unix() // .startOf('week').unix()
- this.end = null
+ this.start = dayjs(day.date).startOf('month').unix() // .startOf('week').unix()
+ this.end = dayjs(day.date).endOf('month').unix()
this.updateEvents()
return
}
From ddd0e6d144fe6e14e0d05c80da8f3576de645675 Mon Sep 17 00:00:00 2001
From: les
Date: Wed, 21 Apr 2021 11:42:03 +0200
Subject: [PATCH 269/363] fix validation on unselect date
---
pages/add/DateInput.vue | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue
index de0a32bc..e5d39b4a 100644
--- a/pages/add/DateInput.vue
+++ b/pages/add/DateInput.vue
@@ -222,6 +222,10 @@ export default {
this.$emit('input', { ...this.value, dueHour: false })
}
} else if (what === 'date') {
+ if (value === null) {
+ this.$emit('input', { ...this.value, from: null, fromHour: false })
+ return
+ }
if (this.value.multidate) {
let from = value.start
let due = value.end
From fe97dda295eecf24dc7ead4ac9edbc6f4dbd309c Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 26 Apr 2021 11:25:35 +0200
Subject: [PATCH 270/363] create instance in any case
---
server/federation/helpers.js | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/server/federation/helpers.js b/server/federation/helpers.js
index 38b02c2f..5fae81ea 100644
--- a/server/federation/helpers.js
+++ b/server/federation/helpers.js
@@ -27,7 +27,6 @@ const Helpers = {
]
if (urlToIgnore.includes(req.path)) {
log.debug(`Ignore noisy fediverse ${req.path}`)
- log.debug(req)
return res.status(404).send('Not Found')
}
next()
@@ -161,16 +160,17 @@ const Helpers = {
})
.catch(e => {
log.error(e)
- return false
+ return Instance.create({ name: domain, domain, blocked: false })
})
return instance
},
// ref: https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/
async verifySignature (req, res, next) {
+ // TODO: why do I need instance?
const instance = await Helpers.getInstance(req.body.actor)
if (!instance) {
- log.warn(`[AP] Verify Signature: Instance not found ${req.body.actor}`)
+ log.warn(`Verify Signature: Instance not found ${req.body.actor}`)
return res.status(401).send('Instance not found')
}
if (instance.blocked) {
@@ -188,11 +188,17 @@ const Helpers = {
return res.status(401).send('User blocked')
}
- // little hack -> https://github.com/joyent/node-http-signature/pull/83
- // req.headers.authorization = 'Signature ' + req.headers.signature
-
req.fedi_user = user
+ // TODO: check Digest // cannot do this with json bodyparser
+ // const digest = crypto.createHash('sha256')
+ // .update(req.body)
+ // .digest('base64')
+ // if (`SHA-256=${digest}` !== req.headers.signature) {
+ // log.warning(`Signature mismatch ${req.headers.signature} - ${digest}`)
+ // return res.status(401).send('Signature mismatch')
+ // }
+
// another little hack :/
// https://github.com/joyent/node-http-signature/issues/87
req.url = '/federation' + req.url
From 691684d9dce0d393d1c3be4afc33996122760e11 Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 26 Apr 2021 11:26:59 +0200
Subject: [PATCH 271/363] get all instances for admin in correct order
---
server/api/controller/instance.js | 13 ++++++++++---
server/federation/ego.js | 2 ++
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/server/api/controller/instance.js b/server/api/controller/instance.js
index b81388ba..2cea4141 100644
--- a/server/api/controller/instance.js
+++ b/server/api/controller/instance.js
@@ -1,12 +1,19 @@
const APUser = require('../models/ap_user')
const Instance = require('../models/instance')
const Resource = require('../models/resource')
-
-// const { Op } = require('sequelize')
+const Sequelize = require('sequelize')
const instancesController = {
async getAll (req, res) {
- const instances = await Instance.findAll({ raw: true })
+ const instances = await Instance.findAll({
+ attributes: [
+ 'domain', 'name', 'data', 'blocked',
+ [Sequelize.fn('COUNT', Sequelize.col('ap_users.ap_id')), 'users']
+ ],
+ order: [[Sequelize.fn('COUNT', Sequelize.col('ap_users.ap_id')), 'DESC']],
+ group: ['instance.domain'],
+ include: [{ model: APUser, attributes: [] }]
+ })
return res.json(instances)
},
diff --git a/server/federation/ego.js b/server/federation/ego.js
index b8d57aa3..f1be8dac 100644
--- a/server/federation/ego.js
+++ b/server/federation/ego.js
@@ -9,6 +9,7 @@ module.exports = {
log.debug(`boost ${match[1]}`)
const event = await Event.findByPk(Number(match[1]))
if (!event) { return res.status(404).send('Event not found!') }
+ // TODO, has to be unique...
await event.update({ boost: [...event.boost, req.body.actor] })
res.sendStatus(201)
},
@@ -28,6 +29,7 @@ module.exports = {
const event = await Event.findByPk(Number(match[1]))
log.debug(`${req.body.actor} bookmark ${event.title} (${event.likes.length})`)
if (!event) { return res.status(404).send('Event not found!') }
+ // TODO: has to be unique
await event.update({ likes: [...event.likes, req.body.actor] })
res.sendStatus(201)
},
From 1ccf0397c51c88b77317ada474415968432b03f6 Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 26 Apr 2021 11:27:14 +0200
Subject: [PATCH 272/363] return slug in next/prev calculation
---
server/api/controller/event.js | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/server/api/controller/event.js b/server/api/controller/event.js
index 0bdb3a7f..6272df08 100644
--- a/server/api/controller/event.js
+++ b/server/api/controller/event.js
@@ -128,7 +128,7 @@ const eventController = {
// get prev and next event
const next = await Event.findOne({
- attributes: ['id'],
+ attributes: ['id', 'slug'],
where: {
is_visible: true,
recurrent: null,
@@ -138,7 +138,7 @@ const eventController = {
})
const prev = await Event.findOne({
- attributes: ['id'],
+ attributes: ['id', 'slug'],
where: {
is_visible: true,
recurrent: null,
@@ -149,8 +149,8 @@ const eventController = {
if (event && (event.is_visible || is_admin)) {
event = event.get()
- event.next = next && next.id
- event.prev = prev && prev.id
+ event.next = next && (next.slug || next.id)
+ event.prev = prev && (prev.slug || prev.id)
event.tags = event.tags.map(t => t.tag)
if (format === 'json') {
res.json(event)
@@ -360,8 +360,8 @@ const eventController = {
const old_path = path.resolve(config.upload_path, event.image_path)
const old_thumb_path = path.resolve(config.upload_path, 'thumb', event.image_path)
try {
- await fs.unlinkSync(old_path)
- await fs.unlinkSync(old_thumb_path)
+ fs.unlinkSync(old_path)
+ fs.unlinkSync(old_thumb_path)
} catch (e) {
log.info(e.toString())
}
From 5fb1b9b98375f4986966511157f55ee1a815e22a Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 26 Apr 2021 23:13:37 +0200
Subject: [PATCH 273/363] improve moderation ux
---
components/admin/Moderation.vue | 27 ++++++++-------------------
1 file changed, 8 insertions(+), 19 deletions(-)
diff --git a/components/admin/Moderation.vue b/components/admin/Moderation.vue
index 43395afe..7a567478 100644
--- a/components/admin/Moderation.vue
+++ b/components/admin/Moderation.vue
@@ -11,21 +11,9 @@
:hide-default-footer='instances.length<5'
dense :headers='instancesHeader'
@click:row='instanceSelected')
- //- el-table-column(label='Domain' width='180')
- //- template(slot-scope='data')
- //- span(slot='reference') {{data.row.domain}}
- //- el-table-column(label='Name' width='100')
- //- template(slot-scope='data')
- //- span(slot='reference') {{data.row.name}}
- //- el-table-column(:label="$t('common.users')" width='70')
- //- template(slot-scope='data')
- //- span(slot='reference') {{data.row.users}}
- //- el-table-column(:label="$t('common.actions')" width='120')
- //- template(slot-scope='data')
- //- el-button-group
- //- el-button(size='mini'
- //- :type='data.row.blocked?"danger":"warning"'
- //- @click='toggleBlock(data.row)') {{data.row.blocked?$t('admin.unblock'):$t('admin.block')}}
+ template(v-slot:item.blocked="{ item }")
+ v-icon(v-if='item.blocked') mdi-checkbox-intermediate
+ v-icon(v-else) mdi-checkbox-blank-outline
v-col(:span='11')
span {{$t('common.users')}}
@@ -34,8 +22,8 @@
:items-per-page='5'
:hide-default-footer='users.length<5'
dense :headers='usersHeader')
- template(v-slot:item.username="{item}")
- a(:href='item.ap_id') {{item.object.preferredUsername}}
+ //- template(v-slot:item.username="{item}")
+ //- a(:href='item.ap_id') {{item.object.preferredUsername}}
//- el-table-column(:label="$t('common.user')" width='150')
//- template(slot-scope='data')
//- span(slot='reference')
@@ -86,12 +74,13 @@ export default {
resources: [],
users: [],
usersHeader: [
- { value: 'username', text: 'Name' }
+ { value: 'object.preferredUsername', text: 'Name' }
],
instancesHeader: [
{ value: 'domain', text: 'Domain' },
{ value: 'name', text: 'Name' },
- { value: 'users', text: 'N' }
+ { value: 'blocked', text: 'Blocked' },
+ { value: 'users', text: 'known users' }
],
resourcesHeader: [
{ value: '', text: '' }
From 0cbd419210cf404a55954c6352ff64716f42d4fa Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 26 Apr 2021 23:13:59 +0200
Subject: [PATCH 274/363] past dot opacity
---
assets/helper.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/assets/helper.js b/assets/helper.js
index 8c0ed801..11640c34 100644
--- a/assets/helper.js
+++ b/assets/helper.js
@@ -1,19 +1,23 @@
import take from 'lodash/take'
import get from 'lodash/get'
+import dayjs from 'dayjs'
export function attributesFromEvents (_events, _tags) {
const colors = ['blue', 'orange', 'yellow', 'teal', 'indigo', 'green', 'red', 'purple', 'pink', 'gray']
const tags = take(_tags, 10).map(t => t.tag)
let attributes = []
attributes.push({ key: 'today', dates: new Date(), highlight: { color: 'green', fillMode: 'outline' } })
+ const now = dayjs().unix()
function getColor (event) {
const color = { class: 'vc-rounded-full', color: 'blue', fillMode: 'normal' }
const tag = get(event, 'tags[0]')
+ if (event.start_datetime < now) { color.class += ' vc-past' }
if (!tag) { return color }
const idx = tags.indexOf(tag)
if (idx < 0) { return color }
color.color = colors[idx]
+ if (event.start_datetime < now) { color.class += ' vc-past' }
return color
}
From 8519b26c05edec695a95ba684e855e130d60250d Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 26 Apr 2021 23:18:16 +0200
Subject: [PATCH 275/363] minor
---
components/Event.vue | 2 +-
components/Footer.vue | 2 +-
components/admin/Announcement.vue | 6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/components/Event.vue b/components/Event.vue
index f6624ee4..ab8181d7 100644
--- a/components/Event.vue
+++ b/components/Event.vue
@@ -1,5 +1,5 @@
- v-card.h-event.event
+ v-card.h-event.event.d-flex
nuxt-link(:to='`/event/${event.slug || event.id}`')
v-img.img(:src="`/media/thumb/${event.image_path || 'logo.svg' }`")
v-icon.float-right.mr-1(v-if='event.parentId' color='success') mdi-repeat
diff --git a/components/Footer.vue b/components/Footer.vue
index 873cd5ca..ff088caa 100644
--- a/components/Footer.vue
+++ b/components/Footer.vue
@@ -2,7 +2,7 @@
v-footer(color='secondary')
v-btn(color='primary' text href='https://gancio.org') Gancio {{settings.version}}
v-btn(v-for='link in settings.footerLinks'
- :key='link.label' color='primary' text :href='link.href') {{link.label}}
+ :key='link.label' color='primary' text :to='link.href') {{link.label}}
v-menu(v-if='settings.enable_trusted_instances && settings.trusted_instances && settings.trusted_instances.length'
offset-y bottom open-on-hover transition="slide-y-transition")
diff --git a/components/admin/Announcement.vue b/components/admin/Announcement.vue
index b3f4ffde..1ca0cf38 100644
--- a/components/admin/Announcement.vue
+++ b/components/admin/Announcement.vue
@@ -5,10 +5,10 @@
v-dialog(v-model='dialog' width='800px')
v-card
v-card-title {{$t('admin.new_announcement')}}
- v-card-text
+ v-card-text.px-0
v-form(v-model='valid' ref='announcement' @submit.prevent='save')
- v-text-field(v-model='announcement.title' :label='$t("common.title")')
- Editor.mt-2(v-model='announcement.announcement'
+ v-text-field.col-12(v-model='announcement.title' :label='$t("common.title")')
+ Editor.col-12(v-model='announcement.announcement'
border no-save max-height='400px' :placeholder="$t('common.description')")
v-card-actions
v-spacer
From 486d4300df5f1f97824da71d46e0038bbf46373d Mon Sep 17 00:00:00 2001
From: les
Date: Mon, 26 Apr 2021 23:18:50 +0200
Subject: [PATCH 276/363] improve event home filters
---
assets/style.less | 24 +++++++++++---
pages/index.vue | 80 +++++++++++++++++++++++++++++++----------------
2 files changed, 73 insertions(+), 31 deletions(-)
diff --git a/assets/style.less b/assets/style.less
index ff847188..fce11976 100644
--- a/assets/style.less
+++ b/assets/style.less
@@ -54,22 +54,24 @@ li {
position: relative;
flex-direction: column;
width: 330px;
- max-width: 500px;
+ max-width: 500px !important;
flex-grow: 1;
margin-top: .4em;
margin-right: .4em;
+ transition: all .5s;
overflow: hidden;
.title {
+ transition: all .5s;
display: block;
max-height: 3.3em;
+ color: white;
overflow: hidden;
margin: 0.5rem 1rem 0.5rem 1rem;
// color: white;
- border-bottom: 1px solid rgba(4,4,4,0.2);
- font-size: 1.2em !important;
+ // border-bottom: 1px solid rgba(4,4,4,0.2);
+ font-size: 1.1em !important;
line-height: 1.1em;
- font-weight: 500;
}
.body {
@@ -79,6 +81,8 @@ li {
.img {
width: 100%;
max-height: 250px;
+ min-height: 160px;
+ background-color: #222;
object-fit: cover;
object-position: top;
}
@@ -95,4 +99,16 @@ li {
a {
text-decoration: none;
}
+}
+
+.v-list {
+ background-color: #333 !important;
+}
+
+.vc-past {
+ opacity: 0.4;
+}
+
+#event {
+ max-width: 1200px;
}
\ No newline at end of file
diff --git a/pages/index.vue b/pages/index.vue
index 70c9f7e9..413c1048 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -11,7 +11,7 @@
//- this is needed as v-calendar does not support SSR
//- https://github.com/nathanreyes/v-calendar/issues/336
client-only
- Calendar(@dayclick='dayChange' @monthchange='monthChange' :events='events')
+ Calendar(@dayclick='dayChange' @monthchange='monthChange' :events='filteredEvents')
.col.pt-0.pt-md-2
Search(:filters='filters' @update='updateFilters')
@@ -20,12 +20,13 @@
//- Events
#events.mt-1
//- div.event(v-for='(event, idx) in events' :key='event.id' v-intersect="(entries, observer, isIntersecting) => intersecting[event.id] = isIntersecting")
- Event(:event='event' v-for='(event, idx) in events' :key='event.id' @tagclick='tagClick' @placeclick='placeClick')
+ Event(:event='event' v-for='(event, idx) in visibleEvents' :key='event.id' @tagclick='tagClick' @placeclick='placeClick')