Merge branch 'develop' into feat/report-notification

This commit is contained in:
Shpuld Shpuldson 2021-01-05 13:58:52 +02:00
commit ab2c2c66bf
46 changed files with 1289 additions and 457 deletions

View File

@ -5,10 +5,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased] ## [Unreleased]
### Fixed
- Follows/Followers tabs on user profiles now display the content properly.
- Handle punycode in screen names
## [2.2.2] - 2020-12-22
### Added ### Added
- Mouseover titles for emojis in reaction picker - Mouseover titles for emojis in reaction picker
- Support to input emoji into the search box in reaction picker - Support to input emoji into the search box in reaction picker
- Added some missing unicode emoji - Added some missing unicode emoji
- Added the upload limit to the Features panel in the About page
- Support for solid color wallpaper, instance doesn't have to define a wallpaper anymore
### Fixed ### Fixed
- Fixed the occasional bug where screen would scroll 1px when typing into a reply form - Fixed the occasional bug where screen would scroll 1px when typing into a reply form
@ -17,11 +24,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Fixed custom emoji not working in profile field names - Fixed custom emoji not working in profile field names
- Fixed pinned statuses not appearing in user profiles - Fixed pinned statuses not appearing in user profiles
- Fixed some elements not being keyboard navigation friendly - Fixed some elements not being keyboard navigation friendly
- Fixed error handling when updating various profile images
- Fixed your latest chat messages disappearing when closing chat view and opening it again during the same session - Fixed your latest chat messages disappearing when closing chat view and opening it again during the same session
- Fixed custom emoji not showing in poll options before voting
- Fixed link color not applied to instance name in topbar
### Changed ### Changed
- Errors when fetching are now shown with popup errors instead of "Error fetching updates" in panel headers - Errors when fetching are now shown with popup errors instead of "Error fetching updates" in panel headers
- Made reply/fav/repeat etc buttons easier to hit - Made reply/fav/repeat etc buttons easier to hit
- Adjusted timeline menu clickable area to match the visible button
- Moved external source link from status heading to the ellipsis menu
- Disabled horizontal textarea resize
- Wallpaper is now top-aligned, horizontally centered.
## [2.2.1] - 2020-11-11 ## [2.2.1] - 2020-11-11

View File

@ -31,6 +31,7 @@
"parse-link-header": "^1.0.1", "parse-link-header": "^1.0.1",
"phoenix": "^1.3.0", "phoenix": "^1.3.0",
"portal-vue": "^2.1.4", "portal-vue": "^2.1.4",
"punycode.js": "^2.1.0",
"v-click-outside": "^2.1.1", "v-click-outside": "^2.1.1",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-chat-scroll": "^1.2.1", "vue-chat-scroll": "^1.2.1",
@ -55,7 +56,7 @@
"babel-plugin-lodash": "^3.3.4", "babel-plugin-lodash": "^3.3.4",
"chai": "^3.5.0", "chai": "^3.5.0",
"chalk": "^1.1.3", "chalk": "^1.1.3",
"chromedriver": "^2.21.2", "chromedriver": "^87.0.1",
"connect-history-api-fallback": "^1.1.0", "connect-history-api-fallback": "^1.1.0",
"cross-spawn": "^4.0.2", "cross-spawn": "^4.0.2",
"css-loader": "^0.28.0", "css-loader": "^0.28.0",

View File

@ -15,6 +15,7 @@ import UserReportingModal from './components/user_reporting_modal/user_reporting
import PostStatusModal from './components/post_status_modal/post_status_modal.vue' import PostStatusModal from './components/post_status_modal/post_status_modal.vue'
import GlobalNoticeList from './components/global_notice_list/global_notice_list.vue' import GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'
import { windowWidth, windowHeight } from './services/window_utils/window_utils' import { windowWidth, windowHeight } from './services/window_utils/window_utils'
import { mapGetters } from 'vuex'
export default { export default {
name: 'app', name: 'app',
@ -50,18 +51,19 @@ export default {
}, },
computed: { computed: {
currentUser () { return this.$store.state.users.currentUser }, currentUser () { return this.$store.state.users.currentUser },
background () { userBackground () { return this.currentUser.background_image },
return this.currentUser.background_image || this.$store.state.instance.background instanceBackground () {
return this.mergedConfig.hideInstanceWallpaper
? null
: this.$store.state.instance.background
}, },
background () { return this.userBackground || this.instanceBackground },
bgStyle () { bgStyle () {
return { if (this.background) {
'background-image': `url(${this.background})`
}
},
bgAppStyle () {
return { return {
'--body-background-image': `url(${this.background})` '--body-background-image': `url(${this.background})`
} }
}
}, },
chat () { return this.$store.state.chat.channel.state === 'joined' }, chat () { return this.$store.state.chat.channel.state === 'joined' },
suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled }, suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },
@ -77,7 +79,8 @@ export default {
return { return {
'order': this.$store.state.instance.sidebarRight ? 99 : 0 'order': this.$store.state.instance.sidebarRight ? 99 : 0
} }
} },
...mapGetters(['mergedConfig'])
}, },
methods: { methods: {
updateMobileState () { updateMobileState () {

View File

@ -14,7 +14,9 @@
right: -20px; right: -20px;
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: 0 50%; background-color: var(--wallpaper);
background-image: var(--body-background-image);
background-position: 50% 50px;
} }
i[class^='icon-'] { i[class^='icon-'] {
@ -332,6 +334,10 @@ input, textarea, .select, .input {
box-sizing: border-box; box-sizing: border-box;
} }
} }
&.resize-height {
resize: vertical;
}
} }
option { option {

View File

@ -1,12 +1,11 @@
<template> <template>
<div <div
id="app" id="app"
:style="bgAppStyle" :style="bgStyle"
> >
<div <div
id="app_bg_wrapper" id="app_bg_wrapper"
class="app-bg-wrapper" class="app-bg-wrapper"
:style="bgStyle"
/> />
<MobileNav v-if="isMobileLayout" /> <MobileNav v-if="isMobileLayout" />
<DesktopNav v-else /> <DesktopNav v-else />

View File

@ -5,6 +5,10 @@
width: 100%; width: 100%;
position: fixed; position: fixed;
a {
color: var(--topBarLink, $fallback--link);
}
.inner-nav { .inner-nav {
display: grid; display: grid;
grid-template-rows: 50px; grid-template-rows: 50px;

View File

@ -5,7 +5,8 @@ import {
faBookmark, faBookmark,
faEyeSlash, faEyeSlash,
faThumbtack, faThumbtack,
faShareAlt faShareAlt,
faExternalLinkAlt
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
import { import {
faBookmark as faBookmarkReg faBookmark as faBookmarkReg
@ -17,7 +18,8 @@ library.add(
faBookmarkReg, faBookmarkReg,
faEyeSlash, faEyeSlash,
faThumbtack, faThumbtack,
faShareAlt faShareAlt,
faExternalLinkAlt
) )
const ExtraButtons = { const ExtraButtons = {

View File

@ -1,5 +1,6 @@
<template> <template>
<Popover <Popover
class="ExtraButtons"
trigger="click" trigger="click"
placement="top" placement="top"
:offset="{ y: 5 }" :offset="{ y: 5 }"
@ -96,11 +97,23 @@
icon="share-alt" icon="share-alt"
/><span>{{ $t("status.copy_link") }}</span> /><span>{{ $t("status.copy_link") }}</span>
</button> </button>
<a
v-if="!status.is_local"
class="button-default dropdown-item dropdown-item-icon"
title="Source"
:href="status.external_url"
target="_blank"
>
<FAIcon
fixed-width
icon="external-link-alt"
/><span>{{ $t("status.external_source") }}</span>
</a>
</div> </div>
</div> </div>
<span <span
slot="trigger" slot="trigger"
class="ExtraButtons" class="popover-trigger"
> >
<FAIcon <FAIcon
class="fa-scale-110 fa-old-padding" class="fa-scale-110 fa-old-padding"
@ -116,6 +129,7 @@
@import '../../_variables.scss'; @import '../../_variables.scss';
.ExtraButtons { .ExtraButtons {
.popover-trigger {
position: static; position: static;
padding: 10px; padding: 10px;
margin: -10px; margin: -10px;
@ -125,4 +139,5 @@
color: var(--text, $fallback--text); color: var(--text, $fallback--text);
} }
} }
}
</style> </style>

View File

@ -1,3 +1,5 @@
import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'
const FeaturesPanel = { const FeaturesPanel = {
computed: { computed: {
chat: function () { return this.$store.state.instance.chatAvailable }, chat: function () { return this.$store.state.instance.chatAvailable },
@ -6,7 +8,8 @@ const FeaturesPanel = {
whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled }, whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },
mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable }, mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },
minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode }, minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },
textlimit: function () { return this.$store.state.instance.textlimit } textlimit: function () { return this.$store.state.instance.textlimit },
uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }
} }
} }

View File

@ -25,6 +25,7 @@
</li> </li>
<li>{{ $t('features_panel.scope_options') }}</li> <li>{{ $t('features_panel.scope_options') }}</li>
<li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li> <li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li>
<li>{{ $t('features_panel.upload_limit') }} = {{ uploadlimit.num }} {{ $t('upload.file_size_units.' + uploadlimit.unit) }}</li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@ -9,11 +9,15 @@
<div class="notice-message"> <div class="notice-message">
{{ $t(notice.messageKey, notice.messageArgs) }} {{ $t(notice.messageKey, notice.messageArgs) }}
</div> </div>
<button
class="button-unstyled close-notice"
@click="closeNotice(notice)"
>
<FAIcon <FAIcon
class="fa-scale-110 fa-old-padding" class="fa-scale-110 fa-old-padding"
icon="times" icon="times"
@click="closeNotice(notice)"
/> />
</button>
</div> </div>
</div> </div>
</template> </template>
@ -54,7 +58,7 @@
.global-error { .global-error {
background-color: var(--alertPopupError, $fallback--cRed); background-color: var(--alertPopupError, $fallback--cRed);
color: var(--alertPopupErrorText, $fallback--text); color: var(--alertPopupErrorText, $fallback--text);
i { .svg-inline--fa {
color: var(--alertPopupErrorText, $fallback--text); color: var(--alertPopupErrorText, $fallback--text);
} }
} }
@ -62,7 +66,7 @@
.global-warning { .global-warning {
background-color: var(--alertPopupWarning, $fallback--cOrange); background-color: var(--alertPopupWarning, $fallback--cOrange);
color: var(--alertPopupWarningText, $fallback--text); color: var(--alertPopupWarningText, $fallback--text);
i { .svg-inline--fa {
color: var(--alertPopupWarningText, $fallback--text); color: var(--alertPopupWarningText, $fallback--text);
} }
} }
@ -70,9 +74,16 @@
.global-info { .global-info {
background-color: var(--alertPopupNeutral, $fallback--fg); background-color: var(--alertPopupNeutral, $fallback--fg);
color: var(--alertPopupNeutralText, $fallback--text); color: var(--alertPopupNeutralText, $fallback--text);
i { .svg-inline--fa {
color: var(--alertPopupNeutralText, $fallback--text); color: var(--alertPopupNeutralText, $fallback--text);
} }
} }
.close-notice {
padding-right: 0.2em;
.svg-inline--fa:hover {
opacity: 0.6;
}
}
} }
</style> </style>

View File

