Improvements

WlND quotes on 404, Auth, Debug options, etc
This commit is contained in:
Troplo 2021-01-16 03:57:00 +11:00
parent ea7a3a8403
commit bb6f1c82b6
8 changed files with 329 additions and 119 deletions

View file

@ -17,6 +17,7 @@
"to-boolean": "^1.0.0", "to-boolean": "^1.0.0",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-axios": "^3.2.2", "vue-axios": "^3.2.2",
"vue-keypress": "^2.1.1",
"vue-router": "^3.2.0", "vue-router": "^3.2.0",
"vue-socket.io": "^3.0.10", "vue-socket.io": "^3.0.10",
"vuex": "^3.4.0" "vuex": "^3.4.0"
@ -30,7 +31,7 @@
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"eslint": "^6.7.2", "eslint": "^6.7.2",
"eslint-plugin-vue": "^6.2.2", "eslint-plugin-vue": "^6.2.2",
"node-sass": "4.13.1", "node-sass": "4.14.1",
"sass-loader": "^8.0.2", "sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.11" "vue-template-compiler": "^2.6.11"
}, },

View file

@ -1,6 +1,9 @@
<style lang="scss"> <style lang="scss">
@import './assets/scss/buefy'; @import './assets/scss/buefy';
</style> </style>
<style>
@import 'https://kit-pro.fontawesome.com/releases/v5.15.1/css/pro.min.css';
</style>
<template> <template>
<div id="app"> <div id="app">
<div id="navigation"> <div id="navigation">
@ -17,6 +20,7 @@
<script> <script>
import Navbar from './components/Navbar' import Navbar from './components/Navbar'
import Footer from './components/Footer' import Footer from './components/Footer'
import axios from "axios";
export default { export default {
name: 'KavertiApp', name: 'KavertiApp',
components: { components: {
@ -24,9 +28,31 @@ export default {
Footer Footer
}, },
mounted() { mounted() {
if(JSON.parse(
localStorage.getItem('wind404'))) {
var wind = JSON.parse(
localStorage.getItem('wind404'))
} else {
// eslint-disable-next-line no-redeclare
var wind = false
}
this.$store.commit('setWind', wind)
Object.assign(axios.defaults, {headers: {Authorization: this.$store.state.user.token}})
if(this.$store.state.debug) { if(this.$store.state.debug) {
this.$buefy.snackbar.open({message:`Warning: You are using a development build of Kaverti, expect instabilities.`, type: 'is-warning'}) this.$buefy.snackbar.open({message:`Warning: You are using a development build of Kaverti, expect instabilities.`, type: 'is-warning'})
} }
this.axios.get(process.env.VUE_APP_APIENDPOINT + process.env.VUE_APP_APIVERSION + '/' + 'userinfo')
.then(res => {
this.$store.commit('setUsername', res.data.username)
this.$store.commit('setEmail', res.data.email)
this.$store.commit('setEmailVerified', res.data.emailVerified)
this.$store.commit('setAdmin', res.data.admin)
this.$store.commit('setKoins', res.data.koins)
this.$store.commit('setID', res.data.id)
this.$store.commit('setBot', res.data.bot)
}).catch(() => {
this.$buefy.snackbar.open({message:`Error occurred while fetching user information.`, type: 'is-warning'})
})
} }
} }
</script> </script>

View file

@ -1,5 +1,24 @@
<template> <template>
<nav> <nav>
<b-modal :active="ajaxErrorModal" @update:active="value => ajaxErrorModal = value" :width="640" scroll="keep" style="z-index: 200">
<div class="modal-card" style="width: auto">
<header class="modal-card-head">
<p class="modal-card-title">Something went wrong...</p>
<button
type="button"
class="delete"
@click="$emit('close')"/>
</header>
<section class="modal-card-body media">
<p :key='error' v-for='error in this.$store.state.errors.errors' style='margin: 1rem;'>{{error}}</p>
</section>
<footer class="modal-card-foot">
<b-button
label="Got it"
@click="$emit('close')" />
</footer>
</div>
</b-modal>
<b-modal :active="loginModal" @update:active="value => loginModal = value" :width="640" scroll="keep"> <b-modal :active="loginModal" @update:active="value => loginModal = value" :width="640" scroll="keep">
<b-form> <b-form>
<div class="modal-card" style="width: auto"> <div class="modal-card" style="width: auto">
@ -40,6 +59,10 @@
label="Login" label="Login"
:loading="login.loading" :loading="login.loading"
type="is-primary" /> type="is-primary" />
<b-button
@click="registerModal = true; loginModal = false"
label="Need an account?"
type="is-success" />
</footer> </footer>
</div> </div>
</b-form> </b-form>
@ -103,6 +126,10 @@
label="Register" label="Register"
:loading="register.loading" :loading="register.loading"
type="is-primary" /> type="is-primary" />
<b-button
@click="registerModal = false; loginModal = true"
label="Have an account?"
type="is-success" />
</footer> </footer>
</div> </div>
</b-form> </b-form>
@ -127,14 +154,15 @@
<a class="navbar-link"> <a class="navbar-link">
<p>Developer Options</p> <p>Developer Options</p>
</a> </a>
<div class="navbar-dropdown is-boxed"> <div class="navbar-dropdown">
<b-navbar-item tag="router-link" to="/debug">Debug Page</b-navbar-item> <b-navbar-item tag="router-link" to="/debug">Debug Page</b-navbar-item>
<b-navbar-item @click="fakeUser()">Fake User</b-navbar-item>
</div> </div>
</div> </div>
</template> </template>
<template #end> <template #end>
<b-navbar-item tag="div"> <b-navbar-item v-if="!$store.state.user.username" tag="div">
<div class="buttons"> <div class="buttons">
<b-button @click="registerModal = true" class="button is-primary"> <b-button @click="registerModal = true" class="button is-primary">
<strong>Register</strong> <strong>Register</strong>
@ -144,12 +172,28 @@
</b-button> </b-button>
</div> </div>
</b-navbar-item> </b-navbar-item>
<b-navbar-item v-if="$store.state.user.username">
<div class="navbar-item has-dropdown is-hoverable is-info">
<a class="navbar-link">
<p>{{$store.state.user.username}}</p>
</a>
<div class="navbar-dropdown">
<b-navbar-item tag="router-link" :to="'/u/' + $store.state.user.username">My profile</b-navbar-item>
<b-navbar-item tag="router-link" to="/settings">Settings</b-navbar-item>
<b-navbar-item tag="router-link" to="/transactions">Transactions</b-navbar-item>
<b-navbar-item tag="router-link" to="/character">My Avatar</b-navbar-item>
<b-navbar-item tag="router-link" to="/downloads">Downloads</b-navbar-item>
<b-navbar-item @click="fakeUser()">Logout</b-navbar-item>
</div>
</div>
</b-navbar-item>
</template> </template>
</b-navbar> </b-navbar>
</nav> </nav>
</template> </template>
<script> <script>
import AjaxErrorHandler from '../../assets/js/errorHandler' import AjaxErrorHandler from '../../assets/js/errorHandler'
import axios from "axios";
export default { export default {
data() { data() {
return { return {
@ -170,6 +214,16 @@ export default {
} }
} }
}, },
computed: {
ajaxErrorModal: {
get() {
return this.$store.state.errors.modal
},
set(val) {
this.$store.commit('setAjaxErrorsModalState', val)
}
},
},
methods: { methods: {
doRegister() { doRegister() {
this.register.loading = true this.register.loading = true
@ -205,22 +259,15 @@ export default {
doLogin() { doLogin() {
this.login.loading = true this.login.loading = true
this.axios.post('/api/v1/users/login', { this.axios.post('/api/v1/users/login', {
username: this.register.username, username: this.login.username,
password: this.register.password, password: this.login.password
email: this.register.email,
confirm: this.register.confirm,
agree: this.register.agree
}).then((res) => { }).then((res) => {
this.register.loading = false this.login.loading = false
this.$store.commit('setUsername', res.data.username)
this.$store.commit('setAvatar', res.data.avatar)
this.$store.commit('setID', res.data.id)
this.$store.commit('setEmailVerified', res.data.emailVerified)
this.$store.commit('setEmail', res.data.email)
this.$store.commit('setAdmin', res.data.admin)
this.$store.commit('setToken', res.data.token) this.$store.commit('setToken', res.data.token)
localStorage.setItem('token', JSON.stringify(res.data.token));
Object.assign(axios.defaults, {headers: {Authorization: this.$store.state.user.token}})
}).catch(e => { }).catch(e => {
this.register.loading = false this.login.loading = false
AjaxErrorHandler(this.$store)(e, (error, errors) => { AjaxErrorHandler(this.$store)(e, (error, errors) => {
let path = error.path let path = error.path
@ -232,6 +279,11 @@ export default {
} }
}) })
}) })
},
fakeUser () {
this.$store.commit('fakeUser')
this.$buefy.snackbar.open(`WARNING: You have fake authenticated, you do not have authenticated API access. Use for debug purposes only.`)
Object.assign(axios.defaults, {headers: {Authorization: this.$store.state.user.token}})
} }
} }
} }

View file

@ -23,6 +23,11 @@ const routes = [
name: 'Debug', name: 'Debug',
component: route('Debug') component: route('Debug')
}, },
{
path: '*',
name: '404',
component: route('404')
}
] ]
const router = new VueRouter({ const router = new VueRouter({

View file

@ -1,22 +1,86 @@
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import tb from 'to-boolean'; import tb from 'to-boolean';
Vue.use(Vuex) Vue.use(Vuex)
if(JSON.parse(
localStorage.getItem('token'))) {
var token = JSON.parse(
localStorage.getItem('token'))
} else {
// eslint-disable-next-line no-redeclare
var token = ''
}
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
name: "Kaverti", name: "Kaverti",
debug: tb(process.env.VUE_APP_STAGING), debug: tb(process.env.VUE_APP_STAGING),
wind: false,
errors: { errors: {
errors: [], errors: null,
modal: false modal: false
},
user: {
id: 0,
username: '',
email: '',
admin: false,
avatar: 'default',
bot: '',
system: '',
token: token,
koins: 0,
emailVerified: false,
modeler: false,
developerMode: false,
executive: false
} }
}, },
mutations: { mutations: {
turnOffDebug(state) { turnOffDebug(state) {
state.debug = false state.debug = false
}, },
fakeUser(state) {
state.user.id = 1
state.user.username = "Debug"
state.user.email = "valid@troplo.com"
state.user.admin = false
state.user.avatar = 'default'
state.user.bot = false
state.user.system = false
state.user.token = "1234"
state.user.koins = 69
state.user.emailVerified = true
},
setAjaxErrorsModalState(state, value) {
state.errors.modal = value;
},
setAjaxErrors(state, value) {
state.errors.errors = value
},
setUsername (state, value) {
state.user.username = value
},
setToken (state, value) {
state.user.token = value
},
setAvatar (state, value) {
state.user.avatar = value
},
setBot (state, value) {
state.user.bot = value
},
setEmail (state, value) {
state.user.email = value
},
setEmailVerified (state, value) {
state.user.emailVerified = value
},
setID (state, value) {
state.user.id = value
},
setWind (state, value) {
state.wind = value
}
}, },
actions: { actions: {
}, },

131
src/views/404.vue Normal file
View file

@ -0,0 +1,131 @@
<template>
<main>
<section class="hero is-info is-fullheight">
<div class="hero-body">
<div class="container">
<h1 class="title">
404 Not Found
</h1>
<div v-if="!$store.state.wind" v-on:click.ctrl="saveWind"><h2 class="subtitle">
We have nothing to say, or do we?
</h2></div>
<h2 v-on:click.ctrl="doQuote" v-if="$store.state.wind" class="subtitle">
WIND Quote: {{ quote }}
</h2>
</div>
</div>
</section>
</main>
</template>
<script>
export default {
data() {
return {
quote: null,
windQuote: [
"dont tell anyone the new domain",
"i got VertineerGame though and its cool",
"Vertineer@Vertineer.com but the cunts had to autp",
"Why do you have to always leak dms, I've just told the full truth to logan",
"1 sec 157.245.13.54 root db800fc08ea616f1c60fb46f4dxx",
"Yo I'm buying a feature for Kaveri but I'm £3 short you able to help me out at all",
"get the fuck over it, it was never a scam, why would i pay you 150 to fix files that i was told by brixster that are easy af to fix",
"and i told you i had to use it now leave me alone I'm fed up now",
"its funny how to had to suck energys dick for a job",
"can u not understand you gave energycell dicksucking for a job",
"I warned you before",
"im never firing you btw your my best friend xzd xd",
"did u fix it?",
"did you end up fixing it",
"fix it",
"50 to fix it now",
"fuck you",
"no I am not, I am wlnd, aka Alex",
"goody",
"k",
"ok",
"can you put out an announcement on the kaverti server saying Did you know? Vertineer is making a return, You can join there discord server here: dont say its me running it @Moved to Troplo0261 ???",
"nvm fixed it ok what the fuck now u cant create groups AGAIN this is fucking dumb @Moved to Troplo0261",
"ill pay extra with the tet domain if u do £50 infact £100",
"ok £50 extra",
"£30? would that be enough or would u do 20",
"{INSERT PHP ERROR} We'll you are getting paid alot + plus the extra for fixing it How about £50 extra if you help me sort these errors out Its the best i can too or ill have nothing left @Moved to Troplo0261",
"ok right extra £10 to fix this issue, when creating a group, the logo does not generate into the cdn",
"can u fix that for £10 extra",
"£30 Its the last thing im asking for troplo.",
"I'd say if you get this fully working I'll have to do like monthly, installments of £15 a month or week until u get 100",
"are you having a bubble",
"I do not want any association with any of you guys except Nab, you are the toxic people who think its funny to fuck with someone's depression to bring them down, you can fuck off.",
"he currently has .co.uk which i can't buy at the moment as i don't have anymore money to give him until i am paid",
"oh ok, sorry if i got you confused or anything i just have not had the time to update the info for the domain just yet",
"i feel as tho you've told people im wind because of finding this information and its gonna start drama between tetrimus again vertineer?",
"yes wind was planning on making a vertineer site basically",
"correct, he gave me the login details i changed them all, i legit bought everything for a high pirce.",
"that is wind for you",
"yea i get that i am using other persons source, wind actually told me he made it, i do agree a full new website needs making because i'd hate to use stolen sources",
"i am nothing like wind, if u use stolen sources , you basically get no where",
"i gained access to this , the email was vertineer@vertineer.com so i just created it https://twitter.com/vertineer",
"ok ill respond now",
"hello mr trooooplooo",
"I honestly don't fucking care if your going to expose me, Apparently I'm 13-14 years old when I'm 17 and have goverment id and a passport to back that up, If you continue to carry on @Moved to Troplo0261 I will happily disconnect the tetrimus.com domain I'm letting you use.",
"dont tell anyone who i am here",
"I'll sell u the tet domain for £10.00",
"ill pay extra with the tet domain 1",
"if u do 1",
"£50 1",
"ok £50 extra 1",
"How about £50 extra if you help me sort these errors out 1",
"ok right extra £10 to fix this issue, when creating a group, the logo does not generate into the cdn 1",
"£50 to do it now highest ill go",
"£30? would that be enough 1",
"I payed £1m for the bloxtopia source",
"I'd say if you get this fully working I'll have to do like monthly, installments of £15 a month or week until u get 100 would be enough?",
"No, Basically the source was legally connected and owned with the tetrimus.com, The owners put that domain up on auction, I bidded and won it",
"what do u want for the tetrimus.com domain, no im not rebranding i just want it back on my account.",
"I just wanna keep it on my godaddy account, keep it auto renewed so people can't get it",
"well what a waist of fucking time talking",
"I mean cyrex would still have the £75 but I'll give user it back bit by bit",
"https://ufile.io/f5gwg9o3",
"ill sort the admin perms just after i finish my dinner",
"I'm using it I've not made ANY profit why are you even fucking complaining i gave you the domain",
"i wouldn't do anything to you Me and you used to be best friends, I miss that",
"sorry bro, i feel bad",
"I warned you before",
"now leave me alone",
"I'm fed up now",
"I used the money that I was going to send to you",
"get the fuck over it",
"I warned you",
"I have to obey wind so i don't need to pay",
"are you having a bubble?",
"don't try and contact me you selfish little brat",
"that's wind for you",
"I'm not a scammer like wind"
]
}
},
methods: {
random: function () {
return Math.floor(Math.random()*2*11);
},
doQuote () {
this.quote = this.windQuote[this.random()]
},
saveWind () {
localStorage.setItem('wind404', true);
if(JSON.parse(
localStorage.getItem('wind404'))) {
var wind = JSON.parse(
localStorage.getItem('wind404'))
} else {
// eslint-disable-next-line no-redeclare
var wind = false
}
this.$store.commit('setWind', wind)
}
},
mounted () {
this.doQuote()
}
}
</script>

View file

@ -4,6 +4,12 @@
<div class="box"> <div class="box">
Debug mode turned on: {{$store.state.debug}} Debug mode turned on: {{$store.state.debug}}
<br> <br>
<div v-if="$store.state.debug"> Logged in as: {{$store.state.user.username}}<br>
User info: {{$store.state.user}}<br>
State dump: {{$store.state}}<br>
Authentication Token: {{$store.state.user.token}}
</div>
<b-button v-if="$store.state.debug" @click="authTest">Test authentication</b-button>
<b-button v-if="$store.state.debug" @click="turnOffDebug">Turn off</b-button> <b-button v-if="$store.state.debug" @click="turnOffDebug">Turn off</b-button>
</div> </div>
</div> </div>
@ -17,6 +23,14 @@ export default {
turnOffDebug () { turnOffDebug () {
this.$store.commit('turnOffDebug') this.$store.commit('turnOffDebug')
this.$buefy.snackbar.open(`Debug mode disabled, you will no longer have access to development features until you refresh.`) this.$buefy.snackbar.open(`Debug mode disabled, you will no longer have access to development features until you refresh.`)
},
authTest () {
this.axios.get('/api/v1/userinfo/auth'
).then(() => {
this.$buefy.snackbar.open(`You are authenticated correctly`)
}).catch(() => {
this.$buefy.snackbar.open(`Request failed, you are not authenticated.`)
})
} }
} }
} }

