diff --git a/backend/package.json b/backend/package.json
index a720dcc3a..f6b66b07e 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -101,7 +101,7 @@
"npm-run-all": "~4.1.5",
"request": "~2.88.2",
"sanitize-html": "~1.22.0",
- "slug": "~2.1.1",
+ "slug": "~4.0.2",
"subscriptions-transport-ws": "^0.9.16",
"trunc-html": "~1.1.2",
"uuid": "~8.3.2",
diff --git a/backend/src/middleware/validation/validationMiddleware.js b/backend/src/middleware/validation/validationMiddleware.js
index 086b657ff..20933a777 100644
--- a/backend/src/middleware/validation/validationMiddleware.js
+++ b/backend/src/middleware/validation/validationMiddleware.js
@@ -2,8 +2,6 @@ import { UserInputError } from 'apollo-server'
const COMMENT_MIN_LENGTH = 1
const NO_POST_ERR_MESSAGE = 'Comment cannot be created without a post!'
-const NO_CATEGORIES_ERR_MESSAGE =
- 'You cannot save a post without at least one category or more than three'
const USERNAME_MIN_LENGTH = 3
const validateCreateComment = async (resolve, root, args, context, info) => {
const content = args.content.replace(/<(?:.|\n)*?>/gm, '').trim()
@@ -46,20 +44,6 @@ const validateUpdateComment = async (resolve, root, args, context, info) => {
return resolve(root, args, context, info)
}
-const validatePost = async (resolve, root, args, context, info) => {
- const { categoryIds } = args
- if (!Array.isArray(categoryIds) || !categoryIds.length || categoryIds.length > 3) {
- throw new UserInputError(NO_CATEGORIES_ERR_MESSAGE)
- }
- return resolve(root, args, context, info)
-}
-
-const validateUpdatePost = async (resolve, root, args, context, info) => {
- const { categoryIds } = args
- if (typeof categoryIds === 'undefined') return resolve(root, args, context, info)
- return validatePost(resolve, root, args, context, info)
-}
-
const validateReport = async (resolve, root, args, context, info) => {
const { resourceId } = args
const { user } = context
diff --git a/backend/src/middleware/validation/validationMiddleware.spec.js b/backend/src/middleware/validation/validationMiddleware.spec.js
index efb85bd10..c3d518256 100644
--- a/backend/src/middleware/validation/validationMiddleware.spec.js
+++ b/backend/src/middleware/validation/validationMiddleware.spec.js
@@ -30,27 +30,7 @@ const updateCommentMutation = gql`
}
}
`
-const createPostMutation = gql`
- mutation($id: ID, $title: String!, $content: String!, $language: String, $categoryIds: [ID]) {
- CreatePost(
- id: $id
- title: $title
- content: $content
- language: $language
- categoryIds: $categoryIds
- ) {
- id
- }
- }
-`
-const updatePostMutation = gql`
- mutation($id: ID!, $title: String!, $content: String!, $categoryIds: [ID]) {
- UpdatePost(id: $id, title: $title, content: $content, categoryIds: $categoryIds) {
- id
- }
- }
-`
const reportMutation = gql`
mutation($resourceId: ID!, $reasonCategory: ReasonCategory!, $reasonDescription: String!) {
fileReport(
@@ -227,104 +207,6 @@ describe('validateCreateComment', () => {
})
})
})
-
- describe('validatePost', () => {
- let createPostVariables
- beforeEach(async () => {
- createPostVariables = {
- title: 'I am a title',
- content: 'Some content',
- }
- authenticatedUser = await commentingUser.toJson()
- })
-
- describe('categories', () => {
- describe('null', () => {
- it.skip('throws UserInputError', async () => {
- createPostVariables = { ...createPostVariables, categoryIds: null }
- await expect(
- mutate({ mutation: createPostMutation, variables: createPostVariables }),
- ).resolves.toMatchObject({
- data: { CreatePost: null },
- errors: [
- {
- message: 'You cannot save a post without at least one category or more than three',
- },
- ],
- })
- })
- })
-
- describe('empty', () => {
- it.skip('throws UserInputError', async () => {
- createPostVariables = { ...createPostVariables, categoryIds: [] }
- await expect(
- mutate({ mutation: createPostMutation, variables: createPostVariables }),
- ).resolves.toMatchObject({
- data: { CreatePost: null },
- errors: [
- {
- message: 'You cannot save a post without at least one category or more than three',
- },
- ],
- })
- })
- })
-
- describe('more than 3 categoryIds', () => {
- it.skip('throws UserInputError', async () => {
- createPostVariables = {
- ...createPostVariables,
- categoryIds: ['cat9', 'cat27', 'cat15', 'cat4'],
- }
- await expect(
- mutate({ mutation: createPostMutation, variables: createPostVariables }),
- ).resolves.toMatchObject({
- data: { CreatePost: null },
- errors: [
- {
- message: 'You cannot save a post without at least one category or more than three',
- },
- ],
- })
- })
- })
- })
- })
-
- describe('validateUpdatePost', () => {
- describe('post created without categories somehow', () => {
- let owner, updatePostVariables
- beforeEach(async () => {
- const postSomehowCreated = await neode.create('Post', {
- id: 'how-was-this-created',
- })
- owner = await neode.create('User', {
- id: 'author-of-post-without-category',
- slug: 'hacker',
- })
- await postSomehowCreated.relateTo(owner, 'author')
- authenticatedUser = await owner.toJson()
- updatePostVariables = {
- id: 'how-was-this-created',
- title: 'I am a title',
- content: 'Some content',
- categoryIds: [],
- }
- })
-
- it.skip('requires at least one category for successful update', async () => {
- await expect(
- mutate({ mutation: updatePostMutation, variables: updatePostVariables }),
- ).resolves.toMatchObject({
- data: { UpdatePost: null },
- errors: [
- { message: 'You cannot save a post without at least one category or more than three' },
- ],
- })
- })
- })
- })
})
describe('validateReport', () => {
diff --git a/backend/yarn.lock b/backend/yarn.lock
index 713c24a81..0bbc62515 100644
--- a/backend/yarn.lock
+++ b/backend/yarn.lock
@@ -8653,12 +8653,10 @@ slug@^0.9.2:
dependencies:
unicode ">= 0.3.1"
-slug@~2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/slug/-/slug-2.1.1.tgz#08df390d4b4d51bafb41ac0067c0c2dd70734ef2"
- integrity sha512-yNGhDdS0DR0JyxnPC84qIx/Vd01RHVY4guJeBqBNdBoOLNWnzw5zkWJvxVSmsuUb92bikdnQFnw3PfGY8uZ82g==
- dependencies:
- unicode ">= 0.3.1"
+slug@~4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/slug/-/slug-4.0.2.tgz#35a62b4e71582778ac08bb30a1bf439fd0a43ea7"
+ integrity sha512-c5XbWkwxHU13gAdSvBHQgnGy2sxv/REMz0ugcM0SOSBCO/N4wfU0TDBC3pgdOwVGjZwGnLBTRljXzdVYE+KYNw==
smartquotes@~2.3.1:
version "2.3.1"
diff --git a/docker-compose.override.yml b/docker-compose.override.yml
index 3c90e4c83..dd38cacde 100644
--- a/docker-compose.override.yml
+++ b/docker-compose.override.yml
@@ -6,21 +6,18 @@ services:
build:
context: webapp
target: build-and-test
- volumes:
- - ./webapp:/develop-webapp
environment:
- NUXT_BUILD=/tmp/nuxt # avoid file permission issues when `rm -rf .nuxt/`
- PUBLIC_REGISTRATION=true
command: yarn run dev
volumes:
- - webapp_node_modules:/nitro-web/node_modules
+ - ./webapp:/develop-webapp
+ - webapp_node_modules:/develop-webapp/node_modules
backend:
image: ocelotsocialnetwork/develop-backend:build-and-test
build:
context: backend
target: build-and-test
- volumes:
- - ./backend:/develop-backend
command: yarn run dev
environment:
- SMTP_HOST=mailserver
@@ -29,6 +26,7 @@ services:
- "DEBUG=${DEBUG}"
- PUBLIC_REGISTRATION=false
volumes:
+ - ./backend:/develop-backend
- backend_node_modules:/develop-backend/node_modules
- uploads:/develop-backend/public/uploads
neo4j:
diff --git a/docker-compose.yml b/docker-compose.yml
index 9b00e3cf4..5297bc399 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -16,6 +16,7 @@ services:
depends_on:
- backend
volumes:
+ - ./webapp:/develop-webapp
- webapp_node_modules:/develop-webapp/node_modules
environment:
- HOST=0.0.0.0
@@ -35,6 +36,7 @@ services:
ports:
- 4000:4000
volumes:
+ - ./backend:/develop-backend
- backend_node_modules:/develop-backend/node_modules
- uploads:/develop-backend/public/uploads
environment:
diff --git a/webapp/components/ContributionForm/ContributionForm.spec.js b/webapp/components/ContributionForm/ContributionForm.spec.js
index cabf77455..0644c1321 100644
--- a/webapp/components/ContributionForm/ContributionForm.spec.js
+++ b/webapp/components/ContributionForm/ContributionForm.spec.js
@@ -4,7 +4,6 @@ import ContributionForm from './ContributionForm.vue'
import Vue from 'vue'
import Vuex from 'vuex'
import PostMutations from '~/graphql/PostMutations.js'
-import CategoriesSelect from '~/components/CategoriesSelect/CategoriesSelect'
import ImageUploader from '~/components/ImageUploader/ImageUploader'
import MutationObserver from 'mutation-observer'
@@ -17,36 +16,6 @@ config.stubs['client-only'] = ''
config.stubs['nuxt-link'] = ''
config.stubs['v-popover'] = ''
-/*
-const categories = [
- {
- id: 'cat3',
- slug: 'health-wellbeing',
- icon: 'medkit',
- },
- {
- id: 'cat12',
- slug: 'it-internet-data-privacy',
- icon: 'mouse-pointer',
- },
- {
- id: 'cat9',
- slug: 'democracy-politics',
- icon: 'university',
- },
- {
- id: 'cat15',
- slug: 'consumption-sustainability',
- icon: 'shopping-cart',
- },
- {
- id: 'cat4',
- slug: 'environment-nature',
- icon: 'tree',
- },
-]
-*/
-
describe('ContributionForm.vue', () => {
let wrapper,
postTitleInput,
@@ -56,8 +25,7 @@ describe('ContributionForm.vue', () => {
propsData,
categoryIds,
englishLanguage,
- deutschLanguage,
- dataPrivacyButton
+ deutschLanguage
const postTitle = 'this is a title for a post'
const postTitleTooShort = 'xx'
let postTitleTooLong = ''
@@ -138,7 +106,6 @@ describe('ContributionForm.vue', () => {
describe('CreatePost', () => {
describe('invalid form submission', () => {
beforeEach(async () => {
- // wrapper.find(CategoriesSelect).setData({ categories })
postTitleInput = wrapper.find('.ds-input')
postTitleInput.setValue(postTitle)
await wrapper.vm.updateEditorContent(postContent)
@@ -146,10 +113,6 @@ describe('ContributionForm.vue', () => {
.findAll('li')
.filter((language) => language.text() === 'English')
englishLanguage.trigger('click')
- /* dataPrivacyButton = await wrapper
- .find(CategoriesSelect)
- .find('[data-test="category-buttons-cat12"]')
- dataPrivacyButton.trigger('click') */
})
it('title cannot be empty', async () => {
@@ -175,22 +138,6 @@ describe('ContributionForm.vue', () => {
await wrapper.find('form').trigger('submit')
expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
})
-
- it.skip('has at least one category', async () => {
- dataPrivacyButton = await wrapper
- .find(CategoriesSelect)
- .find('[data-test="category-buttons-cat12"]')
- dataPrivacyButton.trigger('click')
- wrapper.find('form').trigger('submit')
- expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
- })
-
- it.skip('has no more than three categories', async () => {
- wrapper.vm.formData.categoryIds = ['cat4', 'cat9', 'cat15', 'cat27']
- await Vue.nextTick()
- wrapper.find('form').trigger('submit')
- expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
- })
})
describe('valid form submission', () => {
@@ -202,23 +149,17 @@ describe('ContributionForm.vue', () => {
content: postContent,
language: 'en',
id: null,
- // categoryIds: ['cat12'],
image: null,
},
}
postTitleInput = wrapper.find('.ds-input')
postTitleInput.setValue(postTitle)
await wrapper.vm.updateEditorContent(postContent)
- // wrapper.find(CategoriesSelect).setData({ categories })
englishLanguage = wrapper
.findAll('li')
.filter((language) => language.text() === 'English')
englishLanguage.trigger('click')
await Vue.nextTick()
- /* dataPrivacyButton = await wrapper
- .find(CategoriesSelect)
- .find('[data-test="category-buttons-cat12"]')
- dataPrivacyButton.trigger('click') */
await Vue.nextTick()
})
@@ -295,16 +236,11 @@ describe('ContributionForm.vue', () => {
postTitleInput.setValue(postTitle)
await wrapper.vm.updateEditorContent(postContent)
categoryIds = ['cat12']
- // wrapper.find(CategoriesSelect).setData({ categories })
englishLanguage = wrapper
.findAll('li')
.filter((language) => language.text() === 'English')
englishLanguage.trigger('click')
await Vue.nextTick()
- /* dataPrivacyButton = await wrapper
- .find(CategoriesSelect)
- .find('[data-test="category-buttons-cat12"]')
- dataPrivacyButton.trigger('click') */
await Vue.nextTick()
})
@@ -367,7 +303,6 @@ describe('ContributionForm.vue', () => {
content: propsData.contribution.content,
language: propsData.contribution.language,
id: propsData.contribution.id,
- // categoryIds: ['cat12'],
image: {
sensitive: false,
},
@@ -382,18 +317,6 @@ describe('ContributionForm.vue', () => {
expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams))
})
- it.skip('supports updating categories', async () => {
- expectedParams.variables.categoryIds.push('cat3')
- // wrapper.find(CategoriesSelect).setData({ categories })
- await Vue.nextTick()
- const healthWellbeingButton = await wrapper
- .find(CategoriesSelect)
- .find('[data-test="category-buttons-cat3"]')
- healthWellbeingButton.trigger('click')
- await wrapper.find('form').trigger('submit')
- expect(mocks.$apollo.mutate).toHaveBeenCalledWith(expect.objectContaining(expectedParams))
- })
-
it('supports deleting a teaser image', async () => {
expectedParams.variables.image = null
propsData.contribution.image = { url: '/uploads/someimage.png' }
diff --git a/webapp/package.json b/webapp/package.json
index 5200da307..58d855809 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -116,7 +116,7 @@
"core-js": "~2.6.10",
"css-loader": "~3.5.2",
"eslint": "~6.8.0",
- "eslint-config-prettier": "~6.10.1",
+ "eslint-config-prettier": "~6.15.0",
"eslint-config-standard": "~14.1.1",
"eslint-loader": "~4.0.0",
"eslint-plugin-import": "~2.20.2",
@@ -124,15 +124,15 @@
"eslint-plugin-node": "~11.1.0",
"eslint-plugin-prettier": "~3.1.4",
"eslint-plugin-promise": "~4.2.1",
- "eslint-plugin-standard": "~4.0.1",
+ "eslint-plugin-standard": "~5.0.0",
"eslint-plugin-vue": "~6.2.2",
- "faker": "^4.1.0",
+ "faker": "^5.1.0",
"flush-promises": "^1.0.2",
"identity-obj-proxy": "^3.0.0",
"jest": "~26.6.3",
"mutation-observer": "^1.0.3",
"prettier": "~2.2.1",
- "sass-loader": "~8.0.2",
+ "sass-loader": "~10.1.1",
"storybook-design-token": "^0.8.1",
"storybook-vue-router": "^1.0.7",
"style-loader": "~0.23.1",
diff --git a/webapp/yarn.lock b/webapp/yarn.lock
index 2954fcf98..dce6b5f25 100644
--- a/webapp/yarn.lock
+++ b/webapp/yarn.lock
@@ -3142,6 +3142,11 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
+"@types/json-schema@^7.0.6":
+ version "7.0.6"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
+ integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==
+
"@types/keygrip@*":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72"
@@ -3821,6 +3826,11 @@ 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-keywords@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
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"
@@ -3841,6 +3851,16 @@ ajv@^6.12.0:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+ajv@^6.12.5:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
alphanum-sort@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
@@ -7905,17 +7925,10 @@ escodegen@^1.9.1:
optionalDependencies:
source-map "~0.6.1"
-eslint-config-prettier@^6.0.0:
- version "6.10.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f"
- integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==
- dependencies:
- get-stdin "^6.0.0"
-
-eslint-config-prettier@~6.10.1:
- version "6.10.1"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a"
- integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ==
+eslint-config-prettier@^6.0.0, eslint-config-prettier@~6.15.0:
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
+ integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
dependencies:
get-stdin "^6.0.0"
@@ -8008,10 +8021,10 @@ eslint-plugin-promise@~4.2.1:
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==
-eslint-plugin-standard@~4.0.1:
- version "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-standard@~5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz#c43f6925d669f177db46f095ea30be95476b1ee4"
+ integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==
eslint-plugin-vue@~6.2.2:
version "6.2.2"
@@ -8412,10 +8425,10 @@ fake-tag@^1.0.0:
resolved "https://registry.yarnpkg.com/fake-tag/-/fake-tag-1.0.1.tgz#1d59da482240a02bd83500ca98976530ed154b0d"
integrity sha512-qmewZoBpa71mM+y6oxXYW/d1xOYQmeIvnEXAt1oCmdP0sqcogWYLepR87QL1jQVLSVMVYDq2cjY6ec/Wu8/4pg==
-faker@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f"
- integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=
+faker@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/faker/-/faker-5.1.0.tgz#e10fa1dec4502551aee0eb771617a7e7b94692e8"
+ integrity sha512-RrWKFSSA/aNLP0g3o2WW1Zez7/MnMr7xkiZmoCfAGZmdkDQZ6l2KtuXHN5XjdvpRjDl8+3vf+Rrtl06Z352+Mw==
fast-deep-equal@^2.0.1:
version "2.0.1"
@@ -10551,12 +10564,7 @@ is-wsl@^1.1.0:
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-is-wsl@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d"
- integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==
-
-is-wsl@^2.2.0:
+is-wsl@^2.1.0, is-wsl@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
@@ -11420,6 +11428,11 @@ kleur@^3.0.2:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+klona@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
+ integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
+
last-call-webpack-plugin@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
@@ -11883,6 +11896,13 @@ lru-cache@^5.0.0, lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
lru_map@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
@@ -12357,10 +12377,10 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
- integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
nice-try@^1.0.4:
version "1.0.5"
@@ -12481,9 +12501,9 @@ node-modules-regexp@^1.0.0:
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
node-notifier@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620"
- integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1"
+ integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==
dependencies:
growly "^1.3.0"
is-wsl "^2.2.0"
@@ -15470,16 +15490,16 @@ sass-loader@^7.1.0:
pify "^4.0.1"
semver "^6.3.0"
-sass-loader@~8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d"
- integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==
+sass-loader@~10.1.1:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d"
+ integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==
dependencies:
- clone-deep "^4.0.1"
- loader-utils "^1.2.3"
- neo-async "^2.6.1"
- schema-utils "^2.6.1"
- semver "^6.3.0"
+ klona "^2.0.4"
+ loader-utils "^2.0.0"
+ neo-async "^2.6.2"
+ schema-utils "^3.0.0"
+ semver "^7.3.2"
sass-resources-loader@^2.0.0:
version "2.0.0"
@@ -15535,6 +15555,15 @@ schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6
ajv "^6.12.0"
ajv-keywords "^3.4.1"
+schema-utils@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
+ integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
+ dependencies:
+ "@types/json-schema" "^7.0.6"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
scss-tokenizer@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
@@ -15570,15 +15599,12 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.1.3:
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6"
- integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==
-
-semver@^7.3.2:
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
- integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+semver@^7.1.3, semver@^7.3.2:
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
+ integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
+ dependencies:
+ lru-cache "^6.0.0"
semver@~5.3.0:
version "5.3.0"
@@ -17518,20 +17544,15 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@^3.1.0:
+uuid@^3.1.0, uuid@^3.3.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-uuid@^3.3.2:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
- integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
-
uuid@^8.0.0, uuid@^8.3.0:
- version "8.3.1"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31"
- integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v-tooltip@~2.0.3:
version "2.0.3"