@ -2,12 +2,10 @@ import Cropper from 'cropperjs'
import 'cropperjs/dist/cropper.css' import 'cropperjs/dist/cropper.css'
import { library } from '@fortawesome/fontawesome-svg-core' import { library } from '@fortawesome/fontawesome-svg-core'
import { import {
faTimes,
faCircleNotch faCircleNotch
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
library.add( library.add(
faTimes,
faCircleNotch faCircleNotch
) )
@ -53,8 +51,7 @@ const ImageCropper = {
cropper: undefined, cropper: undefined,
dataUrl: undefined, dataUrl: undefined,
filename: undefined, filename: undefined,
submitting: false, submitting: false
submitError: null
} }
}, },
computed: { computed: {
@ -66,9 +63,6 @@ const ImageCropper = {
}, },
cancelText () { cancelText () {
return this.cancelButtonLabel || this.$t('image_cropper.cancel') return this.cancelButtonLabel || this.$t('image_cropper.cancel')
},
submitErrorMsg () {
return this.submitError && this.submitError instanceof Error ? this.submitError.toString() : this.submitError
} }
}, },
methods: { methods: {
@ -82,12 +76,8 @@ const ImageCropper = {
}, },
submit (cropping = true) { submit (cropping = true) {
this.submitting = true this.submitting = true
this.avatarUploadError = null
this.submitHandler(cropping && this.cropper, this.file) this.submitHandler(cropping && this.cropper, this.file)
.then(() => this.destroy()) .then(() => this.destroy())
.catch((err) => {
this.submitError = err
})
.finally(() => { .finally(() => {
this.submitting = false this.submitting = false
}) })
@ -113,9 +103,6 @@ const ImageCropper = {
reader.readAsDataURL(this.file) reader.readAsDataURL(this.file)
this.$emit('changed', this.file, reader) this.$emit('changed', this.file, reader)
} }
},
clearError () {
this.submitError = null
} }
}, },
mounted () { mounted () {

View File

@ -37,17 +37,6 @@
icon="circle-notch" icon="circle-notch"
/> />
</div> </div>
<div
v-if="submitError"
class="alert error"
>
{{ submitErrorMsg }}
<FAIcon
class="fa-scale-110 fa-old-padding"
icon="times"
@click="clearError"
/>
</div>
</div> </div>
<input <input
ref="input" ref="input"

View File

@ -63,7 +63,8 @@ export default {
const specialLanguageNames = { const specialLanguageNames = {
'ja': 'Japanese (日本語)', 'ja': 'Japanese (日本語)',
'ja_easy': 'Japanese (やさしいにほんご)', 'ja_easy': 'Japanese (やさしいにほんご)',
'zh': 'Chinese (简体中文)' 'zh': 'Simplified Chinese (简体中文)',
'zh_Hant': 'Traditional Chinese (繁體中文)'
} }
return specialLanguageNames[code] || ISO6391.getName(code) return specialLanguageNames[code] || ISO6391.getName(code)
} }

View File

@ -42,7 +42,8 @@
:value="index" :value="index"
> >
<label class="option-vote"> <label class="option-vote">
<div>{{ option.title }}</div> <!-- eslint-disable-next-line vue/no-v-html -->
<div v-html="option.title_html" />
</label> </label>
</div> </div>
</div> </div>

View File

@ -95,6 +95,7 @@
box-shadow: none; box-shadow: none;
width: 100%; width: 100%;
height: 100%; height: 100%;
box-sizing: border-box;
--btnText: var(--popoverText, $fallback--text); --btnText: var(--popoverText, $fallback--text);

View File

@ -20,10 +20,10 @@
<div class="reaction-picker"> <div class="reaction-picker">
<span <span
v-for="emoji in commonEmojis" v-for="emoji in commonEmojis"
:key="emoji" :key="emoji.replacement"
class="emoji-button" class="emoji-button"
:title="emoji.displayText" :title="emoji.displayText"
@click="addReaction($event, emoji, close)" @click="addReaction($event, emoji.replacement, close)"
> >
{{ emoji.replacement }} {{ emoji.replacement }}
</span> </span>

View File

@ -16,7 +16,7 @@
> >
<button <button
click="submit" click="submit"
class="remote-button" class="button-default remote-button"
> >
{{ $t('user_card.remote_follow') }} {{ $t('user_card.remote_follow') }}
</button> </button>

View File

@ -75,6 +75,7 @@
<p>{{ $t('settings.filtering_explanation') }}</p> <p>{{ $t('settings.filtering_explanation') }}</p>
<textarea <textarea
id="muteWords" id="muteWords"
class="resize-height"
v-model="muteWordsString" v-model="muteWordsString"
/> />
</div> </div>

View File

@ -34,6 +34,10 @@ const GeneralTab = {
return this.$store.state.instance.postFormats || [] return this.$store.state.instance.postFormats || []
}, },
instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel }, instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel },
instanceWallpaperUsed () {
return this.$store.state.instance.background &&
!this.$store.state.users.currentUser.background_image
},
...SharedComputedObject() ...SharedComputedObject()
} }
} }

View File

@ -11,6 +11,11 @@
{{ $t('settings.hide_isp') }} {{ $t('settings.hide_isp') }}
</Checkbox> </Checkbox>
</li> </li>
<li v-if="instanceWallpaperUsed">
<Checkbox v-model="hideInstanceWallpaper">
{{ $t('settings.hide_wallpaper') }}
</Checkbox>
</li>
</ul> </ul>
</div> </div>
<div class="setting-item"> <div class="setting-item">

View File

@ -45,9 +45,7 @@ const ProfileTab = {
banner: null, banner: null,
bannerPreview: null, bannerPreview: null,
background: null, background: null,
backgroundPreview: null, backgroundPreview: null
bannerUploadError: null,
backgroundUploadError: null
} }
}, },
components: { components: {
@ -162,18 +160,18 @@ const ProfileTab = {
if (file.size > this.$store.state.instance[slot + 'limit']) { if (file.size > this.$store.state.instance[slot + 'limit']) {
const filesize = fileSizeFormatService.fileSizeFormat(file.size) const filesize = fileSizeFormatService.fileSizeFormat(file.size)
const allowedsize = fileSizeFormatService.fileSizeFormat(this.$store.state.instance[slot + 'limit']) const allowedsize = fileSizeFormatService.fileSizeFormat(this.$store.state.instance[slot + 'limit'])
this[slot + 'UploadError'] = [ this.$store.dispatch('pushGlobalNotice', {
this.$t('upload.error.base'), messageKey: 'upload.error.message',
this.$t( messageArgs: [
'upload.error.file_too_big', this.$t('upload.error.file_too_big', {
{
filesize: filesize.num, filesize: filesize.num,
filesizeunit: filesize.unit, filesizeunit: filesize.unit,
allowedsize: allowedsize.num, allowedsize: allowedsize.num,
allowedsizeunit: allowedsize.unit allowedsizeunit: allowedsize.unit
} })
) ],
].join(' ') level: 'error'
})
return return
} }
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
@ -213,8 +211,9 @@ const ProfileTab = {
that.$store.commit('setCurrentUser', user) that.$store.commit('setCurrentUser', user)
resolve() resolve()
}) })
.catch((err) => { .catch((error) => {
reject(new Error(that.$t('upload.error.base') + ' ' + err.message)) that.displayUploadError(error)
reject(error)
}) })
} }
@ -235,24 +234,27 @@ const ProfileTab = {
this.$store.commit('setCurrentUser', user) this.$store.commit('setCurrentUser', user)
this.bannerPreview = null this.bannerPreview = null
}) })
.catch((err) => { .catch(this.displayUploadError)
this.bannerUploadError = this.$t('upload.error.base') + ' ' + err.message .finally(() => { this.bannerUploading = false })
})
.then(() => { this.bannerUploading = false })
}, },
submitBackground (background) { submitBackground (background) {
if (!this.backgroundPreview && background !== '') { return } if (!this.backgroundPreview && background !== '') { return }
this.backgroundUploading = true this.backgroundUploading = true
this.$store.state.api.backendInteractor.updateProfileImages({ background }).then((data) => { this.$store.state.api.backendInteractor.updateProfileImages({ background })
if (!data.error) { .then((data) => {
this.$store.commit('addNewUsers', [data]) this.$store.commit('addNewUsers', [data])
this.$store.commit('setCurrentUser', data) this.$store.commit('setCurrentUser', data)
this.backgroundPreview = null this.backgroundPreview = null
} else { })
this.backgroundUploadError = this.$t('upload.error.base') + data.error .catch(this.displayUploadError)
} .finally(() => { this.backgroundUploading = false })
this.backgroundUploading = false },
displayUploadError (error) {
this.$store.dispatch('pushGlobalNotice', {
messageKey: 'upload.error.message',
messageArgs: [error.message],
level: 'error'
}) })
} }
} }

View File

@ -11,7 +11,7 @@
<input <input
id="username" id="username"
v-model="newName" v-model="newName"
classname="name-changer" class="name-changer"
> >
</EmojiInput> </EmojiInput>
<p>{{ $t('settings.bio') }}</p> <p>{{ $t('settings.bio') }}</p>
@ -22,7 +22,7 @@
> >
<textarea <textarea
v-model="newBio" v-model="newBio"
classname="bio" class="bio resize-height"
/> />
</EmojiInput> </EmojiInput>
<p> <p>
@ -229,17 +229,6 @@
> >
{{ $t('general.submit') }} {{ $t('general.submit') }}
</button> </button>
<div
v-if="bannerUploadError"
class="alert error"
>
Error: {{ bannerUploadError }}
<FAIcon
class="fa-scale-110 fa-old-padding"
icon="times"
@click="clearUploadError('banner')"
/>
</div>
</div> </div>
<div class="setting-item"> <div class="setting-item">
<h2>{{ $t('settings.profile_background') }}</h2> <h2>{{ $t('settings.profile_background') }}</h2>
@ -279,18 +268,6 @@
> >
{{ $t('general.submit') }} {{ $t('general.submit') }}
</button> </button>
<div
v-if="backgroundUploadError"
class="alert error"
>
Error: {{ backgroundUploadError }}
<FAIcon
size="lg"
class="fa-scale-110 fa-old-padding"
icon="times"
@click="clearUploadError('background')"
/>
</div>
</div> </div>
</div> </div>
</template> </template>

View File

@ -165,7 +165,8 @@
border-color: var(--border, $fallback--border); border-color: var(--border, $fallback--border);
margin: 1em 0; margin: 1em 0;
padding: 1em; padding: 1em;
background: var(--body-background-image); background-color: var(--wallpaper);
background-image: var(--body-background-image);
background-size: cover; background-size: cover;
background-position: 50% 50%; background-position: 50% 50%;

View File

@ -616,6 +616,15 @@
:disabled="underlayOpacityLocal === 'transparent'" :disabled="underlayOpacityLocal === 'transparent'"
/> />
</div> </div>
<div class="color-item">
<h4>{{ $t('settings.style.advanced_colors.wallpaper') }}</h4>
<ColorInput
v-model="wallpaperColorLocal"
name="wallpaper"
:label="$t('settings.style.advanced_colors.wallpaper')"
:fallback="previewTheme.colors.wallpaper"
/>
</div>
<div class="color-item"> <div class="color-item">
<h4>{{ $t('settings.style.advanced_colors.poll') }}</h4> <h4>{{ $t('settings.style.advanced_colors.poll') }}</h4>
<ColorInput <ColorInput

View File

