diff --git a/package.json b/package.json index b9a0d5af..6e8df4c2 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ ".nuxt/" ], "dependencies": { - "@nuxtjs/auth": "^4.8.2", + "@nuxtjs/auth": "^4.8.3", "@nuxtjs/axios": "^5.6.0", "accept-language": "^3.0.18", "axios": "^0.19.0", @@ -51,9 +51,10 @@ "cross-env": "^5.2.1", "dayjs": "^1.8.16", "element-ui": "^2.12.0", - "email-templates": "^6.0.0", + "email-templates": "^6.0.2", "express": "^4.17.1", "express-jwt": "^5.3.1", + "express-middleware-log": "^1.2.0", "http-signature": "^1.2.0", "ics": "^2.16.0", "inquirer": "^7.0.0", @@ -68,7 +69,7 @@ "nuxt-express-module": "^0.0.11", "pg": "^7.12.1", "sass-loader": "^8.0.0", - "sequelize": "^5.18.1", + "sequelize": "^5.18.4", "sequelize-cli": "^5.5.1", "sharp": "^0.23.0", "sqlite3": "^4.1.0", @@ -83,7 +84,7 @@ "@nuxtjs/eslint-config": "^1.1.2", "babel-eslint": "^10.0.3", "eslint": "^6.3.0", - "eslint-config-prettier": "^6.2.0", + "eslint-config-prettier": "^6.3.0", "eslint-config-standard": ">=14.1.0", "eslint-loader": "^3.0.0", "eslint-plugin-import": ">=2.17.3", diff --git a/server/api/models/event.js b/server/api/models/event.js index be2c085e..29944938 100644 --- a/server/api/models/event.js +++ b/server/api/models/event.js @@ -37,13 +37,13 @@ module.exports = (sequelize, DataTypes) => { } // - event.prototype.toAP = function (username = config.admin, follower) { + event.prototype.toAP = function (username, follower = []) { const tags = this.tags && this.tags.map(t => '#' + t.tag).join(' ') - const content = `${this.title}
+ const content = `${this.title}
📍${this.place.name}
⏰ ${moment.unix(this.start_datetime).format('dddd, D MMMM (HH:mm)')}

${this.description.length > 200 ? this.description.substr(0, 200) + '...' : this.description}
- ${tags}
` + ${tags}
` const attachment = [] if (this.image_path) { diff --git a/server/federation/follows.js b/server/federation/follows.js index f686439e..4fe8facf 100644 --- a/server/federation/follows.js +++ b/server/federation/follows.js @@ -2,7 +2,7 @@ const config = require('config') const Helpers = require('./helpers') const { user: User } = require('../api/models') const crypto = require('crypto') -const debug = require('debug')('fedivers:follows') +const debug = require('debug')('federation:follows') module.exports = { // follow request from fediverse diff --git a/server/federation/helpers.js b/server/federation/helpers.js index 1693d1a1..c780c6d0 100644 --- a/server/federation/helpers.js +++ b/server/federation/helpers.js @@ -3,7 +3,7 @@ const fetch = require('node-fetch') const crypto = require('crypto') const config = require('config') const httpSignature = require('http-signature') -const debug = require('debug')('fediverse:helpers') +const debug = require('debug')('federation:helpers') const { user: User } = require('../api/models') const url = require('url') @@ -26,7 +26,7 @@ const Helpers = { const signature = signer.sign(privkey) const signature_b64 = signature.toString('base64') const header = `keyId="${config.baseurl}/federation/u/${user.username}",headers="(request-target) host date",signature="${signature_b64}"` - return await fetch(toInbox, { + const ret = await fetch(toInbox, { headers: { 'Host': toOrigin.hostname, 'Date': d.toUTCString(), @@ -36,6 +36,7 @@ const Helpers = { }, method: 'POST', body: JSON.stringify(message) }) + debug('sign %s => %s', ret.status, await ret.text()) }, async sendEvent (event, user) { @@ -48,35 +49,40 @@ const Helpers = { } for (const follower of instanceAdmin.followers) { - debug('Notify %s with event %s', follower, event.title) - const body = { - id: `${config.baseurl}/federation/m/c_${event.id}`, - type: 'Create', - actor: `${config.baseurl}/federation/u/${instanceAdmin.username}`, - url: `${config.baseurl}/federation/m/${event.id}`, - object: event.toAP(instanceAdmin.username, follower) - } - body['@context'] = 'https://www.w3.org/ns/activitystreams' - Helpers.signAndSend(body, user, follower) - } - - // in case the event is published by the Admin itself do not republish - if (instanceAdmin.id === user.id) { - debug('') - return - } - - if (!user.settings.enable_federation || !user.username) { return } - for (const follower of user.followers) { - debug('Notify %s with event %s', follower, event.title) + debug('Notify %s with event %s (from admin user %s)', follower, event.title, instanceAdmin.username) const body = { id: `${config.baseurl}/federation/m/${event.id}#create`, type: 'Create', to: ['https://www.w3.org/ns/activitystreams#Public'], - cc: [`${config.baseurl}/federation/u/${user.username}/followers`], + cc: [`${config.baseurl}/federation/u/${instanceAdmin.username}/followers`, follower], + actor: `${config.baseurl}/federation/u/${instanceAdmin.username}`, + object: event.toAP(instanceAdmin.username, [`${config.baseurl}/federation/u/${instanceAdmin.username}/followers`, follower]) + } + body['@context'] = 'https://www.w3.org/ns/activitystreams' + Helpers.signAndSend(body, instanceAdmin, follower) + } + + // in case the event is published by the Admin itself do not republish + if (instanceAdmin.id === user.id) { + debug('Event published by instance Admin') + return + } + + if (!user.settings.enable_federation || !user.username) { + debug('Federation disabled for user %d (%s)', user.id, user.username) + return + } + + for (const follower of user.followers) { + debug('Notify %s with event %s (from user %s)', follower, event.title, user.username) + const body = { + id: `${config.baseurl}/federation/m/${event.id}#create`, + type: 'Create', + to: ['https://www.w3.org/ns/activitystreams#Public'], + cc: [`${config.baseurl}/federation/u/${user.username}/followers`, follower], published: event.createdAt, actor: `${config.baseurl}/federation/u/${user.username}`, - object: event.toAP(user.username, follower) + object: event.toAP(user.username, [`${config.baseurl}/federation/u/${user.username}/followers`, follower]) } body['@context'] = 'https://www.w3.org/ns/activitystreams' Helpers.signAndSend(body, user, follower) diff --git a/server/federation/users.js b/server/federation/users.js index 8fb2abab..4e9a1df4 100644 --- a/server/federation/users.js +++ b/server/federation/users.js @@ -28,7 +28,7 @@ module.exports = { }], icon: { type: 'Image', - mediaType: 'image/jpeg', + mediaType: 'image/x-icon', url: config.baseurl + '/favicon.ico' }, publicKey: { diff --git a/yarn.lock b/yarn.lock index c7717c48..370d3c3e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -708,6 +708,13 @@ resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw== +"@hapi/boom@^7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-7.4.3.tgz#79ffed6ef8c625046a3bd069abed5a9d35fc50c1" + integrity sha512-3di+R+BcGS7HKy67Zi6mIga8orf67GdR0ubDEVBG1oqz3y9B70LewsuCMCSvWWLKlI6V1+266zqhYzjMrPGvZw== + dependencies: + "@hapi/hoek" "8.x.x" + "@hapi/hoek@6.x.x": version "6.2.4" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595" @@ -740,21 +747,22 @@ dependencies: "@hapi/hoek" "8.x.x" -"@ladjs/i18n@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ladjs/i18n/-/i18n-1.1.0.tgz#50a20cbcd3f0f0d880be9dea873e3efec3b6b02c" - integrity sha512-Kynr5osjApDCyiik35MMNZC1lgjgrk7fbV6P1qHXKQ67sR/U85Ddnv1NNPc/2s08PQVjvIBNY96UACb0CivrWg== +"@ladjs/i18n@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@ladjs/i18n/-/i18n-1.2.1.tgz#74478f3495e2f6b1684e58ff043c040954c6ff35" + integrity sha512-rlo8e+2UIylCo/KiZuxd/DJsyGZ1XMFFJaxxVXMj6BO2qyfjB91pjCpIQxUmpSWddWQlPKxsm85avr1o2RG9Uw== dependencies: - auto-bind "^2.0.0" - boolean "^0.2.0" - boom "7.3.0" + "@hapi/boom" "^7.4.3" + auto-bind "^2.1.0" + boolean "^1.0.0" country-language "^0.1.7" + debug "^4.1.1" i18n "^0.8.3" i18n-locales "^0.0.2" - lodash "^4.17.11" - moment "^2.23.0" - qs "^6.6.0" - underscore.string "^3.3.5" + lodash "^4.17.15" + moment "^2.24.0" + qs "^6.8.0" + titleize "^2.1.0" "@nuxt/babel-preset-app@2.9.2": version "2.9.2" @@ -997,30 +1005,20 @@ webpack-node-externals "^1.7.2" webpackbar "^4.0.0" -"@nuxtjs/auth@^4.8.2": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@nuxtjs/auth/-/auth-4.8.2.tgz#0276fe3a4291b61ec0b7fd4328d43a118d47f603" - integrity sha512-LG+71qTGxValqDyhG1Zou5YyJSMQtMq4MaXd0gXsFFYlsPDEyysYtidoAG+LhUsO9grmAwWTvcqkXO2d94LNUg== +"@nuxtjs/auth@^4.8.3": + version "4.8.3" + resolved "https://registry.yarnpkg.com/@nuxtjs/auth/-/auth-4.8.3.tgz#037509e0dea0329c9dae7be4f743cd9ff701efa5" + integrity sha512-t9RsEH/IdEl+tzR3qOV6lQlXv0sqD4CTdtJnpseVL7lBn1f1cKGGyDXsWdhOWiIKeLu7tl9HFzKXfKCQTNKzgA== dependencies: - "@nuxtjs/axios" "^5.5.4" + "@nuxtjs/axios" "^5.6.0" body-parser "^1.19.0" - consola "^2.9.0" + consola "^2.10.1" cookie "^0.4.0" dotprop "^1.2.0" is-https "^1.0.0" - js-cookie "^2.2.0" + js-cookie "^2.2.1" lodash "^4.17.15" - nanoid "^2.0.3" - -"@nuxtjs/axios@^5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@nuxtjs/axios/-/axios-5.5.4.tgz#c4aee2322901b19d4072670c03144662a73ea6f4" - integrity sha512-/Ljsyh5VIc9paXGrQue7RQ+PpBNES1oit0g4l+ya1tfyKnZMpHSbghuLcv0xq+BpXlSEr690uemHbz54/N6U5w== - dependencies: - "@nuxtjs/proxy" "^1.3.3" - axios "^0.19.0" - axios-retry "^3.1.2" - consola "^2.7.1" + nanoid "^2.1.0" "@nuxtjs/axios@^5.6.0": version "5.6.0" @@ -1063,10 +1061,10 @@ mustache "^2.3.0" stack-trace "0.0.10" -"@sindresorhus/is@^0.17.1": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.17.1.tgz#453b27750f358689c4aa3c9f32d9ace1f0929a79" - integrity sha512-kg/maAZD2Z2AHDFp7cY/ACokjUL0e7MaupTtGXkSW2SV4DJQEHdslFUioP0SMccotjwqTdI0b4XH/qZh6CN+kQ== +"@sindresorhus/is@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-1.0.0.tgz#4f475ff3f32b0a309b7faffd33328e93d7953330" + integrity sha512-3rlOB53XCVO7LfjXFx4bCGrZPPjkgYD7pP0E/yo4d57H32aYqD/QNmeXcVnx7CM5SxGScwl2P0b1kCDYZgNWqw== "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.7" @@ -1715,7 +1713,7 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -auto-bind@^2.0.0, auto-bind@^2.1.0: +auto-bind@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-2.1.0.tgz#254e12d53063d7cab90446ce021accfb3faa1464" integrity sha512-qZuFvkes1eh9lB2mg8/HG18C+5GIO51r+RrCSst/lh+i5B1CtVlkhTE488M805Nr3dKl0sM/pIFKSKUIlg3zUg== @@ -1933,7 +1931,7 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.3, bluebird@^3.5.5: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== @@ -1964,17 +1962,10 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boolean@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-0.2.0.tgz#808dff32ce1c87b828cc381428dc3b158d4f85cb" - integrity sha512-mDcM3ChboDuhv4glLXEH1us7jMiWXRSs3R13Okoo+kkFOlLIjvF1y88507wTfDf9zsuv0YffSDFUwX95VAT/mg== - -boom@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-7.3.0.tgz#733a6d956d33b0b1999da3fe6c12996950d017b9" - integrity sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A== - dependencies: - hoek "6.x.x" +boolean@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-1.0.0.tgz#45764b4aac187a050995b0a33d7579b6759f0dfd" + integrity sha512-IB1lgIywn37N9Aff8CciCblVpMUflgL42vyxPUH0IvaDdIi/QwBHKv1lq/HOkATHCfa7c4MbMYJ7Bo7hGuoI+w== bootstrap@^4.3.1: version "4.3.1" @@ -2723,7 +2714,7 @@ consola@^2.10.0, consola@^2.10.1: resolved "https://registry.yarnpkg.com/consola/-/consola-2.10.1.tgz#4693edba714677c878d520e4c7e4f69306b4b927" integrity sha512-4sxpH6SGFYLADfUip4vuY65f/gEogrzJoniVhNUYkJHtng0l8ZjnDCqxxrSVRHOHwKxsy8Vm5ONZh1wOR3/l/w== -consola@^2.5.6, consola@^2.6.0, consola@^2.7.1, consola@^2.9.0: +consola@^2.5.6, consola@^2.6.0, consola@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/consola/-/consola-2.9.0.tgz#57760e3a65a53ec27337f4add31505802d902278" integrity sha512-34Iue+LRcWbndFIfZc5boNizWlsrRjqIBJZTe591vImgbnq7nx2EzlrLtANj9TH2Fxm7puFJBJAOk5BhvZOddQ== @@ -3569,21 +3560,21 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -email-templates@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-6.0.0.tgz#cc235d49c967f16a15488906dd796f748f2a7531" - integrity sha512-NzneEyM+J/DpMY7hK4Ii1HBmiX/BTQyAf8OEZh1yU+O9uYMgnJr+JvpAxLkqRxeWeA0dT2IV5K+6UcF/jMJk7Q== +email-templates@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-6.0.2.tgz#8e71d5a65b51de32a80f36a37bcd4fead0d5c70a" + integrity sha512-eRM3HM6KVDkKhnLTt8sTpg3kFqG/4E/PVNJi3PtYtfVX+LSnd399f3tvRu9XyMu8jVisX3fXAAkvwBIevkwkAA== dependencies: - "@ladjs/i18n" "^1.1.0" - "@sindresorhus/is" "^0.17.1" + "@ladjs/i18n" "^1.2.0" + "@sindresorhus/is" "^1.0.0" auto-bind "^2.1.0" consolidate "^0.15.1" debug "^4.1.1" - get-paths "^0.0.4" + get-paths "^0.0.7" html-to-text "^5.1.1" juice "^5.2.0" - lodash "^4.17.11" - nodemailer "^6.2.1" + lodash "^4.17.15" + nodemailer "^6.3.0" pify "^4.0.1" preview-email "^1.0.1" @@ -3741,10 +3732,10 @@ eslint-ast-utils@^1.0.0: lodash.get "^4.4.2" lodash.zip "^4.2.0" -eslint-config-prettier@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.2.0.tgz#80e0b8714e3f6868c4ac2a25fbf39c02e73527a7" - integrity sha512-VLsgK/D+S/FEsda7Um1+N8FThec6LqE3vhcMyp8mlmto97y3fGf3DX7byJexGuOb1QY0Z/zz222U5t+xSfcZDQ== +eslint-config-prettier@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.3.0.tgz#e73b48e59dc49d950843f3eb96d519e2248286a3" + integrity sha512-EWaGjlDAZRzVFveh2Jsglcere2KK5CJBhkNSa1xs3KfMUGdRiT7lG089eqPdvlzWHpAqaekubOsOMu8W8Yk71A== dependencies: get-stdin "^6.0.0" @@ -4532,15 +4523,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -4623,13 +4605,12 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-paths@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/get-paths/-/get-paths-0.0.4.tgz#0a053ca424bab976383ce49929528ad642e2a0df" - integrity sha512-+AxlfMGN7FuJr2zhT6aErH08HMKkRwynTTHtWCenIWkIZgx2OlkZKgt7SM4+rh8Dfi32lo6HcvqeTLxph3kjQw== +get-paths@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/get-paths/-/get-paths-0.0.7.tgz#15331086752077cf130166ccd233a1cdbeefcf38" + integrity sha512-0wdJt7C1XKQxuCgouqd+ZvLJ56FQixKoki9MrFaO4EriqzXOiH9gbukaDE1ou08S8Ns3/yDzoBAISNPqj6e6tA== dependencies: - bluebird "^3.5.1" - fs-extra "^4.0.2" + pify "^4.0.1" get-stdin@^6.0.0: version "6.0.0" @@ -4942,11 +4923,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@6.x.x: - version "6.1.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.3.tgz#73b7d33952e01fe27a38b0457294b79dd8da242c" - integrity sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ== - homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -5710,10 +5686,10 @@ js-beautify@^1.8.8: mkdirp "~0.5.1" nopt "~4.0.1" -js-cookie@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.0.tgz#1b2c279a6eece380a12168b92485265b35b1effb" - integrity sha1-Gywnmm7s44ChIWi5JIUmWzWx7/s= +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== js-levenshtein@^1.1.3: version "1.1.6" @@ -6568,7 +6544,7 @@ moment-timezone@^0.5.21: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.23.0, moment@^2.24.0: +"moment@>= 2.9.0", moment@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== @@ -6650,10 +6626,10 @@ nan@^2.12.1, nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== -nanoid@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.0.3.tgz#dde999e173bc9d7bd2ee2746b89909ade98e075e" - integrity sha512-NbaoqdhIYmY6FXDRB4eYtDVC9Z9eCbn8TyaiC16LNKtpPv/aqa0tOPD8y6gNE4yUNnaZ7LLhYtXOev/6+cBtfw== +nanoid@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.1.tgz#524fd4acd45c126e0c87cd43ab5ee8346e695df9" + integrity sha512-0YbJdaL4JFoejIOoawgLcYValFGJ2iyUuVDIWL3g8Es87SSOWFbWdRUMV3VMSiyPs3SQ3QxCIxFX00q5DLkMCw== nanomatch@^1.2.9: version "1.2.13" @@ -6814,7 +6790,7 @@ node-res@^5.0.1: on-finished "^2.3.0" vary "^1.1.2" -nodemailer@^6.2.1: +nodemailer@^6.2.1, nodemailer@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.3.0.tgz#a89b0c62d3937bdcdeecbf55687bd7911b627e12" integrity sha512-TEHBNBPHv7Ie/0o3HXnb7xrPSSQmH1dXwQKRaMKDBGt/ZN54lvDVujP6hKkO/vjkIYL9rK8kHSG11+G42Nhxuw== @@ -8507,11 +8483,16 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.7.0, qs@^6.6.0: +qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.8.0.tgz#87b763f0d37ca54200334cd57bb2ef8f68a1d081" + integrity sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w== + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -9103,10 +9084,10 @@ sequelize-pool@^2.3.0: resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-2.3.0.tgz#64f1fe8744228172c474f530604b6133be64993d" integrity sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA== -sequelize@^5.18.1: - version "5.18.1" - resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-5.18.1.tgz#31d5246dcdf01d0ac317454c28fb598359d5b60a" - integrity sha512-jngo7pqilyOycMv6ZEwHLVn2wuHi/xkSQZfwK4jhjG8ta1HWYJK3XyQDFdhVEOH1GEq9pnqaf+7Kwqm+eqXD9Q== +sequelize@^5.18.4: + version "5.18.4" + resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-5.18.4.tgz#1e2c7eabe4c554fa257a0115fad39f271bd56150" + integrity sha512-bBmJqpO1H8Z7L0xzITqVo5KHXFI7GmKfGl/5SIPDKsuUMbuZT98s+gyGeaLXpOWGH1ZUO79hvJ8z74vNcxBWHg== dependencies: bluebird "^3.5.0" cls-bluebird "^2.1.0" @@ -9420,7 +9401,7 @@ split@^1.0.0: dependencies: through "2" -sprintf-js@>=1.0.3, sprintf-js@^1.0.3: +sprintf-js@>=1.0.3: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== @@ -9868,6 +9849,11 @@ tiny-emitter@^2.0.0: resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== +titleize@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-2.1.0.tgz#5530de07c22147a0488887172b5bd94f5b30a48f" + integrity sha512-m+apkYlfiQTKLW+sI4vqUkwMEzfgEUEYSqljx1voUE3Wz/z1ZsxyzSxvH2X8uKVrOp7QkByWt0rA6+gvhCKy6g== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -10097,14 +10083,6 @@ underscore.deep@~0.5.1: resolved "https://registry.yarnpkg.com/underscore.deep/-/underscore.deep-0.5.1.tgz#072671f48d68735c34223fcfef63e69e5276cc2b" integrity sha1-ByZx9I1oc1w0Ij/P72PmnlJ2zCs= -underscore.string@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" - integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== - dependencies: - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" - underscore@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" @@ -10274,7 +10252,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=