diff --git a/SUMMARY.md b/SUMMARY.md index 11c4b0293..f3ed9d515 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -6,6 +6,7 @@ * [Neo4J](neo4j/README.md) * [Backend](backend/README.md) * [GraphQL](backend/graphql.md) + * [neo4j-graphql-js](backend/neo4j-graphql-js.md) * [Webapp](webapp/README.md) * [Components](webapp/components.md) * [HTML](webapp/html.md) diff --git a/backend/neo4j-graphql-js.md b/backend/neo4j-graphql-js.md new file mode 100644 index 000000000..280942acd --- /dev/null +++ b/backend/neo4j-graphql-js.md @@ -0,0 +1,16 @@ +# neo4j-graphql.js + +We use an npm package called `neo4j-graphql-js` as a cypher query builder. This +library also generates resolvers for graphql queries, unless we implement them +ourselves. + + +## Debugging + +As you can see in their [documentation](https://github.com/neo4j-graphql/neo4j-graphql-js) +it is possible to log out the generated cypher statements. To do so, run the +backend like this: + +```sh +DEBUG=neo4j-graphql-js yarn run dev +``` diff --git a/backend/package.json b/backend/package.json index 699dc9972..04528f5c8 100644 --- a/backend/package.json +++ b/backend/package.json @@ -83,7 +83,7 @@ "minimatch": "^3.0.4", "mustache": "^3.1.0", "neo4j-driver": "~1.7.6", - "neo4j-graphql-js": "^2.8.0", + "neo4j-graphql-js": "^2.9.0", "neode": "^0.3.3", "node-fetch": "~2.6.0", "nodemailer": "^6.3.1", @@ -110,7 +110,7 @@ "babel-eslint": "~10.0.3", "babel-jest": "~24.9.0", "chai": "~4.2.0", - "cucumber": "~6.0.3", + "cucumber": "~6.0.5", "eslint": "~6.6.0", "eslint-config-prettier": "~6.5.0", "eslint-config-standard": "~14.1.0", diff --git a/backend/src/schema/resolvers/badges.js b/backend/src/schema/resolvers/badges.js index 19bc24fd6..d10d6b482 100644 --- a/backend/src/schema/resolvers/badges.js +++ b/backend/src/schema/resolvers/badges.js @@ -3,7 +3,7 @@ import { neo4jgraphql } from 'neo4j-graphql-js' export default { Query: { Badge: async (object, args, context, resolveInfo) => { - return neo4jgraphql(object, args, context, resolveInfo, false) + return neo4jgraphql(object, args, context, resolveInfo) }, }, } diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index 3ba5498b9..12e050298 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -43,15 +43,15 @@ export default { Post: async (object, params, context, resolveInfo) => { params = await filterForBlockedUsers(params, context) params = await maintainPinnedPosts(params) - return neo4jgraphql(object, params, context, resolveInfo, false) + return neo4jgraphql(object, params, context, resolveInfo) }, findPosts: async (object, params, context, resolveInfo) => { params = await filterForBlockedUsers(params, context) - return neo4jgraphql(object, params, context, resolveInfo, false) + return neo4jgraphql(object, params, context, resolveInfo) }, profilePagePosts: async (object, params, context, resolveInfo) => { params = await filterForBlockedUsers(params, context) - return neo4jgraphql(object, params, context, resolveInfo, false) + return neo4jgraphql(object, params, context, resolveInfo) }, PostsEmotionsCountByEmotion: async (object, params, context, resolveInfo) => { const session = context.driver.session() diff --git a/backend/src/schema/resolvers/users.js b/backend/src/schema/resolvers/users.js index 619a21aa2..0bb921bc4 100644 --- a/backend/src/schema/resolvers/users.js +++ b/backend/src/schema/resolvers/users.js @@ -54,7 +54,7 @@ export default { user = await user.toJson() return [user.node] } - return neo4jgraphql(object, args, context, resolveInfo, false) + return neo4jgraphql(object, args, context, resolveInfo) }, }, Mutation: { diff --git a/backend/yarn.lock b/backend/yarn.lock index 7dc7c6503..9a32b789c 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -2790,10 +2790,10 @@ cssstyle@^1.0.0: dependencies: cssom "0.3.x" -cucumber-expressions@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-8.0.1.tgz#47eb87dcb626e90a4672986da1130f3c470b9e3d" - integrity sha512-g+A+tUEafNofe6ErwvOkqaMvDj9NuOr0GouGotpw4r5yK2d4144o9/6sQpXBr2YXbRy5ItmER/2bzAyDAzhPyQ== +cucumber-expressions@^8.1.0: + version "8.2.1" + resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-8.2.1.tgz#e250063993350df106a8664c90a414814f555e2d" + integrity sha512-6n5JKbAzXfIiwyu2UyUcOmO83QmuSme25+Dw2taK6VNOybOfRkh4yNMA9VtuAJHOmsX3/8l0OVjTbE8lHnjOHA== dependencies: becke-ch--regex--s0-0-v1--base--pl--lib "^1.4.0" xregexp "^4.2.4" @@ -2803,17 +2803,17 @@ cucumber-tag-expressions@^2.0.2: resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-2.0.2.tgz#aac27aae3690818ec15235bd056282dad8a2d2b8" integrity sha512-DohmT4X641KX/sb96bdb7J2kXNcQBPrYmf3Oc5kiHCLfzFMWx/o2kB4JvjvQPZnYuA9lRt6pqtArM5gvUn4uzw== -cucumber@~6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-6.0.3.tgz#bf69ecc992772e580dabe265b2ed06ddab13d076" - integrity sha512-FSx7xdAQfFjcxp/iRBAuCFSXp2iJP1tF2Q5k/a67YgHiYbnwsD9F+UNv9ZG90LFHNsNQhb+67AmVxHkp4JRDpg== +cucumber@~6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-6.0.5.tgz#cdc752ad18b551bcf7bc92774c925302f4408714" + integrity sha512-x+W9Fwk6TvcapQsYMxwFU5AsQJDOIJVGrPKmH15OC7jzb9/Dk7Hb0ZAyw4WcpaDcUDRc8bi2k2yJejDp5eTRlg== dependencies: assertion-error-formatter "^3.0.0" bluebird "^3.4.1" cli-table3 "^0.5.1" colors "^1.1.2" commander "^3.0.1" - cucumber-expressions "^8.0.1" + cucumber-expressions "^8.1.0" cucumber-tag-expressions "^2.0.2" duration "^0.2.1" escape-string-regexp "^2.0.0" @@ -3981,7 +3981,7 @@ glob-parent@^5.0.0: dependencies: is-glob "^4.0.1" -glob@7.1.6: +glob@7.1.6, glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3993,18 +3993,6 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" - integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -6070,10 +6058,10 @@ neo4j-driver@^1.7.3, neo4j-driver@^1.7.5, neo4j-driver@~1.7.6: text-encoding-utf-8 "^1.0.2" uri-js "^4.2.2" -neo4j-graphql-js@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/neo4j-graphql-js/-/neo4j-graphql-js-2.8.0.tgz#58035b9213656e17b6ed4c6cbf4dfe1c56a8a219" - integrity sha512-nDuzmi6W/YGIIVm+GAXCr/8CLABsU/RfeLebLH32vqeKViFATMfm4eT66aOq/GwHJ0838+o20yCbIFdx5rTP/A== +neo4j-graphql-js@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/neo4j-graphql-js/-/neo4j-graphql-js-2.9.0.tgz#b214a0546479565cb5b812fb7e602f2136d36a0d" + integrity sha512-vpOUPwx7Xwn2EZoe0i9z+AMJ4uwZeUjWDGiR4ZAR6ebNd5BaYpiC9SihYOZlS3hVXHZxADQfpGhz9dx++lZwlg== dependencies: "@babel/runtime" "^7.5.5" "@babel/runtime-corejs2" "^7.5.5" diff --git a/docker-compose.build-and-test.yml b/docker-compose.build-and-test.yml index e8e79644f..27aa9fc6b 100644 --- a/docker-compose.build-and-test.yml +++ b/docker-compose.build-and-test.yml @@ -2,11 +2,15 @@ version: "3.4" services: webapp: + environment: + - "CI=${CI}" image: humanconnection/nitro-web:build-and-test build: context: webapp target: build-and-test backend: + environment: + - "CI=${CI}" image: humanconnection/nitro-backend:build-and-test build: context: backend diff --git a/webapp/components/AvatarMenu/AvatarMenu.vue b/webapp/components/AvatarMenu/AvatarMenu.vue index 393963997..7443c91a7 100644 --- a/webapp/components/AvatarMenu/AvatarMenu.vue +++ b/webapp/components/AvatarMenu/AvatarMenu.vue @@ -69,7 +69,7 @@ export default { if (!this.user.slug) { return [] } - let routes = [ + const routes = [ { name: this.$t('profile.name'), path: `/profile/${this.user.id}/${this.user.slug}`, diff --git a/webapp/components/Category/index.spec.js b/webapp/components/Category/index.spec.js index 7ce0b7243..13de0b690 100644 --- a/webapp/components/Category/index.spec.js +++ b/webapp/components/Category/index.spec.js @@ -9,7 +9,7 @@ describe('Category', () => { let icon let name - let Wrapper = () => { + const Wrapper = () => { return shallowMount(Category, { localVue, propsData: { diff --git a/webapp/components/ContentMenu.vue b/webapp/components/ContentMenu.vue index 3b1470fba..66f09e181 100644 --- a/webapp/components/ContentMenu.vue +++ b/webapp/components/ContentMenu.vue @@ -53,7 +53,7 @@ export default { }, computed: { routes() { - let routes = [] + const routes = [] if (this.resourceType === 'contribution') { if (this.isOwner) { diff --git a/webapp/components/ContributionForm/ContributionForm.vue b/webapp/components/ContributionForm/ContributionForm.vue index eb849c71f..f5a02e305 100644 --- a/webapp/components/ContributionForm/ContributionForm.vue +++ b/webapp/components/ContributionForm/ContributionForm.vue @@ -223,7 +223,7 @@ export default { this.form.teaserImage = file }, categoryIds(categories) { - let categoryIds = [] + const categoryIds = [] categories.map(categoryId => { categoryIds.push(categoryId.id) }) diff --git a/webapp/components/DeleteData/DeleteData.vue b/webapp/components/DeleteData/DeleteData.vue index f6e6d47f0..451a44eb4 100644 --- a/webapp/components/DeleteData/DeleteData.vue +++ b/webapp/components/DeleteData/DeleteData.vue @@ -101,7 +101,7 @@ export default { } }, handleSubmit() { - let resourceArgs = [] + const resourceArgs = [] if (this.deleteContributions) { resourceArgs.push('Post') } diff --git a/webapp/components/Editor/Editor.spec.js b/webapp/components/Editor/Editor.spec.js index 18eaef3b8..68ed6de53 100644 --- a/webapp/components/Editor/Editor.spec.js +++ b/webapp/components/Editor/Editor.spec.js @@ -79,7 +79,7 @@ describe('Editor.vue', () => { describe('limists suggestion list to 15 users', () => { beforeEach(() => { - let manyUsersList = [] + const manyUsersList = [] for (let i = 0; i < 25; i++) { manyUsersList.push({ id: `user${i}` }) } @@ -120,7 +120,7 @@ describe('Editor.vue', () => { describe('limists suggestion list to 15 hashtags', () => { beforeEach(() => { - let manyHashtagsList = [] + const manyHashtagsList = [] for (let i = 0; i < 25; i++) { manyHashtagsList.push({ id: `hashtag${i}` }) } diff --git a/webapp/components/Editor/Editor.story.js b/webapp/components/Editor/Editor.story.js index 7a69b347f..8efcf3f4c 100644 --- a/webapp/components/Editor/Editor.story.js +++ b/webapp/components/Editor/Editor.story.js @@ -27,7 +27,11 @@ const plugins = [ ] helpers.init({ plugins }) -const users = [{ id: 1, slug: 'peter' }, { id: 2, slug: 'sandra' }, { id: 3, slug: 'jane' }] +const users = [ + { id: 1, slug: 'peter' }, + { id: 2, slug: 'sandra' }, + { id: 3, slug: 'jane' }, +] storiesOf('Editor', module) .addDecorator(withA11y) diff --git a/webapp/components/Editor/Editor.vue b/webapp/components/Editor/Editor.vue index fa37c64dc..234d94d2d 100644 --- a/webapp/components/Editor/Editor.vue +++ b/webapp/components/Editor/Editor.vue @@ -377,6 +377,7 @@ li > p { .embed-preview-image { width: 100%; height: auto; + max-height: 450px; } .embed-preview-image--clickable { diff --git a/webapp/components/Editor/defaultExtensions.spec.js b/webapp/components/Editor/defaultExtensions.spec.js index 78924db55..13f8cb0f3 100644 --- a/webapp/components/Editor/defaultExtensions.spec.js +++ b/webapp/components/Editor/defaultExtensions.spec.js @@ -63,30 +63,26 @@ describe('defaultExtensions', () => { it('recognizes embed code', () => { const editor = createEditor() const expected = { + type: 'doc', content: [ { + type: 'paragraph', content: [ { text: 'Baby loves cat:', type: 'text', }, ], - type: 'paragraph', }, { - content: [ - { - attrs: { - dataEmbedUrl: 'https://www.youtube.com/watch?v=qkdXAtO40Fo', - }, - type: 'embed', - }, - ], - type: 'paragraph', + type: 'embed', + attrs: { + dataEmbedUrl: 'https://www.youtube.com/watch?v=qkdXAtO40Fo', + }, }, ], - type: 'doc', } + expect(editor.getJSON()).toEqual(expected) }) }) diff --git a/webapp/components/Editor/nodes/Embed.js b/webapp/components/Editor/nodes/Embed.js index 0d7a82a18..e84b717e2 100644 --- a/webapp/components/Editor/nodes/Embed.js +++ b/webapp/components/Editor/nodes/Embed.js @@ -38,8 +38,8 @@ export default class Embed extends Node { default: null, }, }, - group: 'inline', - inline: true, + group: 'block', + inline: false, parseDOM: [ { tag: 'a[href].embed', diff --git a/webapp/components/Editor/plugins/eventHandler.js b/webapp/components/Editor/plugins/eventHandler.js index 807949aa8..4e2448d23 100644 --- a/webapp/components/Editor/plugins/eventHandler.js +++ b/webapp/components/Editor/plugins/eventHandler.js @@ -5,6 +5,7 @@ export default class EventHandler extends Extension { get name() { return 'event_handler' } + get plugins() { return [ new Plugin({ diff --git a/webapp/components/Hashtag/Hashtag.spec.js b/webapp/components/Hashtag/Hashtag.spec.js index cfd1a7c2a..a8b9f7641 100644 --- a/webapp/components/Hashtag/Hashtag.spec.js +++ b/webapp/components/Hashtag/Hashtag.spec.js @@ -10,7 +10,7 @@ config.stubs['nuxt-link'] = '' describe('Hashtag', () => { let id - let Wrapper = () => { + const Wrapper = () => { return shallowMount(Hashtag, { localVue, propsData: { diff --git a/webapp/components/LocaleSwitch/LocaleSwitch.vue b/webapp/components/LocaleSwitch/LocaleSwitch.vue index 38334621e..37a6c97e7 100644 --- a/webapp/components/LocaleSwitch/LocaleSwitch.vue +++ b/webapp/components/LocaleSwitch/LocaleSwitch.vue @@ -58,7 +58,7 @@ export default { return find(this.locales, { code: this.$i18n.locale() }) }, routes() { - let routes = this.locales.map(locale => { + const routes = this.locales.map(locale => { return { name: locale.name, path: locale.code, diff --git a/webapp/components/NotificationMenu/NotificationMenu.spec.js b/webapp/components/NotificationMenu/NotificationMenu.spec.js index 87576a5f3..6b19b7fb1 100644 --- a/webapp/components/NotificationMenu/NotificationMenu.spec.js +++ b/webapp/components/NotificationMenu/NotificationMenu.spec.js @@ -10,7 +10,7 @@ localVue.use(Styleguide) localVue.use(Filters) localVue.filter('truncate', string => string) -config.stubs['dropdown'] = '' +config.stubs.dropdown = '' describe('NotificationMenu.vue', () => { let wrapper diff --git a/webapp/components/Paginate/Paginate.spec.js b/webapp/components/Paginate/Paginate.spec.js index 034d33301..a71e8cec8 100644 --- a/webapp/components/Paginate/Paginate.spec.js +++ b/webapp/components/Paginate/Paginate.spec.js @@ -7,13 +7,13 @@ const localVue = createLocalVue() localVue.use(Styleguide) describe('Paginate.vue', () => { - let propsData, wrapper, Wrapper, nextButton, backButton + let propsData, wrapper, nextButton, backButton beforeEach(() => { propsData = {} }) - Wrapper = () => { + const Wrapper = () => { return mount(Paginate, { propsData, localVue }) } describe('mount', () => { diff --git a/webapp/components/RelativeDateTime/spec.js b/webapp/components/RelativeDateTime/spec.js index 15574f539..356ea8874 100644 --- a/webapp/components/RelativeDateTime/spec.js +++ b/webapp/components/RelativeDateTime/spec.js @@ -16,7 +16,7 @@ describe('RelativeDateTime', () => { } }) - let Wrapper = () => { + const Wrapper = () => { return shallowMount(RelativeDateTime, { mocks, localVue, diff --git a/webapp/components/Ribbon/index.spec.js b/webapp/components/Ribbon/index.spec.js index b1c519992..c642378f6 100644 --- a/webapp/components/Ribbon/index.spec.js +++ b/webapp/components/Ribbon/index.spec.js @@ -6,7 +6,7 @@ const localVue = createLocalVue() describe('Ribbon', () => { let text - let Wrapper = () => { + const Wrapper = () => { return shallowMount(Ribbon, { localVue, propsData: { diff --git a/webapp/components/TeaserImage/TeaserImage.vue b/webapp/components/TeaserImage/TeaserImage.vue index d7ba0e7d8..1b64073f2 100644 --- a/webapp/components/TeaserImage/TeaserImage.vue +++ b/webapp/components/TeaserImage/TeaserImage.vue @@ -64,7 +64,7 @@ export default { }, watch: { error() { - let that = this + const that = this setTimeout(function() { that.error = false }, 2000) diff --git a/webapp/components/Upload/index.vue b/webapp/components/Upload/index.vue index 3f84f8a7c..c348dda92 100644 --- a/webapp/components/Upload/index.vue +++ b/webapp/components/Upload/index.vue @@ -43,7 +43,7 @@ export default { }, watch: { error() { - let that = this + const that = this setTimeout(function() { that.error = false }, 2000) diff --git a/webapp/components/utils/ReportModal.spec.js b/webapp/components/utils/ReportModal.spec.js index de4277c4c..babfaa5cc 100644 --- a/webapp/components/utils/ReportModal.spec.js +++ b/webapp/components/utils/ReportModal.spec.js @@ -8,7 +8,7 @@ beforeEach(() => { }) describe('validReport', () => { - let validate = object => { + const validate = object => { const { formSchema } = validReport({ translate }) const validator = new Schema(formSchema) return validator.validate(object, { suppressWarning: true }).catch(({ errors }) => { diff --git a/webapp/components/utils/UniqueSlugForm.spec.js b/webapp/components/utils/UniqueSlugForm.spec.js index de0e3fee6..da65104fc 100644 --- a/webapp/components/utils/UniqueSlugForm.spec.js +++ b/webapp/components/utils/UniqueSlugForm.spec.js @@ -14,7 +14,7 @@ beforeEach(() => { }) describe('UniqueSlugForm', () => { - let validate = object => { + const validate = object => { const { formSchema } = UniqueSlugForm({ translate, apollo, currentUser }) const validator = new Schema(formSchema) return validator.validate(object, { suppressWarning: true }).catch(({ errors }) => { diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index a39e0a148..94a9c0912 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -6,11 +6,7 @@ - + @@ -143,7 +139,6 @@ export default { ...mapActions({ quickSearchClear: 'search/quickClear', quickSearch: 'search/quickSearch', - refreshPosts: 'posts/refreshPosts', }), goToPost(item) { this.$nextTick(() => { diff --git a/webapp/locales/de.json b/webapp/locales/de.json index 2867f5495..773720298 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -313,12 +313,14 @@ }, "columns": { "name": "Name", - "slug": "Alias" + "slug": "Alias", + "unblock": "Entblocken" }, "empty": "Bislang hast du niemanden blockiert.", "how-to": "Du kannst andere Benutzer auf deren Profilseite über das Inhaltsmenü blockieren.", "block": "Nutzer blockieren", - "unblock": "Nutzer entblocken" + "unblock": "Nutzer entblocken", + "unblocked": "{name} ist wieder entblockt" } }, "admin": { diff --git a/webapp/locales/en.json b/webapp/locales/en.json index d1b56cdc0..25270d178 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -314,12 +314,14 @@ }, "columns": { "name": "Name", - "slug": "Slug" + "slug": "Slug", + "unblock": "Unblock" }, "empty": "So far, you have not blocked anybody.", "how-to": "You can block other users on their profile page via the content menu.", "block": "Block user", - "unblock": "Unblock user" + "unblock": "Unblock user", + "unblocked": "{name} is unblocked again" } }, "admin": { diff --git a/webapp/middleware/authenticated.js b/webapp/middleware/authenticated.js index f2273df58..91a230865 100644 --- a/webapp/middleware/authenticated.js +++ b/webapp/middleware/authenticated.js @@ -1,7 +1,7 @@ import isEmpty from 'lodash/isEmpty' export default async ({ store, env, route, redirect }) => { - let publicPages = env.publicPages + const publicPages = env.publicPages // only affect non public pages if (publicPages.indexOf(route.name) >= 0) { return true @@ -17,7 +17,7 @@ export default async ({ store, env, route, redirect }) => { // await store.dispatch('auth/logout', null, { root: true }) // set the redirect path for after the login - let params = {} + const params = {} if (!isEmpty(route.path) && route.path !== '/') { params.path = route.path } diff --git a/webapp/middleware/termsAndConditions.js b/webapp/middleware/termsAndConditions.js index 68ad49bf8..e056bf40a 100644 --- a/webapp/middleware/termsAndConditions.js +++ b/webapp/middleware/termsAndConditions.js @@ -1,7 +1,7 @@ import isEmpty from 'lodash/isEmpty' export default async ({ store, env, route, redirect }) => { - let publicPages = env.publicPages + const publicPages = env.publicPages // only affect non public pages if (publicPages.indexOf(route.name) >= 0) { return true @@ -11,7 +11,7 @@ export default async ({ store, env, route, redirect }) => { if (store.getters['auth/termsAndConditionsAgreed']) return true - let params = {} + const params = {} if (!isEmpty(route.path) && route.path !== '/') { params.path = route.path } diff --git a/webapp/nuxt.config.js b/webapp/nuxt.config.js index 17bb5290c..eb628c7d6 100644 --- a/webapp/nuxt.config.js +++ b/webapp/nuxt.config.js @@ -118,7 +118,7 @@ export default { { src: '~/plugins/v-tooltip.js', ssr: false }, { src: '~/plugins/izi-toast.js', ssr: false }, { src: '~/plugins/vue-filters.js' }, - { src: '~/plugins/vue-infinite-scroll.js', ssr: false }, + { src: '~/plugins/vue-infinite-loading.js', ssr: false }, ], router: { diff --git a/webapp/package.json b/webapp/package.json index a75d80095..ea217436c 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -83,7 +83,7 @@ "v-tooltip": "~2.0.2", "validator": "^12.0.0", "vue-count-to": "~1.0.13", - "vue-infinite-scroll": "^2.0.2", + "vue-infinite-loading": "^2.4.4", "vue-izitoast": "^1.2.1", "vue-scrollto": "^2.17.1", "vue-sweetalert-icons": "~4.2.0", @@ -111,17 +111,17 @@ "babel-preset-vue": "~2.0.2", "core-js": "~2.6.10", "css-loader": "~3.2.0", - "eslint": "~5.16.0", + "eslint": "~6.6.0", "eslint-config-prettier": "~6.5.0", - "eslint-config-standard": "~12.0.0", + "eslint-config-standard": "~14.1.0", "eslint-loader": "~3.0.2", "eslint-plugin-import": "~2.18.2", - "eslint-plugin-jest": "~23.0.2", + "eslint-plugin-jest": "~23.0.4", "eslint-plugin-node": "~10.0.0", "eslint-plugin-prettier": "~3.1.1", "eslint-plugin-promise": "~4.2.1", "eslint-plugin-standard": "~4.0.1", - "eslint-plugin-vue": "~6.0.0", + "eslint-plugin-vue": "~6.0.1", "faker": "^4.1.0", "flush-promises": "^1.0.2", "fuse.js": "^3.4.5", @@ -129,7 +129,7 @@ "jest": "~24.9.0", "mutation-observer": "^1.0.3", "node-sass": "~4.13.0", - "prettier": "~1.18.2", + "prettier": "~1.19.1", "sass-loader": "~8.0.0", "storybook-design-token": "^0.4.1", "storybook-vue-router": "^1.0.7", diff --git a/webapp/pages/admin/hashtags.vue b/webapp/pages/admin/hashtags.vue index 76306873a..521d3110a 100644 --- a/webapp/pages/admin/hashtags.vue +++ b/webapp/pages/admin/hashtags.vue @@ -1,9 +1,7 @@ + + @@ -74,7 +78,7 @@ diff --git a/webapp/pages/settings/index.vue b/webapp/pages/settings/index.vue index 934b10558..8ea6dddaf 100644 --- a/webapp/pages/settings/index.vue +++ b/webapp/pages/settings/index.vue @@ -117,7 +117,7 @@ export default { this.loadingData = true const { name, slug, about } = this.formData let { locationName } = this.formData || this.currentUser - locationName = locationName && (locationName['label'] || locationName) + locationName = locationName && (locationName.label || locationName) try { await this.$apollo.mutate({ mutation, @@ -154,7 +154,7 @@ export default { if (!res || !res.data || !res.data.features || !res.data.features.length) { return [] } - let output = [] + const output = [] res.data.features.forEach(item => { output.push({ label: item.place_name, diff --git a/webapp/plugins/vue-filters.js b/webapp/plugins/vue-filters.js index 399b675fa..56fc6ca73 100644 --- a/webapp/plugins/vue-filters.js +++ b/webapp/plugins/vue-filters.js @@ -45,7 +45,11 @@ export default ({ app = {} }) => { return value.join(glue) }, listByKey: (values, key, glue, truncate) => { - return app.$filters.list(values.map(item => item[key]), glue, truncate) + return app.$filters.list( + values.map(item => item[key]), + glue, + truncate, + ) }, camelCase: (value = '') => { return value diff --git a/webapp/plugins/vue-infinite-loading.js b/webapp/plugins/vue-infinite-loading.js new file mode 100644 index 000000000..e3e447a21 --- /dev/null +++ b/webapp/plugins/vue-infinite-loading.js @@ -0,0 +1,4 @@ +import Vue from 'vue' +import InfiniteLoading from 'vue-infinite-loading' + +Vue.use(InfiniteLoading, { props: { distance: 10 }, system: { throttleLimit: 800 } }) diff --git a/webapp/plugins/vue-infinite-scroll.js b/webapp/plugins/vue-infinite-scroll.js deleted file mode 100644 index 776db193b..000000000 --- a/webapp/plugins/vue-infinite-scroll.js +++ /dev/null @@ -1,4 +0,0 @@ -import Vue from 'vue' -import infiniteScroll from 'vue-infinite-scroll' - -Vue.use(infiniteScroll) diff --git a/webapp/store/auth.test.js b/webapp/store/auth.test.js index ad398520f..87b5295dc 100644 --- a/webapp/store/auth.test.js +++ b/webapp/store/auth.test.js @@ -169,7 +169,10 @@ describe('actions', () => { it('saves pending flags in order', () => { expect(commit.mock.calls).toEqual( - expect.arrayContaining([['SET_PENDING', true], ['SET_PENDING', false]]), + expect.arrayContaining([ + ['SET_PENDING', true], + ['SET_PENDING', false], + ]), ) }) }) @@ -207,7 +210,10 @@ describe('actions', () => { await action({ commit }, { email: 'user@example.org', password: 'wrong' }) } catch (err) {} // ignore expect(commit.mock.calls).toEqual( - expect.arrayContaining([['SET_PENDING', true], ['SET_PENDING', false]]), + expect.arrayContaining([ + ['SET_PENDING', true], + ['SET_PENDING', false], + ]), ) }) }) diff --git a/webapp/store/posts.js b/webapp/store/posts.js index 4342c5e9e..0583388f7 100644 --- a/webapp/store/posts.js +++ b/webapp/store/posts.js @@ -4,8 +4,6 @@ import xor from 'lodash/xor' import isEmpty from 'lodash/isEmpty' import isEqual from 'lodash/isEqual' import clone from 'lodash/clone' -import { filterPosts } from '~/graphql/PostQuery' -import { first, offset } from '~/constants/posts' const defaultFilter = {} @@ -27,8 +25,7 @@ export const state = () => { filter: { ...defaultFilter, }, - order: orderOptions['createdAt_desc'], - currentPosts: [], + order: orderOptions.createdAt_desc, } } @@ -77,9 +74,6 @@ export const mutations = { SELECT_ORDER(state, value) { state.order = orderOptions[value] }, - SET_CURRENT_POSTS(state, posts) { - state.currentPosts = posts - }, } export const getters = { @@ -120,26 +114,4 @@ export const getters = { orderIcon(state) { return state.order.icon }, - currentPosts(state) { - return state.currentPosts || [] - }, -} - -export const actions = { - async refreshPosts({ commit, getters }, { i18n }) { - const client = this.app.apolloProvider.defaultClient - const { - data: { Post }, - } = await client.query({ - query: filterPosts(i18n), - variables: { - filter: getters.filter, - first, - orderBy: ['pinned_asc', getters.orderBy], - offset, - }, - }) - commit('SET_CURRENT_POSTS', Post) - return Post - }, } diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 72a6dd55b..ae9933ca6 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -3255,6 +3255,11 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn-jsx@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== + acorn-walk@^6.0.1, acorn-walk@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" @@ -3275,6 +3280,11 @@ acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + address@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" @@ -3338,17 +3348,7 @@ ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== - 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" - -ajv@^6.10.2: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -5465,6 +5465,13 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-spinners@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.1.0.tgz#22c34b4d51f573240885b201efda4e4ec9fff3c7" @@ -7052,10 +7059,10 @@ eslint-config-prettier@^6.0.0, eslint-config-prettier@~6.5.0: dependencies: get-stdin "^6.0.0" -eslint-config-standard@~12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" - integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== +eslint-config-standard@~14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" + integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA== eslint-import-resolver-node@^0.3.2: version "0.3.2" @@ -7109,10 +7116,10 @@ eslint-plugin-import@~2.18.2: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-jest@~23.0.2: - version "23.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.0.2.tgz#54a59bfe77245186afe13711a297067aefefff0a" - integrity sha512-fkxcvOJm0hC/jbJqYJjtuC9mvpTJqXd0Nixx7joVQvJoBQuXk/ws3+MtRYzD/4TcKSgvr21uuSLdwSxKJKC2cg== +eslint-plugin-jest@~23.0.4: + version "23.0.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.0.4.tgz#1ab81ffe3b16c5168efa72cbd4db14d335092aa0" + integrity sha512-OaP8hhT8chJNodUPvLJ6vl8gnalcsU/Ww1t9oR3HnGdEWjm/DdCCUXLOral+IPGAeWu/EwgVQCK/QtxALpH1Yw== dependencies: "@typescript-eslint/experimental-utils" "^2.5.0" @@ -7145,12 +7152,12 @@ eslint-plugin-standard@~4.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== -eslint-plugin-vue@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.0.0.tgz#fc7a4116dff614a27be8639fb47973703dd332fa" - integrity sha512-+LxTJCd6nDt+AKQ1X+ySD48xJHft8OkeQmAhiq6UoAMxRFTiEKIDusiGgEUJLwKyiwGUGWbbqEbbWvupH5TSjg== +eslint-plugin-vue@~6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.0.1.tgz#166d3eb24cf290f3ff24d44fe9fca496f3924fc2" + integrity sha512-5tgFPcxGDKjfVB/6Yi56bKiWxygUibfZmzSh26Np3kuwAk/lfaGbVld+Yt+MPgD84ppvcachtiL4/winsXLjXA== dependencies: - vue-eslint-parser "^6.0.4" + vue-eslint-parser "^6.0.5" eslint-scope@^4.0.0, eslint-scope@^4.0.3: version "4.0.3" @@ -7168,66 +7175,67 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1, eslint-utils@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== +eslint-utils@^1.4.2, eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - eslint-visitor-keys "^1.0.0" + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@~5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@~6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.6.0.tgz#4a01a2fb48d32aacef5530ee9c5a78f11a8afd04" + integrity sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" + glob-parent "^5.0.0" globals "^11.7.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" - path-is-inside "^1.0.2" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^5.0.0, espree@^5.0.1: +espree@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== @@ -7236,6 +7244,15 @@ espree@^5.0.0, espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" +espree@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== + dependencies: + acorn "^7.1.0" + acorn-jsx "^5.1.0" + eslint-visitor-keys "^1.1.0" + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -8121,7 +8138,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -8981,7 +8998,7 @@ inquirer@6.2.2: strip-ansi "^5.0.0" through "^2.3.6" -inquirer@^6.2.0: +inquirer@^6.2.0, inquirer@^6.2.2: version "6.5.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== @@ -9000,22 +9017,22 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^6.2.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== +inquirer@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" + integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" rxjs "^6.4.0" - string-width "^2.1.0" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -11088,6 +11105,11 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + nan@^2.12.1, nan@^2.13.2: version "2.13.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" @@ -12016,7 +12038,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -12879,10 +12901,10 @@ prettier@1.16.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== -prettier@~1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" - integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== +prettier@~1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-bytes@^5.3.0: version "5.3.0" @@ -13970,6 +13992,14 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -15154,11 +15184,16 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + style-loader@^0.23.1, style-loader@~0.23.1: version "0.23.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" @@ -15300,7 +15335,7 @@ symbol.prototype.description@^1.0.0: dependencies: has-symbols "^1.0.0" -table@5.4.6: +table@5.4.6, table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== @@ -15310,16 +15345,6 @@ table@5.4.6: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== - dependencies: - ajv "^6.9.1" - lodash "^4.17.11" - slice-ansi "^2.1.0" - string-width "^3.0.0" - tapable@^1.0.0, tapable@^1.0.0-beta.5, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -16159,6 +16184,11 @@ v-tooltip@~2.0.2: popper.js "^1.15.0" vue-resize "^0.4.5" +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -16284,10 +16314,10 @@ vue-count-to@~1.0.13: resolved "https://registry.yarnpkg.com/vue-count-to/-/vue-count-to-1.0.13.tgz#3e7573ea6e64c2b2972f64e0a2ab2e23c7590ff3" integrity sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ== -vue-eslint-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-6.0.4.tgz#56ff47e2c2644bff39951d5a284982c7ecd6f7fa" - integrity sha512-GYsDsDWwKaGtnkW4nGUxr01wqIO2FB9/QHQTW1Gl5SUr5OyQvpnR90/D+Gq2cIxURX7aJ7+VyD+37Yx9eFwTgw== +vue-eslint-parser@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-6.0.5.tgz#c1c067c2755748e28f3872cd42e8c1c4c1a8059f" + integrity sha512-Bvjlx7rH1Ulvus56KHeLXOjEi3JMOYTa1GAqZr9lBQhd8weK8mV7U7V2l85yokBZEWHJQjLn6X3nosY8TzkOKg== dependencies: debug "^4.1.1" eslint-scope "^4.0.0" @@ -16301,10 +16331,10 @@ vue-hot-reload-api@^2.3.0: resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf" integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g== -vue-infinite-scroll@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/vue-infinite-scroll/-/vue-infinite-scroll-2.0.2.tgz#ca37a91fe92ee0ad3b74acf8682c00917144b711" - integrity sha512-n+YghR059YmciANGJh9SsNWRi1YZEBVlODtmnb/12zI+4R72QZSWd+EuZ5mW6auEo/yaJXgxzwsuhvALVnm73A== +vue-infinite-loading@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/vue-infinite-loading/-/vue-infinite-loading-2.4.4.tgz#8a9defb9ceeea797c057cb36bdf558a4b2ce409f" + integrity sha512-eIFBcyKqkivtsDDq7Ee5ybDJVGLxIzU1NcBJCHG7Zx9Ic66QEGzSPs2OPJlGUdtu0/RS7KpUER35ZP/a7FdSOg== vue-izitoast@^1.2.1: version "1.2.1"