From 7104896150ce61c54debf6c47b159dff59579b4d Mon Sep 17 00:00:00 2001 From: Alina Beck Date: Mon, 23 Sep 2019 20:46:41 +0100 Subject: [PATCH 01/46] remove sleep icon from comment list --- webapp/components/CommentList/CommentList.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/webapp/components/CommentList/CommentList.vue b/webapp/components/CommentList/CommentList.vue index 17da8dda4..fc11c6d70 100644 --- a/webapp/components/CommentList/CommentList.vue +++ b/webapp/components/CommentList/CommentList.vue @@ -26,17 +26,14 @@ @updateComment="updateCommentList" /> - + + From a85fab04b64175251d97f072a79af6d0d0abf9a0 Mon Sep 17 00:00:00 2001 From: Alina Beck Date: Mon, 23 Sep 2019 22:38:13 +0100 Subject: [PATCH 03/46] remove failing test because specs have changed --- webapp/components/CommentList/CommentList.spec.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/webapp/components/CommentList/CommentList.spec.js b/webapp/components/CommentList/CommentList.spec.js index 460f1a4ea..4d382b36d 100644 --- a/webapp/components/CommentList/CommentList.spec.js +++ b/webapp/components/CommentList/CommentList.spec.js @@ -1,6 +1,5 @@ import { config, mount, createLocalVue } from '@vue/test-utils' import CommentList from './CommentList' -import Empty from '~/components/Empty' import Vuex from 'vuex' import Styleguide from '@human-connection/styleguide' import Filters from '~/plugins/vue-filters' @@ -70,11 +69,6 @@ describe('CommentList.vue', () => { wrapper = Wrapper() }) - it('displays a message icon when there are no comments to display', () => { - propsData.post.comments = [] - expect(Wrapper().findAll(Empty)).toHaveLength(1) - }) - it('displays a comments counter', () => { expect(wrapper.find('span.ds-tag').text()).toEqual('1') }) From f63067b0e9775b72dfd75d5c9df96cd891c009ca Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 04:30:37 +0000 Subject: [PATCH 04/46] Bump metascraper-url from 5.7.4 to 5.7.5 in /backend Bumps [metascraper-url](https://github.com/microlinkhq/metascraper) from 5.7.4 to 5.7.5. - [Release notes](https://github.com/microlinkhq/metascraper/releases) - [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md) - [Commits](https://github.com/microlinkhq/metascraper/compare/v5.7.4...v5.7.5) Signed-off-by: dependabot-preview[bot] --- backend/package.json | 2 +- backend/yarn.lock | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/backend/package.json b/backend/package.json index e4de89fd8..ca48affdb 100644 --- a/backend/package.json +++ b/backend/package.json @@ -85,7 +85,7 @@ "metascraper-publisher": "^5.7.4", "metascraper-soundcloud": "^5.7.4", "metascraper-title": "^5.7.4", - "metascraper-url": "^5.7.4", + "metascraper-url": "^5.7.5", "metascraper-video": "^5.7.4", "metascraper-youtube": "^5.7.4", "minimatch": "^3.0.4", diff --git a/backend/yarn.lock b/backend/yarn.lock index c1dc0eaae..5ba603a64 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -971,10 +971,10 @@ url-regex "~4.1.1" video-extensions "~1.1.0" -"@metascraper/helpers@^5.7.4": - version "5.7.4" - resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.7.4.tgz#c91c1b11ce585fa973a544a9d24c5d88d50a9354" - integrity sha512-GMLFu8j7e65n04w+dfOVF8RWOqNHCqimITtTHYSa1XdLR8vSqE2PjvSOhGoS5ELU5fRlRQKy9EOrKDeRV3/K0w== +"@metascraper/helpers@^5.7.4", "@metascraper/helpers@^5.7.5": + version "5.7.5" + resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.7.5.tgz#fb4ca0e2825f836f1398dcc85227443a36eeb84c" + integrity sha512-ayeJIJqlqeiJHYPYi7fmhjvOg7FHTjfqd57nZCLo0fkqj2exsCa788G5Ihk5qHsk1ASVOgH+flp1XeyMl1vcXQ== dependencies: audio-extensions "0.0.0" chrono-node "~1.3.11" @@ -990,7 +990,7 @@ lodash "~4.17.15" mem "~5.1.1" mime-types "~2.1.24" - normalize-url "~4.3.0" + normalize-url "~4.4.1" smartquotes "~2.3.1" title "~3.4.1" truncate "~2.1.0" @@ -5973,12 +5973,12 @@ metascraper-title@^5.7.4: "@metascraper/helpers" "^5.7.4" lodash "~4.17.15" -metascraper-url@^5.7.4: - version "5.7.4" - resolved "https://registry.yarnpkg.com/metascraper-url/-/metascraper-url-5.7.4.tgz#c2aa19d5ebd1e29d1d4154d350cc903fd1725d95" - integrity sha512-ApmaiKny0stNXoGABVDFaXpfK2J5cO/wTUuiaS/bsPWwnwn9TFfdAzatEdzDM6pq77pbKWI6CkdEpeNE5b10/g== +metascraper-url@^5.7.5: + version "5.7.5" + resolved "https://registry.yarnpkg.com/metascraper-url/-/metascraper-url-5.7.5.tgz#f503820e2429036b26f5dad0b55f0e430bd49a6d" + integrity sha512-yY1HUiqZf7PkTMN4DeUfxDhtnMCzqyj7IvGbAVM0dHWzxC+s+RNM5NR1jo+DxVIVUxRygo3REQHwVA0Uu1CATg== dependencies: - "@metascraper/helpers" "^5.7.4" + "@metascraper/helpers" "^5.7.5" metascraper-video@^5.7.4: version "5.7.4" @@ -6409,7 +6409,7 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0, normalize-url@~4.3.0: +normalize-url@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== @@ -6419,6 +6419,11 @@ normalize-url@~4.2.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.2.0.tgz#e747f16b58e6d7f391495fd86415fa04ec7c9897" integrity sha512-n69+KXI+kZApR+sPwSkoAXpGlNkaiYyoHHqKOFPjJWvwZpew/EjKvuPE4+tStNgb42z5yLtdakgZCQI+LalSPg== +normalize-url@~4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.4.1.tgz#81e9c153b0ad5743755696f2aa20488d48e962b6" + integrity sha512-rjH3yRt0Ssx19mUwS0hrDUOdG9VI+oRLpLHJ7tXRdjcuQ7v7wo6qPvOZppHRrqfslTKr0L2yBhjj4UXd7c3cQg== + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" From 995d4573fa88ccdbc4dd7e6b0509d72b77766520 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 04:31:07 +0000 Subject: [PATCH 05/46] Bump metascraper-audio from 5.7.4 to 5.7.5 in /backend Bumps [metascraper-audio](https://github.com/microlinkhq/metascraper) from 5.7.4 to 5.7.5. - [Release notes](https://github.com/microlinkhq/metascraper/releases) - [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md) - [Commits](https://github.com/microlinkhq/metascraper/compare/v5.7.4...v5.7.5) Signed-off-by: dependabot-preview[bot] --- backend/package.json | 2 +- backend/yarn.lock | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/backend/package.json b/backend/package.json index e4de89fd8..bb4ff02ff 100644 --- a/backend/package.json +++ b/backend/package.json @@ -73,7 +73,7 @@ "lodash": "~4.17.14", "merge-graphql-schemas": "^1.7.0", "metascraper": "^4.10.3", - "metascraper-audio": "^5.7.4", + "metascraper-audio": "^5.7.5", "metascraper-author": "^5.7.4", "metascraper-clearbit-logo": "^5.3.0", "metascraper-date": "^5.7.4", diff --git a/backend/yarn.lock b/backend/yarn.lock index c1dc0eaae..4427b3d70 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -971,10 +971,10 @@ url-regex "~4.1.1" video-extensions "~1.1.0" -"@metascraper/helpers@^5.7.4": - version "5.7.4" - resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.7.4.tgz#c91c1b11ce585fa973a544a9d24c5d88d50a9354" - integrity sha512-GMLFu8j7e65n04w+dfOVF8RWOqNHCqimITtTHYSa1XdLR8vSqE2PjvSOhGoS5ELU5fRlRQKy9EOrKDeRV3/K0w== +"@metascraper/helpers@^5.7.4", "@metascraper/helpers@^5.7.5": + version "5.7.5" + resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.7.5.tgz#fb4ca0e2825f836f1398dcc85227443a36eeb84c" + integrity sha512-ayeJIJqlqeiJHYPYi7fmhjvOg7FHTjfqd57nZCLo0fkqj2exsCa788G5Ihk5qHsk1ASVOgH+flp1XeyMl1vcXQ== dependencies: audio-extensions "0.0.0" chrono-node "~1.3.11" @@ -990,7 +990,7 @@ lodash "~4.17.15" mem "~5.1.1" mime-types "~2.1.24" - normalize-url "~4.3.0" + normalize-url "~4.4.1" smartquotes "~2.3.1" title "~3.4.1" truncate "~2.1.0" @@ -5883,12 +5883,12 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -metascraper-audio@^5.7.4: - version "5.7.4" - resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.7.4.tgz#a476ed484b2642060208243843dc7ef5c9eb7a3e" - integrity sha512-5M+C+tirJlR71PXymAkBnEXu8KG0+fkX3G0Dm2UO6jDEchIo+DhW2aGSgB8w9kQN80Ni8jaLjNH3+Mtwbsbbkw== +metascraper-audio@^5.7.5: + version "5.7.5" + resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.7.5.tgz#9ccdc85a2e17b6767e91ecfc964faaa83e10e917" + integrity sha512-2uE2VrsB780krOoKSGM08iquxyZmLEWNEG/8P3+wbZJ3aQA+JVTc7He/D8XMhFd93dFTpVZUNV9qLlPIjWnwnw== dependencies: - "@metascraper/helpers" "^5.7.4" + "@metascraper/helpers" "^5.7.5" metascraper-author@^5.7.4: version "5.7.4" @@ -6409,7 +6409,7 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0, normalize-url@~4.3.0: +normalize-url@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== @@ -6419,6 +6419,11 @@ normalize-url@~4.2.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.2.0.tgz#e747f16b58e6d7f391495fd86415fa04ec7c9897" integrity sha512-n69+KXI+kZApR+sPwSkoAXpGlNkaiYyoHHqKOFPjJWvwZpew/EjKvuPE4+tStNgb42z5yLtdakgZCQI+LalSPg== +normalize-url@~4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.4.1.tgz#81e9c153b0ad5743755696f2aa20488d48e962b6" + integrity sha512-rjH3yRt0Ssx19mUwS0hrDUOdG9VI+oRLpLHJ7tXRdjcuQ7v7wo6qPvOZppHRrqfslTKr0L2yBhjj4UXd7c3cQg== + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" From bce0d7b1c52b49bf6d135aea14781ae7e89e300f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 04:31:56 +0000 Subject: [PATCH 06/46] Bump metascraper-image from 5.7.4 to 5.7.5 in /backend Bumps [metascraper-image](https://github.com/microlinkhq/metascraper) from 5.7.4 to 5.7.5. - [Release notes](https://github.com/microlinkhq/metascraper/releases) - [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md) - [Commits](https://github.com/microlinkhq/metascraper/compare/v5.7.4...v5.7.5) Signed-off-by: dependabot-preview[bot] --- backend/package.json | 2 +- backend/yarn.lock | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/backend/package.json b/backend/package.json index e4de89fd8..4fc37718f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -78,7 +78,7 @@ "metascraper-clearbit-logo": "^5.3.0", "metascraper-date": "^5.7.4", "metascraper-description": "^5.7.4", - "metascraper-image": "^5.7.4", + "metascraper-image": "^5.7.5", "metascraper-lang": "^5.7.4", "metascraper-lang-detector": "^4.8.5", "metascraper-logo": "^5.7.4", diff --git a/backend/yarn.lock b/backend/yarn.lock index c1dc0eaae..c6cb52a92 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -971,10 +971,10 @@ url-regex "~4.1.1" video-extensions "~1.1.0" -"@metascraper/helpers@^5.7.4": - version "5.7.4" - resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.7.4.tgz#c91c1b11ce585fa973a544a9d24c5d88d50a9354" - integrity sha512-GMLFu8j7e65n04w+dfOVF8RWOqNHCqimITtTHYSa1XdLR8vSqE2PjvSOhGoS5ELU5fRlRQKy9EOrKDeRV3/K0w== +"@metascraper/helpers@^5.7.4", "@metascraper/helpers@^5.7.5": + version "5.7.5" + resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.7.5.tgz#fb4ca0e2825f836f1398dcc85227443a36eeb84c" + integrity sha512-ayeJIJqlqeiJHYPYi7fmhjvOg7FHTjfqd57nZCLo0fkqj2exsCa788G5Ihk5qHsk1ASVOgH+flp1XeyMl1vcXQ== dependencies: audio-extensions "0.0.0" chrono-node "~1.3.11" @@ -990,7 +990,7 @@ lodash "~4.17.15" mem "~5.1.1" mime-types "~2.1.24" - normalize-url "~4.3.0" + normalize-url "~4.4.1" smartquotes "~2.3.1" title "~3.4.1" truncate "~2.1.0" @@ -5919,12 +5919,12 @@ metascraper-description@^5.7.4: dependencies: "@metascraper/helpers" "^5.7.4" -metascraper-image@^5.7.4: - version "5.7.4" - resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.7.4.tgz#095aad47efa263c872d1762fdb3fdc1fcad62129" - integrity sha512-AZRQR9Z6BMJ/EfPG2g5XlRVrkGwiHAPJiakJl1kASHAvfqdznkW6ZjOCta1Wx76x++jjwWRxF67K/elLg8AMdg== +metascraper-image@^5.7.5: + version "5.7.5" + resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.7.5.tgz#fef461b706885f6a6be4141e8270318dbc66936d" + integrity sha512-n6SLTCKNugEJuZWHxEISsLOmQKlxs1Rzl+EsZzYeLKYu5fnCI7XegepOC85erofPl3OaivrKyWk3WKUN+qQ3JA== dependencies: - "@metascraper/helpers" "^5.7.4" + "@metascraper/helpers" "^5.7.5" metascraper-lang-detector@^4.8.5: version "4.10.2" @@ -6409,7 +6409,7 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0, normalize-url@~4.3.0: +normalize-url@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== @@ -6419,6 +6419,11 @@ normalize-url@~4.2.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.2.0.tgz#e747f16b58e6d7f391495fd86415fa04ec7c9897" integrity sha512-n69+KXI+kZApR+sPwSkoAXpGlNkaiYyoHHqKOFPjJWvwZpew/EjKvuPE4+tStNgb42z5yLtdakgZCQI+LalSPg== +normalize-url@~4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.4.1.tgz#81e9c153b0ad5743755696f2aa20488d48e962b6" + integrity sha512-rjH3yRt0Ssx19mUwS0hrDUOdG9VI+oRLpLHJ7tXRdjcuQ7v7wo6qPvOZppHRrqfslTKr0L2yBhjj4UXd7c3cQg== + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" From 4d67b46492b8f333a7d9a2c03a126a23498ef7c6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 04:32:06 +0000 Subject: [PATCH 07/46] Bump @babel/core from 7.6.0 to 7.6.2 in /webapp Bumps [@babel/core](https://github.com/babel/babel) from 7.6.0 to 7.6.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md) - [Commits](https://github.com/babel/babel/compare/v7.6.0...v7.6.2) Signed-off-by: dependabot-preview[bot] --- webapp/package.json | 2 +- webapp/yarn.lock | 55 ++++++++++++++++++++++----------------------- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 4a9b7615e..67ebd1284 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -89,7 +89,7 @@ "zxcvbn": "^4.4.2" }, "devDependencies": { - "@babel/core": "~7.6.0", + "@babel/core": "~7.6.2", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/preset-env": "~7.6.0", "@storybook/addon-a11y": "^5.2.1", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index b948559ec..7dbc3b5ff 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -56,17 +56,17 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.1.0", "@babel/core@^7.5.5", "@babel/core@~7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" - integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== +"@babel/core@^7.1.0", "@babel/core@^7.5.5", "@babel/core@~7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.2.tgz#069a776e8d5e9eefff76236bc8845566bd31dd91" + integrity sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" - "@babel/helpers" "^7.6.0" - "@babel/parser" "^7.6.0" + "@babel/generator" "^7.6.2" + "@babel/helpers" "^7.6.2" + "@babel/parser" "^7.6.2" "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" + "@babel/traverse" "^7.6.2" "@babel/types" "^7.6.0" convert-source-map "^1.1.0" debug "^4.1.0" @@ -87,16 +87,15 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.4.0", "@babel/generator@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" - integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== +"@babel/generator@^7.4.0", "@babel/generator@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.2.tgz#dac8a3c2df118334c2a29ff3446da1636a8f8c03" + integrity sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ== dependencies: "@babel/types" "^7.6.0" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" - trim-right "^1.0.1" "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" @@ -294,13 +293,13 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" - integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== +"@babel/helpers@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" + integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== dependencies: "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" + "@babel/traverse" "^7.6.2" "@babel/types" "^7.6.0" "@babel/highlight@^7.0.0": @@ -312,10 +311,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.3", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" - integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.3", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.2.tgz#205e9c95e16ba3b8b96090677a67c9d6075b70a1" + integrity sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" @@ -798,16 +797,16 @@ "@babel/parser" "^7.6.0" "@babel/types" "^7.6.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" - integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.2.tgz#b0e2bfd401d339ce0e6c05690206d1e11502ce2c" + integrity sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" + "@babel/generator" "^7.6.2" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.6.0" + "@babel/parser" "^7.6.2" "@babel/types" "^7.6.0" debug "^4.1.0" globals "^11.1.0" From ffa9cee5b88f3f7f75be9d86c16505ccabf1d77b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 09:02:23 +0000 Subject: [PATCH 08/46] Bump metascraper-video from 5.7.4 to 5.7.5 in /backend Bumps [metascraper-video](https://github.com/microlinkhq/metascraper) from 5.7.4 to 5.7.5. - [Release notes](https://github.com/microlinkhq/metascraper/releases) - [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md) - [Commits](https://github.com/microlinkhq/metascraper/compare/v5.7.4...v5.7.5) Signed-off-by: dependabot-preview[bot] --- backend/package.json | 2 +- backend/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/package.json b/backend/package.json index b5c0a2430..5dabf6753 100644 --- a/backend/package.json +++ b/backend/package.json @@ -86,7 +86,7 @@ "metascraper-soundcloud": "^5.7.4", "metascraper-title": "^5.7.4", "metascraper-url": "^5.7.5", - "metascraper-video": "^5.7.4", + "metascraper-video": "^5.7.5", "metascraper-youtube": "^5.7.4", "minimatch": "^3.0.4", "mustache": "^3.0.3", diff --git a/backend/yarn.lock b/backend/yarn.lock index 2e0ab7819..27bdd7100 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -5980,12 +5980,12 @@ metascraper-url@^5.7.5: dependencies: "@metascraper/helpers" "^5.7.5" -metascraper-video@^5.7.4: - version "5.7.4" - resolved "https://registry.yarnpkg.com/metascraper-video/-/metascraper-video-5.7.4.tgz#33895606b5bde9199e02c726811925a52f9aefb0" - integrity sha512-8Rm+y0MW+nGS5A5Z08ZAkcwBif60IGNxf7w0D83i1lw5/8K/g/WpGK0NeT8UuVha0ZHXMQcY1TQOhZO56dpAbA== +metascraper-video@^5.7.5: + version "5.7.5" + resolved "https://registry.yarnpkg.com/metascraper-video/-/metascraper-video-5.7.5.tgz#15dd760fe26acb21cac7ced60f1ad508b0f130d1" + integrity sha512-LZFSttRIvUz9yEM17Z8CN0XI925CFTrV6pHMMSglD3bQH4qtrne1d+xXDUz6riPhBuR80BA5Xb9OrpRPSNCK2w== dependencies: - "@metascraper/helpers" "^5.7.4" + "@metascraper/helpers" "^5.7.5" lodash "~4.17.15" metascraper-youtube@^5.7.4: From ea6785e01a8ad964372629efe40d977f8ab28f5f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 09:02:38 +0000 Subject: [PATCH 09/46] Bump graphql from 14.5.6 to 14.5.7 in /backend Bumps [graphql](https://github.com/graphql/graphql-js) from 14.5.6 to 14.5.7. - [Release notes](https://github.com/graphql/graphql-js/releases) - [Commits](https://github.com/graphql/graphql-js/compare/v14.5.6...v14.5.7) Signed-off-by: dependabot-preview[bot] --- backend/package.json | 2 +- backend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index b5c0a2430..6fb1d9da4 100644 --- a/backend/package.json +++ b/backend/package.json @@ -60,7 +60,7 @@ "dotenv": "~8.1.0", "express": "^4.17.1", "faker": "Marak/faker.js#master", - "graphql": "^14.5.6", + "graphql": "^14.5.7", "graphql-custom-directives": "~0.2.14", "graphql-iso-date": "~3.6.1", "graphql-middleware": "~3.0.5", diff --git a/backend/yarn.lock b/backend/yarn.lock index 2e0ab7819..5cbb104a9 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -4209,10 +4209,10 @@ graphql-upload@^8.0.2: http-errors "^1.7.2" object-path "^0.11.4" -graphql@^14.2.1, graphql@^14.5.6: - version "14.5.6" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.6.tgz#3fa12173b50e6ccdef953c31c82f37c50ef58bec" - integrity sha512-zJ6Oz8P1yptV4O4DYXdArSwvmirPetDOBnGFRBl0zQEC68vNW3Ny8qo8VzMgfr+iC8PKiRYJ+f2wub41oDCoQg== +graphql@^14.2.1, graphql@^14.5.7: + version "14.5.7" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.7.tgz#8646a3fcc07922319cc3967eba4a64b32929f77f" + integrity sha512-as410RMJSUFqF8RcH2QWxZ5ioqHzsH9VWnWbaU+UnDXJ/6azMDIYPrtXCBPXd8rlunEVb7W8z6fuUnNHMbFu9A== dependencies: iterall "^1.2.2" From f5e2322c3e7284791df78a93f6581aba86cd521e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 09:03:06 +0000 Subject: [PATCH 10/46] Bump metascraper-logo from 5.7.4 to 5.7.5 in /backend Bumps [metascraper-logo](https://github.com/microlinkhq/metascraper) from 5.7.4 to 5.7.5. - [Release notes](https://github.com/microlinkhq/metascraper/releases) - [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md) - [Commits](https://github.com/microlinkhq/metascraper/compare/v5.7.4...v5.7.5) Signed-off-by: dependabot-preview[bot] --- backend/package.json | 2 +- backend/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/package.json b/backend/package.json index 25bef5085..d62012645 100644 --- a/backend/package.json +++ b/backend/package.json @@ -81,7 +81,7 @@ "metascraper-image": "^5.7.5", "metascraper-lang": "^5.7.4", "metascraper-lang-detector": "^4.8.5", - "metascraper-logo": "^5.7.4", + "metascraper-logo": "^5.7.5", "metascraper-publisher": "^5.7.4", "metascraper-soundcloud": "^5.7.4", "metascraper-title": "^5.7.4", diff --git a/backend/yarn.lock b/backend/yarn.lock index 868dfb572..50714c1da 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -5942,12 +5942,12 @@ metascraper-lang@^5.7.4: dependencies: "@metascraper/helpers" "^5.7.4" -metascraper-logo@^5.7.4: - version "5.7.4" - resolved "https://registry.yarnpkg.com/metascraper-logo/-/metascraper-logo-5.7.4.tgz#a90136718b7f827ba41249442f48a0535245bf13" - integrity sha512-SIpKMWydmVHSFjV7/exPxDx7Ydgp5n5GG0dLBNKCEuv3fHiMulrtevDlV+yk4xIGPh1CnA0hCS6mL7N/2y9ltw== +metascraper-logo@^5.7.5: + version "5.7.5" + resolved "https://registry.yarnpkg.com/metascraper-logo/-/metascraper-logo-5.7.5.tgz#90f9fc30191a495f439e4f36d90af01fd3995a64" + integrity sha512-L+ZyJx+c7V0RyRubr6hITlnTjmEkPVJmXnWHz/bbWXEI++MA8/jI/XVsbxugcliMhdG8/UW+wANZ/uBoRHejdA== dependencies: - "@metascraper/helpers" "^5.7.4" + "@metascraper/helpers" "^5.7.5" metascraper-publisher@^5.7.4: version "5.7.4" From 14d7695f6207f42ed4353d5aadb88ae643ce9a32 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2019 09:04:40 +0000 Subject: [PATCH 11/46] Bump @babel/preset-env from 7.6.0 to 7.6.2 in /webapp Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.6.0 to 7.6.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md) - [Commits](https://github.com/babel/babel/compare/v7.6.0...v7.6.2) Signed-off-by: dependabot-preview[bot] --- webapp/package.json | 2 +- webapp/yarn.lock | 109 +++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 58 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 67ebd1284..9d7965785 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -91,7 +91,7 @@ "devDependencies": { "@babel/core": "~7.6.2", "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/preset-env": "~7.6.0", + "@babel/preset-env": "~7.6.2", "@storybook/addon-a11y": "^5.2.1", "@storybook/addon-actions": "^5.2.1", "@storybook/vue": "~5.2.1", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 7dbc3b5ff..979e6952d 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -358,10 +358,10 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.3.2", "@babel/plugin-proposal-object-rest-spread@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" - integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== +"@babel/plugin-proposal-object-rest-spread@^7.3.2", "@babel/plugin-proposal-object-rest-spread@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" + integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" @@ -374,14 +374,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== +"@babel/plugin-proposal-unicode-property-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz#05413762894f41bfe42b9a5e80919bd575dcc802" + integrity sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + regexpu-core "^4.6.0" "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" @@ -455,10 +455,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" - integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== +"@babel/plugin-transform-block-scoping@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.2.tgz#96c33ab97a9ae500cc6f5b19e04a7e6553360a79" + integrity sha512-zZT8ivau9LOQQaOGC7bQLQOT4XPkPXgN2ERfUgk1X8ql+mVkLc4E8eKk+FO3o0154kxzqenWCorfmEXpEZcrSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" @@ -491,14 +491,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== +"@babel/plugin-transform-dotall-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz#44abb948b88f0199a627024e1508acaf8dc9b2f9" + integrity sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + regexpu-core "^4.6.0" "@babel/plugin-transform-duplicate-keys@^7.5.0": version "7.5.0" @@ -580,12 +580,12 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" - integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== +"@babel/plugin-transform-named-capturing-groups-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.2.tgz#c1ca0bb84b94f385ca302c3932e870b0fb0e522b" + integrity sha512-xBdB+XOs+lgbZc2/4F5BVDVcDNS4tcSKQc96KmlqLEAwz6tpYPEvPdmDfvVG0Ssn8lAhronaRs6Z6KSexIpK5g== dependencies: - regexp-tree "^0.1.13" + regexpu-core "^4.6.0" "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" @@ -657,10 +657,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== +"@babel/plugin-transform-spread@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz#fc77cf798b24b10c46e1b51b1b88c2bf661bb8dd" + integrity sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -687,28 +687,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== +"@babel/plugin-transform-unicode-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz#b692aad888a7e8d8b1b214be6b9dc03d5031f698" + integrity sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + regexpu-core "^4.6.0" -"@babel/preset-env@^7.4.5", "@babel/preset-env@^7.5.5", "@babel/preset-env@~7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" - integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== +"@babel/preset-env@^7.4.5", "@babel/preset-env@^7.5.5", "@babel/preset-env@~7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.2.tgz#abbb3ed785c7fe4220d4c82a53621d71fc0c75d3" + integrity sha512-Ru7+mfzy9M1/YTEtlDS8CD45jd22ngb9tXnn64DvQK3ooyqSw9K4K9DUWmYknTTVk4TqygL9dqCrZgm1HMea/Q== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-async-generator-functions" "^7.2.0" "@babel/plugin-proposal-dynamic-import" "^7.5.0" "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" + "@babel/plugin-proposal-object-rest-spread" "^7.6.2" "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.6.2" "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-syntax-dynamic-import" "^7.2.0" "@babel/plugin-syntax-json-strings" "^7.2.0" @@ -717,11 +717,11 @@ "@babel/plugin-transform-arrow-functions" "^7.2.0" "@babel/plugin-transform-async-to-generator" "^7.5.0" "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.0" + "@babel/plugin-transform-block-scoping" "^7.6.2" "@babel/plugin-transform-classes" "^7.5.5" "@babel/plugin-transform-computed-properties" "^7.2.0" "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.6.2" "@babel/plugin-transform-duplicate-keys" "^7.5.0" "@babel/plugin-transform-exponentiation-operator" "^7.2.0" "@babel/plugin-transform-for-of" "^7.4.4" @@ -732,7 +732,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.6.0" "@babel/plugin-transform-modules-systemjs" "^7.5.0" "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.2" "@babel/plugin-transform-new-target" "^7.4.4" "@babel/plugin-transform-object-super" "^7.5.5" "@babel/plugin-transform-parameters" "^7.4.4" @@ -740,11 +740,11 @@ "@babel/plugin-transform-regenerator" "^7.4.5" "@babel/plugin-transform-reserved-words" "^7.2.0" "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-spread" "^7.6.2" "@babel/plugin-transform-sticky-regex" "^7.2.0" "@babel/plugin-transform-template-literals" "^7.4.4" "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/plugin-transform-unicode-regex" "^7.6.2" "@babel/types" "^7.6.0" browserslist "^4.6.0" core-js-compat "^3.1.1" @@ -13043,10 +13043,10 @@ refractor@^2.4.1: parse-entities "^1.1.2" prismjs "~1.17.0" -regenerate-unicode-properties@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" - integrity sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ== +regenerate-unicode-properties@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== dependencies: regenerate "^1.4.0" @@ -13090,11 +13090,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.13.tgz#5b19ab9377edc68bc3679256840bb29afc158d7f" - integrity sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw== - regexp.prototype.flags@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" @@ -13112,13 +13107,13 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== -regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== +regexpu-core@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" + integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" + regenerate-unicode-properties "^8.1.0" regjsgen "^0.5.0" regjsparser "^0.6.0" unicode-match-property-ecmascript "^1.0.4" From 2a02a3dc07b58e0f2672ecdcfa76005f6382a134 Mon Sep 17 00:00:00 2001 From: mattwr18 Date: Mon, 23 Sep 2019 22:09:00 +0200 Subject: [PATCH 12/46] Configure docker to work with storybook --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 587ec718f..341c66885 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,7 @@ services: - "BUILD_COMMIT=${TRAVIS_COMMIT}" ports: - 3000:3000 + - 3502:3502 networks: - hc-network depends_on: @@ -60,7 +61,6 @@ services: - 7474:7474 volumes: - neo4j_data:/data - networks: hc-network: volumes: From 59232cefe757d55dee1231088233d366b32e8e92 Mon Sep 17 00:00:00 2001 From: roschaefer Date: Tue, 24 Sep 2019 11:58:05 +0200 Subject: [PATCH 13/46] Remove repeating labels from emote button Our dear @Hardy-Peaceglobal mentioned that when he had a look on the app on my mobile. --- webapp/components/EmotionsButton/EmotionsButton.vue | 1 - webapp/locales/de.json | 3 +-- webapp/locales/en.json | 3 +-- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/webapp/components/EmotionsButton/EmotionsButton.vue b/webapp/components/EmotionsButton/EmotionsButton.vue index b4849c31a..7536c1632 100644 --- a/webapp/components/EmotionsButton/EmotionsButton.vue +++ b/webapp/components/EmotionsButton/EmotionsButton.vue @@ -9,7 +9,6 @@

{{ PostsEmotionsCountByEmotion[emotion] }}x

- {{ $t('contribution.emotions-label.emoted') }} diff --git a/webapp/locales/de.json b/webapp/locales/de.json index a784cd5f7..fa9d66860 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -483,8 +483,7 @@ "happy": "Glรผcklich", "surprised": "Erstaunt", "cry": "Zum Weinen", - "angry": "Verรคrgert", - "emoted": "angegeben" + "angry": "Verรคrgert" }, "category": { "name": { diff --git a/webapp/locales/en.json b/webapp/locales/en.json index 502aedd67..592fc57e4 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -484,8 +484,7 @@ "happy": "Happy", "surprised": "Surprised", "cry": "Cry", - "angry": "Angry", - "emoted": "emoted" + "angry": "Angry" }, "category": { "name": { From 07508ab4df6b3fcf4d8156391969a080da4780b8 Mon Sep 17 00:00:00 2001 From: mattwr18 Date: Tue, 24 Sep 2019 12:00:58 +0200 Subject: [PATCH 14/46] Add documentation for storybook --- .gitbook/assets/storybook-output.png | Bin 0 -> 50585 bytes CONTRIBUTING.md | 6 ++--- backend/README.md | 36 +++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 .gitbook/assets/storybook-output.png diff --git a/.gitbook/assets/storybook-output.png b/.gitbook/assets/storybook-output.png new file mode 100644 index 0000000000000000000000000000000000000000..2b157dd62c0fdcd74e92b49a23505d146f36aefb GIT binary patch literal 50585 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¨VF^KrJU$Ih-5usAo1i)JvsFE)T7K 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 literal 0 HcmV?d00001 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0eb90a824..1475df0de 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,17 +50,17 @@ But what do we do when waiting for merge into master \(wanting to keep PRs small * but what about when you are waiting for merge? * solutions * 1\) put 2nd PR into branch that the first PR is hitting - but requires update after merging - * 2\) prefer to leave exiting PR until it can be reviewed, and instead go and work on some other part of the codebase that is not impacted by the first PR + * 2\) prefer to leave existing PR until it can be reviewed, and instead go and work on some other part of the codebase that is not impacted by the first PR ### Code Review * Github setting in place - at least one review is required to merge - in principle anyone (who is not the PR owner) can review - - but often it will be the core developers (Robert, Ulf, Greg, Wolfgang?) + - but often it will be the core developers (Robert, Wolfgang, Matt, Alina, Alex) - once there is a review, and presuming no requested changes, PR opener can merge * CI/tests - the CI needs to pass - - linting <-- autofix? + - linting (yarn lint --fix) - tests (unit, feature) (backend, frontend) - codecoverage diff --git a/backend/README.md b/backend/README.md index cd56e231f..41020116b 100644 --- a/backend/README.md +++ b/backend/README.md @@ -72,6 +72,8 @@ To reset the database run: $ docker-compose exec backend yarn run db:reset # you could also wipe out your neo4j database and delete all volumes with: $ docker-compose down -v +# if container is not running, run this command to set up your database indeces and contstraints +$ docker-compose run neo4j db_setup ``` {% endtab %} @@ -88,6 +90,40 @@ $ yarn run db:reset {% endtab %} {% endtabs %} +### Storybook + +We encourage contributors to use Storybook to test out new components in an isolated way, and benefit from its many features. +See the docs for live examples and answers to FAQ, among other helpful information. ![Storybook docs](https://storybook.js.org/docs/basics/introduction/) + +{% tabs %} +{% tab title="Docker" %} + +After you have started the application following the instructions above, in another terminal run: + +```bash +$ docker-compose exec webapp yarn storybook +``` +The output should look similar to this: + +![Storybook output](../.gitbook/assets/storybook-output.png) + +Click on the link http://172.18.0.6:3002/ to open the browser to your interactive storybook. + +{% endtab %} + +{% tab title="Without Docker" %} +Run the following command: + +```bash +# in webapp/ +yarn storybook +``` + +Open http://localhost:3002/ in your browser + +{% endtab %} +{% endtabs %} + # Testing From 33134c1d4f4b77aca26624f0a7fc7d592ab84bc8 Mon Sep 17 00:00:00 2001 From: aonomike Date: Tue, 24 Sep 2019 23:36:52 +0300 Subject: [PATCH 15/46] Refactor shout spec - Test unauthorized user path --- backend/src/schema/resolvers/shout.spec.js | 156 ++++----------------- 1 file changed, 29 insertions(+), 127 deletions(-) diff --git a/backend/src/schema/resolvers/shout.spec.js b/backend/src/schema/resolvers/shout.spec.js index 718a1e169..8cf6c6982 100644 --- a/backend/src/schema/resolvers/shout.spec.js +++ b/backend/src/schema/resolvers/shout.spec.js @@ -1,13 +1,13 @@ -import { GraphQLClient } from 'graphql-request' +import { createTestClient } from 'apollo-server-testing' import Factory from '../../seed/factories' -import { host, login, gql } from '../../jest/helpers' -import { neode } from '../../bootstrap/neo4j' +import { gql } from '../../jest/helpers' +import { neode as getNeode, getDriver } from '../../bootstrap/neo4j' +import createServer from '../../server' -let clientUser1, clientUser2 -let headersUser1, headersUser2 +let mutate, query, authenticatedUser, variables const factory = Factory() -const instance = neode() -const categoryIds = ['cat9'] +const instance = getNeode() +const driver = getDriver() const mutationShoutPost = gql` mutation($id: ID!) { @@ -28,132 +28,34 @@ const createPostMutation = gql` } } ` -const createPostVariables = { - id: 'p1234', - title: 'Post Title 1234', - content: 'Some Post Content 1234', - categoryIds, -} -beforeEach(async () => { - await factory.create('User', { - id: 'u1', - email: 'test@example.org', - password: '1234', +describe('shout and unshout posts', () => { + beforeAll(() => { + authenticatedUser = undefined + const { server } = createServer({ + context: () => { + return { + driver, + neode: instance, + user: authenticatedUser, + } + }, + }) + mutate = createTestClient(server).mutate + query = createTestClient(server).query }) - await factory.create('User', { - id: 'u2', - email: 'test2@example.org', - password: '1234', - }) - await instance.create('Category', { - id: 'cat9', - name: 'Democracy & Politics', - icon: 'university', - }) - headersUser1 = await login({ email: 'test@example.org', password: '1234' }) - headersUser2 = await login({ email: 'test2@example.org', password: '1234' }) - clientUser1 = new GraphQLClient(host, { headers: headersUser1 }) - clientUser2 = new GraphQLClient(host, { headers: headersUser2 }) - await clientUser1.request(createPostMutation, createPostVariables) - await clientUser2.request(createPostMutation, { - id: 'p12345', - title: 'Post Title 12345', - content: 'Some Post Content 12345', - categoryIds, + afterEach(() => { + factory.cleanDatabase() }) -}) -afterEach(async () => { - await factory.cleanDatabase() -}) - -describe('shout', () => { - describe('shout foreign post', () => { - describe('unauthenticated shout', () => { + describe('shout', () => { + describe('unauthenticated', () => { it('throws authorization error', async () => { - const client = new GraphQLClient(host) - await expect(client.request(mutationShoutPost, { id: 'p1234' })).rejects.toThrow( - 'Not Authorised', - ) + variables = { id: 'post-to-shout-id' } + await expect(mutate({ mutation: mutationShoutPost, variables })).resolves.toMatchObject({ + errors: [{ message: 'Not Authorised!' }], + }) }) }) - - it('I shout a post of another user', async () => { - const res = await clientUser1.request(mutationShoutPost, { id: 'p12345' }) - const expected = { - shout: true, - } - expect(res).toMatchObject(expected) - - const { Post } = await clientUser1.request(gql` - query { - Post(id: "p12345") { - shoutedByCurrentUser - } - } - `) - const expected2 = { - shoutedByCurrentUser: true, - } - expect(Post[0]).toMatchObject(expected2) - }) - - it('I can`t shout my own post', async () => { - const res = await clientUser1.request(mutationShoutPost, { id: 'p1234' }) - const expected = { - shout: false, - } - expect(res).toMatchObject(expected) - - const { Post } = await clientUser1.request(gql` - query { - Post(id: "p1234") { - shoutedByCurrentUser - } - } - `) - const expected2 = { - shoutedByCurrentUser: false, - } - expect(Post[0]).toMatchObject(expected2) - }) - }) - - describe('unshout foreign post', () => { - describe('unauthenticated shout', () => { - it('throws authorization error', async () => { - // shout - await clientUser1.request(mutationShoutPost, { id: 'p12345' }) - // unshout - const client = new GraphQLClient(host) - await expect(client.request(mutationUnshoutPost, { id: 'p12345' })).rejects.toThrow( - 'Not Authorised', - ) - }) - }) - - it('I unshout a post of another user', async () => { - // shout - await clientUser1.request(mutationShoutPost, { id: 'p12345' }) - const expected = { - unshout: true, - } - // unshout - const res = await clientUser1.request(mutationUnshoutPost, { id: 'p12345' }) - expect(res).toMatchObject(expected) - - const { Post } = await clientUser1.request(gql` - query { - Post(id: "p12345") { - shoutedByCurrentUser - } - } - `) - const expected2 = { - shoutedByCurrentUser: false, - } - expect(Post[0]).toMatchObject(expected2) - }) }) }) From 4488008a2c8974ccbc674c6295a083a4b68e6f99 Mon Sep 17 00:00:00 2001 From: aonomike Date: Wed, 25 Sep 2019 01:11:18 +0300 Subject: [PATCH 16/46] Test shouting other user's and current user's post --- backend/src/schema/resolvers/shout.spec.js | 177 ++++++++++++++++++++- 1 file changed, 172 insertions(+), 5 deletions(-) diff --git a/backend/src/schema/resolvers/shout.spec.js b/backend/src/schema/resolvers/shout.spec.js index 8cf6c6982..d38b1bef8 100644 --- a/backend/src/schema/resolvers/shout.spec.js +++ b/backend/src/schema/resolvers/shout.spec.js @@ -19,12 +19,13 @@ const mutationUnshoutPost = gql` unshout(id: $id, type: Post) } ` -const createPostMutation = gql` - mutation($id: ID, $title: String!, $content: String!, $categoryIds: [ID]!) { - CreatePost(id: $id, title: $title, content: $content, categoryIds: $categoryIds) { +const queryPost = gql` + query($id: ID!) { + Post(id: $id) { id - title - content + shoutedBy { + id + } } } ` @@ -57,5 +58,171 @@ describe('shout and unshout posts', () => { }) }) }) + describe('authenticated', () => { + let currentUser, postAuthor + beforeEach(async () => { + currentUser = await factory.create('User', { + id: 'current-user-id', + name: 'Current User', + email: 'current.user@example.org', + password: '1234', + }) + + postAuthor = await factory.create('User', { + id: 'post-author-id', + name: 'Post Author', + email: 'post.author@example.org', + password: '1234', + }) + authenticatedUser = await currentUser.toJson() + await factory.create('Post', { + name: 'Other user post', + id: 'other-user-post-id', + author: postAuthor, + }) + await factory.create('Post', { + name: 'current user post', + id: 'current-user-post-id', + author: currentUser, + }) + variables = {} + }) + + it('post of another user', async () => { + variables = { id: 'other-user-post-id' } + await expect(mutate({ mutation: mutationShoutPost, variables })).resolves.toMatchObject({ + data: { shout: true }, + }) + await expect(query({ query: queryPost, variables })).resolves.toMatchObject({ + data: { Post: [{ id: 'other-user-post-id', shoutedBy: [{ id: 'current-user-id' }] }] }, + errors: undefined, + }) + }) + + it('my own post', async () => { + variables = { id: 'current-user-post-id' } + await expect(mutate({ mutation: mutationShoutPost, variables })).resolves.toMatchObject({ + data: { shout: false }, + }) + await expect(query({ query: queryPost, variables })).resolves.toMatchObject({ + data: { Post: [{ id: 'current-user-post-id', shoutedBy: [] }] }, + errors: undefined, + }) + }) + }) }) }) + +// let clientUser1, clientUser2 +// let headersUser1, headersUser2 +// const factory = Factory() +// const instance = neode() +// const categoryIds = ['cat9'] + +// const mutationShoutPost = gql` +// mutation($id: ID!) { +// shout(id: $id, type: Post) +// } +// ` +// const mutationUnshoutPost = gql` +// mutation($id: ID!) { +// unshout(id: $id, type: Post) +// } +// ` +// const createPostMutation = gql` +// mutation($id: ID, $title: String!, $content: String!, $categoryIds: [ID]!) { +// CreatePost(id: $id, title: $title, content: $content, categoryIds: $categoryIds) { +// id +// title +// content +// } +// } +// ` +// const createPostVariables = { +// id: 'p1234', +// title: 'Post Title 1234', +// content: 'Some Post Content 1234', +// categoryIds, +// } +// beforeEach(async () => { +// await factory.create('User', { +// id: 'u1', +// email: 'test@example.org', +// password: '1234', +// }) +// await factory.create('User', { +// id: 'u2', +// email: 'test2@example.org', +// password: '1234', +// }) +// await instance.create('Category', { +// id: 'cat9', +// name: 'Democracy & Politics', +// icon: 'university', +// }) +// headersUser1 = await login({ email: 'test@example.org', password: '1234' }) +// headersUser2 = await login({ email: 'test2@example.org', password: '1234' }) +// clientUser1 = new GraphQLClient(host, { headers: headersUser1 }) +// clientUser2 = new GraphQLClient(host, { headers: headersUser2 }) + +// await clientUser1.request(createPostMutation, createPostVariables) +// await clientUser2.request(createPostMutation, { +// id: 'p12345', +// title: 'Post Title 12345', +// content: 'Some Post Content 12345', +// categoryIds, +// }) +// }) + +// afterEach(async () => { +// await factory.cleanDatabase() +// }) + +// describe('shout', () => { +// describe('shout foreign post', () => { +// describe('unauthenticated shout', () => { +// it('throws authorization error', async () => { +// const client = new GraphQLClient(host) +// await expect(client.request(mutationShoutPost, { id: 'p1234' })).rejects.toThrow( +// 'Not Authorised', +// ) +// }) +// }) + +// describe('unshout foreign post', () => { +// describe('unauthenticated shout', () => { +// it('throws authorization error', async () => { +// // shout +// await clientUser1.request(mutationShoutPost, { id: 'p12345' }) +// // unshout +// const client = new GraphQLClient(host) +// await expect(client.request(mutationUnshoutPost, { id: 'p12345' })).rejects.toThrow( +// 'Not Authorised', +// ) +// }) +// }) + +// it('I unshout a post of another user', async () => { +// // shout +// await clientUser1.request(mutationShoutPost, { id: 'p12345' }) +// const expected = { +// unshout: true, +// } +// // unshout +// const res = await clientUser1.request(mutationUnshoutPost, { id: 'p12345' }) +// expect(res).toMatchObject(expected) + +// const { Post } = await clientUser1.request(gql` +// query { +// Post(id: "p12345") { +// shoutedByCurrentUser +// } +// } +// `) +// const expected2 = { +// shoutedByCurrentUser: false, +// } +// expect(Post[0]).toMatchObject(expected2) +// }) +// }) +// }) From c50f5b8e2c22b9e5452d456fcedab3c8b9e8a0b4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2019 04:21:42 +0000 Subject: [PATCH 17/46] Bump date-fns from 2.2.1 to 2.3.0 in /backend Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.2.1 to 2.3.0. - [Release notes](https://github.com/date-fns/date-fns/releases) - [Changelog](https://github.com/date-fns/date-fns/blob/master/CHANGELOG.md) - [Commits](https://github.com/date-fns/date-fns/compare/v2.2.1...v2.3.0) Signed-off-by: dependabot-preview[bot] --- backend/package.json | 2 +- backend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index 4ee33fa9d..a24ce7e1a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -55,7 +55,7 @@ "cheerio": "~1.0.0-rc.3", "cors": "~2.8.5", "cross-env": "~6.0.0", - "date-fns": "2.2.1", + "date-fns": "2.3.0", "debug": "~4.1.1", "dotenv": "~8.1.0", "express": "^4.17.1", diff --git a/backend/yarn.lock b/backend/yarn.lock index c3f309f23..dd3eb558b 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -2868,10 +2868,10 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -date-fns@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.2.1.tgz#b3f79cf56760af106050c686f4c72586a3383ee9" - integrity sha512-4V1i5CnTinjBvJpXTq7sDHD4NY6JPcl15112IeSNNLUWQOQ+kIuCvRGOFZMQZNvkadw8F9QTyZxz59rIRU6K+w== +date-fns@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.3.0.tgz#017eae725d0c46173b572da025fb5e4e534270fd" + integrity sha512-A8o+iXBVqQayl9Z39BHgb7m/zLOfhF7LK82t+n9Fq1adds1vaUn8ByVoADqWLe4OTc6BZYc/FdbdTwufNYqkJw== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" From 7d9953a5a279a7a7ec40550e0bc6ad99889d23fd Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2019 06:22:59 +0000 Subject: [PATCH 18/46] Bump graphql from 14.5.6 to 14.5.7 in /webapp Bumps [graphql](https://github.com/graphql/graphql-js) from 14.5.6 to 14.5.7. - [Release notes](https://github.com/graphql/graphql-js/releases) - [Commits](https://github.com/graphql/graphql-js/compare/v14.5.6...v14.5.7) Signed-off-by: dependabot-preview[bot] --- webapp/package.json | 2 +- webapp/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 67ebd1284..ddccbce5a 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -65,7 +65,7 @@ "cross-env": "~6.0.0", "date-fns": "2.2.1", "express": "~4.17.1", - "graphql": "~14.5.6", + "graphql": "~14.5.7", "isemail": "^3.2.0", "jsonwebtoken": "~8.5.1", "linkify-it": "~2.2.0", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 7dbc3b5ff..a908bc6a6 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -7748,10 +7748,10 @@ graphql-upload@^8.0.2: http-errors "^1.7.2" object-path "^0.11.4" -"graphql@14.0.2 - 14.2.0 || ^14.3.1", graphql@^14.4.0, graphql@~14.5.6: - version "14.5.6" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.6.tgz#3fa12173b50e6ccdef953c31c82f37c50ef58bec" - integrity sha512-zJ6Oz8P1yptV4O4DYXdArSwvmirPetDOBnGFRBl0zQEC68vNW3Ny8qo8VzMgfr+iC8PKiRYJ+f2wub41oDCoQg== +"graphql@14.0.2 - 14.2.0 || ^14.3.1", graphql@^14.4.0, graphql@~14.5.7: + version "14.5.7" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.7.tgz#8646a3fcc07922319cc3967eba4a64b32929f77f" + integrity sha512-as410RMJSUFqF8RcH2QWxZ5ioqHzsH9VWnWbaU+UnDXJ/6azMDIYPrtXCBPXd8rlunEVb7W8z6fuUnNHMbFu9A== dependencies: iterall "^1.2.2" From ee99673cecee478c877b7795fdef66508ec66fd9 Mon Sep 17 00:00:00 2001 From: mattwr18 Date: Mon, 23 Sep 2019 18:41:22 +0200 Subject: [PATCH 19/46] Add Comment story, add spacing above user info --- webapp/components/Comment/Comment.story.js | 54 +++++++++++++++++++ webapp/components/{ => Comment}/Comment.vue | 11 ++-- webapp/components/CommentForm/CommentForm.vue | 1 + webapp/components/CommentList/CommentList.vue | 2 +- webapp/storybook/helpers.js | 4 +- 5 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 webapp/components/Comment/Comment.story.js rename webapp/components/{ => Comment}/Comment.vue (95%) diff --git a/webapp/components/Comment/Comment.story.js b/webapp/components/Comment/Comment.story.js new file mode 100644 index 000000000..291b6cb11 --- /dev/null +++ b/webapp/components/Comment/Comment.story.js @@ -0,0 +1,54 @@ +import { storiesOf } from '@storybook/vue' +import { withA11y } from '@storybook/addon-a11y' +import Comment from './Comment' +import helpers from '~/storybook/helpers' + +helpers.init() + +const comment = { + id: '5d42a2277f2725002a449cb3', + content: + '

