diff --git a/package.json b/package.json index e419888a..bdfd5a4e 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "cors": "^2.8.5", "cross-env": "^7.0.2", "date-fns": "^2.16.1", - "dayjs": "^1.9.4", + "dayjs": "^1.9.5", "dompurify": "^2.2.2", "email-templates": "^7.1.2", "express": "^4.17.1", @@ -94,11 +94,11 @@ "nodemon": "^2.0.6", "prettier": "^2.1.2", "pug-plain-loader": "^1.0.0", - "sass": "^1.28.0", + "sass": "^1.29.0", "sass-loader": "^10.0.5", "vue-cli-plugin-vuetify": "~2.0.7", "vuetify-loader": "^1.3.0", - "webpack-cli": "^4.1.0" + "webpack-cli": "^4.2.0" }, "resolutions": { "prosemirror-model": "1.11.2" diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue index 2bbc0c0e..c5a1cf60 100644 --- a/pages/add/DateInput.vue +++ b/pages/add/DateInput.vue @@ -104,7 +104,6 @@ export default { return this.$t(`event.recurrent_${freq}_days`, { days: weekDay }) } else if (freq === '1m' || freq === '2m') { const monthDay = date.format('D') - console.error('monthDay ', monthDay) const n = Math.floor((monthDay - 1) / 7) + 1 diff --git a/pages/event/_id.vue b/pages/event/_id.vue index bb0ac463..2ece5023 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -138,12 +138,11 @@ import { mapState } from 'vuex' import EventAdmin from './eventAdmin' import EmbedEvent from './embedEvent' import FollowMe from '../../components/FollowMe' -import moment from 'moment-timezone' +import moment from 'dayjs' const htmlToText = require('html-to-text') export default { name: 'Event', - transition: null, components: { EventAdmin, EmbedEvent, FollowMe }, async asyncData ({ $axios, params, error, store }) { try { @@ -317,7 +316,6 @@ export default { margin: 0 auto; max-height: 80vh; border-radius: 5px; - transition: max-height .2s; + transition: max-height 0.2s; } - diff --git a/plugins/filters.js b/plugins/filters.js index eb4e01a6..f3d09329 100644 --- a/plugins/filters.js +++ b/plugins/filters.js @@ -34,8 +34,7 @@ export default ({ app, store }) => { // shown in mobile homepage Vue.filter('day', value => dayjs.unix(value).locale(store.state.locale).format('dddd, D MMM')) - Vue.filter('from', timestamp => dayjs.unix(timestamp).from()) - // format event start/end datetime based on page + Vue.filter('from', timestamp => dayjs.unix(timestamp).fromNow()) Vue.filter('recurrentDetail', event => { const { frequency, days, type } = event.parent.recurrent diff --git a/server/api/models/event.js b/server/api/models/event.js index bcf82d2d..a04a8a88 100644 --- a/server/api/models/event.js +++ b/server/api/models/event.js @@ -57,43 +57,43 @@ Resource.belongsTo(Event) Event.hasMany(Event, { as: 'child', foreignKey: 'parentId' }) Event.belongsTo(Event, { as: 'parent' }) -Event.prototype.toAP = function (username, locale, to = []) { +Event.prototype.toAPNote = function (username, locale, to = []) { const tags = this.tags && this.tags.map(t => t.tag.replace(/[ #]/g, '_')) const plainDescription = htmlToText.fromString(this.description.replace('\n', '').slice(0, 1000)) - const summary = ` - 📍 ${this.place && this.place.name} - 📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')} + const content = ` + ${this.title}

+ 📍 ${this.place && this.place.name}
+ 📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')}

- ${plainDescription} + ${plainDescription}

+ + ${config.baseurl}/event/${this.id}
${tags && tags.map(t => `#${t}`)} - ` - const attachment = [] - if (this.image_path) { - attachment.push({ - type: 'Document', - mediaType: 'image/jpeg', - url: `${config.baseurl}/media/${this.image_path}`, - name: null, - blurHash: null - }) - } - - to.push('https://www.w3.org/ns/activitystreams#Public') + // const attachment = [] + // if (this.image_path) { + // attachment.push({ + // type: 'Document', + // mediaType: 'image/jpeg', + // url: `${config.baseurl}/media/${this.image_path}`, + // name: null, + // blurHash: null + // }) + // } return { id: `${config.baseurl}/federation/m/${this.id}`, - name: this.title, + // name: this.title, url: `${config.baseurl}/event/${this.id}`, type: 'Note', - startTime: moment.unix(this.start_datetime).locale(locale).format(), - endTime: moment.unix(this.end_datetime).locale(locale).format(), - location: { - name: this.place && this.place.name - }, - attachment, + // startTime: moment.unix(this.start_datetime).locale(locale).format(), + // endTime: moment.unix(this.end_datetime).locale(locale).format(), + // location: { + // name: this.place && this.place.name + // }, + // attachment, tag: tags && tags.map(tag => ({ type: 'Hashtag', name: '#' + tag, @@ -101,9 +101,9 @@ Event.prototype.toAP = function (username, locale, to = []) { })), published: this.createdAt, attributedTo: `${config.baseurl}/federation/u/${username}`, - to, - cc: [`${config.baseurl}/federation/u/${username}/followers`], - summary + to: 'https://www.w3.org/ns/activitystreams#Public', + // cc: [`${config.baseurl}/federation/u/${username}/followers`], + content } } diff --git a/server/federation/helpers.js b/server/federation/helpers.js index 2765732a..3d1bad5b 100644 --- a/server/federation/helpers.js +++ b/server/federation/helpers.js @@ -78,17 +78,19 @@ const Helpers = { const body = { id: `${config.baseurl}/federation/m/${event.id}#create`, type, - to: recipients[sharedInbox], - cc: ['https://www.w3.org/ns/activitystreams#Public', `${config.baseurl}/federation/u/${settingsController.settings.instance_name}/followers`], + to: ['https://www.w3.org/ns/activitystreams#Public'], + cc: [...recipients[sharedInbox], `${config.baseurl}/federation/u/${settingsController.settings.instance_name}/followers`], actor: `${config.baseurl}/federation/u/${settingsController.settings.instance_name}`, - object: event.toAP(settingsController.settings.instance_name, + object: event.toAPNote(settingsController.settings.instance_name, settingsController.settings.instance_locale, recipients[sharedInbox]) } body['@context'] = [ 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', - { Hashtag: 'as:Hashtag' }] + { + Hashtag: 'as:Hashtag' + }] Helpers.signAndSend(body, sharedInbox) } }, diff --git a/server/federation/index.js b/server/federation/index.js index fe87f5dd..70b1f1f6 100644 --- a/server/federation/index.js +++ b/server/federation/index.js @@ -37,7 +37,7 @@ router.get('/m/:event_id', async (req, res) => { const event = await Event.findByPk(req.params.event_id, { include: [User, Tag, Place] }) if (!event) { return res.status(404).send('Not found') } - return res.json(event.toAP(event.user.username, req.settings.locale)) + return res.json(event.toAPNote(event.user.username, req.settings.locale)) }) // get any message coming from federation diff --git a/server/federation/users.js b/server/federation/users.js index 27d9e70a..d1eeb42c 100644 --- a/server/federation/users.js +++ b/server/federation/users.js @@ -12,7 +12,6 @@ module.exports = { const name = req.params.name if (!name) { return res.status(400).send('Bad request.') } - // const user = await User.findOne({ where: { username: name } }) if (name !== req.settings.instance_name) { return res.status(404).send(`No record found for ${name}`) } const ret = { '@context': [ @@ -74,8 +73,8 @@ module.exports = { id: `${config.baseurl}/federation/u/${name}/followers`, type: 'OrderedCollection', totalItems: followers.length, - first: `${config.baseurl}/federation/u/${name}/followers?page=true`, - last: `${config.baseurl}/federation/u/${name}/followers?page=true`, + // first: `${config.baseurl}/federation/u/${name}/followers?page=true`, + // last: `${config.baseurl}/federation/u/${name}/followers?page=true`, orderedItems: followers.map(f => f.ap_id) }) } @@ -84,7 +83,7 @@ module.exports = { id: `${config.baseurl}/federation/u/${name}/followers?page=${page}`, type: 'OrderedCollectionPage', totalItems: followers.length, - partOf: `${config.baseurl}/federation/u/${name}/followers`, + // partOf: `${config.baseurl}/federation/u/${name}/followers`, orderedItems: followers.map(f => f.ap_id) }) }, @@ -92,35 +91,41 @@ module.exports = { async outbox (req, res) { // TODO const name = req.params.name - const page = req.query.page + // const page = req.query.page if (!name) { return res.status(400).send('Bad request.') } if (name !== req.settings.instance_name) { return res.status(404).send(`No record found for ${name}`) } const events = await Event.findAll({ include: [{ model: Tag, required: false }, Place] }) - debug('Inside outbox, should return all events from this user') + debug('Inside outbox, should return all events from this user -> ', events.length) // https://www.w3.org/TR/activitypub/#outbox res.type('application/activity+json; charset=utf-8') - if (!page) { - return res.json({ - '@context': 'https://www.w3.org/ns/activitystreams', - id: `${config.baseurl}/federation/u/${name}/outbox`, - type: 'OrderedCollection', - totalItems: events.length, - first: `${config.baseurl}/federation/u/${name}/outbox?page=true`, - last: `${config.baseurl}/federation/u/${name}/outbox?page=true` - }) - } + // if (!page) { + // return res.json({ + // '@context': 'https://www.w3.org/ns/activitystreams', + // id: `${config.baseurl}/federation/u/${name}/outbox`, + // type: 'OrderedCollection', + // totalItems: events.length, + // first: `${config.baseurl}/federation/u/${name}/outbox?page=true`, + // last: `${config.baseurl}/federation/u/${name}/outbox?page=true` + // }) + // } - debug('With pagination %s', page) + // debug('With pagination %s', page) return res.json({ - '@context': ['https://www.w3.org/ns/activitystreams', { Hashtag: 'as:Hashtag' }], - id: `${config.baseurl}/federation/u/${name}/outbox?page=${page}`, + '@context': [ + 'https://www.w3.org/ns/activitystreams', + 'https://w3id.org/security/v1', + { + hashtag: 'as:Hashtag' + } + ], + id: `${config.baseurl}/federation/u/${name}/outbox`, type: 'OrderedCollectionPage', totalItems: events.length, - partOf: `${config.baseurl}/federation/u/${name}/outbox`, + // partOf: `${config.baseurl}/federation/u/${name}/outbox`, orderedItems: events.map(e => ({ id: `${config.baseurl}/federation/m/${e.id}#create`, @@ -129,7 +134,7 @@ module.exports = { cc: [`${config.baseurl}/federation/u/${name}/followers`], published: e.createdAt, actor: `${config.baseurl}/federation/u/${name}`, - object: e.toAP(name, req.settings.locale) + object: e.toAPNote(name, req.settings.locale) })) }) } diff --git a/server/helpers.js b/server/helpers.js index ec04b5e3..3aa5e0ae 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -23,6 +23,8 @@ domPurify.addHook('beforeSanitizeElements', node => { if (node.hasAttribute && node.hasAttribute('href')) { const href = node.getAttribute('href') const text = node.textContent + + // remove FB tracking param if (href.includes('fbclid=')) { try { const url = new URL.URL(href) @@ -113,7 +115,9 @@ module.exports = { try { const response = await axios.get(URL) Microformats.get({ html: response.data, filter: ['h-event'] }, (err, data) => { - if (!data.items.length || !data.items[0].properties) return res.sendStatus(404) + if (err || !data.items.length || !data.items[0].properties) { + return res.sendStatus(404) + } const event = data.items[0].properties return res.json({ title: get(event, 'name[0]', ''), @@ -129,7 +133,7 @@ module.exports = { // const event = dom.window.document.querySelected(".h-event") // console.error(event) // console.error(response) - } catch(e){ + } catch (e) { console.error(e) } diff --git a/yarn.lock b/yarn.lock index 40931c10..530607ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -993,10 +993,10 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@eslint/eslintrc@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.0.tgz#bc7e3c4304d4c8720968ccaee793087dfb5fe6b4" - integrity sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ== +"@eslint/eslintrc@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" + integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -1863,17 +1863,17 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@webpack-cli/info@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.0.2.tgz#7ba1a7cfa9efa5b51e76b20ada88ac33b0340ad3" - integrity sha512-FEfLQwmN4pXZSYSrtp+KC84rFanoCIxXFpS2wUvviDCE2fnajwxw2GXzbj83IlH4Dl8Wq8kJjavVwvxv3YJmnw== +"@webpack-cli/info@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.1.0.tgz#c596d5bc48418b39df00c5ed7341bf0f102dbff1" + integrity sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ== dependencies: envinfo "^7.7.3" -"@webpack-cli/serve@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.0.1.tgz#28abe7dcb18224ccd4b4e2d37f70e5be66c3d6a9" - integrity sha512-WGMaTMTK6NOe29Hw1WBEok9vGLfKg5C6jWzNOS/6HH1YadR+RL+TRWRcSyc81Dzulljhk/Ree9mrDM4Np9GGOQ== +"@webpack-cli/serve@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.1.0.tgz#13ad38f89b6e53d1133bac0006a128217a6ebf92" + integrity sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -2040,7 +2040,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@^4.2.1, ansi-escapes@^4.3.1: +ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== @@ -3341,10 +3341,10 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" - integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== +commander@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" + integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== commondir@^1.0.1: version "1.0.1" @@ -3927,10 +3927,10 @@ dayjs@^1.8.16: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.31.tgz#0cd1114c2539dd5ad9428be0c38df6d4bb40b9d3" integrity sha512-mPh1mslned+5PuIuiUfbw4CikHk6AEAf2Baxih+wP5fssv+wmlVhvgZ7mq+BhLt7Sr/Hc8leWDiwe6YnrpNt3g== -dayjs@^1.9.4: - version "1.9.4" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.4.tgz#fcde984e227f4296f04e7b05720adad2e1071f1b" - integrity sha512-ABSF3alrldf7nM9sQ2U+Ln67NRwmzlLOqG7kK03kck0mw3wlSSEKv/XhKGGxUjQcS57QeiCyNdrFgtj9nWlrng== +dayjs@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.5.tgz#fd49994ebe71639d2ce9575e97186642dfce9808" + integrity sha512-WULIw7UpW/E0y6VywewpbXAMH3d5cZijEhoHLwM+OMVbk/NtchKS/W+57H/0P1rqU7gHrAArjiRLHCUhgMQl6w== de-indent@^1.0.2: version "1.0.2" @@ -4240,10 +4240,10 @@ domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" -dompurify@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.0.tgz#51d34e76faa38b5d6b4e83a0678530f27fe3965c" - integrity sha512-bqFOQ7XRmmozp0VsKdIEe8UwZYxj0yttz7l80GBtBqdVRY48cOpXH2J/CVO7AEkV51qY0EBVXfilec18mdmQ/w== +dompurify@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.2.tgz#cb8c2b1a2f3c8a0b565127504ae4eedec176a972" + integrity sha512-BsGR4nDLaC5CNBnyT5I+d5pOeaoWvgVeg6Gq/aqmKYWMPR07131u60I80BvExLAJ0FQEIBQ1BTicw+C5+jOyrg== domutils@1.5.1: version "1.5.1" @@ -4426,7 +4426,7 @@ enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@^2.3.4, enquirer@^2.3.5: +enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -4596,10 +4596,10 @@ eslint-ast-utils@^1.1.0: lodash.get "^4.4.2" lodash.zip "^4.2.0" -eslint-config-prettier@^6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz#390e7863a8ae99970981933826476169285b3a27" - integrity sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ== +eslint-config-prettier@^6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" + integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== dependencies: get-stdin "^6.0.0" @@ -4608,10 +4608,10 @@ eslint-config-standard@^14.1.1: resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== -eslint-config-standard@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-15.0.0.tgz#459f823b47ac0541b0a22b1d0a161a9da543f687" - integrity sha512-MZ8KRhUJLtMbjQo9PsEzFG29vqbQJfLoLBHrTaAaFMtDx9PIm1GZgyUanOLgf1xOE1aWrtZZSbxBYCy8dJCCBg== +eslint-config-standard@^16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.1.tgz#9a385eea27f96b7918cb53f07e01e9d10cc56401" + integrity sha512-WBBiQQZdaPyL+4sPkGWhWrHCDtvJoU195B9j8yXE9uFQnX34gMXI5CeBRm95gx3PMEZPM5OpwET10hH4F4SxCA== eslint-import-resolver-node@^0.3.4: version "0.3.4" @@ -4806,13 +4806,13 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.12.0: - version "7.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.0.tgz#7b6a85f87a9adc239e979bb721cde5ce0dc27da6" - integrity sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA== +eslint@^7.12.1: + version "7.12.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.1.tgz#bd9a81fa67a6cfd51656cdb88812ce49ccec5801" + integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.2.0" + "@eslint/eslintrc" "^0.2.1" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -4970,10 +4970,10 @@ execa@^3.4.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -6092,10 +6092,10 @@ iconv-lite@0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ics@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/ics/-/ics-2.26.0.tgz#67c17d6bcac02b1547cc97bfbe3b99f057900b39" - integrity sha512-j9ffwzVlO4h7iXP0V/3ma55fT+mnk9fS2NsIo9tu0SAnJ9B92qTeJ7r23nscBkNEfzy6yCXBm+3cI6CeFFG24A== +ics@^2.26.1: + version "2.26.1" + resolved "https://registry.yarnpkg.com/ics/-/ics-2.26.1.tgz#3d1228df16263f8e51e975ca40a6a51d19bdebc5" + integrity sha512-C2tspVID1sINpeVea0HMuZeMCHdRBiUHNAWG4P7EuSIrDZ6M/cOe48MTF2a36DCOqEld7LDKkLNDFVnGbGPepA== dependencies: "@hapi/joi" "^17.1.1" uuid "^3.3.3" @@ -6269,7 +6269,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -interpret@^2.0.0: +interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== @@ -7007,6 +7007,11 @@ less@^3.12.2: native-request "^1.0.5" source-map "~0.6.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -8797,10 +8802,10 @@ pg-int8@1.0.1: resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -pg-pool@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.1.tgz#5f4afc0f58063659aeefa952d36af49fa28b30e0" - integrity sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA== +pg-pool@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.2.tgz#a560e433443ed4ad946b84d774b3f22452694dff" + integrity sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA== pg-protocol@^1.3.0: version "1.3.0" @@ -8818,15 +8823,15 @@ pg-types@^2.1.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" -pg@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.1.tgz#06cfb6208ae787a869b2f0022da11b90d13d933e" - integrity sha512-NRsH0aGMXmX1z8Dd0iaPCxWUw4ffu+lIAmGm+sTCwuDDWkpEgRCAHZYDwqaNhC5hG5DRMOjSUFasMWhvcmLN1A== +pg@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.2.tgz#2aa58166a23391e91d56a7ea57c6d99931c0642a" + integrity sha512-E9FlUrrc7w3+sbRmL1CSw99vifACzB2TjhMM9J5w9D1LIg+6un0jKkpHS1EQf2CWhKhec2bhrBLVMmUBDbjPRQ== dependencies: buffer-writer "2.0.0" packet-reader "1.0.0" pg-connection-string "^2.4.0" - pg-pool "^3.2.1" + pg-pool "^3.2.2" pg-protocol "^1.3.0" pg-types "^2.1.0" pgpass "1.x" @@ -10674,10 +10679,10 @@ safe-regex@^2.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.4.tgz#ec7181096947d078d60a1d76d527f47c19b151d8" - integrity sha512-zhdZ8qvZM4iL5XjLVEjJLvKWvC+MB+hHgzL2x/Nf7UHpUNmPYsJvypW79bW39g4LZ603dH/dRSsRYzJJIljtdA== +sass-loader@^10.0.5: + version "10.0.5" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.5.tgz#f53505b5ddbedf43797470ceb34066ded82bb769" + integrity sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w== dependencies: klona "^2.0.4" loader-utils "^2.0.0" @@ -10703,10 +10708,10 @@ sass@^1.26.5: dependencies: chokidar ">=2.0.0 <4.0.0" -sass@^1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.27.0.tgz#0657ff674206b95ec20dc638a93e179c78f6ada2" - integrity sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig== +sass@^1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.29.0.tgz#ec4e1842c146d8ea9258c28c141b8c2b7c6ab7f1" + integrity sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA== dependencies: chokidar ">=2.0.0 <4.0.0" @@ -12268,11 +12273,16 @@ uuid@^8.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: +v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +v8-compile-cache@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + valid-data-url@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" @@ -12539,23 +12549,23 @@ webpack-bundle-analyzer@^3.9.0: opener "^1.5.1" ws "^6.0.0" -webpack-cli@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.1.0.tgz#3a8fe05326015cc92b67abea68e3c320d418b16e" - integrity sha512-NdhxXMZmoik62Y05t0h1y65LjBM7BwFPq311ihXuMM3RY6dlc4KkCTyHLzTuBEc+bqq6d3xh+CWmU0xRexNJBA== +webpack-cli@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.2.0.tgz#10a09030ad2bd4d8b0f78322fba6ea43ec56aaaa" + integrity sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA== dependencies: - "@webpack-cli/info" "^1.0.2" - "@webpack-cli/serve" "^1.0.1" - ansi-escapes "^4.3.1" + "@webpack-cli/info" "^1.1.0" + "@webpack-cli/serve" "^1.1.0" colorette "^1.2.1" command-line-usage "^6.1.0" - commander "^6.0.0" - enquirer "^2.3.4" - execa "^4.0.0" + commander "^6.2.0" + enquirer "^2.3.6" + execa "^4.1.0" import-local "^3.0.2" - interpret "^2.0.0" + interpret "^2.2.0" + leven "^3.1.0" rechoir "^0.7.0" - v8-compile-cache "^2.1.0" + v8-compile-cache "^2.2.0" webpack-merge "^4.2.2" webpack-dev-middleware@^3.7.2: