From d89bf1ab716a9b9e7972bc5aab9154f9f46bbc5d Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 12 Sep 2019 20:50:31 -0400 Subject: [PATCH] feat: browse tags localization --- client/components/common/nav-header.vue | 184 +++++++++++------------- client/components/editor.vue | 1 + client/components/tags.vue | 47 +++--- package.json | 2 +- yarn.lock | 71 +++++---- 5 files changed, 154 insertions(+), 151 deletions(-) diff --git a/client/components/common/nav-header.vue b/client/components/common/nav-header.vue index a9aefd3f..e7cacf11 100644 --- a/client/components/common/nav-header.vue +++ b/client/components/common/nav-header.vue @@ -7,7 +7,7 @@ clearable background-color='deep-purple' color='white' - label='Search...' + :label='$t(`common:header.search`)' single-line solo flat @@ -22,41 +22,19 @@ v-menu(open-on-hover, offset-y, bottom, left, min-width='250', transition='slide-y-transition') template(v-slot:activator='{ on }') v-app-bar-nav-icon.btn-animate-app(v-on='on', :class='$vuetify.rtl ? `mx-0` : ``') - v-icon mdi-menu-open + v-icon mdi-menu v-list(nav, :light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark', :class='$vuetify.theme.dark ? `grey darken-4` : ``') v-list-item.pl-4(href='/') v-list-item-avatar(size='24'): v-icon(color='blue') mdi-home v-list-item-title.body-2 {{$t('common:header.home')}} - v-list-item.pl-4(@click='pageNew', v-if='isAuthenticated') - v-list-item-avatar(size='24'): v-icon(color='green') mdi-file-document-box-plus-outline - v-list-item-title.body-2 {{$t('common:header.newPage')}} - template(v-if='path && path.length') - v-divider.my-0 - .overline.pa-4.grey--text {{$t('common:header.currentPage')}} - v-list-item.pl-4(@click='pageView', v-if='mode !== `view`') - v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-file-document-box-outline - v-list-item-title.body-2 {{$t('common:header.view')}} - v-list-item.pl-4(@click='pageEdit', v-if='mode !== `edit` && isAuthenticated') - v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-file-document-edit-outline - v-list-item-title.body-2 {{$t('common:header.edit')}} - v-list-item.pl-4(@click='pageHistory', v-if='mode !== `history`') - v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-history - v-list-item-content - v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.history')}} - v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon - v-list-item.pl-4(@click='pageSource', v-if='mode !== `source`') - v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-code-tags - v-list-item-title.body-2 {{$t('common:header.viewSource')}} - v-list-item.pl-4(@click='pageMove', v-if='isAuthenticated') - v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-content-save-move-outline - v-list-item-content - v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.move')}} - v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon - v-list-item.pl-4(@click='pageDelete', v-if='isAuthenticated') - v-list-item-avatar(size='24'): v-icon(color='red darken-2') mdi-trash-can-outline - v-list-item-title.body-2 {{$t('common:header.delete')}} - v-divider.my-0 - .overline.pa-4.grey--text {{$t('common:header.assets')}} + v-list-item.pl-4(@click='') + v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-file-tree + v-list-item-content + v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.siteMap')}} + v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon + v-list-item.pl-4(href='/t') + v-list-item-avatar(size='24'): v-icon(color='teal') mdi-tag-multiple + v-list-item-title.body-2 {{$t('common:header.browseTags')}} v-list-item.pl-4(@click='assets') v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-folder-multiple-image v-list-item-content @@ -88,89 +66,98 @@ @keyup.down='searchMove(`down`)' @keyup.up='searchMove(`up`)' ) - //- v-menu( - //- v-model='searchAdvMenuShown' - //- left - //- offset-y - //- min-width='450' - //- :close-on-content-click='false' - //- nudge-bottom='7' - //- nudge-right='5' - //- v-if='searchIsShown' - //- ) - //- template(v-slot:activator='{ on }') - //- v-btn.nav-header-search-adv(icon, color='grey darken-2', v-on='on') - //- v-icon(color='white') mdi-chevron-down - //- v-card.radius-0(dark) - //- v-toolbar(flat, color='grey darken-4', dense) - //- v-icon.mr-2 mdi-feature-search-outline - //- v-subheader.pl-0 Advanced Search - //- v-spacer - //- v-chip(label, small, color='primary') Coming soon - //- v-card-text.pa-4 - //- v-checkbox.mt-0( - //- label='Restrict to current language' - //- color='white' - //- v-model='searchRestrictLocale' - //- hide-details - //- ) - //- v-checkbox( - //- label='Search below current path only' - //- color='white' - //- v-model='searchRestrictPath' - //- hide-details - //- ) - //- v-divider - //- v-card-actions.grey.darken-3-d4 - //- v-container.pa-0(grid-list-md) - //- v-layout(row) - //- v-flex(xs6) - //- v-btn(depressed, color='grey darken-3', block) - //- v-icon(left) mdi-chevron-right - //- span Save as defaults - //- v-flex(xs6) - //- v-btn(depressed, color='grey darken-3', block) - //- v-icon(left) mdi-cached - //- span Reset - v-tooltip(bottom, v-if='isAuthenticated && isAdmin') + v-tooltip(bottom) template(v-slot:activator='{ on }') v-btn.ml-2.mr-0(icon, v-on='on', href='/t') v-icon(color='grey') mdi-tag-multiple - span Browse Tags + span {{$t('common:header.browseTags')}} v-flex(xs6, md4) v-toolbar.nav-header-inner.pr-4(color='black', dark, flat) v-spacer .navHeaderLoading.mr-3 v-progress-circular(indeterminate, color='blue', :size='22', :width='2' v-show='isLoading') + slot(name='actions') + + //- (mobile) SEARCH TOGGLE + v-btn( v-if='!hideSearch && $vuetify.breakpoint.smAndDown' @click='searchToggle' icon ) v-icon(color='grey') mdi-magnify - v-menu(offset-y, left, transition='slide-y-transition', v-if='mode === `view` && locales.length > 0') + + //- LANGUAGES + + template(v-if='mode === `view` && locales.length > 0') + v-menu(offset-y, bottom, nudge-bottom='30', transition='slide-y-transition') + template(v-slot:activator='{ on: menu }') + v-tooltip(bottom) + template(v-slot:activator='{ on: tooltip }') + v-btn(icon, v-on='{ ...menu, ...tooltip }', :class='$vuetify.rtl ? `ml-3` : ``', tile, height='64') + v-icon(color='grey') mdi-web + span {{$t('common:header.language')}} + v-list(nav) + template(v-for='(lc, idx) of locales') + v-list-item(@click='changeLocale(lc)') + v-list-item-action: v-chip(:color='lc.code === locale ? `blue` : `grey`', small, label, dark) {{lc.code.toUpperCase()}} + v-list-item-title {{lc.name}} + v-divider(vertical) + + //- PAGE ACTIONS + + template(v-if='isAuthenticated && path') + v-menu(offset-y, bottom, nudge-bottom='30', transition='slide-y-transition') + template(v-slot:activator='{ on: menu }') + v-tooltip(bottom) + template(v-slot:activator='{ on: tooltip }') + v-btn(icon, v-on='{ ...menu, ...tooltip }', :class='$vuetify.rtl ? `ml-3` : ``', tile, height='64') + v-icon(color='grey') mdi-file-document-edit-outline + span {{$t('common:header.pageActions')}} + v-list(nav, :light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark', :class='$vuetify.theme.dark ? `grey darken-4` : ``') + .overline.pa-4.grey--text {{$t('common:header.currentPage')}} + v-list-item.pl-4(@click='pageView', v-if='mode !== `view`') + v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-file-document-box-outline + v-list-item-title.body-2 {{$t('common:header.view')}} + v-list-item.pl-4(@click='pageEdit', v-if='mode !== `edit` && isAuthenticated') + v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-file-document-edit-outline + v-list-item-title.body-2 {{$t('common:header.edit')}} + v-list-item.pl-4(@click='pageHistory', v-if='mode !== `history`') + v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-history + v-list-item-content + v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.history')}} + v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon + v-list-item.pl-4(@click='pageSource', v-if='mode !== `source`') + v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-code-tags + v-list-item-title.body-2 {{$t('common:header.viewSource')}} + v-list-item.pl-4(@click='pageMove', v-if='isAuthenticated') + v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-content-save-move-outline + v-list-item-content + v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.move')}} + v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon + v-list-item.pl-4(@click='pageDelete', v-if='isAuthenticated') + v-list-item-avatar(size='24'): v-icon(color='red darken-2') mdi-trash-can-outline + v-list-item-title.body-2 {{$t('common:header.delete')}} + v-divider(vertical) + + //- NEW PAGE + + template(v-if='isAuthenticated') + v-tooltip(bottom) + template(v-slot:activator='{ on }') + v-btn(icon, tile, height='64', v-on='on', @click='pageNew') + v-icon(color='grey') mdi-file-document-box-plus-outline + span {{$t('common:header.newPage')}} + v-divider(vertical) + + //- ACCOUNT + + v-menu(v-if='isAuthenticated', offset-y, bottom, nudge-bottom='30', min-width='300', transition='slide-y-transition') template(v-slot:activator='{ on: menu }') v-tooltip(bottom) template(v-slot:activator='{ on: tooltip }') - v-btn(icon, v-on='{ ...menu, ...tooltip }', :class='$vuetify.rtl ? `ml-3` : ``') - v-icon(color='grey') mdi-web - span {{$t('common:header.language')}} - v-list(nav) - template(v-for='(lc, idx) of locales') - v-list-item(@click='changeLocale(lc)') - v-list-item-action: v-chip(:color='lc.code === locale ? `blue` : `grey`', small, label, dark) {{lc.code.toUpperCase()}} - v-list-item-title {{lc.name}} - v-tooltip(bottom, v-if='isAuthenticated && isAdmin') - template(v-slot:activator='{ on }') - v-btn.btn-animate-rotate(icon, href='/a', v-on='on', :class='$vuetify.rtl ? `ml-3` : ``') - v-icon(color='grey') mdi-settings - span {{$t('common:header.admin')}} - v-menu(v-if='isAuthenticated', offset-y, min-width='300', left, transition='slide-y-transition') - template(v-slot:activator='{ on: menu }') - v-tooltip(bottom) - template(v-slot:activator='{ on: tooltip }') - v-btn(icon, v-on='{ ...menu, ...tooltip }', :class='$vuetify.rtl ? `ml-0` : ``') + v-btn(icon, v-on='{ ...menu, ...tooltip }', :class='$vuetify.rtl ? `ml-0` : ``', tile, height='64') v-icon(v-if='picture.kind === `initials`', color='grey') mdi-account-circle v-avatar(v-else-if='picture.kind === `image`', :size='34') v-img(:src='picture.url') @@ -195,6 +182,9 @@ v-list-item-content v-list-item-title {{$t('common:header.profile')}} v-list-item-subtitle.overline Coming soon + v-list-item(href='/a', v-if='isAuthenticated && isAdmin') + v-list-item-action.btn-animate-rotate: v-icon(color='blue-grey') mdi-settings + v-list-item-title.blue-grey--text {{$t('common:header.admin')}} v-list-item(@click='logout') v-list-item-action: v-icon(color='red') mdi-logout v-list-item-title.red--text {{$t('common:header.logout')}} diff --git a/client/components/editor.vue b/client/components/editor.vue index 8cefed1e..7dc9c388 100644 --- a/client/components/editor.vue +++ b/client/components/editor.vue @@ -31,6 +31,7 @@ ) v-icon(color='red', :left='$vuetify.breakpoint.lgAndUp') mdi-close span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('common:actions.close') }} + v-divider(vertical) v-content component(:is='currentEditor', :save='save') editor-modal-properties(v-model='dialogProps') diff --git a/client/components/tags.vue b/client/components/tags.vue index e0d0a20f..fa3439bf 100644 --- a/client/components/tags.vue +++ b/client/components/tags.vue @@ -18,7 +18,7 @@ v-content.grey(:class='$vuetify.theme.dark ? `darken-4-d5` : `lighten-3`') v-toolbar(color='primary', dark, flat, height='58') template(v-if='selection.length > 0') - .overline.mr-3.animated.fadeInLeft Current Selection + .overline.mr-3.animated.fadeInLeft {{$t('tags:currentSelection')}} v-chip.mr-3.primary--text( v-for='tag of tagsSelected' :key='`tagSelected-` + tag.tag' @@ -35,14 +35,14 @@ @click='selection = []' ) v-icon(left) mdi-close - span Clear Selection + span {{$t('tags:clearSelection')}} template(v-else) v-icon.mr-3.animated.fadeInRight mdi-arrow-left - .overline.animated.fadeInRight Select one or more tags + .overline.animated.fadeInRight {{$t('tags:selectOneMoreTags')}} v-toolbar(:color='$vuetify.theme.dark ? `grey darken-4-l5` : `grey lighten-4`', flat, height='58') v-text-field.tags-search( v-model='innerSearch' - label='Search within results...' + :label='$t(`tags:searchWithinResultsPlaceholder`)' solo hide-details flat @@ -55,13 +55,13 @@ ) template(v-if='locales.length > 1') v-divider.mx-3(vertical) - .overline Locale + .overline {{$t('tags:locale')}} v-select.ml-2( :items='locales' v-model='locale' :background-color='$vuetify.theme.dark ? `grey darken-3` : `white`' hide-details - label='Locale' + :label='$t(`tags:locale`)' item-text='name' item-value='code' rounded @@ -71,13 +71,13 @@ style='max-width: 170px;' ) v-divider.mx-3(vertical) - .overline Order By + .overline {{$t('tags:orderBy')}} v-select.ml-2( :items='orderByItems' v-model='orderBy' :background-color='$vuetify.theme.dark ? `grey darken-3` : `white`' hide-details - label='Order By' + :label='$t(`tags:orderBy`)' rounded single-line dense @@ -90,7 +90,7 @@ v-divider .text-center.pt-10(v-if='selection.length < 1') img(src='/svg/icon-price-tag.svg') - .subtitle-2.grey--text Select one or more tags on the left. + .subtitle-2.grey--text {{$t('tags:selectOneMoreTagsHint')}} .px-5.py-2(v-else) v-data-iterator( :items='pages' @@ -109,15 +109,15 @@ size='96' width='2' ) - .subtitle-2.grey--text.mt-5 Retrieving page results... + .subtitle-2.grey--text.mt-5 {{$t('tags:retrievingResultsLoading')}} template(v-slot:no-data) .text-center.pt-10 img(src='/svg/icon-info.svg') - .subtitle-2.grey--text Couldn't find any page with the selected tags. + .subtitle-2.grey--text {{$t('tags:noResults')}} template(v-slot:no-results) .text-center.pt-10 img(src='/svg/icon-info.svg') - .subtitle-2.grey--text Couldn't find any page matching the current filtering options. + .subtitle-2.grey--text {{$t('tags:noResultsWithFilter')}} template(v-slot:default='props') v-row(align='stretch') v-col( @@ -135,7 +135,8 @@ .d-flex.flex-row.align-center .body-1: strong.primary--text {{item.title}} v-spacer - .caption Last updated {{item.updatedAt | moment('from')}} + i18next.caption(tag='div', path='tags:pageLastUpdated') + span(place='date') {{item.updatedAt | moment('from')}} .body-2.grey--text {{item.description || '---'}} v-divider.my-2 .d-flex.flex-row.align-center @@ -165,6 +166,7 @@ const router = new VueRouter({ }) export default { + i18nOptions: { namespaces: 'tags' }, data() { return { tags: [], @@ -173,13 +175,6 @@ export default { locale: 'any', locales: [], orderBy: 'title', - orderByItems: [ - { text: 'Creation Date', value: 'createdAt' }, - { text: 'ID', value: 'id' }, - { text: 'Last Modified', value: 'updatedAt' }, - { text: 'Path', value: 'path' }, - { text: 'Title', value: 'title' } - ], orderByDirection: 0, pagination: { page: 1, @@ -223,6 +218,15 @@ export default { }, pageTotal () { return Math.ceil(this.pages.length / this.pagination.itemsPerPage) + }, + orderByItems () { + return [ + { text: this.$t('tags:orderByField.creationDate'), value: 'createdAt' }, + { text: this.$t('tags:orderByField.ID'), value: 'id' }, + { text: this.$t('tags:orderByField.lastModified'), value: 'updatedAt' }, + { text: this.$t('tags:orderByField.path'), value: 'path' }, + { text: this.$t('tags:orderByField.title'), value: 'title' } + ] } }, watch: { @@ -243,7 +247,7 @@ export default { this.$store.commit('page/SET_MODE', 'tags') this.locales = _.concat( - [{name: 'Any', code: 'any'}], + [{name: this.$t('tags:localeAny'), code: 'any'}], (siteLangs.length > 0 ? siteLangs : []) ) @@ -257,7 +261,6 @@ export default { this.selection.push(tag) } this.rebuildURL() - console.info(this.$refs.dude) }, isSelected (tag) { return _.includes(this.selection, tag) diff --git a/package.json b/package.json index 37837e94..10b7121e 100644 --- a/package.json +++ b/package.json @@ -182,7 +182,7 @@ "@babel/preset-env": "^7.6.0", "@mdi/font": "4.3.95", "@panter/vue-i18next": "0.15.1", - "@requarks/ckeditor5": "12.4.0-wiki.11", + "@requarks/ckeditor5": "12.4.0-wiki.14", "@vue/babel-preset-app": "3.11.0", "animate-sass": "0.8.2", "animated-number-vue": "1.0.0", diff --git a/yarn.lock b/yarn.lock index 003925c8..f93fcda9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1229,10 +1229,10 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@requarks/ckeditor5@12.4.0-wiki.11": - version "12.4.0-wiki.11" - resolved "https://registry.yarnpkg.com/@requarks/ckeditor5/-/ckeditor5-12.4.0-wiki.11.tgz#6a83bcd0617b32a9a2f946549727c2f95a97a7ba" - integrity sha512-Qs1rFB290CUVaXB0LuoN/b00ivN/S0NY0obFaOEmegQu69gKxiDaQSlvrSm2jOKpmNlxruc7/CxYSKiPvhadCw== +"@requarks/ckeditor5@12.4.0-wiki.14": + version "12.4.0-wiki.14" + resolved "https://registry.yarnpkg.com/@requarks/ckeditor5/-/ckeditor5-12.4.0-wiki.14.tgz#eca91568cc5f1471fff684df18c638dfab9f0aef" + integrity sha512-3DD2GmagyTYeSHsm437FR0OxlzNFYnc3PEflt7p0/mTM68nRHUHv/pO9wvbUXaRk667WKsRVqckbbMQbdRK43g== "@types/accepts@*", "@types/accepts@^1.3.5": version "1.3.5" @@ -1910,9 +1910,9 @@ acorn-globals@^3.0.0: acorn "^4.0.4" acorn-globals@^4.1.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.3.tgz#a86f75b69680b8780d30edd21eee4e0ea170c05e" - integrity sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ== + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" @@ -4962,9 +4962,9 @@ ejs@^2.3.4, ejs@^2.5.6, ejs@^2.6.1: pump "^3.0.0" electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.30: - version "1.3.253" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.253.tgz#bc3b2c94c2a109c08d37b04f526dc05fdabcbb5b" - integrity sha512-LAwFRWViiiCSxQ2Lj3mnyEP8atkpAoHSPUnkFoy4mNabbnPHxtfseWvPCGGhewjHQI+ky/V4LdlTyyI0d3YPXA== + version "1.3.255" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.255.tgz#9f4b4f9ffd559dd7a81fef962186fc918d118b66" + integrity sha512-SZ6NlaNw3h4WR5kA1BK8XltdJCax02P+lW+z78RYoLDqmpyYuDQ5bS+/O6MCJ/j761qoZIFox2qYYt+UwqGA5w== elliptic@^6.0.0, elliptic@^6.2.3: version "6.5.1" @@ -5964,7 +5964,7 @@ fsevents@^2.0.6: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -8797,9 +8797,9 @@ minimist@~0.0.1: integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.5: - version "2.5.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.5.0.tgz#dddb1d001976978158a05badfcbef4a771612857" - integrity sha512-9FwMVYhn6ERvMR8XFdOavRz4QK/VJV8elU1x50vYexf9lslDcWe/f4HBRxCPd185ekRSjU6CfYyJCECa/CQy7Q== + version "2.5.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.5.1.tgz#cf435a9bf9408796ca3a3525a8b851464279c9b8" + integrity sha512-dmpSnLJtNQioZFI5HfQ55Ad0DzzsMAb+HfokwRTNXwEQjepbTkl5mtIlSVxGIkOkxlpX7wIn5ET/oAd9fZ/Y/Q== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -9166,9 +9166,9 @@ node-pre-gyp@^0.12.0: tar "^4" node-releases@^1.1.29: - version "1.1.29" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.29.tgz#86a57c6587a30ecd6726449e5d293466b0a0bb86" - integrity sha512-R5bDhzh6I+tpi/9i2hrrvGJ3yKPYzlVOORDkXhnZuwi5D3q1I5w4vYy24PJXTcLk9Q0kws9TO77T75bcK8/ysQ== + version "1.1.30" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.30.tgz#35eebf129c63baeb6d8ddeda3c35b05abfd37f7f" + integrity sha512-BHcr1g6NeUH12IL+X3Flvs4IOnl1TL0JczUhEZjDE+FXXPQcVCNr8NEPb01zqGxzhTpdyJL5GXemaCW7aw6Khw== dependencies: semver "^5.3.0" @@ -11342,9 +11342,9 @@ pseudomap@^1.0.1, pseudomap@^1.0.2: integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24, psl@^1.1.28: - version "1.3.1" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.3.1.tgz#d5aa3873a35ec450bc7db9012ad5a7246f6fc8bd" - integrity sha512-2KLd5fKOdAfShtY2d/8XDWVRnmp3zp40Qt6ge2zBPFARLXOGUf2fHD5eg+TV/5oxBtQKVhjUaKFsAaE4HnwfSA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" + integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== public-encrypt@^4.0.0: version "4.0.3" @@ -12928,20 +12928,20 @@ string.prototype.repeat@^0.2.0: integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8= string.prototype.trimleft@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.0.0.tgz#68b6aa8e162c6a80e76e3a8a0c2e747186e271ff" - integrity sha1-aLaqjhYsaoDnbjqKDC50cYbicf8= + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== dependencies: - define-properties "^1.1.2" - function-bind "^1.0.2" + define-properties "^1.1.3" + function-bind "^1.1.1" string.prototype.trimright@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.0.0.tgz#ab4a56d802a01fbe7293e11e84f24dc8164661dd" - integrity sha1-q0pW2AKgH75yk+EehPJNyBZGYd0= + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== dependencies: - define-properties "^1.1.2" - function-bind "^1.0.2" + define-properties "^1.1.3" + function-bind "^1.1.1" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -13206,7 +13206,7 @@ terser-webpack-plugin@^1.4.1: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@4.3.0, terser@^4.1.2: +terser@4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.0.tgz#0259070576ff34d89c5cd2b8d91055cdce0212d5" integrity sha512-w5CzrvQOwYAH54aG22IrUJI4yX1w62XQmMdEOM6H4w0ii6rc3HJ89fmcOGN5mRwBWfUgaqO7RJTp4aoY/uE+qQ== @@ -13215,6 +13215,15 @@ terser@4.3.0, terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^4.1.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz#09820bcb3398299c4b48d9a86aefc65127d0ed65" + integrity sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"