117
yarn.lock
View file

@ -3671,11 +3671,6 @@ camelcase@^2.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
camelcase@^4.0.0: camelcase@^4.0.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@ -4039,15 +4034,6 @@ clipboardy@^2.3.0:
execa "^1.0.0" execa "^1.0.0"
is-wsl "^2.1.1" is-wsl "^2.1.1"
cliui@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
dependencies:
string-width "^1.0.1"
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
cliui@^5.0.0: cliui@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
@ -4761,7 +4747,7 @@ debug@~3.1.0:
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: decamelize@^1.1.2, decamelize@^1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@ -6304,11 +6290,6 @@ gensync@^1.0.0-beta.1:
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
get-caller-file@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
get-caller-file@^2.0.1, get-caller-file@^2.0.5: get-caller-file@^2.0.1, get-caller-file@^2.0.5:
version "2.0.5" version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
@ -7313,11 +7294,6 @@ into-stream@^3.1.0:
from2 "^2.1.1" from2 "^2.1.1"
p-is-promise "^1.1.0" p-is-promise "^1.1.0"
invert-kv@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
ip-regex@^2.1.0: ip-regex@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
@ -7995,13 +7971,6 @@ launch-editor@^2.2.1:
chalk "^2.3.0" chalk "^2.3.0"
shell-quote "^1.6.1" shell-quote "^1.6.1"
lcid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
dependencies:
invert-kv "^1.0.0"
leven@^3.1.0: leven@^3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
@ -8896,10 +8865,10 @@ node-releases@^1.1.69:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6"
integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==
node-sass@4.13.1: node-sass@4.14.1:
version "4.13.1" version "4.14.1"
resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5"
integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==
dependencies: dependencies:
async-foreach "^0.1.3" async-foreach "^0.1.3"
chalk "^1.1.1" chalk "^1.1.1"
@ -8915,7 +8884,7 @@ node-sass@4.13.1:
node-gyp "^3.8.0" node-gyp "^3.8.0"
npmlog "^4.0.0" npmlog "^4.0.0"
request "^2.88.0" request "^2.88.0"
sass-graph "^2.2.4" sass-graph "2.2.5"
stdout-stream "^1.4.0" stdout-stream "^1.4.0"
"true-case-path" "^1.0.2" "true-case-path" "^1.0.2"
@ -9254,13 +9223,6 @@ os-homedir@^1.0.0:
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
os-locale@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
dependencies:
lcid "^1.0.0"
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@ -10604,11 +10566,6 @@ require-directory@^2.1.1:
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
require-main-filename@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
require-main-filename@^2.0.0: require-main-filename@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
@ -10792,15 +10749,15 @@ safe-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sass-graph@^2.2.4: sass-graph@2.2.5:
version "2.2.6" version "2.2.5"
resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.6.tgz#09fda0e4287480e3e4967b72a2d133ba09b8d827" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8"
integrity sha512-MKuEYXFSGuRSi8FZ3A7imN1CeVn9Gpw0/SFJKdL1ejXJneI9a5rwlEZrKejhEFAA3O6yr3eIyl/WuvASvlT36g== integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==
dependencies: dependencies:
glob "^7.0.0" glob "^7.0.0"
lodash "^4.0.0" lodash "^4.0.0"
scss-tokenizer "^0.2.3" scss-tokenizer "^0.2.3"
yargs "^7.0.0" yargs "^13.3.2"
sass-loader@^8.0.2: sass-loader@^8.0.2:
version "8.0.2" version "8.0.2"
@ -11506,7 +11463,7 @@ string-hash@^1.1.1:
resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
string-width@^1.0.1, string-width@^1.0.2: string-width@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
@ -12603,6 +12560,11 @@ 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" resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
vue-keypress@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/vue-keypress/-/vue-keypress-2.1.1.tgz#b766ab52c052b28e9ea1a732a5fde0432c45c76c"
integrity sha512-gt/g/24m9vVKAchb762FhGs7rQNDPmuMR/skEM/G7NvyeuVs/mLO3mNnlBsf4jHSsRXy3BzFdc6GtTfylllrIQ==
"vue-loader-v16@npm:vue-loader@^16.1.0": "vue-loader-v16@npm:vue-loader@^16.1.0":
version "16.1.2" version "16.1.2"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.1.2.tgz#5c03b6c50d2a5f983c7ceba15c50d78ca2b298f4" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.1.2.tgz#5c03b6c50d2a5f983c7ceba15c50d78ca2b298f4"
@ -12858,11 +12820,6 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
which-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
which-module@^2.0.0: which-module@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
@ -12915,14 +12872,6 @@ worker-farm@^1.7.0:
dependencies: dependencies:
errno "~0.1.7" errno "~0.1.7"
wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
dependencies:
string-width "^1.0.1"
strip-ansi "^3.0.1"
wrap-ansi@^3.0.1: wrap-ansi@^3.0.1:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
@ -13043,11 +12992,6 @@ xtend@^4.0.0, xtend@~4.0.1:
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
y18n@^3.2.1:
version "3.2.2"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696"
integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==
y18n@^4.0.0: y18n@^4.0.0:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
@ -13081,14 +13025,6 @@ yaml-front-matter@^3.4.1:
commander "1.0.0" commander "1.0.0"
js-yaml "^3.5.2" js-yaml "^3.5.2"
yargs-parser@5.0.0-security.0:
version "5.0.0-security.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24"
integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==
dependencies:
camelcase "^3.0.0"
object.assign "^4.1.0"
yargs-parser@^13.1.2: yargs-parser@^13.1.2:
version "13.1.2" version "13.1.2"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
@ -13156,25 +13092,6 @@ yargs@^16.0.0:
y18n "^5.0.5" y18n "^5.0.5"
yargs-parser "^20.2.2" yargs-parser "^20.2.2"
yargs@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6"
integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==
dependencies:
camelcase "^3.0.0"
cliui "^3.2.0"
decamelize "^1.1.1"
get-caller-file "^1.0.1"
os-locale "^1.4.0"
read-pkg-up "^1.0.1"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^1.0.2"
which-module "^1.0.0"
y18n "^3.2.1"
yargs-parser "5.0.0-security.0"
yarn@^1.21.1: yarn@^1.21.1:
version "1.22.10" version "1.22.10"
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.10.tgz#c99daa06257c80f8fa2c3f1490724e394c26b18c" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.10.tgz#c99daa06257c80f8fa2c3f1490724e394c26b18c"