diff --git a/CHANGELOG.md b/CHANGELOG.md index 39ff5d46c..4ceaeb8a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ All notable changes to Hylo Node (the Hylo server) will be documented in this fi The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed +- Move HTML sanitization exclusively of posts.details and comments.text to model getters (`Post#details()` and `Comment.text()`) which should be used EXCLUSIVELY for any output through API +- Removes extraneous and destructive HTML sanitization on plain text fields (entity decoding and protection from related React text renders) +- Adopts graphql-tools default getters for Post model to reduce duplication of code and make model results canonical for sanitization +- Move from deprecated `hylo-utils` to new `hylo-shared` library + ## [3.1.3] - 2022-02-22 ### Added diff --git a/api/controllers/CommentController.js b/api/controllers/CommentController.js index c5f417a33..7cdf21a18 100644 --- a/api/controllers/CommentController.js +++ b/api/controllers/CommentController.js @@ -1,7 +1,7 @@ /* eslint-disable camelcase */ import { isEmpty } from 'lodash' import { flow, filter, map, includes } from 'lodash/fp' -import { markdown } from 'hylo-utils/text' +import { TextHelpers } from 'hylo-shared' import createComment from '../models/comment/createComment' module.exports = { @@ -42,7 +42,7 @@ module.exports = { // TODO: fix const { groupId, userId } = res.locals.tokenData - const replyText = postId => markdown(req.param(`post-${postId}`)) + const replyText = postId => TextHelpers.markdown(req.param(`post-${postId}`)) const postIds = flow( Object.keys, diff --git a/api/graphql/filters.js b/api/graphql/filters.js index a71060273..b1f57973e 100644 --- a/api/graphql/filters.js +++ b/api/graphql/filters.js @@ -1,6 +1,3 @@ -import { curry } from 'lodash' -import GroupDataType from '../models/group/DataType' - export const commentFilter = userId => relation => relation.query(q => { q.distinct() q.where({'comments.active': true}) diff --git a/api/graphql/index.test.js b/api/graphql/index.test.js index a26d3a409..7094ba35a 100644 --- a/api/graphql/index.test.js +++ b/api/graphql/index.test.js @@ -197,7 +197,7 @@ describe('graphql request handler', () => { comments: { items: [ { - text: comment.get('text'), + text: comment.text(), creator: { name: user2.get('name') } @@ -276,7 +276,7 @@ describe('graphql request handler', () => { comments: { items: [ { - text: comment.get('text'), + text: comment.text(), attachments: [ { id: media.id, diff --git a/api/graphql/makeModels.js b/api/graphql/makeModels.js index 633982ef3..0e0c45dd9 100644 --- a/api/graphql/makeModels.js +++ b/api/graphql/makeModels.js @@ -10,14 +10,12 @@ import { postFilter, voteFilter } from './filters' -import { flow, mapKeys, camelCase } from 'lodash/fp' +import { mapKeys, camelCase } from 'lodash/fp' import InvitationService from '../services/InvitationService' import { - filterAndSortGroups, filterAndSortPosts, filterAndSortUsers } from '../services/Search/util' -import he from 'he'; // this defines what subset of attributes and relations in each Bookshelf model // should be exposed through GraphQL, and what query filters should be applied @@ -162,14 +160,8 @@ export default async function makeModels (userId, isAdmin) { 'type' ], getters: { - title: p => p.get('name') ? he.decode(p.get('name')) : null, - details: p => p.get('description'), - detailsText: p => p.getDetailsText(), - isPublic: p => p.get('is_public'), commenters: (p, { first }) => p.getCommenters(first, userId), commentersTotal: p => p.getCommentersTotal(userId), - commentsTotal: p => p.get('num_comments'), - votesTotal: p => p.get('num_votes'), myVote: p => userId ? p.userVote(userId).then(v => !!v) : false, myEventResponse: p => userId && p.isEvent() ? p.userEventInvitation(userId) diff --git a/api/graphql/mutations/topic.js b/api/graphql/mutations/topic.js index a778e7d9b..2ed5fae5a 100644 --- a/api/graphql/mutations/topic.js +++ b/api/graphql/mutations/topic.js @@ -1,5 +1,3 @@ -import { sanitize } from 'hylo-utils/text' - export async function topicMutationPermissionCheck (userId, groupId) { const group = await Group.find(groupId) if (!group) { @@ -12,13 +10,12 @@ export async function topicMutationPermissionCheck (userId, groupId) { export async function createTopic (userId, topicName, groupId, isDefault, isSubscribing = true) { await topicMutationPermissionCheck(userId, groupId) - const name = sanitize(topicName) - const invalidReason = Tag.validate(name) + const invalidReason = Tag.validate(topicName) if (invalidReason) { throw new Error(invalidReason) } - const topic = await Tag.findOrCreate(name) + const topic = await Tag.findOrCreate(topicName) await Tag.addToGroup({ group_id: groupId, tag_id: topic.id, diff --git a/api/graphql/mutations/topic.test.js b/api/graphql/mutations/topic.test.js index 873c8bd18..a5cae3a56 100644 --- a/api/graphql/mutations/topic.test.js +++ b/api/graphql/mutations/topic.test.js @@ -33,7 +33,7 @@ describe('topic mutations', () => { }) describe('createTopic', () => { - // validation is mostly tested in hylo-utils, so this just left here to show willing... + // validation is mostly tested in hylo-shared, so this just left here to show willing... it('rejects on invalid topic names', async () => { const actual = mutations.createTopic( u1.id, diff --git a/api/graphql/schema.graphql b/api/graphql/schema.graphql index d74604f80..ded123719 100644 --- a/api/graphql/schema.graphql +++ b/api/graphql/schema.graphql @@ -402,7 +402,6 @@ type Post { id: ID title: String details: String - detailsText: String type: String createdAt: Date updatedAt: Date diff --git a/api/models/Comment.js b/api/models/Comment.js index 435038e97..9e2a98107 100644 --- a/api/models/Comment.js +++ b/api/models/Comment.js @@ -1,5 +1,4 @@ -/* eslint-disable camelcase */ -import { markdown } from 'hylo-utils/text' +import { TextHelpers } from 'hylo-shared' import { notifyAboutMessage, sendDigests } from './comment/notifications' import EnsureLoad from './mixins/EnsureLoad' @@ -17,7 +16,8 @@ module.exports = bookshelf.Model.extend(Object.assign({ }, text: function () { - return this.get('text') + // This should be always used when accessing this attribute + return TextHelpers.sanitizeHTML(this.get('text')) }, mentions: function () { @@ -138,7 +138,7 @@ module.exports = bookshelf.Model.extend(Object.assign({ }) const finalText = cutoff ? lines.slice(0, cutoff).join('\n') : text - return opts.useMarkdown ? markdown(finalText || '') : finalText + return opts.useMarkdown ? TextHelpers.markdown(finalText || '') : finalText }, notifyAboutMessage, diff --git a/api/models/FlaggedItem.js b/api/models/FlaggedItem.js index ed217c7bd..f90102686 100644 --- a/api/models/FlaggedItem.js +++ b/api/models/FlaggedItem.js @@ -1,5 +1,5 @@ import { values, isEmpty, trim } from 'lodash' -import { validateFlaggedItem } from 'hylo-utils/validators' +import { Validators } from 'hylo-shared' import { notifyModeratorsPost, notifyModeratorsMember, notifyModeratorsComment } from './flaggedItem/notifyUtils' module.exports = bookshelf.Model.extend({ @@ -83,11 +83,11 @@ module.exports = bookshelf.Model.extend({ reason = 'N/A' } - const invalidReason = validateFlaggedItem.reason(reason) + const invalidReason = Validators.validateFlaggedItem.reason(reason) if (invalidReason) return Promise.reject(new Error(invalidReason)) if (process.env.NODE_ENV !== 'development') { - const invalidLink = validateFlaggedItem.link(link) + const invalidLink = Validators.validateFlaggedItem.link(link) if (invalidLink) return Promise.reject(new Error(invalidLink)) } diff --git a/api/models/GroupRelationshipInvite.js b/api/models/GroupRelationshipInvite.js index a0cb5ae66..7e24df063 100644 --- a/api/models/GroupRelationshipInvite.js +++ b/api/models/GroupRelationshipInvite.js @@ -1,4 +1,3 @@ -import uuid from 'node-uuid' import EnsureLoad from './mixins/EnsureLoad' module.exports = bookshelf.Model.extend(Object.assign({ diff --git a/api/models/LinkedAccount.js b/api/models/LinkedAccount.js index 31e808aba..f29618722 100644 --- a/api/models/LinkedAccount.js +++ b/api/models/LinkedAccount.js @@ -1,8 +1,8 @@ import bcrypt from 'bcrypt' import Promise from 'bluebird' -import { get, isEmpty, merge, pick } from 'lodash' +import { get, isEmpty } from 'lodash' +import { Validators } from 'hylo-shared' const hash = Promise.promisify(bcrypt.hash, bcrypt) -import { validateUser } from 'hylo-utils/validators' module.exports = bookshelf.Model.extend({ tableName: 'linked_account', @@ -29,7 +29,7 @@ module.exports = bookshelf.Model.extend({ }, { create: function (userId, { type, profile, password, token }, { transacting, updateUser } = {}) { if (type === 'password') { - const invalidReason = validateUser.password(password) + const invalidReason = Validators.validateUser.password(password) if (invalidReason) return Promise.reject(new Error(invalidReason)) } diff --git a/api/models/Notification.js b/api/models/Notification.js index 9b7a99d7d..623ae912c 100644 --- a/api/models/Notification.js +++ b/api/models/Notification.js @@ -324,7 +324,7 @@ module.exports = bookshelf.Model.extend({ var post = this.post() var reader = this.reader() var user = post.relations.user - var description = RichText.qualifyLinks(post.get('description')) + var description = RichText.qualifyLinks(post.details()) var replyTo = Email.postReplyAddress(post.id, reader.id) var groupIds = Activity.groupIds(this.relations.activity) @@ -362,7 +362,7 @@ module.exports = bookshelf.Model.extend({ var post = this.post() var reader = this.reader() var user = post.relations.user - var description = RichText.qualifyLinks(post.get('description')) + var description = RichText.qualifyLinks(post.details()) var replyTo = Email.postReplyAddress(post.id, reader.id) var groupIds = Activity.groupIds(this.relations.activity) @@ -404,7 +404,7 @@ module.exports = bookshelf.Model.extend({ const post = comment.relations.post const commenter = comment.relations.user - const text = RichText.qualifyLinks(comment.get('text')) + const text = RichText.qualifyLinks(comment.text()) const replyTo = Email.postReplyAddress(post.id, reader.id) const title = decode(post.get('name')) @@ -653,7 +653,7 @@ module.exports = bookshelf.Model.extend({ var post = this.post() var reader = this.reader() var inviter = this.actor() - var description = RichText.qualifyLinks(post.get('description')) + var description = RichText.qualifyLinks(post.details()) var replyTo = Email.postReplyAddress(post.id, reader.id) var groupIds = Activity.groupIds(this.relations.activity) diff --git a/api/models/Post.js b/api/models/Post.js index bd7c632dc..a6b4e4907 100644 --- a/api/models/Post.js +++ b/api/models/Post.js @@ -1,13 +1,12 @@ /* globals _ */ -/* eslint-disable camelcase */ import { difference, filter, isNull, omitBy, uniqBy, isEmpty, intersection, isUndefined, pick } from 'lodash/fp' -import { compact, flatten, some, sortBy, uniq } from 'lodash' +import { flatten, sortBy } from 'lodash' +import { TextHelpers } from 'hylo-shared' import { postRoom, pushToSockets } from '../services/Websockets' import { fulfill, unfulfill } from './post/fulfillPost' import EnsureLoad from './mixins/EnsureLoad' import { countTotal } from '../../lib/util/knex' import { refineMany, refineOne } from './util/relations' -import html2text from '../../lib/htmlparser/html2text' import ProjectMixin from './project/mixin' import EventMixin from './event/mixin' @@ -42,6 +41,44 @@ module.exports = bookshelf.Model.extend(Object.assign({ // Instance Methods + // Simple attribute getters + + details: function () { + // This should be always used when accessing this attribute + return TextHelpers.sanitizeHTML(this.get('description')) + }, + + description: function () { + console.warn('Deprecation warning: Post#description called but has been replaced by Post#details') + return this.details() + }, + + title: function () { + return this.get('name') + }, + + isPublic: function () { + return this.get('is_public') + }, + + isWelcome: function () { + return this.get('type') === Post.Type.WELCOME + }, + + isThread: function () { + return this.get('type') === Post.Type.THREAD + }, + + commentsTotal: function () { + return this.get('num_comments') + }, + + votesTotal: function () { + return this.get('num_votes') + }, + + // Relations + activities: function () { return this.hasMany(Activity) }, @@ -165,10 +202,6 @@ module.exports = bookshelf.Model.extend(Object.assign({ }) }, - getDetailsText: async function () { - return html2text(this.get('description')) - }, - // Emulate the graphql request for a post in the feed so the feed can be // updated via socket. Some fields omitted, linkPreview for example. // TODO: if we were in a position to avoid duplicating the graphql layer @@ -179,6 +212,7 @@ module.exports = bookshelf.Model.extend(Object.assign({ const creator = refineOne(user, [ 'id', 'name', 'avatar_url' ]) const topics = refineMany(tags, [ 'id', 'name' ]) + // TODO: Sanitization -- sanitize details here if not passing through `text` getter return Object.assign({}, refineOne( this, @@ -201,18 +235,6 @@ module.exports = bookshelf.Model.extend(Object.assign({ ) }, - isPublic: function () { - return this.get('is_public') - }, - - isWelcome: function () { - return this.get('type') === Post.Type.WELCOME - }, - - isThread: function () { - return this.get('type') === Post.Type.THREAD - }, - async lastReadAtForUser (userId) { const pu = await this.postUsers() .query(q => q.where('user_id', userId)).fetchOne() @@ -310,7 +332,7 @@ module.exports = bookshelf.Model.extend(Object.assign({ reason: `tag: ${tagFollow.relations.tag.get('name')}` })) - const mentions = RichText.getUserMentions(this.get('description')) + const mentions = RichText.getUserMentions(this.details()) const mentioned = mentions.map(userId => ({ reader_id: userId, post_id: this.id, diff --git a/api/models/PushNotification.js b/api/models/PushNotification.js index 49963e897..7e2a413a0 100644 --- a/api/models/PushNotification.js +++ b/api/models/PushNotification.js @@ -1,5 +1,5 @@ import decode from 'ent/decode' -import truncate from 'trunc-html' +import { TextHelpers } from 'hylo-shared' module.exports = bookshelf.Model.extend({ tableName: 'push_notifications', @@ -53,7 +53,7 @@ module.exports = bookshelf.Model.extend({ if (media && media.length !== 0) { return `${person} sent an image` } - const blurb = decode(truncate(comment.get('text'), 140).text).trim() + const blurb = TextHelpers.presentHTMLToText(comment.text(), { truncate: 140 }) const postName = comment.relations.post.get('name') return version === 'mention' diff --git a/api/models/Tag.js b/api/models/Tag.js index 658bc45ad..9ac745956 100644 --- a/api/models/Tag.js +++ b/api/models/Tag.js @@ -5,7 +5,7 @@ import { includes, isUndefined } from 'lodash' import { filter, omitBy, some, uniq } from 'lodash/fp' -import { validateTopicName } from 'hylo-utils/validators' +import { Validators } from 'hylo-shared' export const tagsInText = (text = '') => { const re = /(?:^| |>)#([A-Za-z][\w_-]+)/g @@ -123,11 +123,11 @@ module.exports = bookshelf.Model.extend({ TagFollow.create({group_id, tag_id, user_id}, opts))), isValidTag: function (text) { - return !validateTopicName(text) + return !Validators.validateTopicName(text) }, validate: function (text) { - return validateTopicName(text) + return Validators.validateTopicName(text) }, tagsInText, diff --git a/api/models/User.js b/api/models/User.js index 7c2ba4024..c17c44307 100644 --- a/api/models/User.js +++ b/api/models/User.js @@ -5,7 +5,7 @@ import jwt from 'jsonwebtoken' import uuid from 'node-uuid' import validator from 'validator' import { get, has, isEmpty, merge, omit, pick, intersectionBy } from 'lodash' -import { validateUser } from 'hylo-utils/validators' +import { Validators } from 'hylo-shared' import HasSettings from './mixins/HasSettings' import { findThread } from './post/findOrCreateThread' @@ -695,12 +695,12 @@ module.exports = bookshelf.Model.extend(merge({ function validateUserAttributes (attrs, { existingUser, transacting } = {}) { if (has(attrs, 'password')) { - const invalidReason = validateUser.password(attrs.password) + const invalidReason = Validators.validateUser.password(attrs.password) if (invalidReason) return Promise.reject(new Error(invalidReason)) } if (has(attrs, 'name')) { - const invalidReason = validateUser.name(attrs.name) + const invalidReason = Validators.validateUser.name(attrs.name) if (invalidReason) return Promise.reject(new Error(invalidReason)) } diff --git a/api/models/comment/createComment.js b/api/models/comment/createComment.js index 20408140f..8b41f9b7c 100644 --- a/api/models/comment/createComment.js +++ b/api/models/comment/createComment.js @@ -1,11 +1,9 @@ -import { sanitize } from 'hylo-utils/text' import { flatten, difference, uniq } from 'lodash' import { postRoom, pushToSockets, userRoom } from '../../services/Websockets' import { refineOne, refineMany } from '../util/relations' export default async function createComment (commenterId, opts = {}) { let { text, post, parentComment } = opts - text = sanitize(text) var attrs = { text: text, diff --git a/api/models/comment/notifications.js b/api/models/comment/notifications.js index 6501100b4..2d0096089 100644 --- a/api/models/comment/notifications.js +++ b/api/models/comment/notifications.js @@ -1,21 +1,22 @@ /* eslint-disable camelcase */ /* globals RedisClient */ -import decode from 'ent/decode' -import truncate from 'trunc-html' import { parse } from 'url' import { compact, some, sum, uniq } from 'lodash/fp' +import { TextHelpers } from 'hylo-shared' + +const MAX_PUSH_NOTIFICATION_LENGTH = 140 export async function notifyAboutMessage ({ commentId }) { const comment = await Comment.find(commentId, {withRelated: ['media']}) const post = await Post.find(comment.get('post_id')) const followers = await post.followers().fetch() - const { user_id, post_id, text } = comment.attributes + const { user_id, post_id } = comment.attributes const recipients = followers.filter(u => u.id !== user_id) const user = followers.find(u => u.id === user_id) const alert = comment.relations.media.length !== 0 ? `${user.get('name')} sent an image` - : `${user.get('name')}: ${decode(truncate(text, 140).text).trim()}` + : `${user.get('name')}: ${TextHelpers.presentHTMLToText(comment.text(), { truncate: MAX_PUSH_NOTIFICATION_LENGTH })}` const path = parse(Frontend.Route.thread({id: post_id})).path return Promise.map(recipients, async user => { @@ -75,7 +76,7 @@ export const sendDigests = async () => { } return comment.relations.media.length !== 0 ? Object.assign({}, presented, {image: comment.relations.media.first().pick('url', 'thumbnail_url')}) - : Object.assign({}, presented, {text: comment.get('text')}) + : Object.assign({}, presented, {text: comment.text()}) } if (post.get('type') === Post.Type.THREAD) { @@ -115,7 +116,7 @@ export const sendDigests = async () => { email: user.get('email'), data: { count: commentData.length, - post_title: truncate(post.get('name'), 140).text, + post_title: TextHelpers.truncateText(post.get('name'), 140), post_creator_avatar_url: post.relations.user.get('avatar_url'), thread_url: Frontend.Route.post(post), comments: commentData, diff --git a/api/models/comment/updateComment.js b/api/models/comment/updateComment.js index 42d245a52..eb74330e1 100644 --- a/api/models/comment/updateComment.js +++ b/api/models/comment/updateComment.js @@ -1,5 +1,4 @@ import { difference, uniq } from 'lodash' -import { sanitize } from 'hylo-utils/text' import { updateMedia } from './util' export default async function updateComment (commenterId, id, params) { @@ -11,8 +10,6 @@ export default async function updateComment (commenterId, id, params) { let { text, attachments } = params - text = sanitize(text) - const attrs = { text } const post = comment.relations.post const mentioned = RichText.getUserMentions(text) diff --git a/api/models/comment/util.js b/api/models/comment/util.js index 1235a3bb4..9f5516c28 100644 --- a/api/models/comment/util.js +++ b/api/models/comment/util.js @@ -1,18 +1,3 @@ - -const delimiter = /-{3,}.Only.text.above.the.dashed.line.will.be.included.-{3,}(\.| )?/ - -export const repairedText = comment => { - var text = comment.get('text') - text = text.replace(delimiter, '') - text = text.replace(/