Thank you all!

@wolfgang-huss @robert-schafer @greg @human-connection

watch my video

I think we can all learn a lot from Alex\'s video :)

It\'s really great stuff!!

Please give him a big smiley face emoticon :D

', + contentExcerpt: + '

Thank you all!

@wolfgang-huss @robert-schafer @greg @human-connection

watch my video

I think we can all learn a lot from Alex\'s video :)

It\'s really great stuff!!

Please give him a โ€ฆ

', + createdAt: '2019-08-01T08:26:15.839Z', + updatedAt: '2019-08-01T08:26:15.839Z', + deleted: false, + disabled: false, + author: { + id: '1', + avatar: + 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', + slug: 'jenny-rostock', + name: 'Rainer Unsinn', + disabled: false, + deleted: false, + contributionsCount: 25, + shoutedCount: 5, + commentedCount: 39, + followedByCount: 2, + followedByCurrentUser: true, + location: null, + badges: [ + { + id: 'indiegogo_en_bear', + icon: '/img/badges/indiegogo_en_bear.svg', + __typename: 'Badge', + }, + ], + __typename: 'User', + }, + __typename: 'Comment', +} + +storiesOf('Comment', module) + .addDecorator(withA11y) + .addDecorator(helpers.layout) + .add('Basic comment', () => ({ + components: { Comment }, + store: helpers.store, + data: () => ({ + comment, + }), + template: ``, + })) diff --git a/webapp/components/Comment.vue b/webapp/components/Comment/Comment.vue similarity index 95% rename from webapp/components/Comment.vue rename to webapp/components/Comment/Comment.vue index 2cebde0b6..a1bd7dd34 100644 --- a/webapp/components/Comment.vue +++ b/webapp/components/Comment/Comment.vue @@ -11,7 +11,7 @@
- + @@ -21,7 +21,7 @@ resource-type="comment" :resource="comment" :modalsData="menuModalsData" - style="float-right" + class="float-right" :is-owner="isAuthor(author.id)" @showEditCommentMenu="editCommentMenu" /> @@ -34,6 +34,7 @@ :comment="comment" @showEditCommentMenu="editCommentMenu" @updateComment="updateComment" + @collapse="isCollapsed = true" />
@@ -61,7 +62,7 @@ />
- + {{ $t('comment.show.less') }} @@ -168,6 +169,10 @@ export default { }