diff --git a/backend/package.json b/backend/package.json
index d9e534ded..2dd86e456 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -72,19 +72,19 @@
"lodash": "~4.17.14",
"merge-graphql-schemas": "^1.7.0",
"metascraper": "^4.10.3",
- "metascraper-audio": "^5.5.0",
+ "metascraper-audio": "^5.6.5",
"metascraper-author": "^5.6.3",
"metascraper-clearbit-logo": "^5.3.0",
- "metascraper-date": "^5.6.3",
- "metascraper-description": "^5.5.0",
+ "metascraper-date": "^5.6.5",
+ "metascraper-description": "^5.6.5",
"metascraper-image": "^5.6.3",
"metascraper-lang": "^5.6.3",
"metascraper-lang-detector": "^4.8.5",
- "metascraper-logo": "^5.5.0",
- "metascraper-publisher": "^5.6.3",
- "metascraper-soundcloud": "^5.5.3",
+ "metascraper-logo": "^5.6.5",
+ "metascraper-publisher": "^5.6.5",
+ "metascraper-soundcloud": "^5.6.5",
"metascraper-title": "^5.6.3",
- "metascraper-url": "^5.5.0",
+ "metascraper-url": "^5.6.5",
"metascraper-video": "^5.6.3",
"metascraper-youtube": "^5.6.3",
"neo4j-driver": "~1.7.5",
@@ -115,7 +115,7 @@
"cucumber": "~5.1.0",
"eslint": "~6.1.0",
"eslint-config-prettier": "~6.0.0",
- "eslint-config-standard": "~12.0.0",
+ "eslint-config-standard": "~13.0.1",
"eslint-plugin-import": "~2.18.2",
"eslint-plugin-jest": "~22.14.1",
"eslint-plugin-node": "~9.1.0",
diff --git a/backend/src/activitypub/ActivityPub.js b/backend/src/activitypub/ActivityPub.js
index 12671f330..cd16f620e 100644
--- a/backend/src/activitypub/ActivityPub.js
+++ b/backend/src/activitypub/ActivityPub.js
@@ -35,8 +35,8 @@ export default class ActivityPub {
handleFollowActivity(activity) {
debug(`inside FOLLOW ${activity.actor}`)
- let toActorName = extractNameFromId(activity.object)
- let fromDomain = extractDomainFromUrl(activity.actor)
+ const toActorName = extractNameFromId(activity.object)
+ const fromDomain = extractDomainFromUrl(activity.actor)
const dataSource = this.dataSource
return new Promise((resolve, reject) => {
@@ -53,7 +53,7 @@ export default class ActivityPub {
toActorObject = JSON.parse(toActorObject)
await this.dataSource.addSharedInboxEndpoint(toActorObject.endpoints.sharedInbox)
- let followersCollectionPage = await this.dataSource.getFollowersCollectionPage(
+ const followersCollectionPage = await this.dataSource.getFollowersCollectionPage(
activity.object,
)
@@ -222,6 +222,7 @@ export default class ActivityPub {
})
}
}
+
async trySend(activity, fromName, host, url, tries = 5) {
try {
return await signAndSend(activity, fromName, host, url)
diff --git a/backend/src/activitypub/Collections.js b/backend/src/activitypub/Collections.js
index 641db596a..4040468cf 100644
--- a/backend/src/activitypub/Collections.js
+++ b/backend/src/activitypub/Collections.js
@@ -2,6 +2,7 @@ export default class Collections {
constructor(dataSource) {
this.dataSource = dataSource
}
+
getFollowersCollection(actorId) {
return this.dataSource.getFollowersCollection(actorId)
}
diff --git a/backend/src/activitypub/NitroDataSource.js b/backend/src/activitypub/NitroDataSource.js
index 0900bed6c..dfdbf6c14 100644
--- a/backend/src/activitypub/NitroDataSource.js
+++ b/backend/src/activitypub/NitroDataSource.js
@@ -303,6 +303,7 @@ export default class NitroDataSource {
}),
)
}
+
async saveFollowingCollectionPage(followingCollection, onlyNewestItem = true) {
debug('inside saveFollowers')
let orderedItems = followingCollection.orderedItems
@@ -470,6 +471,7 @@ export default class NitroDataSource {
throwErrorIfApolloErrorOccurred(result)
return result.data.SharedInboxEnpoint
}
+
async addSharedInboxEndpoint(uri) {
try {
const result = await this.client.mutate({
diff --git a/backend/src/activitypub/security/index.js b/backend/src/activitypub/security/index.js
index 9b48b7ed9..05642ed26 100644
--- a/backend/src/activitypub/security/index.js
+++ b/backend/src/activitypub/security/index.js
@@ -97,7 +97,7 @@ export function verifySignature(url, headers) {
// private: signing
function constructSigningString(url, headers) {
const urlObj = new URL(url)
- let signingString = `(request-target): post ${urlObj.pathname}${
+ const signingString = `(request-target): post ${urlObj.pathname}${
urlObj.search !== '' ? urlObj.search : ''
}`
return Object.keys(headers).reduce((result, key) => {
diff --git a/backend/src/activitypub/utils/index.js b/backend/src/activitypub/utils/index.js
index 3927f4056..5f26c635f 100644
--- a/backend/src/activitypub/utils/index.js
+++ b/backend/src/activitypub/utils/index.js
@@ -40,70 +40,72 @@ export function signAndSend(activity, fromName, targetDomain, url) {
// fix for development: replace with http
url = url.indexOf('localhost') > -1 ? url.replace('https', 'http') : url
debug(`passhprase = ${CONFIG.PRIVATE_KEY_PASSPHRASE}`)
- return new Promise(async (resolve, reject) => {
+ return new Promise((resolve, reject) => {
debug('inside signAndSend')
// get the private key
- const result = await activityPub.dataSource.client.query({
- query: gql`
+ activityPub.dataSource.client
+ .query({
+ query: gql`
query {
User(slug: "${fromName}") {
privateKey
}
}
`,
- })
+ })
+ .then(result => {
+ if (result.error) {
+ reject(result.error)
+ } else {
+ // add security context
+ const parsedActivity = JSON.parse(activity)
+ if (Array.isArray(parsedActivity['@context'])) {
+ parsedActivity['@context'].push('https://w3id.org/security/v1')
+ } else {
+ const context = [parsedActivity['@context']]
+ context.push('https://w3id.org/security/v1')
+ parsedActivity['@context'] = context
+ }
- if (result.error) {
- reject(result.error)
- } else {
- // add security context
- const parsedActivity = JSON.parse(activity)
- if (Array.isArray(parsedActivity['@context'])) {
- parsedActivity['@context'].push('https://w3id.org/security/v1')
- } else {
- const context = [parsedActivity['@context']]
- context.push('https://w3id.org/security/v1')
- parsedActivity['@context'] = context
- }
+ // deduplicate context strings
+ parsedActivity['@context'] = [...new Set(parsedActivity['@context'])]
+ const privateKey = result.data.User[0].privateKey
+ const date = new Date().toUTCString()
- // deduplicate context strings
- parsedActivity['@context'] = [...new Set(parsedActivity['@context'])]
- const privateKey = result.data.User[0].privateKey
- const date = new Date().toUTCString()
-
- debug(`url = ${url}`)
- request(
- {
- url: url,
- headers: {
- Host: targetDomain,
- Date: date,
- Signature: createSignature({
- privateKey,
- keyId: `${activityPub.endpoint}/activitypub/users/${fromName}#main-key`,
- url,
+ debug(`url = ${url}`)
+ request(
+ {
+ url: url,
headers: {
Host: targetDomain,
Date: date,
+ Signature: createSignature({
+ privateKey,
+ keyId: `${activityPub.endpoint}/activitypub/users/${fromName}#main-key`,
+ url,
+ headers: {
+ Host: targetDomain,
+ Date: date,
+ 'Content-Type': 'application/activity+json',
+ },
+ }),
'Content-Type': 'application/activity+json',
},
- }),
- 'Content-Type': 'application/activity+json',
- },
- method: 'POST',
- body: JSON.stringify(parsedActivity),
- },
- (error, response) => {
- if (error) {
- debug(`Error = ${JSON.stringify(error, null, 2)}`)
- reject(error)
- } else {
- debug('Response Headers:', JSON.stringify(response.headers, null, 2))
- debug('Response Body:', JSON.stringify(response.body, null, 2))
- resolve()
- }
- },
- )
- }
+ method: 'POST',
+ body: JSON.stringify(parsedActivity),
+ },
+ (error, response) => {
+ if (error) {
+ debug(`Error = ${JSON.stringify(error, null, 2)}`)
+ reject(error)
+ } else {
+ debug('Response Headers:', JSON.stringify(response.headers, null, 2))
+ debug('Response Body:', JSON.stringify(response.body, null, 2))
+ resolve()
+ }
+ },
+ )
+ }
+ })
})
}
diff --git a/backend/src/middleware/permissionsMiddleware.js b/backend/src/middleware/permissionsMiddleware.js
index dc685e20c..52f5a8474 100644
--- a/backend/src/middleware/permissionsMiddleware.js
+++ b/backend/src/middleware/permissionsMiddleware.js
@@ -103,8 +103,6 @@ const invitationLimitReached = rule({
return record.get('limitReached')
})
return limitReached
- } catch (e) {
- throw e
} finally {
session.close()
}
diff --git a/backend/src/middleware/slugify/uniqueSlug.js b/backend/src/middleware/slugify/uniqueSlug.js
index 69aef2d1b..ca37cd562 100644
--- a/backend/src/middleware/slugify/uniqueSlug.js
+++ b/backend/src/middleware/slugify/uniqueSlug.js
@@ -1,6 +1,6 @@
import slugify from 'slug'
export default async function uniqueSlug(string, isUnique) {
- let slug = slugify(string || 'anonymous', {
+ const slug = slugify(string || 'anonymous', {
lower: true,
})
if (await isUnique(slug)) return slug
diff --git a/backend/src/middleware/xssMiddleware.js b/backend/src/middleware/xssMiddleware.js
index 06aa5b306..6894e8601 100644
--- a/backend/src/middleware/xssMiddleware.js
+++ b/backend/src/middleware/xssMiddleware.js
@@ -8,8 +8,8 @@ import linkifyHtml from 'linkifyjs/html'
const embedToAnchor = content => {
const $ = cheerio.load(content)
$('div[data-url-embed]').each((i, el) => {
- let url = el.attribs['data-url-embed']
- let aTag = $(`${url}`)
+ const url = el.attribs['data-url-embed']
+ const aTag = $(`${url}`)
$(el).replaceWith(aTag)
})
return $('body').html()
@@ -87,7 +87,7 @@ function clean(dirty) {
b: 'strong',
s: 'strike',
img: function(tagName, attribs) {
- let src = attribs.src
+ const src = attribs.src
if (!src) {
// remove broken images
diff --git a/backend/src/schema/resolvers/comments.js b/backend/src/schema/resolvers/comments.js
index 31219d6d9..89a2040f4 100644
--- a/backend/src/schema/resolvers/comments.js
+++ b/backend/src/schema/resolvers/comments.js
@@ -18,7 +18,7 @@ export default {
false,
)
- let transactionRes = await session.run(
+ const transactionRes = await session.run(
`
MATCH (post:Post {id: $postId}), (comment:Comment {id: $commentId}), (author:User {id: $userId})
MERGE (post)<-[:COMMENTS]-(comment)<-[:WROTE]-(author)
diff --git a/backend/src/schema/resolvers/comments.spec.js b/backend/src/schema/resolvers/comments.spec.js
index 890ba5feb..e8280bd4b 100644
--- a/backend/src/schema/resolvers/comments.spec.js
+++ b/backend/src/schema/resolvers/comments.spec.js
@@ -5,7 +5,6 @@ import { host, login, gql } from '../../jest/helpers'
const factory = Factory()
let client
let createCommentVariables
-let createPostVariables
let createCommentVariablesSansPostId
let createCommentVariablesWithNonExistentPost
let userParams
@@ -26,7 +25,7 @@ const createCommentMutation = gql`
}
}
`
-createPostVariables = {
+const createPostVariables = {
id: 'p1',
title: 'post to comment on',
content: 'please comment on me',
@@ -325,7 +324,7 @@ describe('ManageComments', () => {
}
`
- let deleteCommentVariables = {
+ const deleteCommentVariables = {
id: 'c456',
}
diff --git a/backend/src/schema/resolvers/follow.js b/backend/src/schema/resolvers/follow.js
index 4e9a3b27d..730a66cfd 100644
--- a/backend/src/schema/resolvers/follow.js
+++ b/backend/src/schema/resolvers/follow.js
@@ -4,7 +4,7 @@ export default {
const { id, type } = params
const session = context.driver.session()
- let transactionRes = await session.run(
+ const transactionRes = await session.run(
`MATCH (node {id: $id}), (user:User {id: $userId})
WHERE $type IN labels(node) AND NOT $id = $userId
MERGE (user)-[relation:FOLLOWS]->(node)
@@ -29,7 +29,7 @@ export default {
const { id, type } = params
const session = context.driver.session()
- let transactionRes = await session.run(
+ const transactionRes = await session.run(
`MATCH (user:User {id: $userId})-[relation:FOLLOWS]->(node {id: $id})
WHERE $type IN labels(node)
DELETE relation
diff --git a/backend/src/schema/resolvers/follow.spec.js b/backend/src/schema/resolvers/follow.spec.js
index d29e17938..66be20841 100644
--- a/backend/src/schema/resolvers/follow.spec.js
+++ b/backend/src/schema/resolvers/follow.spec.js
@@ -41,8 +41,7 @@ describe('follow', () => {
describe('follow user', () => {
describe('unauthenticated follow', () => {
it('throws authorization error', async () => {
- let client
- client = new GraphQLClient(host)
+ const client = new GraphQLClient(host)
await expect(client.request(mutationFollowUser('u2'))).rejects.toThrow('Not Authorised')
})
})
@@ -93,8 +92,7 @@ describe('follow', () => {
// follow
await clientUser1.request(mutationFollowUser('u2'))
// unfollow
- let client
- client = new GraphQLClient(host)
+ const client = new GraphQLClient(host)
await expect(client.request(mutationUnfollowUser('u2'))).rejects.toThrow('Not Authorised')
})
})
diff --git a/backend/src/schema/resolvers/notifications.spec.js b/backend/src/schema/resolvers/notifications.spec.js
index 3876a4be3..8d51ebfbb 100644
--- a/backend/src/schema/resolvers/notifications.spec.js
+++ b/backend/src/schema/resolvers/notifications.spec.js
@@ -4,7 +4,7 @@ import { host, login } from '../../jest/helpers'
const factory = Factory()
let client
-let userParams = {
+const userParams = {
id: 'you',
email: 'test@example.org',
password: '1234',
@@ -34,7 +34,7 @@ describe('Notification', () => {
})
describe('currentUser { notifications }', () => {
- let variables = {}
+ const variables = {}
describe('authenticated', () => {
let headers
@@ -79,7 +79,7 @@ describe('currentUser { notifications }', () => {
}
}
}`
- let variables = { read: false }
+ const variables = { read: false }
it('returns only unread notifications of current user', async () => {
const expected = {
currentUser: {
diff --git a/backend/src/schema/resolvers/passwordReset.js b/backend/src/schema/resolvers/passwordReset.js
index 88d82846a..d2012c0fd 100644
--- a/backend/src/schema/resolvers/passwordReset.js
+++ b/backend/src/schema/resolvers/passwordReset.js
@@ -41,7 +41,7 @@ export default {
SET u.encryptedPassword = $encryptedNewPassword
RETURN pr
`
- let transactionRes = await session.run(cypher, {
+ const transactionRes = await session.run(cypher, {
stillValid,
email,
code,
diff --git a/backend/src/schema/resolvers/passwordReset.spec.js b/backend/src/schema/resolvers/passwordReset.spec.js
index 545945f51..b54b25a80 100644
--- a/backend/src/schema/resolvers/passwordReset.spec.js
+++ b/backend/src/schema/resolvers/passwordReset.spec.js
@@ -10,7 +10,7 @@ const driver = getDriver()
const getAllPasswordResets = async () => {
const session = driver.session()
- let transactionRes = await session.run('MATCH (r:PasswordReset) RETURN r')
+ const transactionRes = await session.run('MATCH (r:PasswordReset) RETURN r')
const resets = transactionRes.records.map(record => record.get('r'))
session.close()
return resets
@@ -84,9 +84,9 @@ describe('passwordReset', () => {
}
const mutation = `mutation($code: String!, $email: String!, $newPassword: String!) { resetPassword(code: $code, email: $email, newPassword: $newPassword) }`
- let email = 'user@example.org'
- let code = 'abcdef'
- let newPassword = 'supersecret'
+ const email = 'user@example.org'
+ const code = 'abcdef'
+ const newPassword = 'supersecret'
let variables
describe('invalid email', () => {
diff --git a/backend/src/schema/resolvers/posts.spec.js b/backend/src/schema/resolvers/posts.spec.js
index 68de51e79..8e6c0c303 100644
--- a/backend/src/schema/resolvers/posts.spec.js
+++ b/backend/src/schema/resolvers/posts.spec.js
@@ -339,7 +339,7 @@ describe('DeletePost', () => {
}
`
- let variables = {
+ const variables = {
id: 'p1',
}
diff --git a/backend/src/schema/resolvers/registration.spec.js b/backend/src/schema/resolvers/registration.spec.js
index dc2e96348..9f9a171f7 100644
--- a/backend/src/schema/resolvers/registration.spec.js
+++ b/backend/src/schema/resolvers/registration.spec.js
@@ -300,7 +300,7 @@ describe('SignupVerification', () => {
}
`
describe('given valid password and email', () => {
- let variables = {
+ const variables = {
nonce: '123456',
name: 'John Doe',
password: '123',
diff --git a/backend/src/schema/resolvers/reports.js b/backend/src/schema/resolvers/reports.js
index 67c896939..79cae032b 100644
--- a/backend/src/schema/resolvers/reports.js
+++ b/backend/src/schema/resolvers/reports.js
@@ -60,7 +60,7 @@ export default {
if (!dbResponse) return null
const { report, submitter, resource, type } = dbResponse
- let response = {
+ const response = {
...report.properties,
post: null,
comment: null,
diff --git a/backend/src/schema/resolvers/rewards.js b/backend/src/schema/resolvers/rewards.js
index f7a759aa4..74c7860e4 100644
--- a/backend/src/schema/resolvers/rewards.js
+++ b/backend/src/schema/resolvers/rewards.js
@@ -4,7 +4,7 @@ import { UserInputError } from 'apollo-server'
const instance = neode()
const getUserAndBadge = async ({ badgeKey, userId }) => {
- let user = await instance.first('User', 'id', userId)
+ const user = await instance.first('User', 'id', userId)
const badge = await instance.first('Badge', 'id', badgeKey)
if (!user) throw new UserInputError("Couldn't find a user with that id")
if (!badge) throw new UserInputError("Couldn't find a badge with that id")
@@ -36,8 +36,6 @@ export default {
userId,
},
)
- } catch (err) {
- throw err
} finally {
session.close()
}
diff --git a/backend/src/schema/resolvers/shout.js b/backend/src/schema/resolvers/shout.js
index d2d7f652e..398e43d77 100644
--- a/backend/src/schema/resolvers/shout.js
+++ b/backend/src/schema/resolvers/shout.js
@@ -4,7 +4,7 @@ export default {
const { id, type } = params
const session = context.driver.session()
- let transactionRes = await session.run(
+ const transactionRes = await session.run(
`MATCH (node {id: $id})<-[:WROTE]-(userWritten:User), (user:User {id: $userId})
WHERE $type IN labels(node) AND NOT userWritten.id = $userId
MERGE (user)-[relation:SHOUTED]->(node)
@@ -29,7 +29,7 @@ export default {
const { id, type } = params
const session = context.driver.session()
- let transactionRes = await session.run(
+ const transactionRes = await session.run(
`MATCH (user:User {id: $userId})-[relation:SHOUTED]->(node {id: $id})
WHERE $type IN labels(node)
DELETE relation
diff --git a/backend/src/schema/resolvers/shout.spec.js b/backend/src/schema/resolvers/shout.spec.js
index a94f7ca0b..029e6998c 100644
--- a/backend/src/schema/resolvers/shout.spec.js
+++ b/backend/src/schema/resolvers/shout.spec.js
@@ -60,8 +60,7 @@ describe('shout', () => {
describe('shout foreign post', () => {
describe('unauthenticated shout', () => {
it('throws authorization error', async () => {
- let client
- client = new GraphQLClient(host)
+ const client = new GraphQLClient(host)
await expect(client.request(mutationShoutPost('p1'))).rejects.toThrow('Not Authorised')
})
})
@@ -109,8 +108,7 @@ describe('shout', () => {
// shout
await clientUser1.request(mutationShoutPost('p2'))
// unshout
- let client
- client = new GraphQLClient(host)
+ const client = new GraphQLClient(host)
await expect(client.request(mutationUnshoutPost('p2'))).rejects.toThrow('Not Authorised')
})
})
diff --git a/backend/src/schema/resolvers/statistics.js b/backend/src/schema/resolvers/statistics.js
index f09b7219d..982c2acfa 100644
--- a/backend/src/schema/resolvers/statistics.js
+++ b/backend/src/schema/resolvers/statistics.js
@@ -1,9 +1,9 @@
export const query = (cypher, session) => {
return new Promise((resolve, reject) => {
- let data = []
+ const data = []
session.run(cypher).subscribe({
onNext: function(record) {
- let item = {}
+ const item = {}
record.keys.forEach(key => {
item[key] = record.get(key)
})
@@ -34,7 +34,7 @@ const queryOne = (cypher, session) => {
export default {
Query: {
statistics: async (parent, args, { driver, user }) => {
- return new Promise(async resolve => {
+ return new Promise(resolve => {
const session = driver.session()
const queries = {
countUsers:
@@ -54,18 +54,24 @@ export default {
countFollows: 'MATCH (:User)-[r:FOLLOWS]->(:User) RETURN COUNT(r) AS countFollows',
countShouts: 'MATCH (:User)-[r:SHOUTED]->(:Post) RETURN COUNT(r) AS countShouts',
}
- let data = {
- countUsers: (await queryOne(queries.countUsers, session)).countUsers.low,
- countPosts: (await queryOne(queries.countPosts, session)).countPosts.low,
- countComments: (await queryOne(queries.countComments, session)).countComments.low,
- countNotifications: (await queryOne(queries.countNotifications, session))
- .countNotifications.low,
- countOrganizations: (await queryOne(queries.countOrganizations, session))
- .countOrganizations.low,
- countProjects: (await queryOne(queries.countProjects, session)).countProjects.low,
- countInvites: (await queryOne(queries.countInvites, session)).countInvites.low,
- countFollows: (await queryOne(queries.countFollows, session)).countFollows.low,
- countShouts: (await queryOne(queries.countShouts, session)).countShouts.low,
+ const data = {
+ countUsers: queryOne(queries.countUsers, session).then(res => res.countUsers.low),
+ countPosts: queryOne(queries.countPosts, session).then(res => res.countPosts.low),
+ countComments: queryOne(queries.countComments, session).then(
+ res => res.countComments.low,
+ ),
+ countNotifications: queryOne(queries.countNotifications, session).then(
+ res => res.countNotifications.low,
+ ),
+ countOrganizations: queryOne(queries.countOrganizations, session).then(
+ res => res.countOrganizations.low,
+ ),
+ countProjects: queryOne(queries.countProjects, session).then(
+ res => res.countProjects.low,
+ ),
+ countInvites: queryOne(queries.countInvites, session).then(res => res.countInvites.low),
+ countFollows: queryOne(queries.countFollows, session).then(res => res.countFollows.low),
+ countShouts: queryOne(queries.countShouts, session).then(res => res.countShouts.low),
}
resolve(data)
})
diff --git a/backend/src/schema/resolvers/user_management.js b/backend/src/schema/resolvers/user_management.js
index 7ed84586b..be790ca3a 100644
--- a/backend/src/schema/resolvers/user_management.js
+++ b/backend/src/schema/resolvers/user_management.js
@@ -49,7 +49,7 @@ export default {
}
},
changePassword: async (_, { oldPassword, newPassword }, { driver, user }) => {
- let currentUser = await instance.find('User', user.id)
+ const currentUser = await instance.find('User', user.id)
const encryptedPassword = currentUser.get('encryptedPassword')
if (!(await bcrypt.compareSync(oldPassword, encryptedPassword))) {
diff --git a/backend/src/schema/resolvers/user_management.spec.js b/backend/src/schema/resolvers/user_management.spec.js
index 50b5896b3..ff0c0db4e 100644
--- a/backend/src/schema/resolvers/user_management.spec.js
+++ b/backend/src/schema/resolvers/user_management.spec.js
@@ -296,7 +296,7 @@ describe('change password', () => {
describe('correct password', () => {
it('changes the password if given correct credentials "', async () => {
- let response = await client.request(
+ const response = await client.request(
mutation({
oldPassword: '1234',
newPassword: '12345',
diff --git a/backend/src/schema/resolvers/users.js b/backend/src/schema/resolvers/users.js
index c0826c6c8..77e4ae2aa 100644
--- a/backend/src/schema/resolvers/users.js
+++ b/backend/src/schema/resolvers/users.js
@@ -23,7 +23,7 @@ export default {
UpdateUser: async (object, args, context, resolveInfo) => {
args = await fileUpload(args, { file: 'avatarUpload', url: 'avatar' })
try {
- let user = await instance.find('User', args.id)
+ const user = await instance.find('User', args.id)
if (!user) return null
await user.update(args)
return user.toJson()
@@ -60,7 +60,7 @@ export default {
const { id } = parent
const statement = `MATCH(u:User {id: {id}})-[:PRIMARY_EMAIL]->(e:EmailAddress) RETURN e`
const result = await instance.cypher(statement, { id })
- let [{ email }] = result.records.map(r => r.get('e').properties)
+ const [{ email }] = result.records.map(r => r.get('e').properties)
return email
},
...Resolver('User', {
diff --git a/backend/src/schema/types/index.js b/backend/src/schema/types/index.js
index bcdceed44..068af64da 100644
--- a/backend/src/schema/types/index.js
+++ b/backend/src/schema/types/index.js
@@ -21,7 +21,7 @@ const findGqlFiles = dir => {
return results
}
-let typeDefs = []
+const typeDefs = []
findGqlFiles(__dirname).forEach(file => {
typeDefs.push(fs.readFileSync(file).toString('utf-8'))
diff --git a/backend/src/seed/factories/index.js b/backend/src/seed/factories/index.js
index 6dd04f64b..87d99faab 100644
--- a/backend/src/seed/factories/index.js
+++ b/backend/src/seed/factories/index.js
@@ -40,15 +40,13 @@ export const cleanDatabase = async (options = {}) => {
const cypher = 'MATCH (n) DETACH DELETE n'
try {
return await session.run(cypher)
- } catch (error) {
- throw error
} finally {
session.close()
}
}
export default function Factory(options = {}) {
- let {
+ const {
seedServerHost = 'http://127.0.0.1:4001',
neo4jDriver = getDriver(),
neodeInstance = neode(),
diff --git a/backend/src/seed/seed-helpers.js b/backend/src/seed/seed-helpers.js
index 399d06670..913ca1d54 100644
--- a/backend/src/seed/seed-helpers.js
+++ b/backend/src/seed/seed-helpers.js
@@ -37,17 +37,17 @@ const difficulties = ['easy', 'medium', 'hard']
export default {
randomItem: (items, filter) => {
- let ids = filter
+ const ids = filter
? Object.keys(items).filter(id => {
return filter(items[id])
})
: _.keys(items)
- let randomIds = _.shuffle(ids)
+ const randomIds = _.shuffle(ids)
return items[randomIds.pop()]
},
randomItems: (items, key = 'id', min = 1, max = 1) => {
- let randomIds = _.shuffle(_.keys(items))
- let res = []
+ const randomIds = _.shuffle(_.keys(items))
+ const res = []
const count = _.random(min, max)
@@ -86,8 +86,8 @@ export default {
if (allowEmpty === false && count === 0) {
count = 1
}
- let categorieIds = _.shuffle(_.keys(seederstore.categories))
- let ids = []
+ const categorieIds = _.shuffle(_.keys(seederstore.categories))
+ const ids = []
for (let i = 0; i < count; i++) {
ids.push(categorieIds.pop())
}
@@ -95,7 +95,7 @@ export default {
},
randomAddresses: () => {
const count = Math.round(Math.random() * 3)
- let addresses = []
+ const addresses = []
for (let i = 0; i < count; i++) {
addresses.push({
city: faker.address.city(),
@@ -116,7 +116,7 @@ export default {
* @param key the field key that is represented in the values (slug, name, etc.)
*/
mapIdsByKey: (items, values, key) => {
- let res = []
+ const res = []
values.forEach(value => {
res.push(_.find(items, [key, value]).id.toString())
})
diff --git a/backend/yarn.lock b/backend/yarn.lock
index 657998472..10d7c1b28 100644
--- a/backend/yarn.lock
+++ b/backend/yarn.lock
@@ -972,33 +972,7 @@
url-regex "~4.1.1"
video-extensions "~1.1.0"
-"@metascraper/helpers@^5.6.3":
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.6.3.tgz#88d3d3a174f94ccb617145cb9f60c999b57d9b60"
- integrity sha512-FWqQmh+sZI5JRxJHVPPzBjilgZCqKWDFSo/eqRIgLLW/5kB79uuX4aseSTep1JpXUAcD5F/Z0KZYQl4JTbTopA==
- dependencies:
- audio-extensions "0.0.0"
- chrono-node "~1.3.11"
- condense-whitespace "~2.0.0"
- entities "~2.0.0"
- file-extension "~4.0.5"
- has-values "~2.0.1"
- image-extensions "~1.1.0"
- is-relative-url "~3.0.0"
- is-uri "~1.2.0"
- iso-639-3 "~1.2.0"
- isostring "0.0.1"
- lodash "~4.17.15"
- mem "~5.1.1"
- mime-types "~2.1.24"
- normalize-url "~4.3.0"
- smartquotes "~2.3.1"
- title "~3.4.1"
- truncate "~2.1.0"
- url-regex "~5.0.0"
- video-extensions "~1.1.0"
-
-"@metascraper/helpers@^5.6.5":
+"@metascraper/helpers@^5.6.3", "@metascraper/helpers@^5.6.5":
version "5.6.5"
resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.6.5.tgz#6f42bd1a8e3243e051e7bb067145125cd6b37e09"
integrity sha512-j9qxXqZ9k/uNkABlsVjNN2Z5pVtukDmZMZ0ACsob+m5o8/yo87GvRf/UJfTPtog9vZ/QwkLav5Hhl+10NC7QLw==
@@ -3272,10 +3246,10 @@ eslint-config-prettier@~6.0.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@~13.0.1:
+ version "13.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-13.0.1.tgz#c9c6ffe0cfb8a51535bc5c7ec9f70eafb8c6b2c0"
+ integrity sha512-zLKp4QOgq6JFgRm1dDCVv1Iu0P5uZ4v5Wa4DTOkg2RFMxdCX/9Qf7lz9ezRj2dBRa955cWQF/O/LWEiYWAHbTw==
eslint-import-resolver-node@^0.3.2:
version "0.3.2"
@@ -5828,12 +5802,12 @@ merge-stream@^1.0.1:
dependencies:
readable-stream "^2.0.1"
-metascraper-audio@^5.5.0:
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.6.3.tgz#f84f4e19960c698df2e14cd98212b004bac66bb9"
- integrity sha512-XxO9iHVQzGa+Z7wzmnHl3dmFdBdmYfO/ozeMWH0fp/4YbU1GU3l+OlYzPaVhCEfArqzzuwf1iq8uGKdU/DOZnw==
+metascraper-audio@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.6.5.tgz#8937d369f37d43f8668eb87013ea4fe8309a9451"
+ integrity sha512-EF9IMscv9HLy3Mks8Vhv0ftzwjV36tvNpSwPnmibDGDy25ssf6nB7ldeP5YPij4TNjLeUsrdh6v10aYrh8Z5fQ==
dependencies:
- "@metascraper/helpers" "^5.6.3"
+ "@metascraper/helpers" "^5.6.5"
metascraper-author@^5.6.3:
version "5.6.3"
@@ -5850,19 +5824,19 @@ metascraper-clearbit-logo@^5.3.0:
dependencies:
got "~9.6.0"
-metascraper-date@^5.6.3:
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/metascraper-date/-/metascraper-date-5.6.3.tgz#516fad38391a45137a58430f639a57037eee96f2"
- integrity sha512-sdbY0IOu1BcZHocwVIJ8/CPkguVR8oDho13apIGNsZjyItIdMMLrziDqzOSGcJI++AXGmS3MNHW8M+bdYHVj1g==
+metascraper-date@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/metascraper-date/-/metascraper-date-5.6.5.tgz#802a19eaf9dc2874352ec4401fa360347225197b"
+ integrity sha512-IuKpi5z3S1/qlLhfQbLVv5hitfly/UEGKBxD4dYbn+5xbcsPcNlM+AE7DeDEct390nuZs7+fbSqgPKFtt5fPRg==
dependencies:
- "@metascraper/helpers" "^5.6.3"
+ "@metascraper/helpers" "^5.6.5"
-metascraper-description@^5.5.0:
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.6.3.tgz#1abfde848e8002c606e5741b9523b61ca592bb34"
- integrity sha512-ATfsUS6t912hSYKEOyVUX+GrwRMcUltOcvEXtD/5ER26z3h1ab83w4UvQ7imo9F6yueQX2dB6QfqTkWF92X6Vw==
+metascraper-description@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.6.5.tgz#b0e47bedf9aed151e085ff3a8a499be5f4779dc3"
+ integrity sha512-rYHMRrLnYPdt1ZCiObRtl7MP8i+2q9MfgeeiwACd65ElC+wgnfyQBIgxBp/gEnKuUsehWgpDXCZKFkjv+W4zNQ==
dependencies:
- "@metascraper/helpers" "^5.6.3"
+ "@metascraper/helpers" "^5.6.5"
metascraper-image@^5.6.3:
version "5.6.3"
@@ -5887,28 +5861,28 @@ metascraper-lang@^5.6.3:
dependencies:
"@metascraper/helpers" "^5.6.3"
-metascraper-logo@^5.5.0:
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/metascraper-logo/-/metascraper-logo-5.6.3.tgz#bb18449e872815ba6199e2aa78078259c2677b98"
- integrity sha512-xeqjSuTAiudXiUczj7F0+VvXdgFvL5rqyW3D+BPXrNHOUqDyyYNlHTEhambj3HbMP6EjQyoMDEvqCF5qUezmXg==
+metascraper-logo@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/metascraper-logo/-/metascraper-logo-5.6.5.tgz#82a6e77da2df91fbbf233dfa49fd0a99475968ff"
+ integrity sha512-MKzunTRaD0HO7NdyzIhL/wpfpluCGLaBXFAYdvaY+FxiA9ZbpIV+9TdaoF3uzmoZAE09dKbQEmxeKOrbWHr4Zw==
dependencies:
- "@metascraper/helpers" "^5.6.3"
+ "@metascraper/helpers" "^5.6.5"
-metascraper-publisher@^5.6.3:
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/metascraper-publisher/-/metascraper-publisher-5.6.3.tgz#3729cd7dac117c94f92020ff3a8397a1b965a27e"
- integrity sha512-1Z+bwrTn6j4Tf85DatYL0zDmqBfoJCfYa0nNlZ9HWfjM+QWDxBeIu1v/85N3AYGYPwk5G38IdvEYBb4MpMEQvQ==
+metascraper-publisher@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/metascraper-publisher/-/metascraper-publisher-5.6.5.tgz#c23e93b766d3d0d64116422fa76a8da1145d2f98"
+ integrity sha512-XKaksI7gjPuuYNJyiowrE2DsrdhXeaoDEoK3/0vV3RfYBxXFgBtRUoFQiDiad+cUN/5lhMhYs0BKRiC+Q3XiZg==
dependencies:
- "@metascraper/helpers" "^5.6.3"
+ "@metascraper/helpers" "^5.6.5"
-metascraper-soundcloud@^5.5.3:
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/metascraper-soundcloud/-/metascraper-soundcloud-5.6.3.tgz#c2bb5904857d079a44c0d1e1511dfaf4d0f19945"
- integrity sha512-v44pktX4I7pnUjThGs11YZLNpuQbuB6iY2RcYnODjasgor8t7ZHPwrJqy01b0mkTmHoRbQ84Vheq1SkAD0Vz8g==
+metascraper-soundcloud@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/metascraper-soundcloud/-/metascraper-soundcloud-5.6.5.tgz#4447e24f919a57551bc672f1aa1d86ff3d54f602"
+ integrity sha512-dSr7rUi0ag+siqfPbSNRxSnQG187NsT8vMplI//NXMtKE6WLxxoOxJMETnFn56IozhIwb3FfC0suyThr9ZaGCg==
dependencies:
- "@metascraper/helpers" "^5.6.3"
+ "@metascraper/helpers" "^5.6.5"
memoize-one "~5.0.5"
- tldts "~5.3.1"
+ tldts "~5.3.2"
metascraper-title@^5.6.3:
version "5.6.3"
@@ -5918,12 +5892,12 @@ metascraper-title@^5.6.3:
"@metascraper/helpers" "^5.6.3"
lodash "~4.17.15"
-metascraper-url@^5.5.0:
- version "5.6.3"
- resolved "https://registry.yarnpkg.com/metascraper-url/-/metascraper-url-5.6.3.tgz#7e756f79ed2a5e1591682e29b665551855ddda5d"
- integrity sha512-hFHff2AsWuW552CkktWR9ViVp2poZufP1YUAVJWRe7UaHC67vx2mE5hjNZkVBSi1rOoPIbNN+jPVvcKwT6tkAw==
+metascraper-url@^5.6.5:
+ version "5.6.5"
+ resolved "https://registry.yarnpkg.com/metascraper-url/-/metascraper-url-5.6.5.tgz#1afaa8688c53e7b9d37d81f9302d06b4d42d8656"
+ integrity sha512-BjzWpLLezCAg4pexWB63OdN7sNcJXRGlw8Cv+k5JCMUH/JV+rA+8l5wwWJFISxgOUpHsnbGlAkFT45viVxuawg==
dependencies:
- "@metascraper/helpers" "^5.6.3"
+ "@metascraper/helpers" "^5.6.5"
metascraper-video@^5.6.3:
version "5.6.3"
@@ -8182,17 +8156,17 @@ tlds@^1.187.0, tlds@^1.203.0:
resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.203.1.tgz#4dc9b02f53de3315bc98b80665e13de3edfc1dfc"
integrity sha512-7MUlYyGJ6rSitEZ3r1Q1QNV8uSIzapS8SmmhSusBuIc7uIxPPwsKllEP0GRp1NS6Ik6F+fRZvnjDWm3ecv2hDw==
-tldts-core@^5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-5.3.1.tgz#040450d7148107880ba9020e77b3b28a6cc5d9db"
- integrity sha512-z8C2wcT2XvSgk5p0HWapXPkvvKG7E8Jei71N+9Mpp9Eoh2/wjtQPhDeENSuzHNmjTdRz6KFIcM7aWTB+7g0OyA==
+tldts-core@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-5.3.2.tgz#3823653310c2dc6e51d00998098a72a3cc203ea9"
+ integrity sha512-bGI7MvrFXnbNhSkKEKAjiRo+eoIuIsuzF/hOtpI7HLMLWamIGtrLuNv2nlBOdN/h6iB6B32B4MxmwPWTZ70TaQ==
-tldts@~5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/tldts/-/tldts-5.3.1.tgz#39b2164b71777e69b3d05e5db5a30b5e1a5df6b7"
- integrity sha512-JHG3Gonv+17qi1gyskY0KwdpjVkQfQK4pMHm52vpdKXV3y9AzEhhinDT/GfLF8w7kRLpIHhcViZ0rEsFla81lA==
+tldts@~5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/tldts/-/tldts-5.3.2.tgz#d7e9b31b70b7d7687a16fe31a18ec2ca8a33f852"
+ integrity sha512-R96Q0sJoD1vMYZ5YI0om32AZW2SYDxWfcg0111gnJYIvfyVgHOwyYj2dLFhpkPCSH7AwwUe0MmewmUrQhJXRjQ==
dependencies:
- tldts-core "^5.3.1"
+ tldts-core "^5.3.2"
tmp@^0.0.33:
version "0.0.33"
diff --git a/package.json b/package.json
index 6d5381424..0a0484126 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"cross-env": "^5.2.0",
"cypress": "^3.4.1",
"cypress-cucumber-preprocessor": "^1.13.0",
- "cypress-file-upload": "^3.3.2",
+ "cypress-file-upload": "^3.3.3",
"cypress-plugin-retries": "^1.2.2",
"dotenv": "^8.0.0",
"faker": "Marak/faker.js#master",
diff --git a/webapp/components/ContributionForm/ContributionForm.spec.js b/webapp/components/ContributionForm/ContributionForm.spec.js
index 3f9384d27..199d6ab18 100644
--- a/webapp/components/ContributionForm/ContributionForm.spec.js
+++ b/webapp/components/ContributionForm/ContributionForm.spec.js
@@ -6,6 +6,9 @@ import PostMutations from '~/graphql/PostMutations.js'
import CategoriesSelect from '~/components/CategoriesSelect/CategoriesSelect'
import Filters from '~/plugins/vue-filters'
import TeaserImage from '~/components/TeaserImage/TeaserImage'
+import MutationObserver from 'mutation-observer'
+
+global.MutationObserver = MutationObserver
const localVue = createLocalVue()
diff --git a/webapp/components/Editor/Editor.spec.js b/webapp/components/Editor/Editor.spec.js
index d457609bd..866b96aba 100644
--- a/webapp/components/Editor/Editor.spec.js
+++ b/webapp/components/Editor/Editor.spec.js
@@ -1,8 +1,10 @@
import { mount, createLocalVue } from '@vue/test-utils'
import Editor from './Editor'
import Vuex from 'vuex'
-
import Styleguide from '@human-connection/styleguide'
+import MutationObserver from 'mutation-observer'
+
+global.MutationObserver = MutationObserver
const localVue = createLocalVue()
localVue.use(Vuex)
diff --git a/webapp/components/comments/CommentForm/spec.js b/webapp/components/comments/CommentForm/spec.js
index 8420c97ba..2d212c91d 100644
--- a/webapp/components/comments/CommentForm/spec.js
+++ b/webapp/components/comments/CommentForm/spec.js
@@ -2,6 +2,9 @@ import { mount, createLocalVue } from '@vue/test-utils'
import CommentForm from './index.vue'
import Styleguide from '@human-connection/styleguide'
import Vuex from 'vuex'
+import MutationObserver from 'mutation-observer'
+
+global.MutationObserver = MutationObserver
const localVue = createLocalVue()
localVue.use(Vuex)
diff --git a/webapp/package.json b/webapp/package.json
index 6d9f5bc04..a8fda5905 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -70,8 +70,8 @@
"nuxt-env": "~0.1.0",
"stack-utils": "^1.0.2",
"string-hash": "^1.1.3",
- "tiptap": "1.21.0",
- "tiptap-extensions": "1.22.2",
+ "tiptap": "~1.24.0",
+ "tiptap-extensions": "~1.26.0",
"v-tooltip": "~2.0.2",
"vue-count-to": "~1.0.13",
"vue-izitoast": "1.1.2",
@@ -104,11 +104,12 @@
"flush-promises": "^1.0.2",
"fuse.js": "^3.4.5",
"jest": "~24.8.0",
+ "mutation-observer": "^1.0.3",
"node-sass": "~4.12.0",
"nodemon": "~1.19.1",
"prettier": "~1.18.2",
"sass-loader": "~7.1.0",
- "tippy.js": "^4.3.4",
+ "tippy.js": "^4.3.5",
"vue-jest": "~3.0.4",
"vue-svg-loader": "~0.12.0"
}
diff --git a/webapp/yarn.lock b/webapp/yarn.lock
index c98f125a2..596fdc05f 100644
--- a/webapp/yarn.lock
+++ b/webapp/yarn.lock
@@ -8472,6 +8472,11 @@ mustache@^2.3.0:
resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5"
integrity sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==
+mutation-observer@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/mutation-observer/-/mutation-observer-1.0.3.tgz#42e9222b101bca82e5ba9d5a7acf4a14c0f263d0"
+ integrity sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==
+
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
@@ -10237,10 +10242,10 @@ prosemirror-dropcursor@^1.1.1:
prosemirror-transform "^1.1.0"
prosemirror-view "^1.1.0"
-prosemirror-gapcursor@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.0.3.tgz#acc6537fc5a35e9b38966f91a199a382dfc715c4"
- integrity sha512-X+hJhr42PcHWiSWL+lI5f/UeOhXCxlBFb8M6O8aG1hssmaRrW7sS2/Fjg5jFV+pTdS1REFkmm1occh01FMdDIQ==
+prosemirror-gapcursor@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.0.4.tgz#4ba663fb8511616e18ad222c904403cfbf6866dc"
+ integrity sha512-k021MtJibWs3NaJI6S9tCXfTZ/kaugFZBndHkkWx3Zfk0QDUO6JfVATpflxADN6DUkRwJ7qWyHlLDWu71hxHFQ==
dependencies:
prosemirror-keymap "^1.0.0"
prosemirror-model "^1.0.0"
@@ -10272,7 +10277,7 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.0.1:
prosemirror-state "^1.0.0"
w3c-keyname "^1.1.8"
-prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.7.0, prosemirror-model@^1.7.1:
+prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.7.1:
version "1.7.1"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.7.1.tgz#f140a6e366e1e283aa7a94dbb8c2c7d13139689e"
integrity sha512-hYrZPbJvdo2QWERmkCuS80BEf5Rcf3+S28ETr4xu8XKPYjmU6aeQn23G1Fu/2rwqUmk5ZyWYo2nyEsN+Cdv2Qg==
@@ -10313,12 +10318,12 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor
dependencies:
prosemirror-model "^1.0.0"
-prosemirror-utils@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.0.tgz#3ab616c94ccd61fcb18968f0d5aa273a9f1f28e4"
- integrity sha512-YcvmHcq7phbn+OagJSvmne92qZG9dOVfb3zfuA1HuyWUif3hUDt2Yfu299BHqVkEkUCF6FN7Gi9folDQntMhxA==
+prosemirror-utils@^0.9.4:
+ version "0.9.5"
+ resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.5.tgz#34d7e5bc12f3e6774261cc664bac9499899663d4"
+ integrity sha512-JT3H//Cq2ljNhWadMYRMdlNj2gylFA7L4RC0zmUF9l0IgDpc/gTpPRCmfcDUomDgCrciz57C3MCnZ+058hSTaA==
-prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.9.8:
+prosemirror-view@^1.0.0, prosemirror-view@^1.1.0:
version "1.9.8"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.9.8.tgz#47b961204a0b2e8ff87370c270d4f82598e81273"
integrity sha512-yS4yrqxydvi7ddz9VFLeJgbfVd5g3/bMcRxb1PbWtG0i9OrPSsiHaEBJHLVeTbraGqRlAu+tbNLakO7RhUhp1w==
@@ -10327,6 +10332,15 @@ prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.9.8:
prosemirror-state "^1.0.0"
prosemirror-transform "^1.1.0"
+prosemirror-view@^1.9.12:
+ version "1.9.13"
+ resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.9.13.tgz#8f146038e776fd0aa6d7811c8b9cb11813b9e319"
+ integrity sha512-afJxCZR4EH04u4thl7xYHSIgyQiGALstLi+5SW9t3868ghrgcFhpQvbJAN17Yb9nwtnltD64t15Msk2UlXkPeQ==
+ dependencies:
+ prosemirror-model "^1.1.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+
proto-list@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
@@ -11940,17 +11954,17 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-tippy.js@^4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-4.3.4.tgz#9a91fd5ce8c401f181b7adaa6b2c27f3d105f3ba"
- integrity sha512-O2ukxHOJTLVYZ/TfHjNd8WgAWoefX9uk5QiWRdHfX2PR2lBpUU4BJQLl7U2Ykc8K7o16gTeHEElpuRfgD5b0aA==
+tippy.js@^4.3.5:
+ version "4.3.5"
+ resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-4.3.5.tgz#882bff8d92f09bb0546d2826d5668c0560006f54"
+ integrity sha512-NDq3efte8nGK6BOJ1dDN1/WelAwfmh3UtIYXXck6+SxLzbIQNZE/cmRSnwScZ/FyiKdIcvFHvYUgqmoGx8CcyA==
dependencies:
popper.js "^1.14.7"
-tiptap-commands@^1.10.6, tiptap-commands@^1.10.7:
- version "1.10.7"
- resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.10.7.tgz#c177f875e8a90e05171fdd441190b4b7a769bd27"
- integrity sha512-Ij62dHkYvOFUcaj+xlbahhoqcY8bFIEho6fXKrxcjjtGzS2DyJnvXmWN6Ow65uZWXkf5Zf8ae6XnYNaKqP3Pyg==
+tiptap-commands@^1.10.11:
+ version "1.10.11"
+ resolved "https://registry.yarnpkg.com/tiptap-commands/-/tiptap-commands-1.10.11.tgz#9df1ef7b553e601598892074f9faa6d836fd8238"
+ integrity sha512-SD1Ep18qKGiCOodUttQrJtOfEC4/sx1pQWfROc4t8xeuxS5FLcrXZ+u9mELRSHkBJ+nDAJsn/ewG+yo58T1+Xg==
dependencies:
prosemirror-commands "^1.0.8"
prosemirror-inputrules "^1.0.4"
@@ -11958,13 +11972,13 @@ tiptap-commands@^1.10.6, tiptap-commands@^1.10.7:
prosemirror-schema-list "^1.0.3"
prosemirror-state "^1.2.3"
prosemirror-tables "^0.8.1"
- prosemirror-utils "^0.9.0"
- tiptap-utils "^1.5.5"
+ prosemirror-utils "^0.9.4"
+ tiptap-utils "^1.6.0"
-tiptap-extensions@1.22.2:
- version "1.22.2"
- resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.22.2.tgz#66b24ef63653481da16419efdf6459c7a9f518f7"
- integrity sha512-JJe2yAnbaKBWO/16+lfFphePphG9UYhp3wAUkzhSefJx3dtIdDfCmp5jBzZ6NLahUHNT/Z9WeYdhQmngAeVhoA==
+tiptap-extensions@~1.26.0:
+ version "1.26.0"
+ resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.26.0.tgz#d3ee033d121c7243a7e8648c69ec6343a2853ccc"
+ integrity sha512-icQYbfl6Cu3XkAoz9y+4x1URuB/EzryF2rZT6GsURghcelaxpjIPoMDBMyi00zlSIKJUvkS14NbnjJ2eT0CG6w==
dependencies:
lowlight "^1.12.1"
prosemirror-collab "^1.1.2"
@@ -11973,52 +11987,36 @@ tiptap-extensions@1.22.2:
prosemirror-state "^1.2.3"
prosemirror-tables "^0.8.1"
prosemirror-transform "^1.1.3"
- prosemirror-utils "^0.9.0"
- prosemirror-view "^1.9.8"
- tiptap "^1.22.2"
- tiptap-commands "^1.10.7"
+ prosemirror-utils "^0.9.4"
+ prosemirror-view "^1.9.12"
+ tiptap "^1.24.0"
+ tiptap-commands "^1.10.11"
-tiptap-utils@^1.5.4, tiptap-utils@^1.5.5:
- version "1.5.5"
- resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.5.5.tgz#f06c70f0319d9215433b3466b6ece369a078de0f"
- integrity sha512-lnaCmIIkyK050qfsPeMDjoTW0sTqBHxfw1h2GXaX5Nr6JF4VQe0izgf2MI6LCd3PKecJBoW4ce5lNkDpV99+WA==
+tiptap-utils@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/tiptap-utils/-/tiptap-utils-1.6.0.tgz#6af0bf52f93b291b9be5f6adb92c9afc35dd8d62"
+ integrity sha512-8ehQyNCe1CJvgBBqS3rKM58MFqcwlJQXS6XtZyhOjJDGQbUKNVR/GbAXTPlHnuVBm0kKKTjTqnrEt/PS4d2aXg==
dependencies:
prosemirror-model "^1.7.1"
prosemirror-state "^1.2.3"
prosemirror-tables "^0.8.1"
- prosemirror-utils "^0.9.0"
+ prosemirror-utils "^0.9.4"
-tiptap@1.21.0:
- version "1.21.0"
- resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.21.0.tgz#4d8c1365c611e41c8d4f3d7aa195ddaf891e605b"
- integrity sha512-MoOj/8OPMlmoAotIZjAIlUZ59yMMR83xReOw2rGjqbFOooncoY1rLEBp0xz5oe5FLYqoe8dKb+kzOoFERqckVQ==
+tiptap@^1.24.0, tiptap@~1.24.0:
+ version "1.24.0"
+ resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.24.0.tgz#f386c8fca71275a4794a0e95eca2ea37267d370d"
+ integrity sha512-izw0FM5bbOQRtNczqEgo9/EoUI7X/TAj1LEsteMuDqxaZKmYn6so482UnnQUv13+4DtXHYGj5U+60lVNuZlWJw==
dependencies:
prosemirror-commands "^1.0.8"
prosemirror-dropcursor "^1.1.1"
- prosemirror-gapcursor "^1.0.3"
- prosemirror-inputrules "^1.0.4"
- prosemirror-keymap "^1.0.1"
- prosemirror-model "^1.7.0"
- prosemirror-state "^1.2.3"
- prosemirror-view "^1.9.8"
- tiptap-commands "^1.10.6"
- tiptap-utils "^1.5.4"
-
-tiptap@^1.22.2:
- version "1.22.2"
- resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.22.2.tgz#f3f2b822d9ed087a853520c86593b2e6bd822bdd"
- integrity sha512-qMFQJ358Ga8gXzUAMaHGrZDab/IqZf28N8BYYo4hyFIMoEYQVWmBGWuSBHOgpxiueXpC9zMuCoIgrNWN3VpoNQ==
- dependencies:
- prosemirror-commands "^1.0.8"
- prosemirror-dropcursor "^1.1.1"
- prosemirror-gapcursor "^1.0.3"
+ prosemirror-gapcursor "^1.0.4"
prosemirror-inputrules "^1.0.4"
prosemirror-keymap "^1.0.1"
prosemirror-model "^1.7.1"
prosemirror-state "^1.2.3"
- prosemirror-view "^1.9.8"
- tiptap-commands "^1.10.7"
- tiptap-utils "^1.5.5"
+ prosemirror-view "^1.9.12"
+ tiptap-commands "^1.10.11"
+ tiptap-utils "^1.6.0"
title-case@^2.1.0:
version "2.1.1"
diff --git a/yarn.lock b/yarn.lock
index cbc232977..3e522d060 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1864,10 +1864,10 @@ cypress-cucumber-preprocessor@^1.13.0:
glob "^7.1.2"
through "^2.3.8"
-cypress-file-upload@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-3.3.2.tgz#d9bb00cac756fd4b5f68079f19745fe40d97fdd4"
- integrity sha512-39CW6/rTmn7AGa+ZrD37R+ANnnWAesbUj2RpBfbpRzV+KTAlF+m9Djbd2f325w0JGY0A2eO0w6TYYo+NvBTnoA==
+cypress-file-upload@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-3.3.3.tgz#119188fa78e9cfc00904c52d76d4ca56d34950df"
+ integrity sha512-CmXGRMHonoyCa8EcF6jomxqMAe56HvKfnW7S69EmTga8ecYmvQUI6gYttcHO+5UTmFQOFl7xbABV3+AbnI4btA==
cypress-plugin-retries@^1.2.2:
version "1.2.2"