\s*<\/p>\n/g, '') - text = text.replace(/

\s?/g, '

') - return text -} - -export const repairText = comment => - comment.save({text: repairedText(comment)}, {patch: true}) - - export function updateMedia (comment, attachments, transacting) { if (!attachments || attachments.length === 0) return diff --git a/api/models/post/createPost.js b/api/models/post/createPost.js index e145f640f..82b158825 100644 --- a/api/models/post/createPost.js +++ b/api/models/post/createPost.js @@ -1,7 +1,6 @@ import { flatten, merge, pick, uniq } from 'lodash' import setupPostAttrs from './setupPostAttrs' import updateChildren from './updateChildren' -import { updateMemberships } from './util' import { groupRoom, pushToSockets } from '../../services/Websockets' export default function createPost (userId, params) { @@ -21,7 +20,7 @@ export default function createPost (userId, params) { export function afterCreatingPost (post, opts) { const userId = post.get('user_id') - const mentioned = RichText.getUserMentions(post.get('description')) + const mentioned = RichText.getUserMentions(post.details()) const followerIds = uniq(mentioned.concat(userId)) const trx = opts.transacting const trxOpts = pick(opts, 'transacting') diff --git a/api/models/post/createPost.test.js b/api/models/post/createPost.test.js index 4bbbb8dd2..8c015fae4 100644 --- a/api/models/post/createPost.test.js +++ b/api/models/post/createPost.test.js @@ -52,7 +52,7 @@ describe('afterCreatingPost', () => { const child = post.relations.children.first() expect(child).to.exist expect(child.get('name')).to.equal('bob') - expect(child.get('description')).to.equal('is your uncle') + expect(child.details()).to.equal('is your uncle') expect(Queue.classMethod).to.have.been.called .with('Post', 'createActivities', {postId: post.id}) diff --git a/api/models/post/setupPostAttrs.js b/api/models/post/setupPostAttrs.js index 5ba704a77..604ae0240 100644 --- a/api/models/post/setupPostAttrs.js +++ b/api/models/post/setupPostAttrs.js @@ -1,12 +1,8 @@ import { merge, pick } from 'lodash' import { getOr } from 'lodash/fp' -import { sanitize } from 'hylo-utils/text' -import he from 'he'; export default function setupPostAttrs (userId, params) { const attrs = merge({ - name: sanitize(he.encode(params.name)), - description: sanitize(params.description), user_id: userId, visibility: params.public ? Post.Visibility.PUBLIC_READABLE : Post.Visibility.DEFAULT, link_preview_id: params.link_preview_id || getOr(null, 'id', params.linkPreview), @@ -17,7 +13,7 @@ export default function setupPostAttrs (userId, params) { start_time: params.startTime ? new Date(Number(params.startTime)) : null, end_time: params.endTime ? new Date(Number(params.endTime)) : null, is_public: params.isPublic - }, pick(params, 'type', 'starts_at', 'ends_at', 'location_id', 'location', 'created_from')) + }, pick(params, 'name', 'description', 'type', 'starts_at', 'ends_at', 'location_id', 'location', 'created_from')) return Promise.resolve(attrs) } diff --git a/api/models/post/util.js b/api/models/post/util.js index ef4f92fb5..2ae5f5551 100644 --- a/api/models/post/util.js +++ b/api/models/post/util.js @@ -35,7 +35,7 @@ export function updateGroups (post, newIds, trx) { export async function updateFollowers (post, transacting) { const followerIds = await post.followers().fetch().then(f => f.pluck('id')) - const newMentionedIds = RichText.getUserMentions(post.get('description')) + const newMentionedIds = RichText.getUserMentions(post.details()) .filter(id => !followerIds.includes(id)) return post.addFollowers(newMentionedIds, {}, {transacting}) diff --git a/api/services/InvitationService.js b/api/services/InvitationService.js index 4e2e20b79..bb6da94c4 100644 --- a/api/services/InvitationService.js +++ b/api/services/InvitationService.js @@ -1,5 +1,5 @@ import validator from 'validator' -import { markdown } from 'hylo-utils/text' +import { TextHelpers } from 'hylo-shared' import { get, isEmpty, map, merge } from 'lodash/fp' module.exports = { @@ -89,7 +89,7 @@ module.exports = { if (tag) { opts.tagId = tag.id } else { - opts.message = markdown(message) + opts.message = TextHelpers.markdown(message) opts.moderator = isModerator opts.subject = subject } diff --git a/api/services/RichText.js b/api/services/RichText.js index 06d682cdd..07afca09a 100644 --- a/api/services/RichText.js +++ b/api/services/RichText.js @@ -1,35 +1,54 @@ var Cheerio = require('cheerio') +import { PathHelpers, TextHelpers } from 'hylo-shared' -// returns a set of unique ids of any @mentions found in the text -export const getUserMentions = text => { - if (!text) return [] - var $ = Cheerio.load(text) - return _.uniq($('a[data-user-id]').map(function () { - return $(this).data('user-id').toString() - }).get()) -} +/* +For email use exclusively: + +Canonically relying on the output of HyloShared TextHelpers.presentHTML +this function further transforms anchor element `href`s to fully qualified +Hylo URLs. Adds token links for all other relative/apparently Hylo `href`s +*/ +export const qualifyLinks = (html, recipient, token, slug) => { + if (!html) return html -export const qualifyLinks = (text, recipient, token, slug) => { - if (!text) return text + const presentedHTML = TextHelpers.presentHTML(html, { slug }) + const $ = Cheerio.load(presentedHTML, null, false) - var $ = Cheerio.load(text) $('a').each(function () { - const $this = $(this) - const tag = $this.text().replace(/^#/, '') - var url = $this.attr('href') || '' - if (Tag.isValidTag(tag)) { - if (slug) { - url = `${Frontend.Route.prefix}/groups/${slug}/topics/${tag}` - } else { - url = `${Frontend.Route.prefix}/topics/${tag}` - } + const $el = $(this) + let url = $el.attr('href') || '' + + if ($el.attr('data-user-id')) { + const userId = $el.attr('data-user-id') + url = `${Frontend.Route.prefix}${PathHelpers.mentionPath(userId, slug)}` + } else if ($el.attr('data-search')) { + const topic = $el.attr('data-search').replace(/^#/, '') + url = `${Frontend.Route.prefix}${PathHelpers.topicPath(topic, slug)}` } else if (!url.match(/^https?:\/\//)) { url = Frontend.Route.prefix + url if (recipient && token) { url = Frontend.Route.tokenLogin(recipient, token, url) } } - $this.attr('href', url) + + $el.attr('href', url) }) + return $.html() } + +/* +Returns a set of unique IDs for any mention members +found in the provided HTML + +Used for generating notifications +*/ +export const getUserMentions = html => { + if (!html) return [] + + let $ = Cheerio.load(html) + + return _.uniq($('a[data-user-id]').map(function () { + return $(this).attr('data-user-id').toString() + }).get()) +} diff --git a/lib/group/digest2/formatData.js b/lib/group/digest2/formatData.js index 1743bf00a..acc144beb 100644 --- a/lib/group/digest2/formatData.js +++ b/lib/group/digest2/formatData.js @@ -25,7 +25,7 @@ const presentPost = curry((slug, post) => { return pickBy(x => x, { id: post.id, title: post.get('name'), - details: RichText.qualifyLinks(post.get('description'), null, null, slug), + details: RichText.qualifyLinks(post.details(), null, null, slug), user: presentAuthor(post), url: Frontend.Route.post(post, slug), location: isEvent(post) && post.get('location'), @@ -39,7 +39,7 @@ const presentPost = curry((slug, post) => { const presentComment = curry((slug, comment) => ({ id: comment.id, - text: RichText.qualifyLinks(comment.get('text'), null, null, slug), + text: RichText.qualifyLinks(comment.text(), null, null, slug), user: presentAuthor(comment) })) diff --git a/lib/group/digest2/personalizeData.js b/lib/group/digest2/personalizeData.js index 24a54fe2b..71fdb7f09 100644 --- a/lib/group/digest2/personalizeData.js +++ b/lib/group/digest2/personalizeData.js @@ -33,7 +33,7 @@ const getComments = data => const addParamsToLinks = (text, params) => { if (!text) return - const doc = cheerio.load(text, {decodeEntities: false}) + const doc = cheerio.load(text, {decodeEntities: false}, false) const links = doc('a[href]') if (links.length === 0) return text links.each((i, el) => { diff --git a/lib/group/digest2/savedSearches.js b/lib/group/digest2/savedSearches.js index d8d98e413..58c7b7b8a 100644 --- a/lib/group/digest2/savedSearches.js +++ b/lib/group/digest2/savedSearches.js @@ -14,7 +14,7 @@ const presentPost = async (p, context, slug) => { return pickBy(x => x, { id: post.id, title: post.get('name'), - details: RichText.qualifyLinks(post.get('description'), null, null, undefined), + details: RichText.qualifyLinks(post.details(), null, null, slug), user: presentAuthor(post), url: Frontend.Route.mapPost(post, context, slug), location: post.get('location'), diff --git a/lib/htmlparser/html2text.js b/lib/htmlparser/html2text.js deleted file mode 100644 index e0423ec9b..000000000 --- a/lib/htmlparser/html2text.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Converts HYLO formatted html into text - */ -import rehype from 'rehype' -import mapEntities from './rehype-map-entities' -import stringify from './rehype-as-string' -import { isEmpty, trim } from 'lodash/fp' - -export default async function html2text (html) { - if (isEmpty(trim(html))) return '' - - return rehype() - .use(mapEntities) - .use(stringify) - .process(html) - .then(String) -} diff --git a/lib/htmlparser/html2text.test.js b/lib/htmlparser/html2text.test.js deleted file mode 100644 index 4a1405785..000000000 --- a/lib/htmlparser/html2text.test.js +++ /dev/null @@ -1,46 +0,0 @@ -import html2text from './html2text' - -describe('html2text', () => { - it('can parse crazy text', async () => { - const html = `

Hylo Some Bold Text - -www.hylo.com Sam Frank -

-hello world Ray Marceauhh I'm #ray
-

#dadsf

-

One Line

Another Line

` - - const text = await html2text(html) - expect(text).to.equal(`www.hylo.com Some Bold Text \n\nwww.hylo.com [Sam Frank:24658]\n\n \nhello world [Ray Marceauhh:12] I'm #ray \n \n#dadsf\n\n\nOne Line\nAnother Line\n`) - }) - - it('works with mentions', async () => { - const html = '

Ray Marceauhh

' - const text = await html2text(html) - expect(text).to.equal('[Ray Marceauhh:12]\n') - }) - - it('works with topics', async () => { - const html = '#dadsf' - const text = await html2text(html) - expect(text).to.equal('#dadsf') - }) - - it('works with links', async () => { - const html = `

www.hylo.com s

` - const text = await html2text(html) - expect(text).to.equal('\nwww.hylo.com www.hylo.com\n') - }) - - it('works on empty strings', async () => { - const html = ' ' - const text = await html2text(html) - expect(text).to.equal('') - }) - - it('works on malformed html', async () => { - const html = '

<< turn off me>' - const text = await html2text(html) - expect(text).to.equal('<< turn off me>\n') - }) -}) diff --git a/lib/htmlparser/rehype-as-string.js b/lib/htmlparser/rehype-as-string.js deleted file mode 100644 index 2ed307b4c..000000000 --- a/lib/htmlparser/rehype-as-string.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict' -import toString from 'hast-util-to-string' - -export default function asString () { - return transformer - - function transformer (tree) { - return {type: 'text', value: toString(tree)} - } -} diff --git a/lib/htmlparser/rehype-map-entities.js b/lib/htmlparser/rehype-map-entities.js deleted file mode 100644 index 547584ea7..000000000 --- a/lib/htmlparser/rehype-map-entities.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict' -import h from 'hastscript' -import is from 'hast-util-is-element' -import has from 'hast-util-has-property' -import { matches } from 'hast-util-select' -import toString from 'hast-util-to-string' -import visit from 'unist-util-visit' -import inspect from 'unist-util-inspect' - -import { MENTION_ENTITY_TYPE, TOPIC_ENTITY_TYPE } from 'hylo-utils/constants' -import { get } from 'lodash/fp' - -const ENTITY_TYPE_ATTRIBUTE_NAME = 'data-entity-type' - -export default function mapEntities () { - return transformer - - function transformer (tree) { - visit(tree, visitor) - } - - function visitor (node, index, parent) { - if (is(node, 'a')) { // is anchor 'a' tag - if (matches(`[${ENTITY_TYPE_ATTRIBUTE_NAME}=${MENTION_ENTITY_TYPE}]`, node)) { // Mentions - node.children = [mention(node)] - } else if (matches(`[${ENTITY_TYPE_ATTRIBUTE_NAME}=${TOPIC_ENTITY_TYPE}]`, node)) { // Topics - node.children = [topic(node)] - } else { // Plain link - node.children = [link(node)] - } - return visit.SKIP - } - - if (is(node, 'p')) { - node.children.push(h('span', ['\n'])) - } - - if (is(node, 'br')) { - parent.children[index] = h('span', ['\n']) - } - - return true - } - - function mention (node) { - if (has(node, 'dataUserId')) { - const textContent = toString(node) - const userId = get('properties.dataUserId', node) - return h('span', `[${textContent}:${userId}]`) - } else { - return h('span', `${toString(node)}`) - } - } - - function topic (node) { - return h('span', `${toString(node)}`) - } - - function link (node) { - return h('span', `${get('properties.href', node) || toString(node)}`) - } -} diff --git a/lib/rollbar.js b/lib/rollbar.js index 422440647..d8d3631a1 100644 --- a/lib/rollbar.js +++ b/lib/rollbar.js @@ -8,7 +8,6 @@ if (process.env.ROLLBAR_SERVER_TOKEN && process.env.NODE_ENV !== 'test') { }) module.exports = rollbar } else { - console.log('Rollbar disabled (process.env.ROLLBAR_SERVER_TOKEN undefined)') module.exports = { disabled: true, diff --git a/package.json b/package.json index 2544823c3..d2f5bf582 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ }, "engines": { "node": "^16", - "yarn": "^1.2.1" + "yarn": "^1.2" }, "nyc": { "sourceMap": false, @@ -62,19 +62,19 @@ "@babel/core": "^7.15.5", "@babel/preset-env": "^7.15.6", "@babel/register": "^7.15.3", - "@sailshq/connect-redis": "^3.2.0", + "@sailshq/connect-redis": "^3.2.1", "@sailshq/socket.io-redis": "^5.2.0", "analytics-node": "^1.2.0", "apple-signin-auth": "^1.2.1", "async-repl": "ef4/async-repl", "aws-sdk": "^2.9.0", - "bcrypt": "^5.0.0", + "bcrypt": "^5.0.1", "bluebird": "^2.3.11", "body-parser": "^1.17.2", "bookshelf": "^1.2.0", "busboy": "^0.3.1", - "cheerio": "0.19.0", - "cors": "^2.8.4", + "cheerio": "^1.0.0-rc.10", + "cors": "^2.8.5", "csv": "^5.3.2", "csv-parser": "^1.7.0", "csv-stringify": "^5.6.2", @@ -84,7 +84,7 @@ "ent": "^2.2.0", "express-graphql": "^0.11.0", "file-type": "^6.1.0", - "gaze": "^1.1.0", + "gaze": "^1.1.3", "glob": "^5.0.15", "gm": "^1.18.1", "graphql": "^15.3.0", @@ -96,7 +96,7 @@ "hast-util-to-string": "^1.0.1", "hastscript": "^3.1.0", "he": "^1.2.0", - "hylo-utils": "Hylozoic/hylo-utils#c4db0b4", + "hylo-shared": "^1.6.7", "image-size": "^0.3.5", "jade": "^1.11.0", "jsonwebtoken": "^8.5.1", @@ -107,18 +107,18 @@ "lodash": "4.17.21", "md5": "^2.0.0", "mime": "^1.3.4", - "mime-types": "^2.1.17", + "mime-types": "^2.1.34", "minimist": "^1.1.0", "moment": "^2.9.0", - "moment-timezone": "^0.5.0", + "moment-timezone": "^0.5.34", "newrelic": "^7.0.0", - "node-uuid": "^1.4.7", + "node-uuid": "^1.4.8", "parse-redis-url": "0.0.2", "passport": "^0.2.1", "passport-facebook": "2.1.1", "passport-facebook-token": "3.3.0", "passport-google-oauth": "^2.0.0", - "passport-google-token": "^0.1.1", + "passport-google-token": "^0.1.2", "passport-jwt": "^4.0.0", "passport-linkedin-oauth2": "^1.2.1", "passport-linkedin-token-oauth2": "^0.1.3", @@ -128,26 +128,23 @@ "promirepl": "^1.0.1", "randomstring": "^1.1.0", "rc": "~0.5.0", - "redis": "^4.0.0-rc.2", - "rehype": "^5.0.1", + "redis": "^4.0.3", "request": "^2.51.0", - "request-promise": "^4.2.2", + "request-promise": "^4.2.6", "rollbar": "^2.0", - "root-path": "^0.2.0", + "root-path": "^0.2.1", "s3-upload-stream": "^1.0.7", "sails": "^1.4.0", - "sails-hook-sockets": "^2.0.0", + "sails-hook-sockets": "^2.0.1", "sanitize-filename": "^1.6.1", "semver": "^5.4.1", "sendwithus": "^2.8.0", "sharp": "^0.29.1", "socket.io-emitter": "^3.1.1", - "stream-buffers": "^3.0.1", + "stream-buffers": "^3.0.2", "stripe": "^6.15.0", - "striptags": "^3.2.0", "stylus": "^0.55.0", "tar-stream": "^1.2.1", - "trunc-html": "^1.1.2", "unist-util-inspect": "^4.1.3", "unist-util-visit": "^1.3.1", "validator": "^3.22.1", diff --git a/test/unit/controllers/CommentController.test.js b/test/unit/controllers/CommentController.test.js index 5ee895506..054fb25ec 100644 --- a/test/unit/controllers/CommentController.test.js +++ b/test/unit/controllers/CommentController.test.js @@ -55,7 +55,7 @@ describe('CommentController', function () { const comments = await fixtures.p1.comments().fetch() const comment = comments.last() expect(comment).to.exist - expect(comment.get('text')).to.equal('

foo bar baz

\n') + expect(comment.text()).to.equal('

foo bar baz

\n') expect(comment.get('user_id')).to.equal(fixtures.u3.id) expect(comment.get('created_from')).to.equal('email') }) @@ -69,7 +69,7 @@ describe('CommentController', function () { .then(comments => { const comment = comments.last() expect(comment).to.exist - expect(comment.get('text')).to.equal('foo bar baz') + expect(comment.text()).to.equal('foo bar baz') }) }) }) diff --git a/test/unit/controllers/PostController.test.js b/test/unit/controllers/PostController.test.js index d315a7fde..3095868ee 100644 --- a/test/unit/controllers/PostController.test.js +++ b/test/unit/controllers/PostController.test.js @@ -58,8 +58,8 @@ describe('PostController', () => { return Post.find(postId, {withRelated: ['tags', 'groups']}) }) .then(post => { - expect(post.get('name')).to.equal("I'm looking for a penguin") - expect(post.get('description')).to.equal('I just love the tuxedo') + expect(post.get('name')).to.equal("I'm looking for a penguin") + expect(post.details()).to.equal('I just love the tuxedo') expect(post.get('user_id')).to.equal(fixtures.u1.id) expect(post.get('created_from')).to.equal('email_form') const tag = post.relations.tags.first() diff --git a/test/unit/models/Notification.test.js b/test/unit/models/Notification.test.js index 231b055e4..22d29f7f7 100644 --- a/test/unit/models/Notification.test.js +++ b/test/unit/models/Notification.test.js @@ -157,7 +157,7 @@ describe('Notification', function () { .then(pns => { expect(pns.length).to.equal(1) var pn = pns.first() - expect(pn.get('alert')).to.equal(`Joe: "${comment.get('text')}" (in "My Post")`) + expect(pn.get('alert')).to.equal(`Joe: "${comment.text()}" (in "My Post")`) }) }) @@ -341,7 +341,9 @@ describe('Notification', function () { relations: { comment: model({ id: 5, - text: 'I have an opinion', + // Reinforcing that Comment#text() should always be + // called instead of Comment.get('text') + text: () => 'I have an opinion', relations: { post: model({ name: 'hello world', diff --git a/test/unit/models/Post.test.js b/test/unit/models/Post.test.js index 568afb3c5..a42a11a70 100644 --- a/test/unit/models/Post.test.js +++ b/test/unit/models/Post.test.js @@ -4,13 +4,6 @@ const setup = require(root('test/setup')) const factories = require(root('test/setup/factories')) describe('Post', function () { - it('getDetailsText', async () => { - await setup.clearDb() - const post = await factories.post({description: `

hello John Doe #MOO

`}).save() - const text = await post.getDetailsText() - expect(text).to.equal('hello [John Doe:334] #MOO\n') - }) - describe('#addFollowers', function () { var u1, u2, post @@ -188,7 +181,7 @@ describe('Post', function () { .then(() => { expect(p2.id).to.exist expect(p2.id).not.to.equal(post.id) - expect(p2.get('description')).to.equal('foo') + expect(p2.details()).to.equal('foo') expect(p2.get('name')).to.equal(post.get('name')) }) }) diff --git a/test/unit/models/comment/notifications.test.js b/test/unit/models/comment/notifications.test.js index b9f88c0f9..4d0d4304d 100644 --- a/test/unit/models/comment/notifications.test.js +++ b/test/unit/models/comment/notifications.test.js @@ -1,8 +1,6 @@ -import decode from 'ent/decode' +import { TextHelpers } from 'hylo-shared' import { compact } from 'lodash' -import truncate from 'trunc-html' - -import { notifyAboutMessage } from '../../../../api/models/comment/notifications' +import { notifyAboutMessage, MAX_PUSH_NOTIFICATION_LENGTH } from '../../../../api/models/comment/notifications' import factories from '../../../setup/factories' describe('notifyAboutMessage', () => { @@ -33,6 +31,8 @@ describe('notifyAboutMessage', () => { expect(compact(results).length).to.equal(1) const sent = results.find(x => x && x[0])[0] expect(sent.get('device_id')).to.equal(device.id) - expect(sent.get('alert')).to.contain(decode(truncate(comment.get('text'), 140).text).trim()) + expect(sent.get('alert')).to.contain( + TextHelpers.presentHTMLToText(comment.text(), MAX_PUSH_NOTIFICATION_LENGTH) + ) }) }) diff --git a/test/unit/services/InvitationService.test.js b/test/unit/services/InvitationService.test.js index adf3b6ca9..957934b27 100644 --- a/test/unit/services/InvitationService.test.js +++ b/test/unit/services/InvitationService.test.js @@ -1,4 +1,3 @@ -import { markdown } from 'hylo-utils/text' var root = require('root-path') require(root('test/setup')) const factories = require(root('test/setup/factories')) diff --git a/test/unit/services/RichText.test.js b/test/unit/services/RichText.test.js index 779953d59..83d60b57b 100644 --- a/test/unit/services/RichText.test.js +++ b/test/unit/services/RichText.test.js @@ -1,17 +1,21 @@ -require('../../setup') -const Frontend = require('../../../api/services/Frontend') +import '../../setup' +import Frontend from '../../../api/services/Frontend' + const prefix = Frontend.Route.prefix describe('RichText', function () { describe('.qualifyLinks', function () { it('turns data-user-id links into fully-qualified links', function () { - var text = '

#hashtag, #anotherhashtag, https://www.metafilter.com/wooooo

' + - '

a paragraph, and of course @Minda Myers ' + - '@Ray Hylo #boom.

danke

' + let text = '

#hashtag, #anotherhashtag, https://www.metafilter.com/wooooo

' + + '

a paragraph, and of course @Minda Myers ' + + '@Ray Hylo #boom.

danke

' - var expected = '

#hashtag, #anotherhashtag, https://www.metafilter.com/wooooo

' + - `

a paragraph, and of course @Minda Myers ` + - `@Ray Hylo #boom.

danke

` + let expected = `

#hashtag, ` + + `#anotherhashtag, ` + + `https://www.metafilter.com/wooooo

` + + `

a paragraph, and of course @Minda Myers ` + + `@Ray Hylo ` + + `#boom.

danke

` expect(RichText.qualifyLinks(text)).to.equal(expected) }) @@ -19,11 +23,24 @@ describe('RichText', function () { it('links hashtags inside anchor tags', () => { const text = '

#hashtag

' const groupUrl = `${prefix}/groups/foo/topics/hashtag` - const nonGroupUrl = `${prefix}/topics/hashtag` - const expected = url => `

#hashtag

` + const nonGroupUrl = `${prefix}/all/topics/hashtag` + const expected = url => `

#hashtag

` expect(RichText.qualifyLinks(text, null, null, 'foo')).to.equal(expected(groupUrl)) expect(RichText.qualifyLinks(text)).to.equal(expected(nonGroupUrl)) }) }) + + describe('getUserMentions', () => { + it('gets all the mentions', () => { + const text = `

#hashtag, ` + + `#anotherhashtag, ` + + `https://www.metafilter.com/wooooo

` + + `

a paragraph, and of course @Minda Myers ` + + `@Ray Hylo ` + + `#boom.

danke

` + + expect(RichText.getUserMentions(text)).to.have.members(['5942', '8781']) + }) + }) }) diff --git a/test/unit/services/digest2.test.js b/test/unit/services/digest2.test.js index 74cf6e81b..d169bd42f 100644 --- a/test/unit/services/digest2.test.js +++ b/test/unit/services/digest2.test.js @@ -7,6 +7,7 @@ import factories from '../../setup/factories' import { spyify, unspyify } from '../../setup/helpers' import { merge, omit } from 'lodash' require('../../setup') + const model = factories.mock.model const collection = factories.mock.collection @@ -51,29 +52,29 @@ describe('group digest v2', () => { comments: [ model({ id: 12, - text: 'I have two!', + text: () => 'I have two!', post_id: 5, relations: { user: u3, - post: model({id: 5, name: 'Old Post, New Comments', relations: {user: u4}}) + post: model({id: 5, name: 'Old Post, New Comments', details: () => {}, relations: {user: u4}}) } }), model({ id: 13, - text: 'No, you are wrong', + text: () => 'No, you are wrong', post_id: 8, relations: { user: u3, - post: model({id: 8, name: 'Old Post, New Comments', relations: {user: u4}}) + post: model({id: 8, name: 'Old Post, New Comments', details: () => {}, relations: {user: u4}}) } }), model({ id: 13, - text: 'No, you are still wrong', + text: () => 'No, you are still wrong', post_id: 8, relations: { user: u3, - post: model({id: 8, name: 'Old Post, New Comments', relations: {user: u4}}) + post: model({id: 8, name: 'Old Post, New Comments', details: () => {}, relations: {user: u4}}) } }) @@ -82,6 +83,7 @@ describe('group digest v2', () => { model({ id: 5, name: 'Do you have a dollar?', + details: () => {}, type: 'request', relations: { user: u1 @@ -90,6 +92,7 @@ describe('group digest v2', () => { model({ id: 7, name: 'Kapow!', + details: () => {}, relations: { selectedTags: collection([]), linkPreview, @@ -99,6 +102,7 @@ describe('group digest v2', () => { model({ id: 6, name: 'I have cookies!', + details: () => {}, type: 'offer', relations: { user: u2 @@ -107,6 +111,7 @@ describe('group digest v2', () => { model({ id: 76, name: 'An event', + details: () => {}, type: 'event', location: 'Home', starts_at: new Date('December 17, 1995 18:30:00'), @@ -117,6 +122,7 @@ describe('group digest v2', () => { model({ id: 77, name: 'A project with requests', + details: () => {}, type: 'project', relations: { user: u2, @@ -239,7 +245,7 @@ describe('group digest v2', () => { model({ id: 1, name: 'Foo!', - description: '

Edward West & ' + + details: () => '

Edward West & ' + 'Julia Pope #oakland

', type: 'request', relations: { @@ -260,7 +266,7 @@ describe('group digest v2', () => { title: 'Foo!', details: `

Edward West & ` + `Julia Pope ` + - `#oakland

`, + `#oakland

`, user: u1.attributes, url: Frontend.Route.post({id: 1}, group), comments: [] @@ -313,7 +319,7 @@ describe('group digest v2', () => { title: 'Hi', user: u4.attributes, comments: [], - url: 'https://www.hylo.com/post/1' + url: 'https://www.hylo.com/all/post/1' } ], conversations: [ @@ -327,13 +333,13 @@ describe('group digest v2', () => { {id: 3, user: user.pick('id', 'avatar_url'), text: 'Na'}, {id: 4, user: u2.attributes, text: `Woa Bob`} ], - url: 'https://www.hylo.com/post/2' + url: 'https://www.hylo.com/all/post/2' } ] } return personalizeData(user, data).then(newData => { - const ctParams = `?ctt=digest_email&cti=${user.id}&ctcn=foo` + const ctParams = `ctt=digest_email&cti=${user.id}&ctcn=foo` expect(newData).to.deep.equal(merge({}, data, { offers: [ { @@ -341,7 +347,7 @@ describe('group digest v2', () => { title: 'Hi', user: u4.attributes, reply_url: Email.postReplyAddress(1, user.id), - url: 'https://www.hylo.com/post/1' + ctParams + url: 'https://www.hylo.com/all/post/1?' + ctParams } ], conversations: [ @@ -350,12 +356,12 @@ describe('group digest v2', () => { title: 'Ya', user: u3.attributes, details: '

foo@bar.com and ' + - `Person

`, + `Person

`, reply_url: Email.postReplyAddress(2, user.id), - url: 'https://www.hylo.com/post/2' + ctParams, + url: 'https://www.hylo.com/all/post/2?' + ctParams, comments: [ {id: 3, user: user.pick('id', 'avatar_url'), text: 'Na'}, - {id: 4, user: u2.attributes, text: `Woa Bob`} + {id: 4, user: u2.attributes, text: `Woa Bob`} ] } ], @@ -363,13 +369,13 @@ describe('group digest v2', () => { name: user.get('name'), avatar_url: user.get('avatar_url') }, - email_settings_url: Frontend.Route.userSettings() + ctParams + '&expand=account', + email_settings_url: Frontend.Route.userSettings() + '?' + ctParams + '&expand=account', post_creation_action_url: Frontend.Route.emailPostForm(), reply_action_url: Frontend.Route.emailBatchCommentForm(), form_token: Email.formToken(77, user.id), tracking_pixel_url: Analytics.pixelUrl('Digest', {userId: user.id, group: 'foo'}), subject: `New activity from ${u4.name} and ${u3.name}`, - group_url: 'https://www.hylo.com/groups/foo' + ctParams + group_url: 'https://www.hylo.com/groups/foo?' + ctParams })) }) }) diff --git a/yarn.lock b/yarn.lock index a89390838..b2dd74ee4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1398,6 +1398,41 @@ resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== +"@node-redis/bloom@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" + integrity sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw== + +"@node-redis/client@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.3.tgz#ece282b7ee07283d744e6ab1fa72f2d47641402c" + integrity sha512-IXNgOG99PHGL3NxN3/e8J8MuX+H08I+OMNmheGmZBXngE0IntaCQwwrd7NzmiHA+zH3SKHiJ+6k3P7t7XYknMw== + dependencies: + cluster-key-slot "1.1.0" + generic-pool "3.8.2" + redis-parser "3.0.0" + yallist "4.0.0" + +"@node-redis/graph@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@node-redis/graph/-/graph-1.0.0.tgz#baf8eaac4a400f86ea04d65ec3d65715fd7951ab" + integrity sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g== + +"@node-redis/json@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.2.tgz#8ad2d0f026698dc1a4238cc3d1eb099a3bee5ab8" + integrity sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g== + +"@node-redis/search@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.2.tgz#8cfc91006ea787df801d41410283e1f59027f818" + integrity sha512-gWhEeji+kTAvzZeguUNJdMSZNH2c5dv3Bci8Nn2f7VGuf6IvvwuZDSBOuOlirLVgayVuWzAG7EhwaZWK1VDnWQ== + +"@node-redis/time-series@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.1.tgz#703149f8fa4f6fff377c61a0873911e7c1ba5cc3" + integrity sha512-+nTn6EewVj3GlUXPuD3dgheWqo219jTxlo6R+pg24OeVvFHx9aFGGiyOgj3vBPhWUdRZ0xMcujXV5ki4fbLyMw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1472,7 +1507,7 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@sailshq/connect-redis@^3.2.0": +"@sailshq/connect-redis@^3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@sailshq/connect-redis/-/connect-redis-3.2.1.tgz#aefb71a13dfe279baf9f0d0f241d411340345c81" integrity sha512-WoirB/kUnHm5ORSMjyqElmdIY+Xq/gwW5HxKr0V8u6p833rMP25JXParG8IBo3Y3R+IUQEmv9JeJs/tE09eh5Q== @@ -1496,6 +1531,14 @@ socket.io-adapter "~1.1.0" uid2 "0.0.3" +"@selderee/plugin-htmlparser2@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.6.0.tgz#27e994afd1c2cb647ceb5406a185a5574188069d" + integrity sha512-J3jpy002TyBjd4N/p6s+s90eX42H2eRhK3SbsZuvTDv977/E8p2U3zikdiehyJja66do7FlxLomZLPlvl2/xaA== + dependencies: + domhandler "^4.2.0" + selderee "^0.6.0" + "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.11.tgz#263b113fa396fac4373188d73225297fb86f19a9" @@ -1583,11 +1626,6 @@ resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57" integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c= -abab@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -1623,7 +1661,7 @@ acorn-globals@^1.0.3: dependencies: acorn "^2.1.0" -acorn-globals@^3.0.0, acorn-globals@^3.1.0: +acorn-globals@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= @@ -1743,12 +1781,7 @@ ansi-colors@4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - -ansi-regex@^2.0.0, ansi-regex@^2.1.1: +ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= @@ -1768,7 +1801,7 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.0.0, ansi-styles@^3.1.0, ansi-styles@^3.2.1: +ansi-styles@^3.1.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1787,14 +1820,6 @@ ansi-styles@~1.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1920,11 +1945,6 @@ array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -2077,13 +2097,6 @@ async@2.5.0: dependencies: lodash "^4.14.0" -async@^2.1.4: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - async@^3.2.0, async@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8" @@ -2148,32 +2161,7 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.18.0, babel-generator@^6.26.0: +babel-generator@^6.18.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== @@ -2187,23 +2175,6 @@ babel-generator@^6.18.0, babel-generator@^6.26.0: source-map "^0.5.7" trim-right "^1.0.1" -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671" - integrity sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE= - dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.0.0" - babel-preset-jest "^20.0.3" - babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" @@ -2228,21 +2199,6 @@ babel-plugin-istanbul@^2.0.3: object-assign "^4.1.0" test-exclude "^2.1.1" -babel-plugin-istanbul@^4.0.0: - version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== - dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" - -babel-plugin-jest-hoist@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767" - integrity sha1-r+3IU70/jcNUjqZx++adA8wsF2c= - babel-plugin-polyfill-corejs2@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" @@ -2267,11 +2223,6 @@ babel-plugin-polyfill-regenerator@^0.2.2: dependencies: "@babel/helper-define-polyfill-provider" "^0.2.2" -babel-plugin-syntax-object-rest-spread@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: version "7.0.0-beta.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" @@ -2310,26 +2261,6 @@ babel-preset-fbjs@^3.3.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-jest@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a" - integrity sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o= - dependencies: - babel-plugin-jest-hoist "^20.0.3" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -2338,7 +2269,7 @@ babel-runtime@^6.22.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: +babel-template@^6.16.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= @@ -2384,11 +2315,6 @@ backo2@1.0.2, backo2@^1.0.2: resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -2454,7 +2380,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bcrypt@^5.0.0: +bcrypt@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-5.0.1.tgz#f1a2c20f208e2ccdceea4433df0c8b2c54ecdf71" integrity sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw== @@ -2574,7 +2500,7 @@ bookshelf@^1.2.0: inflection "^1.12.0" lodash "^4.17.15" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -2637,13 +2563,6 @@ breakable@~1.0.0: resolved "https://registry.yarnpkg.com/breakable/-/breakable-1.0.0.tgz#784a797915a38ead27bad456b5572cb4bbaa78c1" integrity sha1-eEp5eRWjjq0nutRWtVcstLuqeME= -browser-resolve@^1.11.2: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -2660,13 +2579,6 @@ browserslist@^4.16.6, browserslist@^4.17.1: node-releases "^1.1.77" picocolors "^0.2.1" -bser@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" - integrity sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk= - dependencies: - node-int64 "^0.4.0" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -2716,7 +2628,7 @@ buffer@4.9.2: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.6, buffer@^5.5.0, buffer@^5.7.0: +buffer@^5.5.0, buffer@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -2724,11 +2636,6 @@ buffer@^5.0.6, buffer@^5.5.0, buffer@^5.7.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - busboy@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" @@ -2795,11 +2702,6 @@ caller-id@^0.1.0: dependencies: stack-trace "~0.0.7" -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - camel-case@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" @@ -2866,11 +2768,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -ccount@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" - integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== - center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -2970,16 +2867,6 @@ chalk@~0.4.0: has-color "~0.1.0" strip-ansi "~0.1.0" -character-entities-html4@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" - integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - character-parser@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-1.2.1.tgz#c0dde4ab182713b919b970959a123ecc1a30fcd6" @@ -3002,38 +2889,29 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -cheerio@0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.19.0.tgz#772e7015f2ee29965096d71ea4175b75ab354925" - integrity sha1-dy5wFfLuKZZQltcepBdbdas1SSU= - dependencies: - css-select "~1.0.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "~3.8.1" - lodash "^3.2.0" - -cheerio@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" - integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" +cheerio-select@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" + integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + dependencies: + css-select "^4.1.3" + css-what "^5.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + domutils "^2.7.0" + +cheerio@^1.0.0-rc.10: + version "1.0.0-rc.10" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== + dependencies: + cheerio-select "^1.5.0" + dom-serializer "^1.3.2" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" chokidar@3.5.2, chokidar@^3.4.0: version "3.5.2" @@ -3261,7 +3139,7 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" -comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.1, comma-separated-tokens@^1.0.2: +comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.2: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== @@ -3283,7 +3161,7 @@ commander@2.8.1, commander@2.8.x: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.15.1, commander@^2.5.0: +commander@^2.15.1, commander@^2.19.0, commander@^2.5.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3518,17 +3396,12 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" -content-type-parser@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" - integrity sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ== - content-type@^1.0.4, content-type@~1.0.1, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.3.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.1.0, convert-source-map@^1.3.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -3599,7 +3472,7 @@ core-js-compat@^3.16.0, core-js-compat@^3.16.2: browserslist "^4.17.1" semver "7.0.0" -core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: +core-js@^2.4.0, core-js@^2.4.1: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== @@ -3614,7 +3487,7 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cors@^2.8.4: +cors@^2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== @@ -3715,25 +3588,16 @@ css-parse@~2.0.0: dependencies: css "^2.0.0" -css-select@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.0.0.tgz#b1121ca51848dd264e2244d058cee254deeb44b0" - integrity sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA= - dependencies: - boolbase "~1.0.0" - css-what "1.0" - domutils "1.4" - nth-check "~1.0.0" - -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" css-selector-parser@^1.3.0: version "1.4.1" @@ -3745,15 +3609,10 @@ css-stringify@1.0.5: resolved "https://registry.yarnpkg.com/css-stringify/-/css-stringify-1.0.5.tgz#b0d042946db2953bb9d292900a6cb5f6d0122031" integrity sha1-sNBClG2ylTu50pKQCmy19tASIDE= -css-what@1.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-1.0.0.tgz#d7cc2df45180666f99d2b14462639469e00f736c" - integrity sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w= - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^5.0.1, css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== css@^2.0.0: version "2.2.4" @@ -3782,18 +3641,6 @@ css@~1.0.8: css-parse "1.0.4" css-stringify "1.0.5" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= - dependencies: - cssom "0.3.x" - csurf@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/csurf/-/csurf-1.10.0.tgz#c3bafb66ff218a7b61ad09f39e85edb2ee818b7f" @@ -3896,7 +3743,7 @@ debug@*, debug@4, debug@4.3.2, debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9, debug@~2.6.4, debug@~2.6.8: +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@~2.6.4, debug@~2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4020,6 +3867,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" @@ -4168,11 +4020,6 @@ diff@5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -diff@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4180,73 +4027,45 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= + doctypes@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== +dom-serializer@^1.0.1, dom-serializer@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== dependencies: domelementtype "^2.0.1" + domhandler "^4.2.0" entities "^2.0.0" -dom-serializer@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domhandler@2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" - integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg= - dependencies: - domelementtype "1" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.4: - version "1.4.3" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.4.3.tgz#0865513796c6b306031850e175516baf80b72a6f" - integrity sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8= - dependencies: - domelementtype "1" - -domutils@1.5, domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== dependencies: - dom-serializer "0" - domelementtype "1" + domelementtype "^2.2.0" -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== +domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: - dom-serializer "0" - domelementtype "1" + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" dot-prop@^4.2.1: version "4.2.1" @@ -4372,28 +4191,11 @@ ent@^2.2.0: resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -entities@1.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" - integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= - -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - error-ex@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -4441,7 +4243,7 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@1.x.x, escodegen@^1.6.1: +escodegen@1.x.x: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -4513,18 +4315,11 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@1.1.1, events@^1.1.1: +events@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== - dependencies: - merge "^1.2.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -4793,13 +4588,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fb-watchman@^1.8.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383" - integrity sha1-okz0eCf4LTj7Waaa1wt247auc4M= - dependencies: - bser "1.0.2" - fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -4852,14 +4640,6 @@ filename-regex@^2.0.0: resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" @@ -4958,13 +4738,6 @@ find-up@^1.0.0, find-up@^1.1.2: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -5230,7 +5003,7 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -gaze@^1.1.0: +gaze@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== @@ -5404,7 +5177,7 @@ glob@^5.0.15, glob@~5.0.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3, glob@^7.1.6: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5574,11 +5347,6 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - grunt-cli@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.3.2.tgz#60f12d12c1b5aae94ae3469c6b5fe24e960014e8" @@ -5771,16 +5539,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hast-util-from-parse5@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-2.1.0.tgz#f6123d83d3689630b097e13e430d16d9d1bd8884" - integrity sha1-9hI9g9NoljCwl+E+Qw0W2dG9iIQ= - dependencies: - camelcase "^3.0.0" - hastscript "^3.0.0" - property-information "^3.1.0" - vfile-location "^2.0.0" - hast-util-has-property@^1.0.0, hast-util-has-property@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz#9f137565fad6082524b382c1e7d7d33ca5059f36" @@ -5813,23 +5571,6 @@ hast-util-select@^1.0.1: space-separated-tokens "^1.1.0" zwitch "^1.0.0" -hast-util-to-html@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-3.1.0.tgz#882c99849e40130e991c042e456d453d95c36cff" - integrity sha1-iCyZhJ5AEw6ZHAQuRW1FPZXDbP8= - dependencies: - ccount "^1.0.0" - comma-separated-tokens "^1.0.1" - hast-util-is-element "^1.0.0" - hast-util-whitespace "^1.0.0" - html-void-elements "^1.0.0" - kebab-case "^1.0.0" - property-information "^3.1.0" - space-separated-tokens "^1.0.0" - stringify-entities "^1.0.1" - unist-util-is "^2.0.0" - xtend "^4.0.1" - hast-util-to-string@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz#9b24c114866bdb9478927d7e9c36a485ac728378" @@ -5840,7 +5581,7 @@ hast-util-whitespace@^1.0.0: resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== -hastscript@^3.0.0, hastscript@^3.1.0: +hastscript@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-3.1.0.tgz#66628ba6d7f1ad07d9277dd09028aba7f4934599" integrity sha512-8V34dMSDT1Ik+ZSgTzCLdyp89MrWxcxctXPxhmb72GQj1Xkw1aHPM9UaHCWewvH2Q+PVkYUm4ZJVw4T0dgEGNA== @@ -5868,14 +5609,6 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -5893,40 +5626,27 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -html-encoding-sniffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-void-elements@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" - integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== - -htmlparser2@^3.9.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== +html-to-text@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/html-to-text/-/html-to-text-8.1.0.tgz#0c35fc452e6eccb275669adb8bcc61d93ec43ed5" + integrity sha512-Z9iYAqYK2c18GswSbnxJSeMs7lyJgwR2oIkDOyOHGBbYsPsG4HvT379jj3Lcbfko8A5ceyyMHAfkmp/BiXA9/Q== dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" + "@selderee/plugin-htmlparser2" "^0.6.0" + deepmerge "^4.2.2" + he "^1.2.0" + htmlparser2 "^6.1.0" + minimist "^1.2.5" + selderee "^0.6.0" -htmlparser2@~3.8.1: - version "3.8.3" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" - integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg= +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: - domelementtype "1" - domhandler "2.3" - domutils "1.5" - entities "1.0" - readable-stream "1.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" http-errors@1.6.2: version "1.6.2" @@ -6041,21 +5761,25 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -hylo-utils@Hylozoic/hylo-utils#c4db0b4: - version "1.2.4" - resolved "https://codeload.github.com/Hylozoic/hylo-utils/tar.gz/c4db0b4f205c2f07043f42761e5984f891721602" - dependencies: - buffer "^5.0.6" - cheerio "^0.22.0" - events "^1.1.1" - insane "^2.6.1" - jest "^20.0.4" - linkifyjs Hylozoic/linkifyjs#allow-underscores - marked "^0.3.5" +hylo-shared@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/hylo-shared/-/hylo-shared-1.6.7.tgz#786beca94be8c33afa1aa6fa0dc86ba25c067092" + integrity sha512-jtdku7XbKkmMhydkk2DugYCzmit7mB6xtRPtGT2Y5w734YaHyNyhJDHom1LgIQ6g+Dqc5FV9ZZ7zN0phGAFr4g== + dependencies: + cheerio "^1.0.0-rc.10" + html-to-text "^8.1.0" + insane "^2.6.2" + linkify-plugin-hashtag "^3.0.4" + linkify-string "^3.0.4" + linkifyjs "^3.0.5" + lodash "~4.17.21" + marked "^4.0.12" + moment-timezone "^0.5.34" pretty-date "^0.2.0" stream "^0.0.2" trunc-html "^1.1.2" - validator "^8.2.0" + trunc-text "^1.0.2" + validator "^13.7.0" i18n-2@0.7.3: version "0.7.3" @@ -6205,7 +5929,7 @@ insane@2.6.1: assignment "2.0.0" he "0.5.0" -insane@^2.6.1: +insane@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/insane/-/insane-2.6.2.tgz#c2ab68bb3e006ab451560d1b446917329c0a8120" integrity sha1-wqtouz4AarRRVg0bRGkXMpwKgSA= @@ -6277,19 +6001,6 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-arguments@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -6322,7 +6033,7 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.4, is-buffer@^1.1.5, is-buffer@~1.1.6: +is-buffer@^1.1.5, is-buffer@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -6332,13 +6043,6 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= - dependencies: - builtin-modules "^1.0.0" - is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" @@ -6374,11 +6078,6 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -6494,11 +6193,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" @@ -6548,11 +6242,6 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" @@ -6704,36 +6393,19 @@ isstream@0.1.x, isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-api@^1.1.1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" - integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.1" - istanbul-lib-hook "^1.2.2" - istanbul-lib-instrument "^1.10.2" - istanbul-lib-report "^1.1.5" - istanbul-lib-source-maps "^1.2.6" - istanbul-reports "^1.5.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.0, istanbul-lib-coverage@^1.2.1: +istanbul-lib-coverage@^1.1.0, istanbul-lib-coverage@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== -istanbul-lib-hook@^1.0.6, istanbul-lib-hook@^1.2.2: +istanbul-lib-hook@^1.0.6: version "1.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.1.4, istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2, istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.1: +istanbul-lib-instrument@^1.1.4, istanbul-lib-instrument@^1.7.1: version "1.10.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== @@ -6746,7 +6418,7 @@ istanbul-lib-instrument@^1.1.4, istanbul-lib-instrument@^1.10.1, istanbul-lib-in istanbul-lib-coverage "^1.2.1" semver "^5.3.0" -istanbul-lib-report@^1.1.0, istanbul-lib-report@^1.1.5: +istanbul-lib-report@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== @@ -6756,7 +6428,7 @@ istanbul-lib-report@^1.1.0, istanbul-lib-report@^1.1.5: path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.0, istanbul-lib-source-maps@^1.2.6: +istanbul-lib-source-maps@^1.2.0: version "1.2.6" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== @@ -6767,7 +6439,7 @@ istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.0, istanbul-lib-s rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.1.0, istanbul-reports@^1.5.1: +istanbul-reports@^1.1.0: version "1.5.1" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== @@ -6795,238 +6467,6 @@ jade@^1.11.0, jade@^1.8.1: void-elements "~2.0.1" with "~4.0.0" -jest-changed-files@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8" - integrity sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g= - -jest-cli@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.4.tgz#e532b19d88ae5bc6c417e8b0593a6fe954b1dc93" - integrity sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM= - dependencies: - ansi-escapes "^1.4.0" - callsites "^2.0.0" - chalk "^1.1.3" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - istanbul-api "^1.1.1" - istanbul-lib-coverage "^1.0.1" - istanbul-lib-instrument "^1.4.2" - istanbul-lib-source-maps "^1.1.0" - jest-changed-files "^20.0.3" - jest-config "^20.0.4" - jest-docblock "^20.0.3" - jest-environment-jsdom "^20.0.3" - jest-haste-map "^20.0.4" - jest-jasmine2 "^20.0.4" - jest-message-util "^20.0.3" - jest-regex-util "^20.0.3" - jest-resolve-dependencies "^20.0.3" - jest-runtime "^20.0.4" - jest-snapshot "^20.0.3" - jest-util "^20.0.3" - micromatch "^2.3.11" - node-notifier "^5.0.2" - pify "^2.3.0" - slash "^1.0.0" - string-length "^1.0.1" - throat "^3.0.0" - which "^1.2.12" - worker-farm "^1.3.1" - yargs "^7.0.2" - -jest-config@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.4.tgz#e37930ab2217c913605eff13e7bd763ec48faeea" - integrity sha1-43kwqyIXyRNgXv8T5712PsSPruo= - dependencies: - chalk "^1.1.3" - glob "^7.1.1" - jest-environment-jsdom "^20.0.3" - jest-environment-node "^20.0.3" - jest-jasmine2 "^20.0.4" - jest-matcher-utils "^20.0.3" - jest-regex-util "^20.0.3" - jest-resolve "^20.0.4" - jest-validate "^20.0.3" - pretty-format "^20.0.3" - -jest-diff@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617" - integrity sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc= - dependencies: - chalk "^1.1.3" - diff "^3.2.0" - jest-matcher-utils "^20.0.3" - pretty-format "^20.0.3" - -jest-docblock@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712" - integrity sha1-F76phDQswz2DxQ++FUXqDvqkRxI= - -jest-environment-jsdom@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99" - integrity sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk= - dependencies: - jest-mock "^20.0.3" - jest-util "^20.0.3" - jsdom "^9.12.0" - -jest-environment-node@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403" - integrity sha1-1Ii8RhKvLCRumG6K52caCZFj1AM= - dependencies: - jest-mock "^20.0.3" - jest-util "^20.0.3" - -jest-haste-map@^20.0.4: - version "20.0.5" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.5.tgz#abad74efb1a005974a7b6517e11010709cab9112" - integrity sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q== - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^20.0.3" - micromatch "^2.3.11" - sane "~1.6.0" - worker-farm "^1.3.1" - -jest-jasmine2@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz#fcc5b1411780d911d042902ef1859e852e60d5e1" - integrity sha1-/MWxQReA2RHQQpAu8YWehS5g1eE= - dependencies: - chalk "^1.1.3" - graceful-fs "^4.1.11" - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-matchers "^20.0.3" - jest-message-util "^20.0.3" - jest-snapshot "^20.0.3" - once "^1.4.0" - p-map "^1.1.1" - -jest-matcher-utils@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612" - integrity sha1-s6a443yld4A7CDKpixZPRLeBVhI= - dependencies: - chalk "^1.1.3" - pretty-format "^20.0.3" - -jest-matchers@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60" - integrity sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA= - dependencies: - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-message-util "^20.0.3" - jest-regex-util "^20.0.3" - -jest-message-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c" - integrity sha1-auwoRDBvyw5udNV5bBAG2W/dgxw= - dependencies: - chalk "^1.1.3" - micromatch "^2.3.11" - slash "^1.0.0" - -jest-mock@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59" - integrity sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk= - -jest-regex-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762" - integrity sha1-hburXRM+RGJbGfr4xqpRItCF12I= - -jest-resolve-dependencies@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a" - integrity sha1-bhSntxevDyyzZnxUneQK8Bexcjo= - dependencies: - jest-regex-util "^20.0.3" - -jest-resolve@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.4.tgz#9448b3e8b6bafc15479444c6499045b7ffe597a5" - integrity sha1-lEiz6La6/BVHlETGSZBFt//ll6U= - dependencies: - browser-resolve "^1.11.2" - is-builtin-module "^1.0.0" - resolve "^1.3.2" - -jest-runtime@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.4.tgz#a2c802219c4203f754df1404e490186169d124d8" - integrity sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg= - dependencies: - babel-core "^6.0.0" - babel-jest "^20.0.3" - babel-plugin-istanbul "^4.0.0" - chalk "^1.1.3" - convert-source-map "^1.4.0" - graceful-fs "^4.1.11" - jest-config "^20.0.4" - jest-haste-map "^20.0.4" - jest-regex-util "^20.0.3" - jest-resolve "^20.0.4" - jest-util "^20.0.3" - json-stable-stringify "^1.0.1" - micromatch "^2.3.11" - strip-bom "3.0.0" - yargs "^7.0.2" - -jest-snapshot@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566" - integrity sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY= - dependencies: - chalk "^1.1.3" - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-util "^20.0.3" - natural-compare "^1.4.0" - pretty-format "^20.0.3" - -jest-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad" - integrity sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0= - dependencies: - chalk "^1.1.3" - graceful-fs "^4.1.11" - jest-message-util "^20.0.3" - jest-mock "^20.0.3" - jest-validate "^20.0.3" - leven "^2.1.0" - mkdirp "^0.5.1" - -jest-validate@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab" - integrity sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs= - dependencies: - chalk "^1.1.3" - jest-matcher-utils "^20.0.3" - leven "^2.1.0" - pretty-format "^20.0.3" - -jest@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.4.tgz#3dd260c2989d6dad678b1e9cc4d91944f6d602ac" - integrity sha1-PdJgwpidba1nix6cxNkZRPbWAqw= - dependencies: - jest-cli "^20.0.4" - jmespath@0.15.0: version "0.15.0" resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" @@ -7037,11 +6477,6 @@ join-component@~1.0.0: resolved "https://registry.yarnpkg.com/join-component/-/join-component-1.0.0.tgz#cd2b2321c054be54e493815436b0ddc28a44235c" integrity sha1-zSsjIcBUvlTkk4FUNrDdwopEI1w= -jquery@>=1.9.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" - integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== - js-stringify@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" @@ -7064,7 +6499,7 @@ js-yaml@4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.7.0, js-yaml@~3.14.0: +js-yaml@~3.14.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -7077,31 +6512,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" - integrity sha1-6MVG//ywbADUgzyoRBD+1/igl9Q= - dependencies: - abab "^1.0.3" - acorn "^4.0.4" - acorn-globals "^3.1.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - nwmatcher ">= 1.3.9 < 2.0.0" - parse5 "^1.5.1" - request "^2.79.0" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.2" - webidl-conversions "^4.0.0" - whatwg-encoding "^1.0.1" - whatwg-url "^4.3.0" - xml-name-validator "^2.0.1" - jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -7127,23 +6537,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@^5.0.0, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -7158,11 +6556,6 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - jsonlint-lines@1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/jsonlint-lines/-/jsonlint-lines-1.7.1.tgz#507de680d3fb8c4be1641cc57d6f679f29f178ff" @@ -7230,11 +6623,6 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" -kebab-case@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/kebab-case/-/kebab-case-1.0.1.tgz#bf734fc95400a3701869215d99a902bd3fe72f60" - integrity sha512-txPHx6nVLhv8PHGXIlAk0nYoh894SpAqGPXNvbg2hh8spvHXIah3+vT87DLoa59nKgC6scD3u3xAuRIgiMqbfQ== - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -7336,11 +6724,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -7377,13 +6760,20 @@ liftoff@~2.5.0: rechoir "^0.6.2" resolve "^1.1.7" -linkifyjs@Hylozoic/linkifyjs#allow-underscores: - version "2.1.4" - resolved "https://codeload.github.com/Hylozoic/linkifyjs/tar.gz/d7de1aaa8012fae035a995051cf062ff78ea878e" - optionalDependencies: - jquery ">=1.9.0" - react ">=0.14.0" - react-dom ">=0.14.0" +linkify-plugin-hashtag@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/linkify-plugin-hashtag/-/linkify-plugin-hashtag-3.0.4.tgz#8c037dce48b645db540a785db4c253fe0e7e22d0" + integrity sha512-GXVzS0VUNykfud6aiuuT0XgR1Cq5JJ40GcJzhwSbaRLYY2OwntvWjtD1D8rNPdFC3yOHAx8CIqQZxXNJl8nGjA== + +linkify-string@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/linkify-string/-/linkify-string-3.0.4.tgz#6abf1a5e436e800c729274ae08f5703484647f84" + integrity sha512-OnNqqRjlYXaXipIAbBC8sDXsSumI1ftatzFg141Pw9HEXWjTVLFcMZoKbFupshqWRavtNJ6QHLa+u6AlxxgeRw== + +linkifyjs@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-3.0.5.tgz#99e51a3a0c0e232fcb63ebb89eea3ff923378f34" + integrity sha512-1Y9XQH65eQKA9p2xtk+zxvnTeQBG7rdAXSkUG97DmuI/Xhji9uaUzaWxRj6rf9YC0v8KKHkxav7tnLX82Sz5Fg== load-json-file@^1.0.0: version "1.1.0" @@ -7396,14 +6786,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -7431,16 +6813,6 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= -lodash.assignin@^4.0.9: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= - -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -7451,26 +6823,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash.defaults@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= - lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -7501,47 +6853,17 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= - -lodash.merge@^4.4.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= - -lodash.reduce@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" - integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= - -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= - -lodash.some@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= - -lodash@4.17.21, lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.8.0, lodash@~4.17.10, lodash@~4.17.19, lodash@~4.17.21: +lodash@4.17.21, lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.8.0, lodash@~4.17.10, lodash@~4.17.19, lodash@~4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lodash@^3.10.1, lodash@^3.2.0: +lodash@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= @@ -7569,7 +6891,7 @@ longest@^1.0.1: resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7709,13 +7031,6 @@ make-plural@^6.0.1: resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-6.2.2.tgz#beb5fd751355e72660eeb2218bb98eec92853c6c" integrity sha512-8iTuFioatnTTmb/YJjywkVIHLjcwkFD9Ms0JpxjEm9Mo8eQYkh1z+55dwv4yc1jQ8ftVBxWQbihvZL1DfzGGWA== -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -7728,10 +7043,10 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -marked@^0.3.5: - version "0.3.19" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" - integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== +marked@^4.0.12: + version "4.0.12" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" + integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== math-interval-parser@^2.0.1: version "2.0.1" @@ -7812,11 +7127,6 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - meros@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/meros/-/meros-1.1.4.tgz#c17994d3133db8b23807f62bec7f0cb276cfd948" @@ -7861,7 +7171,7 @@ methods@^1.1.2, methods@~1.1.1, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= @@ -7912,13 +7222,25 @@ mime-db@1.50.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== -mime-types@^2.1.12, mime-types@^2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.6, mime-types@~2.1.9: +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.6, mime-types@~2.1.9: version "2.1.33" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== dependencies: mime-db "1.50.0" +mime-types@^2.1.34: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + mime@1.2.11, mime@~1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" @@ -7944,7 +7266,7 @@ mimic-response@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2, minimatch@~3.0.4: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2, minimatch@~3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -7956,7 +7278,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@1.2.5, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@1.2.5, minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -8055,10 +7377,10 @@ mock-require@^2.0.2: dependencies: caller-id "^0.1.0" -moment-timezone@^0.5.0: - version "0.5.33" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" - integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== +moment-timezone@^0.5.34: + version "0.5.34" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" + integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== dependencies: moment ">= 2.9.0" @@ -8067,6 +7389,11 @@ moment-timezone@^0.5.0: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +moo@^0.5.0, moo@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" + integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== + morgan@~1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.6.1.tgz#5fd818398c6819cba28a7cd6664f292fe1c0bbf2" @@ -8170,11 +7497,6 @@ napi-build-utils@^1.0.1: resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - natural@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/natural/-/natural-0.2.1.tgz#1eb5156a9d90b4591949e20e94ebc77bb2339eda" @@ -8199,6 +7521,16 @@ ndjson@^1.4.0: split2 "^2.1.0" through2 "^2.0.3" +nearley@^2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== + dependencies: + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" + negotiator@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" @@ -8307,17 +7639,6 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.0.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" - integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - node-redis-scripty@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/node-redis-scripty/-/node-redis-scripty-0.0.5.tgz#4bf2d365ab6dab202cc08b7ac63f8f55aadc9625" @@ -8346,7 +7667,7 @@ node-rsa@^1.1.1: dependencies: asn1 "^0.2.4" -node-uuid@^1.4.7: +node-uuid@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" integrity sha1-sEDrCSOWivq/jTL7HxfxFn/auQc= @@ -8414,7 +7735,7 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -8453,13 +7774,20 @@ npmlog@^4.0.1, npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.1, nth-check@~1.0.0, nth-check@~1.0.1: +nth-check@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -8470,11 +7798,6 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -"nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" - integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== - nyc@^10.0: version "10.3.2" resolved "https://registry.yarnpkg.com/nyc/-/nyc-10.3.2.tgz#f27f4d91f2a9db36c24f574ff5c6efff0233de46" @@ -8665,7 +7988,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -8690,13 +8013,6 @@ p-limit@3.1.0, p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -8704,13 +8020,6 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -8732,16 +8041,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -8836,15 +8135,25 @@ parse-redis-url@0.0.2: resolved "https://registry.yarnpkg.com/parse-redis-url/-/parse-redis-url-0.0.2.tgz#13c92a0abbe6f2512006a8c49de6cb7b8dd4b277" integrity sha1-E8kqCrvm8lEgBqjEnebLe43Usnc= -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" -parse5@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseley@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/parseley/-/parseley-0.7.0.tgz#9949e3a0ed05c5072adb04f013c2810cf49171a8" + integrity sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw== + dependencies: + moo "^0.5.1" + nearley "^2.20.1" parseqs@0.0.6: version "0.0.6" @@ -8915,7 +8224,7 @@ passport-google-oauth@^2.0.0: passport-google-oauth1 "1.x.x" passport-google-oauth20 "2.x.x" -passport-google-token@^0.1.1: +passport-google-token@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/passport-google-token/-/passport-google-token-0.1.2.tgz#2596042a09c0c070f2fc397d35937256a81779fd" integrity sha1-JZYEKgnAwHDy/Dl9NZNyVqgXef0= @@ -9027,7 +8336,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -9176,7 +8485,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -9305,15 +8614,7 @@ pretty-date@^0.2.0: resolved "https://registry.yarnpkg.com/pretty-date/-/pretty-date-0.2.0.tgz#bea90fe6aad0dc3d77b9c1c42154eb45f680ca52" integrity sha1-vqkP5qrQ3D13ucHEIVTrRfaAylI= -pretty-format@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" - integrity sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ= - dependencies: - ansi-regex "^2.1.1" - ansi-styles "^3.0.0" - -private@^0.1.6, private@^0.1.8, private@~0.1.5: +private@^0.1.6, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -9433,11 +8734,6 @@ proxy-agent@1: pac-proxy-agent "0" socks-proxy-agent "1" -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -9623,6 +8919,19 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + random-bytes@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" @@ -9726,28 +9035,11 @@ rc@~0.5.0: minimist "~0.0.7" strip-json-comments "0.1.x" -react-dom@>=0.14.0: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react@>=0.14.0: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -9782,16 +9074,6 @@ readable-stream@1.0.27-1: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@1.1: - version "1.1.13" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" - integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@1.1.x, readable-stream@~1.1.8, readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -9923,15 +9205,17 @@ redis@^0.12.1: resolved "https://registry.yarnpkg.com/redis/-/redis-0.12.1.tgz#64df76ad0fc8acebaebd2a0645e8a48fac49185e" integrity sha1-ZN92rQ/IrOuuvSoGReikj6xJGF4= -redis@^4.0.0-rc.2: - version "4.0.0-rc.2" - resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.0-rc.2.tgz#4c744c481aa21af47ceb666f7b59931f795b6b13" - integrity sha512-zhT4Vj0xegPNoGwwJ1eeAuoPSvPkVcGImB84whSiyzy+RCdSqk/Hsw2c72Nr6UBMvq9Evd+vgKy4LGLiDbaVDA== +redis@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.3.tgz#f60931175de6f5b5727240a08e58a9ed5cf0f9de" + integrity sha512-SJMRXvgiQUYN0HaWwWv002J5ZgkhYXOlbLomzcrL3kP42yRNZ8Jx5nvLYhVpgmf10xcDpanFOxxJkphu2eyIFQ== dependencies: - cluster-key-slot "1.1.0" - generic-pool "3.8.2" - redis-parser "3.0.0" - yallist "4.0.0" + "@node-redis/bloom" "1.0.1" + "@node-redis/client" "1.0.3" + "@node-redis/graph" "1.0.0" + "@node-redis/json" "1.0.2" + "@node-redis/search" "1.0.2" + "@node-redis/time-series" "1.0.1" redis@~2.6.0-2: version "2.6.5" @@ -10064,32 +9348,6 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" -rehype-parse@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-4.1.0.tgz#bb46fcc213205527bc4a0d362f1906c8b1ff0814" - integrity sha512-EUg1mMY47O0wdRg65PzCdiAX5XFv/PFf/ss6+o6DclObM+iU0DklEZpUr3i2whVj8tV15q1kumnjgWcOnSkFDQ== - dependencies: - hast-util-from-parse5 "^2.0.1" - parse5 "^4.0.0" - xtend "^4.0.1" - -rehype-stringify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-3.0.0.tgz#9fef0868213c2dce2f780b76f3d0488c85e819eb" - integrity sha1-n+8IaCE8Lc4veAt289BIjIXoGes= - dependencies: - hast-util-to-html "^3.0.0" - xtend "^4.0.1" - -rehype@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rehype/-/rehype-5.0.1.tgz#75c9d711fb26a303bd3ab213f93b74f746d5f388" - integrity sha512-nVmTVKU7Y4t7Yx8iZt6PXlGpFy2AETGofNv3rC/1+FwdgeRl3DganFQGmNMSK45vd9aXOKRucVD47zwAZNoIog== - dependencies: - rehype-parse "^4.0.0" - rehype-stringify "^3.0.0" - unified "^6.0.0" - relay-compiler@11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-11.0.2.tgz#e1e09a1c881d169a7a524ead728ad6a89c7bd4af" @@ -10149,11 +9407,6 @@ repl.history@^0.1.4: resolved "https://registry.yarnpkg.com/repl.history/-/repl.history-0.1.4.tgz#80367171f3781d6e4299c71758c253097f5d5832" integrity sha1-gDZxcfN4HW5CmccXWMJTCX9dWDI= -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - reportback@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/reportback/-/reportback-2.0.2.tgz#8957ff5f6b1675e0284c1a14001a24463c0f9900" @@ -10176,7 +9429,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise@^4.2.2: +request-promise@^4.2.6: version "4.2.6" resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.6.tgz#7e7e5b9578630e6f598e3813c0f8eb342a27f0a2" integrity sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ== @@ -10186,7 +9439,7 @@ request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.51.0, request@^2.79.0: +request@^2.51.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -10255,12 +9508,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -10343,7 +9591,7 @@ rollbar@^2.0: optionalDependencies: decache "^3.0.5" -root-path@^0.2.0: +root-path@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/root-path/-/root-path-0.2.1.tgz#43d50ed4214d4d6c8d99a10c11a5e391c385e39d" integrity sha1-Q9UO1CFNTWyNmaEMEaXjkcOF450= @@ -10429,7 +9677,7 @@ sails-generate@^2.0.3: reportback "^2.0.1" sails.io.js-dist "^1.0.0" -sails-hook-sockets@^2.0.0: +sails-hook-sockets@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/sails-hook-sockets/-/sails-hook-sockets-2.0.1.tgz#a2858f578eeed09b7da35af78fb33371e72c655c" integrity sha512-I8p8xxHTvWhyoIYy4JmkUHVIucyG5sBNCHRT2LpHkgt1q/XeqQZ6q2jnrxr+tpGg6ASF+v6QyUt6ivAhJeHqdQ== @@ -10507,19 +9755,6 @@ sails@^1.4.0: vary "1.1.2" whelk "^6.0.1" -sane@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-1.6.0.tgz#9610c452307a135d29c1fdfe2547034180c46775" - integrity sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U= - dependencies: - anymatch "^1.3.0" - exec-sh "^0.2.0" - fb-watchman "^1.8.0" - minimatch "^3.0.2" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.10.0" - sanitize-filename@^1.6.1: version "1.6.3" resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" @@ -10537,18 +9772,17 @@ sax@1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.6.0, sax@^1.2.1, sax@~1.2.4: +sax@>=0.6.0, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== +selderee@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/selderee/-/selderee-0.6.0.tgz#f3bee66cfebcb6f33df98e4a1df77388b42a96f7" + integrity sha512-ibqWGV5aChDvfVdqNYuaJP/HnVBhlRGSRrlbttmlMpHcLuTqqbMH36QkSs9GEgj5M88JDYLI8eyP94JaQ8xRlg== dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" + parseley "^0.7.0" semver-diff@^2.0.0: version "2.1.0" @@ -10557,7 +9791,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10818,11 +10052,6 @@ shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -10902,11 +10131,6 @@ skipper@^0.9.0-0: string_decoder "0.10.31" uuid "7.0.0" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -11072,13 +10296,6 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.16: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" @@ -11253,7 +10470,7 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-buffers@^3.0.1: +stream-buffers@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-3.0.2.tgz#5249005a8d5c2d00b3a32e6e0a6ea209dc4f3521" integrity sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ== @@ -11294,13 +10511,6 @@ streamsearch@0.1.2: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= -string-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" - integrity sha1-VpcPscOFWOnnC3KL894mmsRa36w= - dependencies: - strip-ansi "^3.0.0" - string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -11346,16 +10556,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" - integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== - dependencies: - character-entities-html4 "^1.0.0" - character-entities-legacy "^1.0.0" - is-alphanumerical "^1.0.0" - is-hexadecimal "^1.0.0" - stringmap@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" @@ -11392,11 +10592,6 @@ strip-ansi@~0.1.0: resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= -strip-bom@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -11434,11 +10629,6 @@ stripe@^6.15.0: safe-buffer "^5.1.1" uuid "^3.3.2" -striptags@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" - integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== - stylus@0.54.5: version "0.54.5" resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" @@ -11582,11 +10772,6 @@ symbol-observable@^4.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== -symbol-tree@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - sync-fetch@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.3.0.tgz#77246da949389310ad978ab26790bb05f88d1335" @@ -11642,9 +10827,9 @@ tar@^6.1.0: yallist "^4.0.0" tarn@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.1.tgz#ebac2c6dbc6977d34d4526e0a7814200386a8aec" - integrity sha512-6usSlV9KyHsspvwu2duKH+FMUhqJnAh6J5J/4MITl8s94iSUQTLkJggdiewKv4RyARQccnigV48Z+khiuVZDJw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" + integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== term-size@^1.2.0: version "1.2.0" @@ -11664,7 +10849,7 @@ test-exclude@^2.1.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -test-exclude@^4.1.0, test-exclude@^4.2.1: +test-exclude@^4.1.0: version "4.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== @@ -11675,11 +10860,6 @@ test-exclude@^4.1.0, test-exclude@^4.2.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -throat@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-3.2.0.tgz#50cb0670edbc40237b9e347d7e1f88e4620af836" - integrity sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w== - through2@^2.0.2, through2@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -11708,11 +10888,6 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -11782,7 +10957,7 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@^2.3.2, tough-cookie@^2.3.3, tough-cookie@~2.5.0: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -11814,11 +10989,6 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== - trunc-html@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/trunc-html/-/trunc-html-1.1.2.tgz#1e97d51f67d470b67662b1a670e6d0ea7a8edafe" @@ -11833,6 +11003,11 @@ trunc-text@1.0.1: resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.1.tgz#58f876d8ac59b224b79834bb478b8656e69622b5" integrity sha1-WPh22KxZsiS3mDS7R4uGVuaWIrU= +trunc-text@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.2.tgz#b582bb3ddea9c9adc25017d737c48ebdd2157406" + integrity sha1-tYK7Pd6pya3CUBfXN8SOvdIVdAY= + truncate-utf8-bytes@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" @@ -11864,7 +11039,7 @@ tslib@^1.10.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@~2.3.0: +tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@~2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -12063,18 +11238,6 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== -unified@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" - integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -12099,21 +11262,11 @@ unist-util-inspect@^4.1.3: dependencies: is-empty "^1.0.0" -unist-util-is@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20" - integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA== - unist-util-is@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" - integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== - unist-util-stringify-position@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" @@ -12302,16 +11455,16 @@ validator@5.7.0: resolved "https://registry.yarnpkg.com/validator/-/validator-5.7.0.tgz#7a87a58146b695ac486071141c0c49d67da05e5c" integrity sha1-eoelgUa2laxIYHEUHAxJ1n2gXlw= +validator@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== + validator@^3.22.1: version "3.43.0" resolved "https://registry.yarnpkg.com/validator/-/validator-3.43.0.tgz#96464b992d4196833d97a194bf40b19ff54bae05" integrity sha1-lkZLmS1BloM9l6GUv0Cxn/VLrgU= -validator@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9" - integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA== - value-or-promise@1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.10.tgz#5bf041f1e9a8e7043911875547636768a836e446" @@ -12341,18 +11494,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== - -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" - vfile-message@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" @@ -12383,16 +11524,6 @@ vfile-statistics@^1.1.0: resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.4.tgz#b99fd15ecf0f44ba088cc973425d666cb7a9f245" integrity sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA== -vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" - integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== - dependencies: - is-buffer "^1.1.4" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - vfile@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" @@ -12413,43 +11544,11 @@ void-elements@^2.0.1, void-elements@~2.0.1: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -watch@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" - integrity sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw= - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webidl-conversions@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -whatwg-encoding@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-url@^4.3.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" - integrity sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -12488,7 +11587,7 @@ which@2.0.2, which@~2.0.2: dependencies: isexe "^2.0.0" -which@^1.2.12, which@^1.2.14, which@^1.2.4, which@^1.2.9, which@^1.3.0: +which@^1.2.14, which@^1.2.4, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -12579,13 +11678,6 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -worker-farm@^1.3.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - workerpool@6.1.5: version "6.1.5" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" @@ -12655,21 +11747,11 @@ ws@~7.4.2: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= - xml2js@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.0.tgz#124fc4114b4129c810800ecb2ac86cf25462cb9a" @@ -12706,7 +11788,7 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -12845,7 +11927,7 @@ yargs@^4.0.0: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^7.0.2, yargs@^7.1.0: +yargs@^7.1.0: version "7.1.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" integrity sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==