@ -26,7 +26,6 @@ import {
faTimes, faTimes,
faRetweet, faRetweet,
faReply, faReply,
faExternalLinkSquareAlt,
faPlusSquare, faPlusSquare,
faSmileBeam, faSmileBeam,
faEllipsisH, faEllipsisH,
@ -44,7 +43,6 @@ library.add(
faTimes, faTimes,
faRetweet, faRetweet,
faReply, faReply,
faExternalLinkSquareAlt,
faPlusSquare, faPlusSquare,
faStar, faStar,
faSmileBeam, faSmileBeam,

View File

@ -139,6 +139,20 @@ $status-margin: 0.75em;
.heading-right { .heading-right {
display: flex; display: flex;
flex-shrink: 0; flex-shrink: 0;
.button-unstyled {
padding: 5px;
margin: -5px;
&:hover svg {
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
}
}
.svg-inline--fa {
margin-left: 0.25em;
}
} }
.timeago { .timeago {

View File

@ -184,30 +184,20 @@
:title="status.visibility | capitalize" :title="status.visibility | capitalize"
> >
<FAIcon <FAIcon
class="fa-scale-110 fa-old-padding" fixed-width
class="fa-scale-110"
:icon="visibilityIcon(status.visibility)" :icon="visibilityIcon(status.visibility)"
/> />
</span> </span>
<a
v-if="!status.is_local && !isPreview"
:href="status.external_url"
target="_blank"
class="source_url"
title="Source"
>
<FAIcon
class="fa-scale-110 fa-old-padding"
icon="external-link-square-alt"
/>
</a>
<button <button
v-if="expandable && !isPreview" v-if="expandable && !isPreview"
class="button-unstyled" class="button-unstyled"
title="Expand" :title="$t('status.expand')"
@click.prevent="toggleExpanded" @click.prevent="toggleExpanded"
> >
<FAIcon <FAIcon
class="fa-scale-110 fa-old-padding" fixed-width
class="fa-scale-110"
icon="plus-square" icon="plus-square"
/> />
</button> </button>
@ -217,8 +207,9 @@
@click.prevent="toggleMute" @click.prevent="toggleMute"
> >
<FAIcon <FAIcon
fixed-width
icon="eye-slash" icon="eye-slash"
class="fa-scale-110 fa-old-padding" class="fa-scale-110"
/> />
</button> </button>
</span> </span>

View File

@ -102,6 +102,7 @@
.timeline-heading { .timeline-heading {
max-width: 100%; max-width: 100%;
flex-wrap: nowrap; flex-wrap: nowrap;
align-items: center;
.loadmore-button { .loadmore-button {
flex-shrink: 0; flex-shrink: 0;
} }

View File

@ -59,6 +59,14 @@ const TimelineMenu = {
this.isOpen = true this.isOpen = true
}, 25) }, 25)
}, },
blockOpen (event) {
// For the blank area inside the button element.
// Just setting @click.stop="" makes unintuitive behavior when
// menu is open and clicking on the blank area doesn't close it.
if (!this.isOpen) {
event.stopPropagation()
}
},
timelineName () { timelineName () {
const route = this.$route.name const route = this.$route.name
if (route === 'tag-timeline') { if (route === 'tag-timeline') {

View File

@ -65,11 +65,17 @@
slot="trigger" slot="trigger"
class="title timeline-menu-title" class="title timeline-menu-title"
> >
<span>{{ timelineName() }}</span> <span class="timeline-title">{{ timelineName() }}</span>
<span>
<FAIcon <FAIcon
size="sm" size="sm"
icon="chevron-down" icon="chevron-down"
/> />
</span>
<span
class="click-blocker"
@click="blockOpen"
/>
</div> </div>
</Popover> </Popover>
</template> </template>
@ -117,8 +123,9 @@
cursor: pointer; cursor: pointer;
user-select: none; user-select: none;
width: 100%; width: 100%;
display: flex;
span { .timeline-menu-name {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
@ -128,6 +135,11 @@
margin-left: 0.6em; margin-left: 0.6em;
transition: transform 100ms; transition: transform 100ms;
} }
.click-blocker {
cursor: default;
flex-grow: 1;
}
} }
&.open .timeline-menu-title svg { &.open .timeline-menu-title svg {

View File

@ -29,12 +29,8 @@ const withLoadMore = ({
return { return {
loading: false, loading: false,
bottomedOut: false, bottomedOut: false,
error: false error: false,
} entries: []
},
computed: {
entries () {
return select(this.$props, this.$store) || []
} }
}, },
created () { created () {
@ -48,6 +44,11 @@ const withLoadMore = ({
destroy && destroy(this.$props, this.$store) destroy && destroy(this.$props, this.$store)
}, },
methods: { methods: {
// Entries is not a computed because computed can't track the dynamic
// selector for changes and won't trigger after fetch.
updateEntries () {
this.entries = select(this.$props, this.$store) || []
},
fetchEntries () { fetchEntries () {
if (!this.loading) { if (!this.loading) {
this.loading = true this.loading = true
@ -61,6 +62,9 @@ const withLoadMore = ({
this.loading = false this.loading = false
this.error = true this.error = true
}) })
.finally(() => {
this.updateEntries()
})
} }
}, },
scrollLoad (e) { scrollLoad (e) {

View File

@ -50,7 +50,8 @@
"scope_options": "Scope options", "scope_options": "Scope options",
"text_limit": "Text limit", "text_limit": "Text limit",
"title": "Features", "title": "Features",
"who_to_follow": "Who to follow" "who_to_follow": "Who to follow",
"upload_limit": "Upload limit"
}, },
"finder": { "finder": {
"error_fetching_user": "Error fetching user", "error_fetching_user": "Error fetching user",
@ -328,6 +329,7 @@
"hide_muted_posts": "Hide posts of muted users", "hide_muted_posts": "Hide posts of muted users",
"max_thumbnails": "Maximum amount of thumbnails per post", "max_thumbnails": "Maximum amount of thumbnails per post",
"hide_isp": "Hide instance-specific panel", "hide_isp": "Hide instance-specific panel",
"hide_wallpaper": "Hide instance wallpaper",
"preload_images": "Preload images", "preload_images": "Preload images",
"use_one_click_nsfw": "Open NSFW attachments with just one click", "use_one_click_nsfw": "Open NSFW attachments with just one click",
"hide_post_stats": "Hide post statistics (e.g. the number of favorites)", "hide_post_stats": "Hide post statistics (e.g. the number of favorites)",
@ -515,6 +517,7 @@
"inputs": "Input fields", "inputs": "Input fields",
"faint_text": "Faded text", "faint_text": "Faded text",
"underlay": "Underlay", "underlay": "Underlay",
"wallpaper": "Wallpaper",
"poll": "Poll graph", "poll": "Poll graph",
"icons": "Icons", "icons": "Icons",
"highlight": "Highlighted elements", "highlight": "Highlighted elements",
@ -661,6 +664,7 @@
"unmute_conversation": "Unmute conversation", "unmute_conversation": "Unmute conversation",
"status_unavailable": "Status unavailable", "status_unavailable": "Status unavailable",
"copy_link": "Copy link to status", "copy_link": "Copy link to status",
"external_source": "External source",
"thread_muted": "Thread muted", "thread_muted": "Thread muted",
"thread_muted_and_words": ", has words:", "thread_muted_and_words": ", has words:",
"show_full_subject": "Show full subject", "show_full_subject": "Show full subject",
@ -668,7 +672,8 @@
"show_content": "Show content", "show_content": "Show content",
"hide_content": "Hide content", "hide_content": "Hide content",
"status_deleted": "This post was deleted", "status_deleted": "This post was deleted",
"nsfw": "NSFW" "nsfw": "NSFW",
"expand": "Expand"
}, },
"user_card": { "user_card": {
"approve": "Approve", "approve": "Approve",
@ -758,6 +763,7 @@
"upload": { "upload": {
"error": { "error": {
"base": "Upload failed.", "base": "Upload failed.",
"message": "Upload failed: {0}",
"file_too_big": "File too big [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]", "file_too_big": "File too big [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",
"default": "Try again later" "default": "Try again later"
}, },

View File

@ -33,7 +33,9 @@ const loaders = {
ro: () => import('./ro.json'), ro: () => import('./ro.json'),
ru: () => import('./ru.json'), ru: () => import('./ru.json'),
te: () => import('./te.json'), te: () => import('./te.json'),
zh: () => import('./zh.json') uk: () => import('./uk.json'),
zh: () => import('./zh.json'),
zh_Hant: () => import('./zh_Hant.json')
} }
const messages = { const messages = {

View File

@ -19,7 +19,7 @@
"optional": "не обязательно", "optional": "не обязательно",
"show_less": "Показать меньше", "show_less": "Показать меньше",
"show_more": "Показать больше", "show_more": "Показать больше",
"peek": "Взглянуть", "peek": "Свернуть",
"dismiss": "Закрыть", "dismiss": "Закрыть",
"retry": "Попробуйте еще раз", "retry": "Попробуйте еще раз",
"error_retry": "Пожалуйста попробуйте еще раз", "error_retry": "Пожалуйста попробуйте еще раз",
@ -39,8 +39,11 @@
"recovery_code": "Код восстановления", "recovery_code": "Код восстановления",
"heading": { "heading": {
"TotpForm": "Двухфакторная аутентификация", "TotpForm": "Двухфакторная аутентификация",
"RecoveryForm": "Two-factor recovery" "RecoveryForm": "Two-factor recovery",
} "totp": "Двухфакторная аутентификация"
},
"hint": "Войдите чтобы присоединиться к дискуссии",
"description": "Войти с помощью OAuth"
}, },
"nav": { "nav": {
"back": "Назад", "back": "Назад",
@ -52,7 +55,14 @@
"twkn": "Федеративная лента", "twkn": "Федеративная лента",
"search": "Поиск", "search": "Поиск",
"friend_requests": "Запросы на чтение", "friend_requests": "Запросы на чтение",
"bookmarks": "Закладки" "bookmarks": "Закладки",
"chats": "Беседы",
"timelines": "Ленты",
"preferences": "Настройки",
"who_to_follow": "Кого читать",
"dms": "Личные Сообщения",
"administration": "Панель администратора",
"about": "О сервере"
}, },
"notifications": { "notifications": {
"broken_favorite": "Неизвестный статус, ищем...", "broken_favorite": "Неизвестный статус, ищем...",
@ -62,12 +72,17 @@
"notifications": "Уведомления", "notifications": "Уведомления",
"read": "Прочесть", "read": "Прочесть",
"repeated_you": "повторил(а) ваш статус", "repeated_you": "повторил(а) ваш статус",
"follow_request": "хочет читать вас" "follow_request": "хочет читать вас",
"reacted_with": "добавил реакцию: {0}",
"migrated_to": "мигрировал на",
"no_more_notifications": "Нет дальнейших уведомлений",
"error": "Ошибка при обновлении уведомлений: {0}"
}, },
"interactions": { "interactions": {
"favs_repeats": "Повторы и фавориты", "favs_repeats": "Повторы и фавориты",
"follows": "Новые подписки", "follows": "Новые читатели",
"load_older": "Загрузить старые взаимодействия" "load_older": "Загрузить старые взаимодействия",
"moves": "Миграции пользователей"
}, },
"post_status": { "post_status": {
"account_not_locked_warning": "Ваш аккаунт не {0}. Кто угодно может начать читать вас чтобы видеть посты только для подписчиков.", "account_not_locked_warning": "Ваш аккаунт не {0}. Кто угодно может начать читать вас чтобы видеть посты только для подписчиков.",
@ -87,7 +102,21 @@
"private": "Для подписчиков - этот пост видят только подписчики", "private": "Для подписчиков - этот пост видят только подписчики",
"public": "Публичный - этот пост виден всем", "public": "Публичный - этот пост виден всем",
"unlisted": "Непубличный - этот пост не виден на публичных лентах" "unlisted": "Непубличный - этот пост не виден на публичных лентах"
} },
"preview_empty": "Пустой предпросмотр",
"media_description_error": "Не удалось обновить вложение, попробуйте еще раз",
"empty_status_error": "Нельзя отправить пустой статус без вложений",
"preview": "Предпросмотр",
"direct_warning_to_first_only": "Это сообщение увидят только пользователи упомянутые в его начале.",
"direct_warning_to_all": "Это сообщение увидят все упомянутые пользователи.",
"content_type": {
"text/bbcode": "BBCode",
"text/html": "HTML",
"text/markdown": "Markdown",
"text/plain": "Простой текст"
},
"media_description": "Описание вложения",
"new_status": "Написать новый статус"
}, },
"registration": { "registration": {
"bio": "Описание", "bio": "Описание",
@ -103,7 +132,12 @@
"password_required": "не должен быть пустым", "password_required": "не должен быть пустым",
"password_confirmation_required": "не должно быть пустым", "password_confirmation_required": "не должно быть пустым",
"password_confirmation_match": "должно совпадать с паролем" "password_confirmation_match": "должно совпадать с паролем"
} },
"bio_placeholder": "например:\nПривет, я Игорь Печкин.\nРаботаю почтальоном в деревне Простоквашино. С недавних пор велосипедист.",
"fullname_placeholder": "например: Почтальон Печкин",
"username_placeholder": "например: pechkin",
"captcha": "Код подтверждения",
"new_captcha": "Нажмите на изображение чтобы получить новый код"
}, },
"settings": { "settings": {
"enter_current_password_to_confirm": "Введите свой текущий пароль", "enter_current_password_to_confirm": "Введите свой текущий пароль",
@ -202,7 +236,7 @@
"hide_followers_count_description": "Не показывать число моих подписчиков", "hide_followers_count_description": "Не показывать число моих подписчиков",
"show_admin_badge": "Показывать значок администратора в моем профиле", "show_admin_badge": "Показывать значок администратора в моем профиле",
"show_moderator_badge": "Показывать значок модератора в моем профиле", "show_moderator_badge": "Показывать значок модератора в моем профиле",
"nsfw_clickthrough": "Включить скрытие NSFW вложений", "nsfw_clickthrough": "Включить скрытие NSFW вложений и не показывать изображения в предпросмотре ссылок для NSFW статусов",
"oauth_tokens": "OAuth токены", "oauth_tokens": "OAuth токены",
"token": "Токен", "token": "Токен",
"refresh_token": "Рефреш токен", "refresh_token": "Рефреш токен",
@ -355,7 +389,60 @@
} }
}, },
"allow_following_move": "Разрешить автоматически читать новый аккаунт при перемещении на другой сервер", "allow_following_move": "Разрешить автоматически читать новый аккаунт при перемещении на другой сервер",
"hide_user_stats": "Не показывать статистику пользователей (например количество читателей)" "hide_user_stats": "Не показывать статистику пользователей (например количество читателей)",
"discoverable": "Разрешить показ аккаунта в поисковиках и других сервисах",
"default_vis": "Видимость постов по умолчанию",
"mutes_and_blocks": "Блокировки и игнорируемые",
"composing": "Составление постов",
"chatMessageRadius": "Сообщения в беседе",
"blocks_tab": "Блокировки",
"import_mutes_from_a_csv_file": "Импортировать игнорируемых из CSV файла",
"mutes_imported": "Игнорируемые импортированы! Обработка может занять некоторое время.",
"mute_import_error": "Произошла ошибка при импорте игнорируемых",
"mute_import": "Импорт игнорируемых",
"block_export_button": "Экспортирует блокировки в CSV файл",
"mute_export_button": "Экспортирует игнорируемых пользователей в CSV файл",
"mute_export": "Экспорт игнорируемых",
"blocks_imported": "Блокировки импортированы! Обработка может занять некоторое время.",
"block_import_error": "Произошла ошибка при импорте блокировок",
"block_import": "Импорт блокировок",
"block_export": "Экспортировать блокировки",
"security": "Безопасность",
"app_name": "Приложение",
"user_mutes": "Пользователи",
"post_status_content_type": "Формат составляемых статусов по умолчанию",
"subject_line_noop": "Не копировать",
"subject_line_mastodon": "Как в Mastodon: скопировать как есть",
"subject_line_email": "Как в e-mail: \"re: тема\"",
"subject_line_behavior": "Копировать тему в ответах",
"no_mutes": "Нет игнорируемых",
"no_blocks": "Нет блокировок",
"notification_visibility_emoji_reactions": "Реакции",
"notification_visibility_moves": "Миграции пользователей",
"use_contain_fit": "Не обрезать вложения в миниатюрах",
"profile_fields": {
"value": "Значение",
"name": "Пункт",
"add_field": "Добавить поле",
"label": "Таблица метаданных профиля"
},
"play_videos_in_modal": "Проигрывать видео во всплывающей рамке",
"mutes_tab": "Игнорируемые",
"invalid_theme_imported": "Выбраный файл не является темой Pleroma. Изменений в тему не было внесено.",
"import_blocks_from_a_csv_file": "Импортировать блокировки из CSV файла",
"hide_filtered_statuses": "Не показывать отфильтрованные статусы",
"hide_muted_posts": "Не показывать статусы игнорируемых пользователей",
"hide_post_stats": "Не показывать статистику статусов (например количество отметок «Нравится»)",
"use_one_click_nsfw": "Открывать NSFW вложения одним кликом",
"preload_images": "Предварительно загружать изображения",
"max_thumbnails": "Максимальное число миниатюр показываемых в статусе",
"emoji_reactions_on_timeline": "Показывать эмодзи реакции в ленте",
"domain_mutes": "Узлы",
"notification_setting_privacy": "Приватность",
"notification_setting_block_from_strangers": "Не показывать уведомления от пользователей которых вы не читаете",
"notification_setting_filters": "Фильтрация",
"notifications": "Уведомления",
"virtual_scrolling": "Оптимизировать рендеринг ленты"
}, },
"timeline": { "timeline": {
"collapse": "Свернуть", "collapse": "Свернуть",
@ -369,7 +456,11 @@
}, },
"status": { "status": {
"bookmark": "В закладки", "bookmark": "В закладки",
"unbookmark": "Удалить из закладок" "unbookmark": "Удалить из закладок",
"status_deleted": "Пост удален",
"reply_to": "Ответ",
"repeats": "Повторы",
"favorites": "Понравилось"
}, },
"user_card": { "user_card": {
"block": "Заблокировать", "block": "Заблокировать",
@ -407,7 +498,11 @@
"quarantine": "Не федерировать посты пользователя", "quarantine": "Не федерировать посты пользователя",
"delete_user": "Удалить пользователя", "delete_user": "Удалить пользователя",
"delete_user_confirmation": "Вы уверены? Это действие нельзя отменить." "delete_user_confirmation": "Вы уверены? Это действие нельзя отменить."
} },
"media": "С вложениями",
"mention": "Упомянуть",
"show_repeats": "Показывать повторы",
"hide_repeats": "Скрыть повторы"
}, },
"user_profile": { "user_profile": {
"timeline_title": "Лента пользователя" "timeline_title": "Лента пользователя"
@ -480,12 +575,78 @@
}, },
"tool_tip": { "tool_tip": {
"accept_follow_request": "Принять запрос на чтение", "accept_follow_request": "Принять запрос на чтение",
"reject_follow_request": "Отклонить запрос на чтение" "reject_follow_request": "Отклонить запрос на чтение",
"media_upload": "Прикрепить вложение"
}, },
"image_cropper": { "image_cropper": {
"save_without_cropping": "Сохранить не обрезая", "save_without_cropping": "Сохранить не обрезая",
"save": "Сохранить", "save": "Сохранить",
"crop_picture": "Обрезать картинку", "crop_picture": "Обрезать картинку",
"cancel": "Отмена" "cancel": "Отменить"
},
"errors": {
"storage_unavailable": "Pleroma не смогла получить доступ к хранилищу браузера. Ваша сессия и настройки не будут сохранены, и вы можете столкнуться с непредвиденными проблемами. Попробуйте включить файлы cookie."
},
"polls": {
"not_enough_options": "Недостаточно уникальных вариантов в опросе",
"expired": "Опрос закончился {0} назад",
"expires_in": "Опрос заканчивается через {0}",
"expiry": "Срок опроса",
"multiple_choices": "Несколько вариантов",
"single_choice": "Один вариант",
"type": "Тип опроса",
"vote": "Проголосовать",
"votes": "голосов",
"option": "Вариант",
"add_option": "Добавить вариант",
"add_poll": "Прикрепить опрос"
},
"media_modal": {
"next": "Следующая",
"previous": "Предыдущая"
},
"importer": {
"error": "Произошла ошибка при импорте файла.",
"success": "Импорт прошел успешно.",
"submit": "Отправить"
},
"selectable_list": {
"select_all": "Выбрать все"
},
"emoji": {
"load_all": "Все {emojiAmount} эмодзи загружаются",
"load_all_hint": "Загружены первые {saneAmount} эмодзи, загрузка всех эмодзи может привести к проблемам с производительностью.",
"unicode": "Стандартные эмодзи",
"custom": "Пользовательские эмодзи",
"add_emoji": "Добавить эмодзи",
"search_emoji": "Поиск эмодзи",
"keep_open": "Оставить окно выбора открытым",
"emoji": "Эмодзи",
"stickers": "Стикеры"
},
"shoutbox": {
"title": "Болтовня"
},
"time": {
"days_short": "{0}дн",
"years_short": "{0}г",
"year_short": "{0}г",
"weeks_short": "{0}нед",
"week_short": "{0}нед",
"seconds_short": "{0}сек",
"second_short": "{0}с",
"now_short": "только что",
"now": "только что",
"months_short": "{0}мес",
"month_short": "{0}мес",
"minutes_short": "{0}мин",
"minute_short": "{0}мин",
"in_past": "{0} назад",
"in_future": "через {0}",
"hours_short": "{0}ч",
"hour_short": "{0}ч",
"hour": "{0} час",
"day_short": "{0}д",
"days": "{0} дней"
} }
} }

View File

@ -44,19 +44,19 @@
"mute": "Ігнорувати" "mute": "Ігнорувати"
}, },
"shoutbox": { "shoutbox": {
"title": "Для воплів" "title": "Міні-чат"
}, },
"about": { "about": {
"staff": "Адміністрація", "staff": "Адміністрація",
"mrf": { "mrf": {
"simple": { "simple": {
"media_nsfw_desc": "Даний інстанс примусово позначає вкладення з наступних інстансів як NSFW:", "media_nsfw_desc": "Даний інстанс примусово позначає медіа в наступних інстансах як NSFW:",
"media_nsfw": "Примусове визначення вкладення як дратівливого", "media_nsfw": "Примусове визначення медіа як дратівливого",
"media_removal_desc": "Поточний інстанс видаляє вкладення на перелічених інстансах:", "media_removal_desc": "Поточний інстанс видаляє медіа з дописів на перелічених інстансах:",
"media_removal": "Видалення вкладень", "media_removal": "Видалення медіа",
"ftl_removal_desc": "Цей інстанс видаляє перелічені інстанси з \"Усієї відомої мережі\":", "ftl_removal_desc": "Цей інстанс видаляє перелічені інстанси з \"Усієї відомої мережі\":",
"ftl_removal": "Видалення з \"Вся відома мережа\"", "ftl_removal": "Видалення з \"Усієї відомої мережі\"",
"quarantine_desc": "Поточний інстанс буде надсилати тільки публічні пости наступним інстансам:", "quarantine_desc": "Поточний інстанс буде надсилати тільки публічні дописи наступним інстансам:",
"quarantine": "Карантин", "quarantine": "Карантин",
"reject_desc": "Поточний інстанс не прийматиме повідомлення з перелічених інстансів:", "reject_desc": "Поточний інстанс не прийматиме повідомлення з перелічених інстансів:",
"accept": "Прийняти", "accept": "Прийняти",
@ -64,7 +64,7 @@
"accept_desc": "Поточний інстанс приймає повідомлення тільки з перелічених інстансів:", "accept_desc": "Поточний інстанс приймає повідомлення тільки з перелічених інстансів:",
"simple_policies": "Правила поточного інстансу" "simple_policies": "Правила поточного інстансу"
}, },
"mrf_policies_desc": "Правила MRF розповсюджуються на данний інстанс. Наступні правила активні:", "mrf_policies_desc": "Правила MRF розповсюджуються на даний інстанс. Наступні правила активні:",
"mrf_policies": "Активні правила MRF (модуль переписування повідомлень)", "mrf_policies": "Активні правила MRF (модуль переписування повідомлень)",
"keyword": { "keyword": {
"is_replaced_by": "→", "is_replaced_by": "→",
@ -83,7 +83,16 @@
"password": "Пароль", "password": "Пароль",
"logout": "Вийти", "logout": "Вийти",
"description": "Увійти за допомогою OAuth", "description": "Увійти за допомогою OAuth",
"login": "Увійти" "login": "Увійти",
"recovery_code": "Код відновлення",
"enter_recovery_code": "Введіть код відновлення",
"authentication_code": "Код автентифікації",
"heading": {
"recovery": "Двофакторне відновлення",
"totp": "Двофакторна автентифікація"
},
"enter_two_factor_code": "Введіть двофакторний код автентифікації",
"placeholder": "напр. stepan"
}, },
"importer": { "importer": {
"error": "Під час імпортування файлу сталася помилка.", "error": "Під час імпортування файлу сталася помилка.",
@ -95,5 +104,674 @@
"save_without_cropping": "Зберегти не обрізаючи", "save_without_cropping": "Зберегти не обрізаючи",
"crop_picture": "Обрізати малюнок", "crop_picture": "Обрізати малюнок",
"save": "Зберегти" "save": "Зберегти"
},
"polls": {
"expired": "Опитування закінчилось {0} тому",
"expires_in": "Опитування закінчується через {0}",
"expiry": "Термін опитування",
"multiple_choices": "Декілька варіантів",
"single_choice": "Один варіант",
"add_option": "Додати опцію",
"type": "Тип опитування",
"vote": "Проголосувати",
"votes": "голосів",
"option": "Відповідь",
"add_poll": "Додати опитування",
"not_enough_options": "Замало унікальних варіантів в опитуванні"
},
"notifications": {
"reacted_with": "додав реакцію: {0}",
"migrated_to": "мігрував на",
"no_more_notifications": "Немає більше сповіщень",
"repeated_you": "поширив(-ла) ваш допис",
"read": "Прочитано!",
"notifications": "Сповіщення",
"load_older": "Завантажити давніші сповіщення",
"follow_request": "хоче підписатись на вас",
"followed_you": "підписався(-лась) на вас",
"favorited_you": "вподобав(-ла) ваш допис",
"broken_favorite": "Невідомий допис, шукаю його…",
"error": "Помилка при оновленні сповіщень: {0}"
},
"nav": {
"chats": "Локальні балачки",
"timelines": "Стрічки",
"twkn": "Уся відома мережа",
"about": "Інформація",
"preferences": "Налаштування",
"friend_requests": "Запити послідовників",
"who_to_follow": "Кого відстежувати",
"search": "Пошук",
"user_search": "Пошук користувача",
"bookmarks": "Закладки",
"timeline": "Домашня стрічка",
"public_tl": "Публічна стрічка",
"dms": "Приватні повідомлення",
"interactions": "Взаємодії",
"mentions": "Згадування",
"back": "Назад",
"administration": "Адміністрування"
},
"media_modal": {
"next": "Наступна",
"previous": "Попередня"
},
"password_reset": {
"instruction": "Введіть свою адресу електронної пошти або ім’я користувача. Ми надішлемо вам посилання для скидання пароля.",
"placeholder": "Ваша електронна адреса або ім'я користувача",
"check_email": "Перевірте електронну пошту на наявність посилання для скидання пароля.",
"return_home": "Повернутися на головну сторінку",
"too_many_requests": "Ви досягли ліміту спроб, спробуйте ще раз пізніше.",
"password_reset_required_but_mailer_is_disabled": "Ви повинні скинути свій пароль, але скидання пароля вимкнено. Зверніться до адміністратора інстансу.",
"password_reset_disabled": "Скидання пароля вимкнено. Зверніться до адміністратора інстансу.",
"password_reset_required": "Для входу потрібно скинути пароль.",
"password_reset": "Відновити пароль",
"forgot_password": "Забули пароль?"
},
"chats": {
"you": "Ви:",
"message_user": "Повідомлення для {nickname}",
"delete": "Видалити",
"chats": "Чати",
"new": "Новий чат",
"empty_message_error": "Не вдається опублікувати порожнє повідомлення",
"more": "Більше",
"delete_confirm": "Ви дійсно хочете видалити це повідомлення?",
"error_loading_chat": "Під час завантаження чату сталася помилка.",
"error_sending_message": "Під час надсилання повідомлення сталася помилка.",
"empty_chat_list_placeholder": "У вас ще немає чатів. Почніть новий чат!"
},
"file_type": {
"audio": "Аудіо",
"video": "Відео",
"image": "Зображення",
"file": "Файл"
},
"display_date": {
"today": "Сьогодні"
},
"interactions": {
"load_older": "Завантажити давніші взаємодії",
"follows": "Нові підписки",
"favs_repeats": "Повтори та вподобайки",
"moves": "Міграції користувачів"
},
"errors": {
"storage_unavailable": "Pleroma не змогла отримати доступ до сховища браузеру. Ваша сесія та налаштування не будуть збережені, це може спричинити непередбачувані проблеми. Спробуйте увімкнути cookie."
},
"emoji": {
"stickers": "Стікери",
"custom": "Користувацькі емодзі",
"search_emoji": "Пошук емодзі",
"keep_open": "Тримати панель відкритою",
"add_emoji": "Додати емодзі",
"emoji": "Емодзі",
"load_all": "Всі {emojiAmount} эмодзі завантажуються",
"load_all_hint": "Завантажені перші {saneAmount} емодзі, завантаження всіх емодзі може призвести до проблем з продуктивністю.",
"unicode": "Стандартні емодзі"
},
"post_status": {
"content_type": {
"text/bbcode": "BBCode",
"text/markdown": "Markdown",
"text/html": "HTML",
"text/plain": "Простий текст"
},
"attachments_sensitive": "Позначити вкладення як чутливі",
"account_not_locked_warning_link": "замкнена",
"account_not_locked_warning": "Ваша обліковка не {0}. Будь-хто може відстежувати вас для перегляду дописів тільки для відстежувачів.",
"new_status": "Створити допис",
"direct_warning_to_first_only": "Цей допис побачать лише користувачі, що були згадані на початку повідомлення.",
"direct_warning_to_all": "Цей допис побачать всі згадані користувачі.",
"default": "Що нового?",
"content_warning": "Тема (необов'язково)",
"preview": "Попередній перегляд",
"posting": "Відправляється",
"empty_status_error": "Не можу опублікувати пустий статус без вкладень",
"scope": {
"unlisted": "Непублічний - цей допис буде відсутній у публічних стрічках",
"public": "Піблічний - цей допис побачать усі",
"private": "Для читачів - цей допис побачать лише ваші читачі",
"direct": "Приватний - цей допис побачать лише згадані користувачі"
},
"scope_notice": {
"unlisted": "Цей допис не буде видно в публічній стрічці та усій відомій мережі",
"private": "Цей допис побачать лише ваші підписники",
"public": "Цей допис бачитимуть усі"
},
"preview_empty": "Пустий",
"media_description_error": "Не вдалось оновити медіа, спробуйте ще раз",
"media_description": "Опис медіа"
},
"settings": {
"blocks_imported": "Блокування імпортовані! Їх обробка триватиме певний час.",
"block_import_error": "Помилка імпортування блокувань",
"block_import": "Імпорт блокувань",
"block_export_button": "Експорт блокувань у файл CSV",
"block_export": "Експорт блокувань",
"bio": "Про Вас",
"background": "Обкладинка",
"app_name": "Назва програми",
"follow_export": "Експортувати відстежуваних",
"filtering_explanation": "Усі статуси з цими словами будуть приховані, один на рядок",
"filtering": "Фільтрування",
"export_theme": "Зберегти переднабір",
"avatar_size_instruction": "Рекомендований мінімальний розмір для зображень аватара становить 150x150 пікселів.",
"delete_account_instructions": "Введіть ваш пароль в поле нижче, аби підтвердити видалення облікового запису.",
"delete_account_error": "Під час видалення вашого облікового запису виникла проблема. Якщо це трапляється постійно, будь ласка, зверніться до адміністратора вашого сервера.",
"delete_account_description": "Остаточно видалити ваш обліковий запис та усі ваші повідомлення.",
"delete_account": "Видалити обліковий запис",
"default_vis": "Обсяг видимості за замовчуванням",
"data_import_export_tab": "Імпорт/експорт даних",
"current_password": "Поточний пароль",
"confirm_new_password": "Підтвердіть новий пароль",
"composing": "Складання відповіді",
"collapse_subject": "Згорнути дописи з темами",
"changed_password": "Пароль успішно змінено!",
"change_password_error": "Не вдалося змінити пароль.",
"change_password": "Змінити пароль",
"cRed": "Червоний (Скасувати)",
"cGreen": "Зелений (Поширити)",
"cOrange": "Жовтогарячий (Вподобайки)",
"cBlue": "Блакитний (Відповісти, читати)",
"btnRadius": "Кнопки",
"blocks_tab": "Блокування",
"avatarRadius": "Аватарки",
"avatarAltRadius": "Аватарки у сповіщеннях",
"avatar": "Аватар",
"attachments": "Вкладення",
"attachmentRadius": "Вкладення",
"general": "Загальні",
"foreground": "Передній план",
"follows_imported": "Відстежуваних імпортовано! Їхня обробка потребує часу.",
"follow_import_error": "Помилка імпортування відстежуваних",
"follow_import": "Імпортувати відстежуваних",
"follow_export_button": "Експортувати відстежуваних до csv файлу",
"lock_account_description": "Обмежте свій обліковий запис лише схваленими читачами",
"links": "Посилання",
"limited_availability": "Недоступно у вашому браузері",
"invalid_theme_imported": "Вибраний файл не є темою Pleroma. У вашу тему не внесено жодних змін.",
"interfaceLanguage": "Мова оболонки",
"interface": "Оболонка",
"instance_default_simple": "(за замовчуванням)",
"instance_default": "(за замовчуванням: {value})",
"checkboxRadius": "Прапорці",
"inputRadius": "Поля вводу",
"import_theme": "Завантажити переднабір",
"import_followers_from_a_csv_file": "Імпортувати відстежуваних з csv файлу",
"import_blocks_from_a_csv_file": "Імпортувати заблокованих з csv файлу",
"hide_filtered_statuses": "Сховати відфільтровані статуси",
"hide_user_stats": "Приховувати статистику користувачів (напр. кількість відстежувачів)",
"hide_post_stats": "Приховувати статистику дописів (напр. кількість вподобаних)",
"use_one_click_nsfw": "Відкривати NSFW вкладення одним кліком миші",
"preload_images": "Передзавантажувати світлини",
"hide_isp": "Сховати панель з особливостями сервера",
"max_thumbnails": "Максимальна кількість мініатюр на повідомлення",
"hide_muted_posts": "Приховати повідомлення приглушених користувачів",
"hide_attachments_in_tl": "Приховувати вкладення у стрічці",
"hide_attachments_in_convo": "Приховувати вкладення у розмовах",
"mutes_tab": "Заглушені",
"loop_video_silent_only": "Зациклити відео без звуку (напр. Mastodon \"gifs\")",
"loop_video": "Зациклити відео",
"mfa": {
"verify": {
"desc": "Щоб увімкнути двофакторну автентифікацію, введіть код з вашого застосунку для двофакторної автентифікації:"
},
"scan": {
"desc": "Відскануйте цей QR-код за допомогою програми двофакторної автентифікації або введіть текстовий ключ:",
"title": "Сканування",
"secret_code": "Ключ"
},
"authentication_methods": "Методи автентифікації",
"recovery_codes_warning": "Запишіть ці коди і тримайте в безпечному місці - інакше ви їх ніколи не побачите. Якщо ви втратите доступ до OTP додатку - без резервних кодів ви не зможете отримати доступ до свого облікового запису.",
"waiting_a_recovery_codes": "Отримую резервні коди…",
"recovery_codes": "Резервні коди.",
"warning_of_generate_new_codes": "Після отримання нових резервних кодів, старі перестануть працювати.",
"generate_new_recovery_codes": "Згенерувати нові резервні коди",
"title": "Двофакторна автентифікація",
"confirm_and_enable": "Підтвердити та увімкнути OTP",
"wait_pre_setup_otp": "попереднє налаштування OTP",
"setup_otp": "Налаштування OTP",
"otp": "OTP"
},
"enter_current_password_to_confirm": "Введіть свій поточний пароль",
"security": "Безпека",
"domain_mutes": "Домени",
"discoverable": "Дозволити виявлення цього облікового запису в результатах пошуку та інших службах",
"mutes_and_blocks": "Заглушені та блоковані",
"changed_email": "Email успішно змінено!",
"change_email_error": "Сталася помилка під час зміни email.",
"change_email": "Змінити email",
"bot": "Це обліковий запис бота",
"import_mutes_from_a_csv_file": "Імпорт заглушених з csv файлу",
"mutes_imported": "Заглушені імпортовані! Їх обробка триватиме певний час.",
"mute_export_button": "Експорт заглушених у csv файл",
"mute_import_error": "Під час імпорту заглушених сталася помилка",
"mute_import": "Імпорт ігнорувань",
"mute_export": "Експорт ігнорувань",
"new_password": "Новий пароль",
"new_email": "Нова ел. пошта",
"name_bio": "Особисті дані",
"set_new_profile_banner": "Встановити новий банер",
"set_new_avatar": "Встановити новий аватар",
"security_tab": "Безпека",
"saving_ok": "Налаштування збережені",
"saving_err": "Помилка при збереженні налаштувань",
"reply_visibility_self": "Показувати лише адресовані мені відповіді",
"reply_visibility_following": "Показувати відповіді адресовані лише мені або користувачам, яких я читаю",
"reply_visibility_all": "Показати всі відповіді",
"replies_in_timeline": "Відповіді в стрічці",
"profile_tab": "Профіль",
"profile_banner": "Банер профілю",
"profile_background": "Обкладинка профілю",
"revoke_token": "Відкликати",
"oauth_tokens": "OAuth ключі",
"token": "Ключ",
"refresh_token": "Оновити ключ",
"valid_until": "Діє до",
"use_contain_fit": "Не обрізати краї мініатюр",
"name": "Ім'я",
"profile_fields": {
"value": "Зміст",
"name": "Назва",
"add_field": "Додати поле",
"label": "Метадані профілю"
},
"play_videos_in_modal": "Відтворювати відео у спливаючій рамці",
"accent": "Акцент",
"chatMessageRadius": "Повідомлення в бесіді",
"notification_mutes": "Щоб перестати отримувати сповіщення від певного користувача, заглушіть його.",
"user_mutes": "Користувачі",
"no_mutes": "Заглушені відсутні",
"emoji_reactions_on_timeline": "Показувати реакції емоджі на стрічці",
"pad_emoji": "Додавати простір з обидвох сторін емоджі, при додаванні з панелі",
"allow_following_move": "Дозволити автостеження при переміщенні на інший інстанс",
"set_new_profile_background": "Встановити нову обкладинку профілю",
"radii_help": "Радіус заокруглення кутів інтерфейсу (в пікселях)",
"presets": "Переднабір",
"show_moderator_badge": "Показувати значок модератора в моєму профілі",
"show_admin_badge": "Показувати значок адміністратора в моєму профілі",
"hide_followers_description": "Не показувати хто підписаний на мене",
"hide_follows_description": "Не показувати на кого я підписаний",
"no_rich_text_description": "Видалення всього форматування тексту з усіх дописів",
"notification_visibility_emoji_reactions": "Реакції",
"notification_visibility_moves": "Міграція користувача",
"notification_visibility_repeats": "Поширення допису",
"notification_visibility_mentions": "Згадування",
"notification_visibility_likes": "Вподобайки",
"notification_visibility_follows": "Нові підписки",
"notification_visibility": "Отримувати сповіщення про наступні події",
"settings": "Налаштування",
"panelRadius": "Панелі",
"text": "Текст",
"tooltipRadius": "Підказки/попередження",
"values": {
"true": "так",
"false": "ні"
},
"user_settings": "Користувацькі налаштування",
"upload_a_photo": "Завантажити фото",
"theme": "Тема",
"style": {
"switcher": {
"keep_fonts": "Залишити шрифти",
"keep_roundness": "Залишити скруглення",
"keep_opacity": "Залишити прозорості",
"keep_shadows": "Залишити тіні",
"keep_color": "Залишити кольори",
"use_source": "Нова версія",
"use_snapshot": "Стара версія",
"load_theme": "Завантажити тему",
"reset": "Скинути",
"clear_all": "Очистити все",
"help": {
"older_version_imported": "Імпортований файл було створено в старішій версії FE.",
"future_version_imported": "Імпортований файл було створено в новішій версії FE.",
"v2_imported": "Файл, який ви імпортували, був створений для старішої версії інтерфейсу Pleroma. Ми намагаємось покращити сумісність, але все одно можуть бути розбіжності.",
"upgraded_from_v2": "PleromaFE було оновлено, тема може дещо відрізнятися від тієї, яку ви пам’ятаєте.",
"snapshot_source_mismatch": "Конфлікт версій: Швидше за все, FE повернуто до попередньої версії та оновлено знову, якщо ви змінили тему за допомогою старішої версії FE, швидше за все, ви хочете використовувати стару версію, інакше використовуйте нову версію.",
"migration_napshot_gone": "З якоїсь причини знімок зник, деякі речі можуть бути не такими, як ви пам’ятаєте.",
"migration_snapshot_ok": "Для безпеки, знімок теми завантажено. Ви можете спробувати завантажити дані теми.",
"fe_downgraded": "Версію PleromaFE змінено на старшу.",
"fe_upgraded": "Двигун теми PleromaFE оновлено.",
"snapshot_missing": "У файлі немає жодного знімка теми, тому він може виглядати інакше, ніж передбачалося спочатку.",
"snapshot_present": "Знімок теми завантажено, тому всі значення було перезаписано. Натомість ви можете завантажити правильні дані теми."
},
"keep_as_is": "Залишити як є",
"clear_opacity": "Очистити прозорість",
"save_load_hint": "Параметри \"Зберегти\" зберігають встановлені на даний момент параметри під час вибору або завантаження тем, вони також зберігають зазначені параметри під час експорту теми. Коли всі прапорці знято, експортування теми збереже все."
},
"common": {
"color": "Колір",
"contrast": {
"context": {
"text": "для тексту",
"18pt": "для великого (18pt+) тексту"
},
"level": {
"bad": "Не відповідає жодним вимогам щодо доступності",
"aaa": "відповідає вимогам рівня ААA (рекомендований)",
"aa": "відповідає вимогам рівня АА (мінімальний)"
},
"hint": "Рівень контрасту: {ratio}, {level} {context}"
},
"opacity": "Прозорість"
},
"preview": {
"mono": "змісту",
"text": "Трохи більше {0} та {1}",
"button": "Кнопка",
"error": "Приклад помилки",
"content": "Зміст",
"header": "Попередній перегляд",
"link": "невеличке посилання",
"header_faint": "Це нормально",
"input": "Що нового?",
"checkbox": "Я переглянув умови використання",
"fine_print": "Прочитайте наш {0} аби нічого нового не дізнатись!",
"faint_link": "корисний підручник"
},
"shadows": {
"components": {
"button": "Кнопка",
"input": "Поле вводу",
"panel": "Панель",
"panelHeader": "Заголовок панелі",
"avatarStatus": "Аватар користувача (в стрічці)",
"avatar": "Аватар користувача (профіль)",
"buttonPressedHover": "Кнопка (натиснута + наведенний курсор)",
"buttonPressed": "Кнопка (натиснута)",
"buttonHover": "Кнопка (при наведенні)",
"popup": "Спливаючі вікна та підказки"
},
"component": "Компонент",
"filter_hint": {
"inset_classic": "Тіні спрямовані всередину використовуватимуть {0}",
"spread_zero": "Тіні з поширенням > 0 відображатимуться так, ніби було встановлено нуль",
"avatar_inset": "Зауважте, що використання як вставних, так і невставних тіней на аватарах може привести до непередбачуваних результатів із прозорими аватарами.",
"drop_shadow_syntax": "{0} не підтримує параметр {1} та ключове слово {2}.",
"always_drop_shadow": "Увага! Ця тінь завжди використовує {0}, якщо підтримується браузером."
},
"inset": "Всередину",
"blur": "Розмиття",
"shadow_id": "Тінь №{value}",
"override": "Перевизначити",
"_tab_label": "Тінь і підсвічування",
"hintV3": "Для тіней ви також можете використовувати позначення {0} для використання іншого кольорового слота."
},
"fonts": {
"components": {
"input": "Поля вводу",
"interface": "Інтерфейс",
"postCode": "Моноширинний текст в дописі (форматований текст)",
"post": "Текст допису"
},
"_tab_label": "Шрифти",
"size": "Розмір (в пікселях)",
"custom": "Нестандартний",
"weight": "Товщина",
"family": "Назва шрифту",
"help": "Виберіть шрифт для елементів інтерфейсу. Для \"нестандартного\" потрібно ввести точну назву шрифту, так як вона відображається в системі."
},
"advanced_colors": {
"alert_warning": "Попередження",
"underlay": "Тло",
"inputs": "Поля входу",
"buttons": "Кнопки",
"borders": "Кордони",
"top_bar": "Верхня панель",
"panel_header": "Заголовок панелі",
"badge_notification": "Сповіщення",
"popover": "Підказки, меню, поповери",
"badge": "Тло значків",
"post": "Дописи/Дані користувачів",
"alert_neutral": "Нейтральний",
"alert_error": "Помилки",
"alert": "Фон сповіщень",
"_tab_label": "Додатково",
"selectedPost": "Вибраний допис",
"highlight": "Виділені елементи",
"poll": "Діаграма опитування",
"icons": "Іконки",
"faint_text": "Затемнений текст",
"chat": {
"border": "Кайма",
"outgoing": "Вихідні повідомлення",
"incoming": "Вхідні повідомлення"
},
"toggled": "Переключено",
"disabled": "Вимкнено",
"selectedMenu": "Вибраний пункт меню",
"tabs": "Вкладки",
"pressed": "Натиснуто"
},
"common_colors": {
"rgbo": "Піктограми, акценти, значки",
"foreground_hint": "Перегляньте вкладку \"Додатково\" для більшого контролю",
"main": "Загальні кольори",
"_tab_label": "Загальні"
},
"radii": {
"_tab_label": "Округлість"
}
},
"enable_web_push_notifications": "Увімкнути web push-сповіщення",
"notifications": "Сповіщення",
"fun": "Розваги",
"notification_setting_privacy": "Приватність",
"notification_setting_filters": "Фільтри",
"reset_avatar": "Скинути аватар",
"reset_profile_background": "Скинути обкладинку профілю",
"reset_avatar_confirm": "Ви дійсно хочете скинути аватар?",
"reset_profile_banner": "Скинули банер профілю",
"hide_follows_count_description": "Не показувати на кого я підписаний",
"reset_banner_confirm": "Ви дійсно хочете скинути банер?",
"reset_background_confirm": "Ви дійсно хочете скинути обкладинку?",
"subject_line_behavior": "Вигляд теми при відповіді",
"subject_input_always_show": "Завжди показувати поле для вводу теми",
"minimal_scopes_mode": "Мінімізувати набір варіантів осягу для допису",
"scope_copy": "Копіювати осяг при відповіді (завжди ввімкнено для особистих повідомлень)",
"search_user_to_mute": "Шукайте кого ви хочете заглушити",
"search_user_to_block": "Шукайте кого ви хочете заблокувати",
"autohide_floating_post_button": "Автоматично ховати кнопку \"Новий допис\" (в мобільній версії)",
"pause_on_unfocused": "Призупинити трансляцію, коли вкладка неактивна",
"hide_followers_count_description": "Не показувати кількість читачів",
"notification_blocks": "Блокування користувача зупиняє всі сповіщення від нього, а також скасовує його відстеження.",
"notification_setting_hide_notification_contents": "Ховати відправника та вміст push-сповіщень",
"notification_setting_block_from_strangers": "Блокувати сповіщення від користувачів за якими ви не слідкуєте",
"type_domains_to_mute": "Пошук доменів для заглушення",
"nsfw_clickthrough": "Увімкнути приховування NSFW медіа",
"greentext": "Мемний текст",
"virtual_scrolling": "Оптимізувати оновлення стрчки",
"theme_help_v2_2": "Піктограми під деякими записами є показниками контрасту між фоном та текстом. Коли ви наведете на них курсор, ви отримаєте детальну інформацію. Пам'ятайте, якщо ви використовуєте прозорість, індикатори показують найгірший варіант.",
"theme_help_v2_1": "Ви також можете замінити кольори та видимість окремих компонентів, перемикаючи прапорці, використовуйте \"Очистити все\", щоб видалити всі заміни.",
"theme_help": "Використовувати шістнадцяткові коди кольору (#rrggbb) щоб редагувати тему.",
"no_blocks": "Блокування відсутні",
"subject_line_mastodon": "Як в mastodon: просто скопіювати",
"subject_line_email": "Як в email: \"re: тема\"",
"useStreamingApiWarning": "(Не рекомендується, експериментально, повідомлення можуть зникати)",
"useStreamingApi": "Отримувати повідомлення та сповіщення в режимі реального часу",
"streaming": "Ввімкнути автоматичне завантаження нових повідомлень при прокручуванні вгору",
"stop_gifs": "Відтворювати GIF анімації тільки при наведенні",
"post_status_content_type": "Тип вмісту допису",
"subject_line_noop": "Не копіювати",
"version": {
"frontend_version": "Версія фронтенду",
"backend_version": "Версія бекенду",
"title": "Версія"
}
},
"selectable_list": {
"select_all": "Вибрати все"
},
"remote_user_resolver": {
"error": "Не знайдено.",
"searching_for": "Шукаю",
"remote_user_resolver": "Пошукова система для віддалених користувачів"
},
"registration": {
"validations": {
"password_confirmation_match": "пароль та підтвердження паролю мають співпадати",
"password_confirmation_required": "не може бути порожнім",
"password_required": "не може бути порожнім",
"email_required": "не може бути порожнім",
"fullname_required": "не може бути порожнім",
"username_required": "не може бути порожнім"
},
"bio_placeholder": "напр.\nНаш народ завжди прагне волі для себе і бажає її для інших народів. Він боровся і бореться за правду і справедливість. Ми хочемо жити у згоді і взаємному шануванні з усіми народами доброї волі. Такі самі права визнаємо за іншими народами, за які боремося для себе.",
"fullname_placeholder": "напр. Степан Бандера",
"username_placeholder": "напр. stepan",
"new_captcha": "Натисніть на зображення, щоб оновити код, якщо він нерозбірливий",
"token": "Ключ запрошення",
"registration": "Реєстрація",
"password_confirm": "Підтвердження паролю",
"fullname": "Відображене ім'я",
"email": "Ел. пошта",
"bio": "Про себе",
"captcha": "CAPTCHA"
},
"who_to_follow": {
"who_to_follow": "На кого підписатися",
"more": "Більше"
},
"tool_tip": {
"repeat": "Поширити",
"reply": "Відповісти",
"add_reaction": "Додати реакцію",
"user_settings": "Налаштування користувача",
"favorite": "Подобається",
"reject_follow_request": "Відхилити запит на підписку",
"accept_follow_request": "Прийняти запит на підписку",
"media_upload": "Завантажити медіа"
},
"upload": {
"error": {
"base": "Збій при завантаженні.",
"file_too_big": "Файл завеликий [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",
"default": "Спробуйте ще раз пізніше"
},
"file_size_units": {
"TiB": "ТіБ",
"GiB": "ГіБ",
"MiB": "МіБ",
"KiB": "КіБ",
"B": "Б"
}
},
"time": {
"weeks_short": "{0}тижд.",
"week_short": "{0}тижд.",
"years_short": "{0}р",
"year_short": "{0}р",
"years": "{0} роки",
"year": "{0} рік",
"weeks": "{0} тижднів",
"week": "{0} тиждень",
"second_short": "{0}с",
"second": "{0} секунда",
"now_short": "щойно",
"now": "щойно",
"months_short": "{0}міс.",
"month_short": "{0}міс.",
"months": "{0} місяці",
"month": "{0} місяць",
"minutes_short": "{0}хв",
"hours_short": "{0}год",
"hour_short": "{0}год",
"day_short": "{0}д",
"minute_short": "{0}хв",
"minutes": "{0} хвилини",
"minute": "{0} хвилина",
"in_past": "{0} тому",
"hours": "{0} години",
"hour": "{0} година",
"days_short": "{0}д",
"days": "{0} дні",
"day": "{0} день",
"seconds_short": "{0}с",
"seconds": "{0} секунди",
"in_future": "через {0}"
},
"search": {
"no_results": "Немає результатів",
"hashtags": "Хештеги",
"people": "Люди"
},
"user_card": {
"statuses": "Дописи",
"message": "Повідомлення",
"follow": "Підписатись",
"follow_unfollow": "Відписатись",
"follow_again": "Відправити запит знову?",
"follow_sent": "Запит відправлено!",
"blocked": "Заблоковано!",
"admin_menu": {
"activate_account": "Активувати обліковий запис",
"deactivate_account": "Деактивувати обліковий запис",
"delete_account": "Видалити аккаунт",
"moderation": "Модерація",
"delete_user_confirmation": "Ви абсолютно впевнені? Цю дію неможливо буде скасовувати.",
"delete_user": "Видалити обліковий запис",
"strip_media": "Вилучити медіа з дописів користувача",
"force_nsfw": "Позначити всі дописи як NSFW"
},
"deny": "Відмовити",
"block": "Заблокувати",
"approve": "Схвалити",
"mention": "Згадати",
"unsubscribe": "Відписатись",
"subscribe": "Підписатись",
"report": "Поскаржитись",
"per_day": "на день",
"favorites": "Вподобання",
"media": "Медіа"
},
"status": {
"copy_link": "Скопіювати посилання на допис",
"status_unavailable": "Допис недоступний",
"replies_list": "Відповіді:",
"delete_confirm": "Ви дійсно хочете видалити цей допис?",
"delete": "Видалити допис",
"pin": "Закріпити в профілі",
"status_deleted": "Цей допис був видалений",
"favorites": "Вподобане",
"hide_content": "Сховати вміст",
"show_content": "Показати вміст",
"hide_full_subject": "Сховати всю тему",
"show_full_subject": "Показати всю тему",
"thread_muted_and_words": ", має слова:",
"mute_conversation": "Заглушити розмову",
"reply_to": "Відповідь",
"unbookmark": "Видалити із закладок",
"bookmark": "Додати до закладок",
"pinned": "Закріплено",
"unpin": "Відкріпити від профілю",
"repeats": "Повтори"
},
"timeline": {
"no_more_statuses": "Більше немає дописів",
"up_to_date": "Оновлено",
"reload": "Оновити",
"show_new": "Показати нові",
"load_older": "Завантажити давніші дописи",
"error": "Помилка завантаження стрічки: {0}",
"collapse": "Згорнути",
"conversation": "Розмова",
"no_statuses": "Ніяких статусів",
"repeated": "поширив(-ла)",
"no_retweet_hint": "Запис, позначено як \"тільки для відстежувачів\" або \"особисте\" і тому не може бути повторений"
},
"user_reporting": {
"submit": "Відправити",
"forward_to": "Переслати до {0}",
"forward_description": "Цей обліковий запис належить іншому інстансу. Відправити їм копію скарги?",
"additional_comments": "Додаткове пояснення",
"add_comment_description": "Скарга буде надіслана модераторам вашого інстансу. Нижче Ви можете додати пояснення чому ви вирішили поскаржитись на цей обліковий запис:",
"title": "Поскаржитись на {0}",
"generic_error": "Виникла помилка під час обробки вашого запиту."
},
"user_profile": {
"profile_loading_error": "Вибачте, під час завантаження цього профілю виникла помилка.",
"profile_does_not_exist": "Вибачте, цей профіль більше не існує."
} }
} }

View File

@ -20,6 +20,7 @@ export const defaultState = {
customTheme: undefined, customTheme: undefined,
customThemeSource: undefined, customThemeSource: undefined,
hideISP: false, hideISP: false,
hideInstanceWallpaper: false,
// bad name: actually hides posts of muted USERS // bad name: actually hides posts of muted USERS
hideMutedPosts: undefined, // instance default hideMutedPosts: undefined, // instance default
collapseMessageWithSubject: undefined, // instance default collapseMessageWithSubject: undefined, // instance default

View File

@ -127,7 +127,7 @@ const instance = {
imageUrl: false, imageUrl: false,
replacement: values[key] replacement: values[key]
} }
}).sort((a, b) => a.displayText - b.displayText) }).sort((a, b) => a.name > b.name ? 1 : -1)
commit('setInstanceOption', { name: 'emoji', value: emoji }) commit('setInstanceOption', { name: 'emoji', value: emoji })
} else { } else {
throw (res) throw (res)
@ -154,7 +154,7 @@ const instance = {
} }
// Technically could use tags but those are kinda useless right now, // Technically could use tags but those are kinda useless right now,
// should have been "pack" field, that would be more useful // should have been "pack" field, that would be more useful
}).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : 0) }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)
commit('setInstanceOption', { name: 'customEmoji', value: emoji }) commit('setInstanceOption', { name: 'customEmoji', value: emoji })
} else { } else {
throw (res) throw (res)

View File

@ -162,7 +162,12 @@ const updateProfileImages = ({ credentials, avatar = null, banner = null, backgr
body: form body: form
}) })
.then((data) => data.json()) .then((data) => data.json())
.then((data) => parseUser(data)) .then((data) => {
if (data.error) {
throw new Error(data.error)
}
return parseUser(data)
})
} }
const updateProfile = ({ credentials, params }) => { const updateProfile = ({ credentials, params }) => {

View File

@ -1,6 +1,7 @@
import escape from 'escape-html' import escape from 'escape-html'
import parseLinkHeader from 'parse-link-header' import parseLinkHeader from 'parse-link-header'
import { isStatusNotification } from '../notification_utils/notification_utils.js' import { isStatusNotification } from '../notification_utils/notification_utils.js'
import punycode from 'punycode.js'
/** NOTICE! ** /** NOTICE! **
* Do not initialize UI-generated data here. * Do not initialize UI-generated data here.
@ -197,6 +198,19 @@ export const parseUser = (data) => {
output.rights = output.rights || {} output.rights = output.rights || {}
output.notification_settings = output.notification_settings || {} output.notification_settings = output.notification_settings || {}
// Convert punycode to unicode
if (output.screen_name.includes('@')) {
const parts = output.screen_name.split('@')
console.log(parts)
let unicodeDomain = punycode.toUnicode(parts[1])
if (unicodeDomain !== parts[1]) {
// Add some identifier so users can potentially spot spoofing attempts:
// lain.com and xn--lin-6cd.com would appear identical otherwise.
unicodeDomain = '🌏' + unicodeDomain
output.screen_name = [parts[0], unicodeDomain].join('@')
}
}
return output return output
} }
@ -280,7 +294,7 @@ export const parseStatus = (data) => {
if (output.poll) { if (output.poll) {
output.poll.options = (output.poll.options || []).map(field => ({ output.poll.options = (output.poll.options || []).map(field => ({
...field, ...field,
title_html: addEmojis(field.title, data.emojis) title_html: addEmojis(escape(field.title), data.emojis)
})) }))
} }
output.pinned = data.pinned output.pinned = data.pinned

View File

@ -84,6 +84,10 @@ export const SLOT_INHERITANCE = {
opacity: 'bg', opacity: 'bg',
priority: 1 priority: 1
}, },
wallpaper: {
depends: ['bg'],
color: (mod, bg) => brightness(-2 * mod, bg).rgb
},
fg: { fg: {
depends: [], depends: [],
priority: 1 priority: 1

View File

@ -267,6 +267,7 @@
}, },
"colors": { "colors": {
"bg": "#c0c0c0", "bg": "#c0c0c0",
"wallpaper": "#008080",
"text": "#000000", "text": "#000000",
"link": "#0000ff", "link": "#0000ff",
"accent": "#000080", "accent": "#000080",

View File

@ -258,6 +258,7 @@
}, },
"colors": { "colors": {
"bg": "#c0c0c0", "bg": "#c0c0c0",
"wallpaper": "#008080",
"text": "#000000", "text": "#000000",
"link": "#0000ff", "link": "#0000ff",
"accent": "#000080", "accent": "#000080",

View File

@ -240,6 +240,7 @@
}, },
"colors": { "colors": {
"bg": "#d6d6ce", "bg": "#d6d6ce",
"wallpaper": "#396ba5",
"text": "#000000", "text": "#000000",
"link": "#0000ff", "link": "#0000ff",
"accent": "#0a246a", "accent": "#0a246a",

View File

@ -311,6 +311,12 @@ describe('API Entities normalizer', () => {
expect(parseUser(user)).to.have.property('hide_followers_count', false) expect(parseUser(user)).to.have.property('hide_followers_count', false)
expect(parseUser(user)).to.have.property('hide_follows_count', true) expect(parseUser(user)).to.have.property('hide_follows_count', true)
}) })
it('converts IDN to unicode and marks it as internatonal', () => {
const user = makeMockUserMasto({ acct: 'lain@xn--lin-6cd.com' })
expect(parseUser(user)).to.have.property('screen_name').that.equal('lain@🌏lаin.com')
})
}) })
// We currently use QvitterAPI notifications only, and especially due to MastoAPI lacking is_seen, support for MastoAPI // We currently use QvitterAPI notifications only, and especially due to MastoAPI lacking is_seen, support for MastoAPI

461
yarn.lock
View File

@ -951,6 +951,11 @@
remark "^12.0.0" remark "^12.0.0"
unist-util-find-all-after "^3.0.1" unist-util-find-all-after "^3.0.1"
"@testim/chrome-version@^1.0.7":
version "1.0.7"
resolved "https://registry.yarnpkg.com/@testim/chrome-version/-/chrome-version-1.0.7.tgz#0cd915785ec4190f08a3a6acc9b61fc38fb5f1a9"
integrity sha512-8UT/J+xqCYfn3fKtOznAibsHpiuDshCb0fwgWxRazTT19Igp9ovoXMPhXyLD6m3CKQGTMHgqoxaFfMWaL40Rnw==
"@types/color-name@^1.1.1": "@types/color-name@^1.1.1":
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
@ -961,6 +966,11 @@
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
"@types/node@*":
version "14.14.19"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.19.tgz#5135176a8330b88ece4e9ab1fdcfc0a545b4bab4"
integrity sha512-4nhBPStMK04rruRVtVc6cDqhu7S9GZai0fpXgPXrFpcPX6Xul8xnrjSdGB4KPBVYG/R5+fXWdCM8qBoiULWGPQ==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
@ -976,6 +986,13 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
"@types/yauzl@^2.9.1":
version "2.9.1"
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af"
integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==
dependencies:
"@types/node" "*"
"@ungap/event-target@^0.1.0": "@ungap/event-target@^0.1.0":
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/@ungap/event-target/-/event-target-0.1.0.tgz#88d527d40de86c4b0c99a060ca241d755999915b" resolved "https://registry.yarnpkg.com/@ungap/event-target/-/event-target-0.1.0.tgz#88d527d40de86c4b0c99a060ca241d755999915b"
@ -1182,6 +1199,21 @@ agent-base@2:
extend "~3.0.0" extend "~3.0.0"
semver "~5.0.1" semver "~5.0.1"
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
dependencies:
debug "4"
aggregate-error@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
dependencies:
clean-stack "^2.0.0"
indent-string "^4.0.0"
ajv-errors@^1.0.0: ajv-errors@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
@ -1209,15 +1241,6 @@ ajv@^6.10.2:
json-schema-traverse "^0.4.1" json-schema-traverse "^0.4.1"
uri-js "^4.2.2" uri-js "^4.2.2"
ajv@^6.5.5:
version "6.6.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d"
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
@ -1338,21 +1361,11 @@ array-slice@^0.2.3:
version "0.2.3" version "0.2.3"
resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
array-union@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
dependencies:
array-uniq "^1.0.1"
array-union@^2.1.0: array-union@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
array-uniq@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
array-unique@^0.2.1: array-unique@^0.2.1:
version "0.2.1" version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
@ -1383,16 +1396,6 @@ asn1.js@^4.0.0:
inherits "^2.0.1" inherits "^2.0.1"
minimalistic-assert "^1.0.0" minimalistic-assert "^1.0.0"
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
dependencies:
safer-buffer "~2.1.0"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
assert@^1.1.1: assert@^1.1.1:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
@ -1443,10 +1446,6 @@ async@^2.5.0:
dependencies: dependencies:
lodash "^4.17.10" lodash "^4.17.10"
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
atob@^2.1.1: atob@^2.1.1:
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@ -1475,13 +1474,12 @@ autoprefixer@^9.8.0:
postcss "^7.0.32" postcss "^7.0.32"
postcss-value-parser "^4.1.0" postcss-value-parser "^4.1.0"
aws-sign2@~0.7.0: axios@^0.21.0:
version "0.7.0" version "0.21.1"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==
aws4@^1.8.0: dependencies:
version "1.8.0" follow-redirects "^1.10.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0" version "6.26.0"
@ -1675,12 +1673,6 @@ base@^0.11.1:
mixin-deep "^1.2.0" mixin-deep "^1.2.0"
pascalcase "^0.1.1" pascalcase "^0.1.1"
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
dependencies:
tweetnacl "^0.14.3"
better-assert@~1.0.0: better-assert@~1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
@ -1880,6 +1872,11 @@ buffer-alloc@^1.2.0:
buffer-alloc-unsafe "^1.1.0" buffer-alloc-unsafe "^1.1.0"
buffer-fill "^1.0.0" buffer-fill "^1.0.0"
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
buffer-fill@^1.0.0: buffer-fill@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
@ -2042,10 +2039,6 @@ caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001097:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001107.tgz#809360df7a5b3458f627aa46b0f6ed6d5239da9a" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001107.tgz#809360df7a5b3458f627aa46b0f6ed6d5239da9a"
integrity sha512-86rCH+G8onCmdN4VZzJet5uPELII59cUzDphko3thQFgAQG1RNa+sVLDoALIhRYmflo5iSIzWY3vu1XTWtNMQQ== integrity sha512-86rCH+G8onCmdN4VZzJet5uPELII59cUzDphko3thQFgAQG1RNa+sVLDoALIhRYmflo5iSIzWY3vu1XTWtNMQQ==
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
ccount@^1.0.0: ccount@^1.0.0:
version "1.0.5" version "1.0.5"
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17"
@ -2156,14 +2149,18 @@ chrome-trace-event@^1.0.0:
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
chromedriver@^2.21.2: chromedriver@^87.0.1:
version "2.45.0" version "87.0.4"
resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-2.45.0.tgz#8c1b158adbbd3e0ca3f7af19d459082245554378" resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-87.0.4.tgz#749f69e9427880abff19c1838258c35238397e50"
integrity sha512-kD4N/L8c0nAzh1eEAiAbEIq6Pn5TvGvckODvP5dPqF90q5tPiAJZCoWWSOUV/mrPxiodjHPfmNeOfGERHugzug==
dependencies: dependencies:
del "^3.0.0" "@testim/chrome-version" "^1.0.7"
extract-zip "^1.6.7" axios "^0.21.0"
mkdirp "^0.5.1" del "^6.0.0"
request "^2.88.0" extract-zip "^2.0.1"
https-proxy-agent "^5.0.0"
mkdirp "^1.0.4"
proxy-from-env "^1.1.0"
tcp-port-used "^1.0.1" tcp-port-used "^1.0.1"
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
@ -2198,6 +2195,11 @@ clean-css@4.2.x:
dependencies: dependencies:
source-map "~0.6.0" source-map "~0.6.0"
clean-stack@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
cli-cursor@^1.0.2: cli-cursor@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
@ -2338,12 +2340,6 @@ combine-lists@^1.0.0:
dependencies: dependencies:
lodash "^4.5.0" lodash "^4.5.0"
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
dependencies:
delayed-stream "~1.0.0"
commander@2.17.x, commander@~2.17.1: commander@2.17.x, commander@~2.17.1:
version "2.17.1" version "2.17.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
@ -2378,7 +2374,7 @@ concat-map@0.0.1:
version "0.0.1" version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
concat-stream@1.6.2, concat-stream@^1.5.0: concat-stream@^1.5.0:
version "1.6.2" version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
dependencies: dependencies:
@ -2480,7 +2476,7 @@ core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0:
version "2.6.2" version "2.6.2"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.2.tgz#267988d7268323b349e20b4588211655f0e83944" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.2.tgz#267988d7268323b349e20b4588211655f0e83944"
core-util-is@1.0.2, core-util-is@~1.0.0: core-util-is@~1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -2698,12 +2694,6 @@ cyclist@~0.2.2:
version "0.2.2" version "0.2.2"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
dependencies:
assert-plus "^1.0.0"
data-uri-to-buffer@1: data-uri-to-buffer@1:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835"
@ -2746,6 +2736,13 @@ debug@2.6.8:
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
debug@4:
version "4.3.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
dependencies:
ms "2.1.2"
debug@4.1.0: debug@4.1.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
@ -2837,20 +2834,19 @@ degenerator@~1.0.2:
escodegen "1.x.x" escodegen "1.x.x"
esprima "3.x.x" esprima "3.x.x"
del@^3.0.0: del@^6.0.0:
version "3.0.0" version "6.0.0"
resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952"
integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==
dependencies: dependencies:
globby "^6.1.0" globby "^11.0.1"
is-path-cwd "^1.0.0" graceful-fs "^4.2.4"
is-path-in-cwd "^1.0.0" is-glob "^4.0.1"
p-map "^1.1.1" is-path-cwd "^2.2.0"
pify "^3.0.0" is-path-inside "^3.0.2"
rimraf "^2.2.8" p-map "^4.0.0"
rimraf "^3.0.2"
delayed-stream@~1.0.0: slash "^3.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
delegates@^1.0.0: delegates@^1.0.0:
version "1.0.0" version "1.0.0"
@ -3010,13 +3006,6 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0" readable-stream "^2.0.0"
stream-shift "^1.0.0" stream-shift "^1.0.0"
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
dependencies:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
ee-first@1.1.1: ee-first@1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@ -3520,7 +3509,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
assign-symbols "^1.0.0" assign-symbols "^1.0.0"
is-extendable "^1.0.1" is-extendable "^1.0.1"
extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: extend@3, extend@^3.0.0, extend@~3.0.0:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
@ -3551,18 +3540,16 @@ extglob@^2.0.4:
snapdragon "^0.8.1" snapdragon "^0.8.1"
to-regex "^3.0.1" to-regex "^3.0.1"
extract-zip@^1.6.7: extract-zip@^2.0.1:
version "1.6.7" version "2.0.1"
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
dependencies: dependencies:
concat-stream "1.6.2" debug "^4.1.1"
debug "2.6.9" get-stream "^5.1.0"
mkdirp "0.5.1" yauzl "^2.10.0"
yauzl "2.4.1" optionalDependencies:
"@types/yauzl" "^2.9.1"
extsprintf@1.3.0, extsprintf@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
fast-deep-equal@^2.0.1: fast-deep-equal@^2.0.1:
version "2.0.1" version "2.0.1"
@ -3604,9 +3591,10 @@ fastq@^1.6.0:
dependencies: dependencies:
reusify "^1.0.4" reusify "^1.0.4"
fd-slicer@~1.0.1: fd-slicer@~1.1.0:
version "1.0.1" version "1.1.0"
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
dependencies: dependencies:
pend "~1.2.0" pend "~1.2.0"
@ -3763,6 +3751,11 @@ follow-redirects@^1.0.0:
dependencies: dependencies:
debug "=3.1.0" debug "=3.1.0"
follow-redirects@^1.10.0:
version "1.13.1"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7"
integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==
for-in@^1.0.1, for-in@^1.0.2: for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@ -3773,18 +3766,6 @@ for-own@^0.1.4:
dependencies: dependencies:
for-in "^1.0.1" for-in "^1.0.1"
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.6"
mime-types "^2.1.12"
formatio@1.2.0: formatio@1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb"
@ -3890,6 +3871,13 @@ get-stream@^4.0.0:
dependencies: dependencies:
pump "^3.0.0" pump "^3.0.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==
dependencies:
pump "^3.0.0"
get-uri@2: get-uri@2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578"
@ -3905,12 +3893,6 @@ get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6" version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
dependencies:
assert-plus "^1.0.0"
glob-base@^0.3.0: glob-base@^0.3.0:
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
@ -3970,7 +3952,7 @@ glob@^5.0.15:
once "^1.3.0" once "^1.3.0"
path-is-absolute "^1.0.0" path-is-absolute "^1.0.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3: glob@^7.0.0, glob@^7.1.1, glob@^7.1.3:
version "7.1.3" version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
dependencies: dependencies:
@ -4028,16 +4010,6 @@ globby@^11.0.1:
merge2 "^1.3.0" merge2 "^1.3.0"
slash "^3.0.0" slash "^3.0.0"
globby@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
dependencies:
array-union "^1.0.1"
glob "^7.0.3"
object-assign "^4.0.1"
pify "^2.0.0"
pinkie-promise "^2.0.0"
globjoin@^0.1.4: globjoin@^0.1.4:
version "0.1.4" version "0.1.4"
resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
@ -4054,6 +4026,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
version "4.1.15" version "4.1.15"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
graceful-fs@^4.2.4:
version "4.2.4"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
"graceful-readlink@>= 1.0.0": "graceful-readlink@>= 1.0.0":
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
@ -4072,17 +4049,6 @@ handlebars@^4.0.1:
optionalDependencies: optionalDependencies:
uglify-js "^3.1.4" uglify-js "^3.1.4"
har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
har-validator@~5.1.0:
version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
dependencies:
ajv "^6.5.5"
har-schema "^2.0.0"
hard-rejection@^2.1.0: hard-rejection@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
@ -4304,14 +4270,6 @@ http-proxy@^1.13.0, http-proxy@^1.16.2:
follow-redirects "^1.0.0" follow-redirects "^1.0.0"
requires-port "^1.0.0" requires-port "^1.0.0"
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
dependencies:
assert-plus "^1.0.0"
jsprim "^1.2.2"
sshpk "^1.7.0"
https-browserify@^1.0.0: https-browserify@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
@ -4324,6 +4282,14 @@ https-proxy-agent@1:
debug "2" debug "2"
extend "3" extend "3"
https-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
dependencies:
agent-base "6"
debug "4"
iconv-lite@0.4.23, iconv-lite@^0.4.4: iconv-lite@0.4.23, iconv-lite@^0.4.4:
version "0.4.23" version "0.4.23"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
@ -4717,21 +4683,15 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-path-cwd@^1.0.0: is-path-cwd@^2.2.0:
version "1.0.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
is-path-in-cwd@^1.0.0: is-path-inside@^3.0.2:
version "1.0.1" version "3.0.2"
resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
dependencies: integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
is-path-inside "^1.0.0"
is-path-inside@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
dependencies:
path-is-inside "^1.0.1"
is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
version "1.1.0" version "1.1.0"
@ -4787,7 +4747,7 @@ is-symbol@^1.0.2:
dependencies: dependencies:
has-symbols "^1.0.0" has-symbols "^1.0.0"
is-typedarray@^1.0.0, is-typedarray@~1.0.0: is-typedarray@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@ -4885,10 +4845,6 @@ isparta@4.x.x:
source-map "^0.5.0" source-map "^0.5.0"
which "^1.0.9" which "^1.0.9"
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul@0.4.5, istanbul@^0.4.0: istanbul@0.4.5, istanbul@^0.4.0:
version "0.4.5" version "0.4.5"
resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
@ -4946,10 +4902,6 @@ js-yaml@~3.7.0:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^2.6.0" esprima "^2.6.0"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
jsesc@^1.3.0: jsesc@^1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
@ -4975,18 +4927,10 @@ json-schema-traverse@^0.4.1:
version "0.4.1" version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
json-stable-stringify-without-jsonify@^1.0.1: json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
json3@3.3.2: json3@3.3.2:
version "3.3.2" version "3.3.2"
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
@ -5015,15 +4959,6 @@ json5@^2.1.2:
dependencies: dependencies:
minimist "^1.2.5" minimist "^1.2.5"
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
dependencies:
assert-plus "1.0.0"
extsprintf "1.3.0"
json-schema "0.2.3"
verror "1.10.0"
karma-coverage@^1.1.1: karma-coverage@^1.1.1:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689" resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689"
@ -5774,7 +5709,7 @@ mime-db@~1.37.0:
version "1.37.0" version "1.37.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19: mime-types@~2.1.18:
version "2.1.21" version "2.1.21"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
dependencies: dependencies:
@ -5894,6 +5829,11 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@
dependencies: dependencies:
minimist "0.0.8" minimist "0.0.8"
mkdirp@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkpath@1.0.0: mkpath@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d"
@ -5950,6 +5890,11 @@ ms@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@^2.1.1: ms@^2.1.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
@ -6202,10 +6147,6 @@ number-is-nan@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@ -6399,9 +6340,12 @@ p-locate@^4.1.0:
dependencies: dependencies:
p-limit "^2.2.0" p-limit "^2.2.0"
p-map@^1.1.1: p-map@^4.0.0:
version "1.2.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" 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"
p-try@^1.0.0: p-try@^1.0.0:
version "1.0.0" version "1.0.0"
@ -6569,7 +6513,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
path-is-inside@^1.0.1, path-is-inside@^1.0.2: path-is-inside@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
@ -6624,10 +6568,6 @@ pend@~1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
phoenix@^1.3.0: phoenix@^1.3.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.4.0.tgz#9cec8dbd8cbc59ecd2147bc09ca8ceb56b860d75" resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.4.0.tgz#9cec8dbd8cbc59ecd2147bc09ca8ceb56b860d75"
@ -6641,10 +6581,6 @@ pify@^2.0.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
pify@^4.0.1: pify@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
@ -7147,6 +7083,11 @@ proxy-agent@2.0.0:
pac-proxy-agent "1" pac-proxy-agent "1"
socks-proxy-agent "2" socks-proxy-agent "2"
proxy-from-env@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
prr@~1.0.1: prr@~1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@ -7155,10 +7096,6 @@ pseudomap@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
psl@^1.1.24:
version "1.1.31"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
public-encrypt@^4.0.0: public-encrypt@^4.0.0:
version "4.0.3" version "4.0.3"
resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
@ -7192,11 +7129,16 @@ pumpify@^1.3.3:
inherits "^2.0.3" inherits "^2.0.3"
pump "^2.0.0" pump "^2.0.0"
punycode.js@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.1.0.tgz#f3937f7a914152c2dc17e9c280a2cf86a26b7cda"
integrity sha512-LvGUJ9QHiESLM4yn8JuJWicstRcJKRmP46psQw1HvCZ9puLFwYMKJWvkAkP3OHBVzNzZGx/D53EYJrIaKd9gZQ==
punycode@1.3.2: punycode@1.3.2:
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
punycode@^1.2.4, punycode@^1.4.1: punycode@^1.2.4:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
@ -7222,7 +7164,7 @@ qrcode@^1.3.0:
pngjs "^3.3.0" pngjs "^3.3.0"
yargs "^12.0.5" yargs "^12.0.5"
qs@6.5.2, qs@~6.5.2: qs@6.5.2:
version "6.5.2" version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
@ -7606,31 +7548,6 @@ replace-ext@1.0.0:
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
request@^2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.8.0"
caseless "~0.12.0"
combined-stream "~1.0.6"
extend "~3.0.2"
forever-agent "~0.6.1"
form-data "~2.3.2"
har-validator "~5.1.0"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.19"
oauth-sign "~0.9.0"
performance-now "^2.1.0"
qs "~6.5.2"
safe-buffer "^5.1.2"
tough-cookie "~2.4.3"
tunnel-agent "^0.6.0"
uuid "^3.3.2"
require-directory@^2.1.1: require-directory@^2.1.1:
version "2.1.1" version "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"
@ -7713,12 +7630,19 @@ rfdc@^1.1.2:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2"
rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.3" version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
dependencies: dependencies:
glob "^7.1.3" glob "^7.1.3"
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
ripemd160@^2.0.0, ripemd160@^2.0.1: ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
@ -7764,7 +7688,7 @@ safe-regex@^1.1.0:
dependencies: dependencies:
ret "~0.1.10" ret "~0.1.10"
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: "safer-buffer@>= 2.1.2 < 3":
version "2.1.2" version "2.1.2"
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"
@ -8148,20 +8072,6 @@ sprintf-js@~1.0.2:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
sshpk@^1.7.0:
version "1.16.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.0.tgz#1d4963a2fbffe58050aa9084ca20be81741c07de"
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
bcrypt-pbkdf "^1.0.0"
dashdash "^1.12.0"
ecc-jsbn "~0.1.1"
getpass "^0.1.1"
jsbn "~0.1.0"
safer-buffer "^2.0.2"
tweetnacl "~0.14.0"
ssri@^6.0.1: ssri@^6.0.1:
version "6.0.1" version "6.0.1"
resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
@ -8647,13 +8557,6 @@ toposort@^1.0.0:
version "1.0.7" version "1.0.7"
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
tough-cookie@~2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
dependencies:
psl "^1.1.24"
punycode "^1.4.1"
trim-newlines@^1.0.0: trim-newlines@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@ -8690,16 +8593,6 @@ tty-browserify@0.0.0:
version "0.0.0" version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
dependencies:
safe-buffer "^5.0.1"
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
type-check@~0.3.2: type-check@~0.3.2:
version "0.3.2" version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@ -8995,14 +8888,6 @@ vendors@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
dependencies:
assert-plus "^1.0.0"
core-util-is "1.0.2"
extsprintf "^1.2.0"
vfile-location@^3.0.0: vfile-location@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3"
@ -9331,11 +9216,13 @@ yargs@^12.0.5:
y18n "^3.2.1 || ^4.0.0" y18n "^3.2.1 || ^4.0.0"
yargs-parser "^11.1.1" yargs-parser "^11.1.1"
yauzl@2.4.1: yauzl@^2.10.0:
version "2.4.1" version "2.10.0"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
dependencies: dependencies:
fd-slicer "~1.0.1" buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
yeast@0.1.2: yeast@0.1.2:
version "0.1.2" version "0.1.2"