From 179810a939bcb3bcfd2d20d5c1e8923eb52bfa93 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" Date: Tue, 11 Dec 2018 23:05:23 +0000 Subject: [PATCH 01/25] Update nodemon to version 1.18.8 --- desktop/package.json | 2 +- desktop/yarn.lock | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index dad13910e7..1d0aac3c66 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -20,7 +20,7 @@ "devDependencies": { "electron": "^3.0.10", "electron-builder": "^20.36.2", - "nodemon": "^1.18.7", + "nodemon": "^1.18.8", "rimraf": "^2.6.2" }, "scripts": { diff --git a/desktop/yarn.lock b/desktop/yarn.lock index 322f1e3ad6..110a5328ef 100644 --- a/desktop/yarn.lock +++ b/desktop/yarn.lock @@ -1909,21 +1909,21 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -nodemon@^1.18.7: - version "1.18.7" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.7.tgz#716b66bf3e89ac4fcfb38a9e61887a03fc82efbb" - integrity sha512-xuC1V0F5EcEyKQ1VhHYD13owznQbUw29JKvZ8bVH7TmuvVNHvvbp9pLgE4PjTMRJVe0pJ8fGRvwR2nMiosIsPQ== +nodemon@^1.18.8: + version "1.18.8" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.8.tgz#eb4c0052dc81395bdc503f3c8ae3cba86ca7146a" + integrity sha512-CgC/JdCf+CT7Z+K6wWaV30t8GU1DPtXpr/6PuXC1/LboXCmUQNKOaz0AEMjoWDTt2AdHOBFxgv41dyC0i79SbA== dependencies: chokidar "^2.0.4" debug "^3.1.0" ignore-by-default "^1.0.1" minimatch "^3.0.4" - pstree.remy "^1.1.2" + pstree.remy "^1.1.3" semver "^5.5.0" supports-color "^5.2.0" touch "^3.1.0" undefsafe "^2.0.2" - update-notifier "^2.3.0" + update-notifier "^2.5.0" nopt@^4.0.1: version "4.0.1" @@ -2275,10 +2275,10 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== -pstree.remy@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.2.tgz#4448bbeb4b2af1fed242afc8dc7416a6f504951a" - integrity sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA== +pstree.remy@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.4.tgz#a03d5dbc06ba639fb6dd4874644c4bad9882ec21" + integrity sha512-3kSyTN/iTJMxtL87idnFgTyOp2vQ6B/49QcHUO26kh2M2qahlUivFI1zWJ9FRFPoB+KgcP820JMOuIhkBJAP3Q== punycode@^1.4.1: version "1.4.1" @@ -2990,7 +2990,7 @@ upath@^1.0.5: resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== -update-notifier@^2.3.0, update-notifier@^2.5.0: +update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== From 81d0a1ef6f9e218bad61f96d9751f6f42eaa6931 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Tue, 11 Dec 2018 17:33:45 -0800 Subject: [PATCH 02/25] Silence hermes consoles --- hermes/send-email.js | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/hermes/send-email.js b/hermes/send-email.js index 580df27e1f..a14d441feb 100644 --- a/hermes/send-email.js +++ b/hermes/send-email.js @@ -80,24 +80,12 @@ const sendEmail = (options: Options) => { // $FlowFixMe return new Promise((res, rej) => { - sg.send( - { - ...defaultOptions, - templateId, - to, - dynamic_template_data, - }, - async (res, err) => { - if (err) { - console.error('Error sending email:'); - console.error(err); - return rej(err); - } - - res(); - debug(`email to ${to} sent successfully`); - } - ); + sg.send({ + ...defaultOptions, + templateId, + to, + dynamic_template_data, + }); }); }; From 70b45348c2cd85cb1bd819559708d5ae43afdfa9 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Tue, 11 Dec 2018 17:50:46 -0800 Subject: [PATCH 03/25] Console log hermes instead of debug --- ...end-admin-active-community-report-email.js | 4 ++-- .../send-admin-community-created-email.js | 4 ++-- .../queues/send-admin-slack-import-email.js | 4 ++-- .../queues/send-admin-toxic-content-email.js | 4 ++-- .../queues/send-admin-user-reported-email.js | 4 ++-- ...ser-spamming-threads-notification-email.js | 4 ++-- ...nd-administrator-email-validation-email.js | 4 ++-- hermes/queues/send-community-invite-email.js | 4 ++-- hermes/queues/send-digest-email.js | 4 ++-- hermes/queues/send-email-validation-email.js | 4 ++-- hermes/queues/send-mention-message-email.js | 4 ++-- hermes/queues/send-mention-thread-email.js | 4 ++-- .../send-new-community-welcome-email.js | 4 ++-- .../queues/send-new-direct-message-email.js | 4 ++-- hermes/queues/send-new-message-email.js | 4 ++-- hermes/queues/send-new-thread-email.js | 4 ++-- ...-private-channel-request-approved-email.js | 4 ++-- ...send-private-channel-request-sent-email.js | 4 ++-- ...rivate-community-request-approved-email.js | 4 ++-- ...nd-private-community-request-sent-email.js | 4 ++-- hermes/queues/send-user-welcome-email.js | 4 ++-- hermes/queues/sendgrid-webhook-events.js | 4 ++-- hermes/send-email.js | 24 +++++-------------- 23 files changed, 50 insertions(+), 62 deletions(-) diff --git a/hermes/queues/send-admin-active-community-report-email.js b/hermes/queues/send-admin-active-community-report-email.js index 6a7a5ac19f..c892f9ae88 100644 --- a/hermes/queues/send-admin-active-community-report-email.js +++ b/hermes/queues/send-admin-active-community-report-email.js @@ -44,8 +44,8 @@ export default (job: Job) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-community-created-email.js b/hermes/queues/send-admin-community-created-email.js index 4cd6b4cbd4..f1c334c812 100644 --- a/hermes/queues/send-admin-community-created-email.js +++ b/hermes/queues/send-admin-community-created-email.js @@ -25,8 +25,8 @@ export default job => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-slack-import-email.js b/hermes/queues/send-admin-slack-import-email.js index 06ec54a139..0aff465fc5 100644 --- a/hermes/queues/send-admin-slack-import-email.js +++ b/hermes/queues/send-admin-slack-import-email.js @@ -30,8 +30,8 @@ export default job => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-toxic-content-email.js b/hermes/queues/send-admin-toxic-content-email.js index 3947f7ddb6..96186a725d 100644 --- a/hermes/queues/send-admin-toxic-content-email.js +++ b/hermes/queues/send-admin-toxic-content-email.js @@ -47,8 +47,8 @@ export default job => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-user-reported-email.js b/hermes/queues/send-admin-user-reported-email.js index 3b6b96252d..b868f83746 100644 --- a/hermes/queues/send-admin-user-reported-email.js +++ b/hermes/queues/send-admin-user-reported-email.js @@ -34,8 +34,8 @@ export default async (job: Job) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-user-spamming-threads-notification-email.js b/hermes/queues/send-admin-user-spamming-threads-notification-email.js index 16dbae5806..e92adb951f 100644 --- a/hermes/queues/send-admin-user-spamming-threads-notification-email.js +++ b/hermes/queues/send-admin-user-spamming-threads-notification-email.js @@ -50,8 +50,8 @@ export default (job: Job) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-administrator-email-validation-email.js b/hermes/queues/send-administrator-email-validation-email.js index c0757bd8d1..b542e25462 100644 --- a/hermes/queues/send-administrator-email-validation-email.js +++ b/hermes/queues/send-administrator-email-validation-email.js @@ -53,8 +53,8 @@ export default async (job: Job) => { userId, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } } diff --git a/hermes/queues/send-community-invite-email.js b/hermes/queues/send-community-invite-email.js index 43b75e5265..288c7d193f 100644 --- a/hermes/queues/send-community-invite-email.js +++ b/hermes/queues/send-community-invite-email.js @@ -67,8 +67,8 @@ export default (job: SendCommunityInviteEmailJob) => { userId: recipient.userId, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-digest-email.js b/hermes/queues/send-digest-email.js index 6a2872f164..7f8bf5c1ca 100644 --- a/hermes/queues/send-digest-email.js +++ b/hermes/queues/send-digest-email.js @@ -82,8 +82,8 @@ export default async (job: Job) => { userId, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-email-validation-email.js b/hermes/queues/send-email-validation-email.js index 444c82876b..d05fd6eaf5 100644 --- a/hermes/queues/send-email-validation-email.js +++ b/hermes/queues/send-email-validation-email.js @@ -41,8 +41,8 @@ export default async (job: SendEmailValidationJob) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } } diff --git a/hermes/queues/send-mention-message-email.js b/hermes/queues/send-mention-message-email.js index 43c5fd3553..cd52ba680e 100644 --- a/hermes/queues/send-mention-message-email.js +++ b/hermes/queues/send-mention-message-email.js @@ -50,8 +50,8 @@ export default async (job: Job) => { userId: recipient.id, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-mention-thread-email.js b/hermes/queues/send-mention-thread-email.js index 89e538e83b..0dc5e9ffb1 100644 --- a/hermes/queues/send-mention-thread-email.js +++ b/hermes/queues/send-mention-thread-email.js @@ -43,8 +43,8 @@ export default async (job: Job) => { userId: recipient.id, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-community-welcome-email.js b/hermes/queues/send-new-community-welcome-email.js index 0a29d2737b..88fd411811 100644 --- a/hermes/queues/send-new-community-welcome-email.js +++ b/hermes/queues/send-new-community-welcome-email.js @@ -25,8 +25,8 @@ export default job => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-direct-message-email.js b/hermes/queues/send-new-direct-message-email.js index 8bc09cfa6c..b7612a0f2d 100644 --- a/hermes/queues/send-new-direct-message-email.js +++ b/hermes/queues/send-new-direct-message-email.js @@ -45,8 +45,8 @@ export default async (job: Job) => { userId: recipient.userId, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-message-email.js b/hermes/queues/send-new-message-email.js index 517ced30c4..558c109c9f 100644 --- a/hermes/queues/send-new-message-email.js +++ b/hermes/queues/send-new-message-email.js @@ -102,8 +102,8 @@ export default async (job: Job) => { userId: recipient.userId, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-thread-email.js b/hermes/queues/send-new-thread-email.js index fff1a6a640..e48e281b60 100644 --- a/hermes/queues/send-new-thread-email.js +++ b/hermes/queues/send-new-thread-email.js @@ -96,8 +96,8 @@ export default async (job: SendNewThreadEmailJob) => { userId: recipient.id, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-channel-request-approved-email.js b/hermes/queues/send-private-channel-request-approved-email.js index f669a8217d..98fcbfb7aa 100644 --- a/hermes/queues/send-private-channel-request-approved-email.js +++ b/hermes/queues/send-private-channel-request-approved-email.js @@ -40,8 +40,8 @@ export default (job: Job) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-channel-request-sent-email.js b/hermes/queues/send-private-channel-request-sent-email.js index 3aa99f943b..b0923bef80 100644 --- a/hermes/queues/send-private-channel-request-sent-email.js +++ b/hermes/queues/send-private-channel-request-sent-email.js @@ -40,8 +40,8 @@ export default (job: Job) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-community-request-approved-email.js b/hermes/queues/send-private-community-request-approved-email.js index 31a931163d..b5e3f74c32 100644 --- a/hermes/queues/send-private-community-request-approved-email.js +++ b/hermes/queues/send-private-community-request-approved-email.js @@ -39,8 +39,8 @@ export default (job: Job) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-community-request-sent-email.js b/hermes/queues/send-private-community-request-sent-email.js index 36d4444015..c551923515 100644 --- a/hermes/queues/send-private-community-request-sent-email.js +++ b/hermes/queues/send-private-community-request-sent-email.js @@ -41,8 +41,8 @@ export default (job: Job) => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/send-user-welcome-email.js b/hermes/queues/send-user-welcome-email.js index 52c567cfc8..5405da328e 100644 --- a/hermes/queues/send-user-welcome-email.js +++ b/hermes/queues/send-user-welcome-email.js @@ -25,8 +25,8 @@ export default job => { }, }); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/queues/sendgrid-webhook-events.js b/hermes/queues/sendgrid-webhook-events.js index 071a000fb6..8da048cfcf 100644 --- a/hermes/queues/sendgrid-webhook-events.js +++ b/hermes/queues/sendgrid-webhook-events.js @@ -25,8 +25,8 @@ export default (job: Job) => { debug('Processing SendGrid webhook event'); return processEvent(job); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/hermes/send-email.js b/hermes/send-email.js index 580df27e1f..a14d441feb 100644 --- a/hermes/send-email.js +++ b/hermes/send-email.js @@ -80,24 +80,12 @@ const sendEmail = (options: Options) => { // $FlowFixMe return new Promise((res, rej) => { - sg.send( - { - ...defaultOptions, - templateId, - to, - dynamic_template_data, - }, - async (res, err) => { - if (err) { - console.error('Error sending email:'); - console.error(err); - return rej(err); - } - - res(); - debug(`email to ${to} sent successfully`); - } - ); + sg.send({ + ...defaultOptions, + templateId, + to, + dynamic_template_data, + }); }); }; From 1a24df178bc799661609431e56252a488caff6b5 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Tue, 11 Dec 2018 18:01:25 -0800 Subject: [PATCH 04/25] Consoles instead of debugs --- analytics/queues/identify-analytics.js | 4 ++-- analytics/queues/track-analytics.js | 4 ++-- analytics/utils/identify.js | 3 ++- analytics/utils/track.js | 3 ++- api/migrations/seed/index.js | 3 ++- api/queries/thread/messageConnection.js | 3 ++- athena/utils/get-email-status.js | 3 ++- chronos/queues/coreMetrics/activeCommunityAdminReport.js | 4 ++-- chronos/queues/coreMetrics/index.js | 4 ++-- chronos/queues/digests/dailyDigest.js | 4 ++-- chronos/queues/digests/processDigest.js | 4 ++-- chronos/queues/digests/processIndividualDigest.js | 4 ++-- chronos/queues/digests/weeklyDigest.js | 4 ++-- chronos/queues/remove-seen-usersNotifications.js | 4 ++-- mercury/queues/processReputationEvent.js | 4 ++-- vulcan/queues/index.js | 4 ++-- 16 files changed, 32 insertions(+), 27 deletions(-) diff --git a/analytics/queues/identify-analytics.js b/analytics/queues/identify-analytics.js index 7eacf87540..a50689bb11 100644 --- a/analytics/queues/identify-analytics.js +++ b/analytics/queues/identify-analytics.js @@ -22,8 +22,8 @@ export default async (job: Job) => { try { await processJob(job); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/analytics/queues/track-analytics.js b/analytics/queues/track-analytics.js index 2b7b11aea9..94b92fbd2a 100644 --- a/analytics/queues/track-analytics.js +++ b/analytics/queues/track-analytics.js @@ -25,8 +25,8 @@ export default async (job: Job) => { try { await processJob(job); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/analytics/utils/identify.js b/analytics/utils/identify.js index 105ce84fa4..9e32f1910b 100644 --- a/analytics/utils/identify.js +++ b/analytics/utils/identify.js @@ -14,7 +14,8 @@ export const identify = (userId: string, userProperties: Object) => { }; return Promise.all([amplitudePromise()]).catch(err => { - console.error('Error Identifying event: ', err.message); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); }); }; diff --git a/analytics/utils/track.js b/analytics/utils/track.js index ece1fe4c9e..74c75b9856 100644 --- a/analytics/utils/track.js +++ b/analytics/utils/track.js @@ -32,7 +32,8 @@ export const track = ( }; return Promise.all([amplitudePromise()]).catch(err => { - console.error('Error tracking event: ', err.message); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); }); }; diff --git a/api/migrations/seed/index.js b/api/migrations/seed/index.js index 48aa108d9d..8bc67cf946 100644 --- a/api/migrations/seed/index.js +++ b/api/migrations/seed/index.js @@ -235,5 +235,6 @@ Promise.all([ debug( 'Encountered error while inserting data (see below), please run yarn run db:drop and yarn run db:migrate to restore tables to original condition, then run this script again.' ); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); }); diff --git a/api/queries/thread/messageConnection.js b/api/queries/thread/messageConnection.js index 495b0849e6..cc978824ac 100644 --- a/api/queries/thread/messageConnection.js +++ b/api/queries/thread/messageConnection.js @@ -47,7 +47,8 @@ export default ( cursor = decode(cursor); if (cursor) cursor = parseInt(cursor, 10); } catch (err) { - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); return new UserError('Invalid cursor passed to thread.messageConnection.'); } if (cursor) debug(`cursor: ${cursor}`); diff --git a/athena/utils/get-email-status.js b/athena/utils/get-email-status.js index 447534ba7c..dc1a80b828 100644 --- a/athena/utils/get-email-status.js +++ b/athena/utils/get-email-status.js @@ -28,7 +28,8 @@ const getEmailStatus = ( return true; }) .catch(err => { - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); return false; }); }; diff --git a/chronos/queues/coreMetrics/activeCommunityAdminReport.js b/chronos/queues/coreMetrics/activeCommunityAdminReport.js index fd5b5f8690..0a4d9570bd 100644 --- a/chronos/queues/coreMetrics/activeCommunityAdminReport.js +++ b/chronos/queues/coreMetrics/activeCommunityAdminReport.js @@ -42,8 +42,8 @@ export default async () => { try { await processJob(); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/chronos/queues/coreMetrics/index.js b/chronos/queues/coreMetrics/index.js index e730b0b622..abd5e5d261 100644 --- a/chronos/queues/coreMetrics/index.js +++ b/chronos/queues/coreMetrics/index.js @@ -75,8 +75,8 @@ export default async () => { try { await processJob(); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/chronos/queues/digests/dailyDigest.js b/chronos/queues/digests/dailyDigest.js index fff4f793d1..45f0e7560b 100644 --- a/chronos/queues/digests/dailyDigest.js +++ b/chronos/queues/digests/dailyDigest.js @@ -8,8 +8,8 @@ export default () => { debug('Init daily digest'); return processDigest('daily'); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/chronos/queues/digests/processDigest.js b/chronos/queues/digests/processDigest.js index 77c7fcb27b..a9cfc6ca00 100644 --- a/chronos/queues/digests/processDigest.js +++ b/chronos/queues/digests/processDigest.js @@ -55,8 +55,8 @@ export default async (timeframe: Timeframe) => { try { await processJob(timeframe); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/chronos/queues/digests/processIndividualDigest.js b/chronos/queues/digests/processIndividualDigest.js index 19ff1c785a..ba59f2b9f1 100644 --- a/chronos/queues/digests/processIndividualDigest.js +++ b/chronos/queues/digests/processIndividualDigest.js @@ -83,8 +83,8 @@ export default async (job: Job) => { try { await processJob(job); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/chronos/queues/digests/weeklyDigest.js b/chronos/queues/digests/weeklyDigest.js index 7543d22c05..de856a2c7f 100644 --- a/chronos/queues/digests/weeklyDigest.js +++ b/chronos/queues/digests/weeklyDigest.js @@ -8,8 +8,8 @@ export default () => { debug('Init weekly digest'); return processDigest('weekly'); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/chronos/queues/remove-seen-usersNotifications.js b/chronos/queues/remove-seen-usersNotifications.js index 28127c21f1..73705031cc 100644 --- a/chronos/queues/remove-seen-usersNotifications.js +++ b/chronos/queues/remove-seen-usersNotifications.js @@ -63,8 +63,8 @@ export default async () => { try { await processJob(); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/mercury/queues/processReputationEvent.js b/mercury/queues/processReputationEvent.js index f1e9f4c104..b317b0bd69 100644 --- a/mercury/queues/processReputationEvent.js +++ b/mercury/queues/processReputationEvent.js @@ -68,8 +68,8 @@ export default async (job: Job) => { } } } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; diff --git a/vulcan/queues/index.js b/vulcan/queues/index.js index 4474549240..28cfeb4ddd 100644 --- a/vulcan/queues/index.js +++ b/vulcan/queues/index.js @@ -21,8 +21,8 @@ export default (job: Job) => { return queue[event](job); } catch (err) { - debug('❌ Error in job:\n'); - debug(err); + console.error('❌ Error in job:\n'); + console.error(err); Raven.captureException(err); } }; From 8861700f5657702333beffed8fc4ec0eea8056ef Mon Sep 17 00:00:00 2001 From: "depfu[bot]" Date: Wed, 12 Dec 2018 02:41:30 +0000 Subject: [PATCH 05/25] Update electron to version 3.0.11 --- desktop/package.json | 2 +- desktop/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index 1d0aac3c66..3d1f2e2063 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -18,7 +18,7 @@ "electron-window-state": "^5.0.3" }, "devDependencies": { - "electron": "^3.0.10", + "electron": "^3.0.11", "electron-builder": "^20.36.2", "nodemon": "^1.18.8", "rimraf": "^2.6.2" diff --git a/desktop/yarn.lock b/desktop/yarn.lock index 110a5328ef..b778a5228d 100644 --- a/desktop/yarn.lock +++ b/desktop/yarn.lock @@ -820,10 +820,10 @@ electron-window-state@^5.0.3: jsonfile "^4.0.0" mkdirp "^0.5.1" -electron@^3.0.10: - version "3.0.10" - resolved "https://registry.yarnpkg.com/electron/-/electron-3.0.10.tgz#7d412856e8cf0d3041a612a32dd09e2af2d50f50" - integrity sha512-I39IeQP3NOlbjKzTDK8uK2JdiHDfhV5SruCS2Gttkn2MaKCY+yIzQ6Wr4DyBXLeTEkL1sbZxbqQVhCavAliv5w== +electron@^3.0.11: + version "3.0.11" + resolved "https://registry.yarnpkg.com/electron/-/electron-3.0.11.tgz#81e350db741fc0f2997ecb2fef5ed085ca42a723" + integrity sha512-galllxAMT3HLbHNR6i5WXrUXzsxzz0D1X6vu3uFMhofU9Wdbxv2w7BAD/BcYTT4c1bu4nZEgXO6AvHXjq0Sksw== dependencies: "@types/node" "^8.0.24" electron-download "^4.1.0" From 094b828fed1cb12e73e65aeb883071f6cc713678 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Tue, 11 Dec 2018 19:09:27 -0800 Subject: [PATCH 06/25] More hermes console logs --- hermes/index.js | 6 +++++- hermes/queues/send-new-thread-email.js | 5 ++++- shared/bull/create-queue.js | 21 ++++++++------------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/hermes/index.js b/hermes/index.js index 4b0735baae..87c197d343 100644 --- a/hermes/index.js +++ b/hermes/index.js @@ -96,7 +96,11 @@ const server = createWorker( [SENDGRID_WEBHOOK_EVENT]: processSendGridWebhookEvent, }, - {}, + { + settings: { + maxStalledCount: 3, // Max amount of times a stalled job will be re-processed. + }, + }, requestHandler ); diff --git a/hermes/queues/send-new-thread-email.js b/hermes/queues/send-new-thread-email.js index e48e281b60..55abbd33bd 100644 --- a/hermes/queues/send-new-thread-email.js +++ b/hermes/queues/send-new-thread-email.js @@ -60,7 +60,10 @@ export default async (job: SendNewThreadEmailJob) => { TYPE_NEW_THREAD_CREATED ); - if (!unsubscribeToken || !recipient.email) return; + if (!unsubscribeToken || !recipient.email) { + console.error('Aborting no unsub token or recipient email'); + return null; + } const subject = `‘${truncate(smarten(thread.content.title), 80)}’ by ${ thread.creator.name diff --git a/shared/bull/create-queue.js b/shared/bull/create-queue.js index 5e88d9121a..4ed8735deb 100644 --- a/shared/bull/create-queue.js +++ b/shared/bull/create-queue.js @@ -27,21 +27,16 @@ function createQueue(name: string, queueOptions?: Object = {}) { // NOTE(@mxstbr): This logs a "Possible event emitter memory leak" warning, // but that's a bug upstream in bull. Reference: OptimalBits/bull#503 queue.on('stalled', job => { - const message = `Job#${job.id} stalled, processing again.`; - if (process.env.NODE_ENV !== 'production') { - console.error(message); - return; - } - // In production log stalled job to Sentry - Raven.captureException(new Error(message)); + console.error(`Job#${job.id} stalled, processing again.`); + Raven.captureException(new Error(err)); + }); + queue.on('error', err => { + console.error(`Job errored: `, err); + Raven.captureException(new Error(err)); }); queue.on('failed', (job, err) => { - if (process.env.NODE_ENV !== 'production') { - console.error(`Job#${job.id} failed, with following reason`); - console.error(err); - return; - } - // In production log failed job to Sentry + console.error(`Job#${job.id} failed, with following reason`); + console.error(err); Raven.captureException(err); }); return queue; From 01539d646611589e0868dd129851042e5b4d50d1 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Wed, 12 Dec 2018 00:11:09 -0800 Subject: [PATCH 07/25] Update packages --- analytics/package.json | 4 +- analytics/yarn.lock | 34 ++--- api/index.js | 1 - api/package.json | 21 ++- api/yarn.lock | 269 ++++++++---------------------------- chronos/package.json | 2 +- mercury/package.json | 4 +- now.json | 1 - package.json | 39 +++--- shared/bull/create-queue.js | 7 +- vulcan/package.json | 4 +- yarn.lock | 261 +++++++++------------------------- 12 files changed, 180 insertions(+), 467 deletions(-) diff --git a/analytics/package.json b/analytics/package.json index 53a9bd9859..a966d49c64 100644 --- a/analytics/package.json +++ b/analytics/package.json @@ -15,11 +15,11 @@ "now-env": "^3.1.0", "raven": "^2.6.4", "redis-tag-cache": "^1.2.1", - "rethinkdbdash": "^2.3.29", + "rethinkdbdash": "^2.3.31", "rethinkhaberdashery": "^2.3.32", "sanitize-filename": "^1.6.1", "sha1": "^1.1.1", "source-map-support": "^0.5.9", "toobusy-js": "^0.5.1" } -} +} \ No newline at end of file diff --git a/analytics/yarn.lock b/analytics/yarn.lock index f382f4eb18..ccd9a51a37 100644 --- a/analytics/yarn.lock +++ b/analytics/yarn.lock @@ -34,7 +34,7 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -53,18 +53,18 @@ buffer@4.9.1: ieee754 "^1.1.4" isarray "^1.0.0" -bull@3.3.10: - version "3.3.10" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.3.10.tgz#32e76281902070b4720bc37b3793f09db635f646" - integrity sha512-bO1w83BONVTE3Rb10e0wPf11lXH1fGFNGmZH4Ys9jR7jGN4qmTNo7odxm7ELhjKXofjiFLWZFuTdONCs8kV8ug== +bull@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.5.2.tgz#9c85f205b17686efab2ee28aaa4388887360de32" + integrity sha512-tuL4Uj0kUeaQ7Cow3POkca20fk+VSsR8AiTFeNkyMmuicBnE1ZMwvF1NRDY7vIH43pD9PiMCSEP4Li/934Pw1w== dependencies: - bluebird "^3.5.0" - cron-parser "^2.4.1" + bluebird "^3.5.3" + cron-parser "^2.5.0" debuglog "^1.0.0" ioredis "^3.1.4" - lodash "^4.17.4" - semver "^5.4.1" - uuid "^3.1.0" + lodash "^4.17.11" + semver "^5.6.0" + uuid "^3.2.1" "charenc@>= 0.0.1", charenc@~0.0.1: version "0.0.2" @@ -103,10 +103,10 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cron-parser@^2.4.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.7.1.tgz#d08c00b1e220db564fd1cecb5019c8dd450f84d1" - integrity sha512-gupE4KsGEVtp5X4YbUlQx6NiFt3e+VOhREPI4ZXS9FT5JcOjfw2ey1EUv3J6XWrxHR1aKYrk4uJDmdRjG39bgA== +cron-parser@^2.5.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.7.3.tgz#12603f89f5375af353a9357be2543d3172eac651" + integrity sha512-t9Kc7HWBWPndBzvbdQ1YG9rpPRB37Tb/tTviziUOh1qs3TARGh3b1p+tnkOHNe1K5iI3oheBPgLqwotMM7+lpg== dependencies: is-nan "^1.2.1" moment-timezone "^0.5.23" @@ -360,7 +360,7 @@ lodash.values@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c= -lodash@^4.17.4: +lodash@^4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -542,7 +542,7 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -semver@^5.4.1: +semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -641,7 +641,7 @@ uuid@3.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== -uuid@3.3.2, uuid@^3.1.0: +uuid@3.3.2, uuid@^3.2.1: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== diff --git a/api/index.js b/api/index.js index cd6672a45f..43ca1769ed 100644 --- a/api/index.js +++ b/api/index.js @@ -9,7 +9,6 @@ debug('logging with debug enabled!'); import { createServer } from 'http'; import express from 'express'; import Raven from 'shared/raven'; -import { ApolloEngine } from 'apollo-engine'; import toobusy from 'shared/middlewares/toobusy'; import addSecurityMiddleware from 'shared/middlewares/security'; import csrf from 'shared/middlewares/csrf'; diff --git a/api/package.json b/api/package.json index 32e82b376c..45f03fe475 100644 --- a/api/package.json +++ b/api/package.json @@ -4,10 +4,9 @@ }, "dependencies": { "algoliasearch": "^3.31.0", - "apollo-engine": "^1.1.2", - "apollo-local-query": "^0.3.0", + "apollo-local-query": "^0.3.1", "apollo-server-express": "^2.2.6", - "apollo-upload-client": "^8.1.0", + "apollo-upload-client": "^9.1.0", "aws-sdk": "2.200.0", "axios": "^0.16.2", "b2a": "^1.0.10", @@ -18,7 +17,7 @@ "babel-preset-env": "^1.7.0", "backpack-core": "^0.8.3", "body-parser": "^1.18.3", - "bull": "3.3.10", + "bull": "^3.5.2", "casual": "^1.5.12", "compression": "^1.7.3", "cookie-parser": "^1.4.3", @@ -48,11 +47,11 @@ "find-with-regex": "^1.1.3", "flow-typed": "^2.5.1", "graphql": "0.13.x", - "graphql-cost-analysis": "^0.1.2", + "graphql-cost-analysis": "^1.0.2", "graphql-date": "^1.0.3", "graphql-depth-limit": "^1.1.0", - "graphql-log": "0.1.2", - "graphql-tools": "3.0.0", + "graphql-log": "^0.1.3", + "graphql-tools": "^4.0.3", "helmet": "^3.15.0", "highlight.js": "^9.13.1", "history": "^4.6.1", @@ -62,7 +61,7 @@ "hsts": "^2.1.0", "imgix-core-js": "^1.2.0", "immutability-helper": "^2.8.1", - "ioredis": "^4.2.0", + "ioredis": "^4.3.0", "isomorphic-fetch": "^2.2.1", "iterall": "^1.2.2", "jest": "^21.2.1", @@ -96,7 +95,7 @@ "react-helmet": "5.x", "react-infinite-scroller-with-scroll-element": "^1.0.4", "react-loadable": "5.2.2", - "react-modal": "^1.6.5", + "react-modal": "^3.7.1", "react-redux": "^5.1.1", "react-remarkable": "^1.1.1", "react-router": "^4.0.0-beta.7", @@ -123,7 +122,7 @@ "string-similarity": "^1.2.2", "striptags": "2.x", "styled-components": "3.1.x", - "subscriptions-transport-ws": "^0.9.14", + "subscriptions-transport-ws": "^0.9.15", "sw-precache-webpack-plugin": "^0.11.5", "then-queue": "^1.3.0", "toobusy-js": "^0.5.1", @@ -134,4 +133,4 @@ "scripts": { "start": "NODE_ENV=production node main.js" } -} \ No newline at end of file +} diff --git a/api/yarn.lock b/api/yarn.lock index 2eb98ce93d..179926335a 100644 --- a/api/yarn.lock +++ b/api/yarn.lock @@ -608,7 +608,7 @@ core-js "^2.5.7" regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.0.0-beta.38", "@babel/runtime@^7.0.0-beta.51", "@babel/runtime@^7.1.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== @@ -716,7 +716,7 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@types/accepts@*", "@types/accepts@^1.3.5": +"@types/accepts@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== @@ -731,30 +731,13 @@ "@types/connect" "*" "@types/node" "*" -"@types/bunyan@*": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.5.tgz#d992adbce8ed20cde634764bd8f269f29f703647" - integrity sha512-7n8ANtxh2c5A/NfCuv8cVtWcgSLdq76MQbtmbInpzXuPw4TSAReUJ+MGHK4m67I4zI3ynCJoABfaeHYJaYSeRg== - dependencies: - "@types/node" "*" - -"@types/connect@*", "@types/connect@^3.4.31": +"@types/connect@*": version "3.4.32" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28" integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg== dependencies: "@types/node" "*" -"@types/cookies@*": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.1.tgz#f9f204bd6767d389eea3b87609e30c090c77a540" - integrity sha512-ku6IvbucEyuC6i4zAVK/KnuzWNXdbFd1HkXlNLg/zhWDGTtQT5VhumiPruB/BHW34PWVFwyfwGftDQHfWNxu3Q== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - "@types/cors@^2.8.4": version "2.8.4" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.4.tgz#50991a759a29c0b89492751008c6af7a7c8267b0" @@ -776,7 +759,7 @@ "@types/node" "*" "@types/range-parser" "*" -"@types/express@*", "@types/express@4.16.0", "@types/express@^4.0.36": +"@types/express@*", "@types/express@4.16.0": version "4.16.0" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.0.tgz#6d8bc42ccaa6f35cf29a2b7c3333cb47b5a32a19" integrity sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w== @@ -785,47 +768,6 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" -"@types/http-assert@*": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.3.0.tgz#5e932606153da28e1d04f9043f4912cf61fd55dd" - integrity sha512-RObYTpPMo0IY+ZksPtKHsXlYFRxsYIvUqd68e89Y7otDrXsjBy1VgMd53kxVV0JMsNlkCASjllFOlLlhxEv0iw== - -"@types/keygrip@*": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.1.tgz#ff540462d2fb4d0a88441ceaf27d287b01c3d878" - integrity sha1-/1QEYtL7TQqIRBzq8n0oewHD2Hg= - -"@types/koa-bodyparser@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.2.1.tgz#e78f9ff1a21f9ebe9bf16d702e9f2a6d0c0c870d" - integrity sha512-dd6mVT30OmGYIOmNRF3269Bv+IJ68AVrvYcPViB7bYnzxk7nZyfeAsUx96lvXmaTpOGF4XZ7WDCuSOd7Npi6pw== - dependencies: - "@types/koa" "*" - -"@types/koa-compose@*": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.2.tgz#dc106e000bbf92a3ac900f756df47344887ee847" - integrity sha1-3BBuAAu/kqOskA91bfRzRIh+6Ec= - -"@types/koa-router@^7.0.27": - version "7.0.35" - resolved "https://registry.yarnpkg.com/@types/koa-router/-/koa-router-7.0.35.tgz#07442ac95e65ec1b042af4f72abea44dc96b909f" - integrity sha512-WSdZ0FkUSCDiGQBtsEAmTjsM3l5o4eq2WDSCR9UXm/buLY73b5MSkfSt4f8+LAhoZYa9uNNcEyiE43J0xISF5A== - dependencies: - "@types/koa" "*" - -"@types/koa@*", "@types/koa@^2.0.39": - version "2.0.47" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.0.47.tgz#ac7854384a4cc49c16593c86acd99e636a48142a" - integrity sha512-llhCaHNWKFDMx1GCrqwgsWgUO+C4Da0SccbgevHIYOKVxwegEjFzl0WaMWHk3wWx0P0AdqHR+gQYZ2ZAb0ez0Q== - dependencies: - "@types/accepts" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - "@types/long@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" @@ -841,25 +783,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.12.tgz#e15a9d034d9210f00320ef718a50c4a799417c47" integrity sha512-Pr+6JRiKkfsFvmU/LK68oBRCQeEg36TyAbPhc2xpez24OOZZCuoIhWGTd39VZy6nGafSbxzGouFPTFD/rR1A0A== -"@types/node@^9.4.6": - version "9.6.40" - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.40.tgz#2d69cefbc090cb0bb824542a4c575b14dde7d3aa" - integrity sha512-M3HHoXXndsho/sTbQML2BJr7/uwNhMg8P0D4lb+UsM65JQZx268faiz9hKpY4FpocWqpwlLwa8vevw8hLtKjOw== - "@types/range-parser@*": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/restify@^5.0.7": - version "5.0.10" - resolved "https://registry.yarnpkg.com/@types/restify/-/restify-5.0.10.tgz#12e416ca83308a6aaa97a54c0d47ff81197c7dcf" - integrity sha512-lrFhug755B6bF6X6ofR4q3bezJftHtJSnHxPxC4J2bSZQyKa6OI/Y5oJNl6Mb0LoFdSjnw09w6gOw9ChZs6N4A== - dependencies: - "@types/bunyan" "*" - "@types/node" "*" - "@types/spdy" "*" - "@types/serve-static@*": version "1.13.2" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48" @@ -868,13 +796,6 @@ "@types/express-serve-static-core" "*" "@types/mime" "*" -"@types/spdy@*": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@types/spdy/-/spdy-3.4.4.tgz#3282fd4ad8c4603aa49f7017dd520a08a345b2bc" - integrity sha512-N9LBlbVRRYq6HgYpPkqQc3a9HJ/iEtVZToW6xlTtJiMhmRJ7jJdV7TaZQJw/Ve/1ePUsQiCTDc4JMuzzag94GA== - dependencies: - "@types/node" "*" - "@types/ws@^6.0.0": version "6.0.1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-6.0.1.tgz#ca7a3f3756aa12f62a0a62145ed14c6db25d5a28" @@ -1189,21 +1110,6 @@ apollo-datasource@0.2.1: apollo-server-caching "0.2.1" apollo-server-env "2.2.0" -apollo-engine-binary-darwin@0.2018.6-20-gc0e4bb519: - version "0.2018.6-20-gc0e4bb519" - resolved "https://registry.yarnpkg.com/apollo-engine-binary-darwin/-/apollo-engine-binary-darwin-0.2018.6-20-gc0e4bb519.tgz#1458cf9af9adff1248730b9e7ea3408a778ff20e" - integrity sha512-yQB26z3s/lMCBOpoKjL0IiJPuk+EHwoY6zd9nZz0A99/461ZayE02LjV8MwB4HDvSPmvtaanrhQhTaLH6sLHfA== - -apollo-engine-binary-linux@0.2018.6-20-gc0e4bb519: - version "0.2018.6-20-gc0e4bb519" - resolved "https://registry.yarnpkg.com/apollo-engine-binary-linux/-/apollo-engine-binary-linux-0.2018.6-20-gc0e4bb519.tgz#0f61d7e7888a58d8723516d1dc44d4c8a6688df2" - integrity sha512-HTUysRxRmwYQmbztuvytq5I2dgbPT/Z0J5HNz0Hx5/Ej19EHIb0v82mFMdMZKGRKHvOfao8XGG3/++C1vSQGiw== - -apollo-engine-binary-windows@0.2018.6-20-gc0e4bb519: - version "0.2018.6-20-gc0e4bb519" - resolved "https://registry.yarnpkg.com/apollo-engine-binary-windows/-/apollo-engine-binary-windows-0.2018.6-20-gc0e4bb519.tgz#288c718a730f2a1f8bb0aae9fff3e6da23c1f00f" - integrity sha512-Cj0FSI8MDHcDc8EknzcqBP57R5S6gLIdD4/lpQaOtZureS/Ijx3mltZ0csmn5v8S0dDaMM6zjElBMDfwl6aEDg== - apollo-engine-reporting-protobuf@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.1.0.tgz#fbc220cac2a3b7800ffc155d7e54c21c56b7848e" @@ -1222,22 +1128,6 @@ apollo-engine-reporting@0.1.3: graphql-extensions "0.3.3" lodash "^4.17.10" -apollo-engine@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/apollo-engine/-/apollo-engine-1.1.2.tgz#ef8465fe5234b3bfe034b7e96d37bc441b72a9cb" - integrity sha512-XALQo4VjyMaOkCeuO5z0j68eSvOxh7KhZkWW3Vqj8ufxk2WbJGCACU7XQEvD6HyGBwtDDXxV8KvZyU0CDisi1Q== - dependencies: - "@types/connect" "^3.4.31" - "@types/express" "^4.0.36" - "@types/koa" "^2.0.39" - "@types/koa-bodyparser" "^4.2.0" - "@types/koa-router" "^7.0.27" - "@types/restify" "^5.0.7" - optionalDependencies: - apollo-engine-binary-darwin "0.2018.6-20-gc0e4bb519" - apollo-engine-binary-linux "0.2018.6-20-gc0e4bb519" - apollo-engine-binary-windows "0.2018.6-20-gc0e4bb519" - apollo-env@0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/apollo-env/-/apollo-env-0.2.5.tgz#162c785bccd2aea69350a7600fab4b7147fc9da5" @@ -1246,22 +1136,13 @@ apollo-env@0.2.5: core-js "^3.0.0-beta.3" node-fetch "^2.2.0" -apollo-link-http-common@^0.2.4: +apollo-link-http-common@^0.2.5: version "0.2.6" resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.6.tgz#47b9012500599fe343e2e87378026384b4fc8c1f" integrity sha512-LUOMWvrZuBP1hyWLBXyaW0KyFeKo79j+k3N+Q4HSkXKbLibnllXQ+JxxoSKGhm0bhREygiLtJAG9JnGlhxGO/Q== dependencies: apollo-link "^1.2.4" -apollo-link@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.1.tgz#c120b16059f9bd93401b9f72b94d2f80f3f305d2" - integrity sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg== - dependencies: - "@types/node" "^9.4.6" - apollo-utilities "^1.0.0" - zen-observable-ts "^0.8.6" - apollo-link@^1.2.3, apollo-link@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.4.tgz#ab4d21d2e428db848e88b5e8f4adc717b19c954b" @@ -1270,7 +1151,7 @@ apollo-link@^1.2.3, apollo-link@^1.2.4: apollo-utilities "^1.0.0" zen-observable-ts "^0.8.11" -apollo-local-query@^0.3.0: +apollo-local-query@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/apollo-local-query/-/apollo-local-query-0.3.1.tgz#e290375253879badd09ebe7ca410744aad7e5ec9" integrity sha512-S8xom02//NsEHmOBGqTJJAGaP8K3Vd16Dtm+rCEMx0PJ+wdgBHDqK6CxYyt/OxIzY9maS2MXm+mnffW2IedT3w== @@ -1355,14 +1236,14 @@ apollo-tracing@0.3.3: apollo-server-env "2.2.0" graphql-extensions "0.3.3" -apollo-upload-client@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-8.1.0.tgz#db99eed6af926dbd54cb0bbde30345672c97fc5f" - integrity sha512-JEgStzhnwybj1ifE2nViLEl7NTM5+zS++fKbDL95PIpodg2AdYeeN7eEa7RXpYD14iC3FVcsfqgGMREv2+cSxw== +apollo-upload-client@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-9.1.0.tgz#13191714ae07388088f2c773ebbfd53ba2f64c53" + integrity sha512-ZN5gsbBjImEZTWWTUHpCEGDasnoBGbaODpznQ5EawyNHceuFYSNJbbft+ZZ841vZAcj9XZdKUKoaLBlMZ/r7nw== dependencies: - "@babel/runtime" "^7.0.0-beta.51" - apollo-link-http-common "^0.2.4" - extract-files "^3.1.0" + apollo-link "^1.2.3" + apollo-link-http-common "^0.2.5" + extract-files "^4.0.0" apollo-utilities@^1.0.0, apollo-utilities@^1.0.1: version "1.0.26" @@ -2346,7 +2227,7 @@ binary@~0.3.0: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0, bluebird@^3.5.1: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.1, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -2585,18 +2466,18 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -bull@3.3.10: - version "3.3.10" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.3.10.tgz#32e76281902070b4720bc37b3793f09db635f646" - integrity sha512-bO1w83BONVTE3Rb10e0wPf11lXH1fGFNGmZH4Ys9jR7jGN4qmTNo7odxm7ELhjKXofjiFLWZFuTdONCs8kV8ug== +bull@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.5.2.tgz#9c85f205b17686efab2ee28aaa4388887360de32" + integrity sha512-tuL4Uj0kUeaQ7Cow3POkca20fk+VSsR8AiTFeNkyMmuicBnE1ZMwvF1NRDY7vIH43pD9PiMCSEP4Li/934Pw1w== dependencies: - bluebird "^3.5.0" - cron-parser "^2.4.1" + bluebird "^3.5.3" + cron-parser "^2.5.0" debuglog "^1.0.0" ioredis "^3.1.4" - lodash "^4.17.4" - semver "^5.4.1" - uuid "^3.1.0" + lodash "^4.17.11" + semver "^5.6.0" + uuid "^3.2.1" busboy@^0.2.14: version "0.2.14" @@ -3117,7 +2998,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2, create-react-class@^15.6.0: +create-react-class@^15.6.0: version "15.6.3" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== @@ -3126,7 +3007,7 @@ create-react-class@^15.5.2, create-react-class@^15.6.0: loose-envify "^1.3.1" object-assign "^4.1.1" -cron-parser@^2.4.1: +cron-parser@^2.5.0: version "2.7.3" resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.7.3.tgz#12603f89f5375af353a9357be2543d3172eac651" integrity sha512-t9Kc7HWBWPndBzvbdQ1YG9rpPRB37Tb/tTviziUOh1qs3TARGh3b1p+tnkOHNe1K5iI3oheBPgLqwotMM7+lpg== @@ -3659,7 +3540,7 @@ draft-js-prism@^1.0.6: extend "^3.0.0" immutable "*" -"draft-js-prism@github:ngs/draft-js-prism#6edb31c3805dd1de3fb897cc27fced6bac1bafbb": +draft-js-prism@ngs/draft-js-prism#6edb31c3805dd1de3fb897cc27fced6bac1bafbb: version "1.0.3" resolved "https://codeload.github.com/ngs/draft-js-prism/tar.gz/6edb31c3805dd1de3fb897cc27fced6bac1bafbb" dependencies: @@ -3733,11 +3614,6 @@ electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.86: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.88.tgz#f36ab32634f49ef2b0fdc1e82e2d1cc17feb29e7" integrity sha512-UPV4NuQMKeUh1S0OWRvwg0PI8ASHN9kBC8yDTk1ROXLC85W5GnhTRu/MZu3Teqx3JjlQYuckuHYXSUSgtb3J+A== -element-class@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/element-class/-/element-class-0.2.2.tgz#9d3bbd0767f9013ef8e1c8ebe722c1402a60050e" - integrity sha1-nTu9B2f5AT744cjr5yLBQCpgBQ4= - elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -3973,12 +3849,7 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exenv@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.0.tgz#3835f127abf075bfe082d0aed4484057c78e3c89" - integrity sha1-ODXxJ6vwdb/ggtCu1EhAV8eOPIk= - -exenv@^1.2.1: +exenv@^1.2.0, exenv@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= @@ -4124,12 +3995,10 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-3.1.0.tgz#b70424c9d4a1a4208efe22069388f428e4ae00f1" - integrity sha512-urkJPM4N88CMy1AfDw+Avudon6fToTsaG5j5VN0aybn88udv1yrERFCweV78NaZg7DOFsQULkFgvP64vNQFNMQ== - dependencies: - "@babel/runtime" "^7.0.0-beta.38" +extract-files@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-4.1.0.tgz#2d5b64af688dfd030274ca542c43fabba325019a" + integrity sha512-2gjdb3dVzr1ie9+K8pupPTnsNkK4qmzbTFOIxghiWoh6nCTajGCGC72ZNYX0nBWy5IOq1FXfRVgvkkLqqE4sdw== extsprintf@1.3.0: version "1.3.0" @@ -4614,10 +4483,10 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -graphql-cost-analysis@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/graphql-cost-analysis/-/graphql-cost-analysis-0.1.2.tgz#1ddce5776e7930c423deb538c021f9c7648df5c5" - integrity sha512-gpxLKSAkURG3crlOpkD4qkij+GrucQXygxtKhYKS5Ba4tApEF1afHB0t6JmihcRICyhj5rLiY6owfDsyKZMlLQ== +graphql-cost-analysis@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/graphql-cost-analysis/-/graphql-cost-analysis-1.0.2.tgz#680f7b99137e5e21f279f76e01f779955258de0a" + integrity sha512-U6TaSSarx4WbCwT0520xsGvhNwYu5GWfn4bEHMiVgdWvWvdfscVp0n8zShTwzoEoO0gEYT2fXTg1O2KadDbg/A== dependencies: selectn "^1.1.2" @@ -4649,10 +4518,10 @@ graphql-extensions@0.3.6: dependencies: "@apollographql/apollo-tools" "^0.2.6" -graphql-log@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/graphql-log/-/graphql-log-0.1.2.tgz#d733fc58b14cbb336effa2bb355274d13683c6b5" - integrity sha512-9ouGEuCH61UmzvkNyV4wfMkiULukw7+QNY84woEPj0/lx0ut8B5l91fNNNYDlDrJXRd3R/VNvmmbIjj0Zx3pCA== +graphql-log@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/graphql-log/-/graphql-log-0.1.3.tgz#a1cc002fbaa9392f6df0483ed57937dd291826b0" + integrity sha512-DiwQasuTjN6sdibuFT4dmaFEdkCAY4wI83a3qXBY8UX4VOUaegyrLvIjPvnGZGJF8sfYOLHzPWG676AYdFTizQ== dependencies: deep-for-each "^1.0.6" is-function "^1.0.1" @@ -4669,18 +4538,7 @@ graphql-tag@^2.9.2: resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.0.tgz#87da024be863e357551b2b8700e496ee2d4353ae" integrity sha512-9FD6cw976TLLf9WYIUPCaaTpniawIjHWZSwIRZSjrfufJamcXbVVYfN2TWvJYbw0Xf2JjYbl1/f2+wDnBVw3/w== -graphql-tools@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-3.0.0.tgz#ff22ad15315fc268de8639d03936b911d78b9e9b" - integrity sha512-orcLQm0pc6dcIvFyAudgmno/akZy07bbMalTv5dj6B8uW2ZPmwIANr7pDEJoiumb67h2kZjsU9yvgTwmF0kMPQ== - dependencies: - apollo-link "1.2.1" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -graphql-tools@^4.0.0: +graphql-tools@^4.0.0, graphql-tools@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.3.tgz#23b5cb52c519212b1b2e4630a361464396ad264b" integrity sha512-NNZM0WSnVLX1zIMUxu7SjzLZ4prCp15N5L2T2ro02OVyydZ0fuCnZYRnx/yK9xjGWbZA0Q58yEO//Bv/psJWrg== @@ -5155,7 +5013,7 @@ ioredis@^3.1.4: redis-commands "^1.2.0" redis-parser "^2.4.0" -ioredis@^4.0.0, ioredis@^4.2.0: +ioredis@^4.0.0, ioredis@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.3.0.tgz#a92850dd8794eaee4f38a265c830ca823a09d345" integrity sha512-TwTp93UDKlKVQeg9ThuavNh4Vs31JTlqn+cI/J6z21OtfghyJm5I349ZlsKobOeEyS4INITMLQ1fhR7xwf9Fxg== @@ -6521,11 +6379,6 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= - merge@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" @@ -7470,13 +7323,6 @@ postcss-value-parser@^3.3.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postmark@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/postmark/-/postmark-1.6.1.tgz#23d48f7182509be5be0eb80c16b90a2e2326eb3c" - integrity sha1-I9SPcYJQm+W+DrgMFrkKLiMm6zw= - dependencies: - merge "1.2.0" - pre-commit@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" @@ -7565,7 +7411,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7789,11 +7635,6 @@ react-click-outside@^3.0.1: dependencies: hoist-non-react-statics "^2.1.1" -react-dom-factories@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-dom-factories/-/react-dom-factories-1.0.2.tgz#eb7705c4db36fb501b3aa38ff759616aa0ff96e0" - integrity sha1-63cFxNs2+1AbOqOP91lhaqD/luA= - react-dom@^15.4.1: version "15.6.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730" @@ -7834,17 +7675,15 @@ react-loadable@5.2.2: resolved "https://registry.yarnpkg.com/react-loadable/-/react-loadable-5.2.2.tgz#1a5ad75841cacb64be12b18a86ac0bc55ccb4dc7" integrity sha1-GlrXWEHKy2S+ErGKhqwLxVzLTcc= -react-modal@^1.6.5: - version "1.9.7" - resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-1.9.7.tgz#07ef56790b953e3b98ef1e2989e347983c72871d" - integrity sha512-oZNqI0ZnPD7NnfObrCMz2hxHTAw5oEuhZJ+gnyFNIQB2rR8h1YbLQTfhms1mtSJigb0J23OOWElHjXYYaKO+wg== +react-modal@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.7.1.tgz#342ed170133d0557e6c3e6fc40195bc45c8f09c3" + integrity sha512-eSgotXkqOCXi0b27AwLCoJ8yqLepKnbZdMp/zfUmZPnMNoe39pDT0mbAPq9rp+TToqM5GUTv8C36Cuja+ThbhA== dependencies: - create-react-class "^15.5.2" - element-class "^0.2.0" - exenv "1.2.0" - lodash.assign "^4.2.0" - prop-types "^15.5.7" - react-dom-factories "^1.0.0" + exenv "^1.2.0" + prop-types "^15.5.10" + react-lifecycles-compat "^3.0.0" + warning "^3.0.0" react-redux@^5.1.1: version "5.1.1" @@ -8493,7 +8332,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@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: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -9029,7 +8868,7 @@ stylis@^3.4.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== -subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.14: +subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.15: version "0.9.15" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.15.tgz#68a8b7ba0037d8c489fb2f5a102d1494db297d0d" integrity sha512-f9eBfWdHsePQV67QIX+VRhf++dn1adyC/PZHP6XI5AfKnZ4n0FW+v5omxwdHVpd4xq2ZijaHEcmlQrhBY79ZWQ== @@ -9666,7 +9505,7 @@ uuid@3.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== -uuid@3.3.2, uuid@^3.1.0, uuid@^3.3.2: +uuid@3.3.2, uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== @@ -10091,7 +9930,7 @@ yargs@^9.0.0: y18n "^3.2.1" yargs-parser "^7.0.0" -zen-observable-ts@^0.8.11, zen-observable-ts@^0.8.6: +zen-observable-ts@^0.8.11: version "0.8.11" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.11.tgz#d54a27cd17dc4b4bb6bd008e5c096af7fcb068a9" integrity sha512-8bs7rgGV4kz5iTb9isudkuQjtWwPnQ8lXq6/T76vrepYZVMsDEv6BXaEA+DHdJSK3KVLduagi9jSpSAJ5NgKHw== diff --git a/chronos/package.json b/chronos/package.json index 4402eb5c11..9540473274 100644 --- a/chronos/package.json +++ b/chronos/package.json @@ -15,7 +15,7 @@ "now-env": "^3.1.0", "raven": "^2.6.4", "redis-tag-cache": "^1.2.1", - "rethinkdbdash": "^2.3.29", + "rethinkdbdash": "^2.3.31", "rethinkhaberdashery": "^2.3.32", "sanitize-filename": "^1.6.1", "source-map-support": "^0.4.18", diff --git a/mercury/package.json b/mercury/package.json index ec0c718afc..de3e37e0ed 100644 --- a/mercury/package.json +++ b/mercury/package.json @@ -8,7 +8,7 @@ "now-env": "^3.1.0", "raven": "^2.6.4", "redis-tag-cache": "^1.2.1", - "rethinkdbdash": "^2.3.29", + "rethinkdbdash": "^2.3.31", "rethinkhaberdashery": "^2.3.32", "source-map-support": "^0.4.18", "toobusy-js": "^0.5.1" @@ -16,4 +16,4 @@ "devDependencies": { "json-stringify-pretty-compact": "^1.2.0" } -} +} \ No newline at end of file diff --git a/now.json b/now.json index fd9f1e9328..99007661c7 100644 --- a/now.json +++ b/now.json @@ -43,7 +43,6 @@ "SESSION_COOKIE_SECRET": "@session-cookie-secret", "ALGOLIA_APP_ID": "@algolia-app-id", "ALGOLIA_API_SECRET": "@algolia-api-secret", - "APOLLO_ENGINE_API_KEY": "@apollo-engine-api-key", "API_TOKEN_SECRET": "@api-token-secret", "SENTRY_DSN_CLIENT": "@sentry-dsn-client", "SENTRY_DSN_SERVER": "@sentry-dsn-server", diff --git a/package.json b/package.json index fd86874703..9f89818049 100644 --- a/package.json +++ b/package.json @@ -53,24 +53,23 @@ "algoliasearch": "^3.30.0", "amplitude": "^3.5.0", "amplitude-js": "^4.4.0", - "apollo-cache-inmemory": "^1.3.5", - "apollo-client": "^2.4.2", - "apollo-engine": "1.x", - "apollo-link": "^1.2.3", - "apollo-link-http": "^1.5.5", - "apollo-link-retry": "^2.2.5", - "apollo-link-schema": "^1.1.1", - "apollo-link-ws": "^1.0.9", - "apollo-server-express": "^2.0.4", - "apollo-upload-client": "^8.1.0", - "apollo-upload-server": "^5.0.0", - "apollo-utilities": "^1.0.21", + "apollo-cache-inmemory": "^1.3.11", + "apollo-client": "^2.4.7", + "apollo-link": "^1.2.4", + "apollo-link-http": "^1.5.7", + "apollo-link-retry": "^2.2.6", + "apollo-link-schema": "^1.1.2", + "apollo-link-ws": "^1.0.10", + "apollo-server-express": "^2.2.6", + "apollo-upload-client": "^9.1.0", + "apollo-upload-server": "^7.1.0", + "apollo-utilities": "^1.0.26", "aws-sdk": "2.336.0", "axios": "^0.17.1", "b2a": "^1.0.10", "bad-words": "^1.6.4", "body-parser": "^1.18.3", - "bull": "3.4.8", + "bull": "^3.5.2", "casual": "^1.5.19", "common-tags": "^1.8.0", "cookie-parser": "^1.4.3", @@ -79,7 +78,7 @@ "cryptr": "^3.0.0", "css.escape": "^1.5.1", "cypress": "^3.1.3", - "dataloader": "^1.3.0", + "dataloader": "^1.4.0", "debounce": "^1.2.0", "debug": "^4.1.0", "decode-uri-component": "^0.2.0", @@ -111,7 +110,7 @@ "graphql-depth-limit": "^1.1.0", "graphql-log": "0.1.3", "graphql-tag": "^2.10.0", - "graphql-tools": "^3.0.5", + "graphql-tools": "^4.0.3", "helmet": "^3.14.0", "highlight.js": "^9.13.1", "history": "^4.6.1", @@ -121,7 +120,7 @@ "hsts": "^2.1.0", "idx": "^2.4.0", "imgix-core-js": "^1.0.6", - "ioredis": "^4.2.0", + "ioredis": "^4.3.0", "is-electron": "^2.1.0", "isomorphic-fetch": "^2.2.1", "jest": "22.4.3", @@ -147,7 +146,7 @@ "raf": "^3.4.0", "raven": "^2.6.4", "react": "16.4.2", - "react-apollo": "^2.2.4", + "react-apollo": "^2.3.2", "react-app-rewire-styled-components": "^3.0.0", "react-app-rewired": "^1.6.2", "react-clipboard.js": "^2.0.1", @@ -157,7 +156,7 @@ "react-image": "^1.5.1", "react-infinite-scroller-with-scroll-element": "2.0.2", "react-loadable": "^5.5.0", - "react-modal": "^3.6.1", + "react-modal": "^3.7.1", "react-popper": "^1.0.2", "react-redux": "^5.0.2", "react-router": "^4.0.0-beta.7", @@ -188,7 +187,7 @@ "string-similarity": "^2.0.0", "striptags": "2.x", "styled-components": "^3.4.10", - "subscriptions-transport-ws": "0.9.x", + "subscriptions-transport-ws": "^0.9.15", "textversionjs": "^1.1.3", "then-queue": "^1.3.0", "toobusy-js": "^0.5.1", @@ -281,4 +280,4 @@ ] }, "pre-commit": "lint:staged" -} \ No newline at end of file +} diff --git a/shared/bull/create-queue.js b/shared/bull/create-queue.js index 4ed8735deb..eea7fdc048 100644 --- a/shared/bull/create-queue.js +++ b/shared/bull/create-queue.js @@ -28,15 +28,16 @@ function createQueue(name: string, queueOptions?: Object = {}) { // but that's a bug upstream in bull. Reference: OptimalBits/bull#503 queue.on('stalled', job => { console.error(`Job#${job.id} stalled, processing again.`); - Raven.captureException(new Error(err)); + console.error({ job }); }); queue.on('error', err => { - console.error(`Job errored: `, err); + console.error('Job errored'); + console.error({ err }); Raven.captureException(new Error(err)); }); queue.on('failed', (job, err) => { console.error(`Job#${job.id} failed, with following reason`); - console.error(err); + console.error({ job, err }); Raven.captureException(err); }); return queue; diff --git a/vulcan/package.json b/vulcan/package.json index 498f2c30ef..e0bfa947a4 100644 --- a/vulcan/package.json +++ b/vulcan/package.json @@ -17,7 +17,7 @@ "raven": "^2.6.4", "redis-tag-cache": "^1.2.1", "rethinkdb-changefeed-reconnect": "^0.3.2", - "rethinkdbdash": "^2.3.29", + "rethinkdbdash": "^2.3.31", "rethinkhaberdashery": "^2.3.32", "sanitize-filename": "^1.6.1", "source-map-support": "^0.4.15", @@ -27,4 +27,4 @@ "devDependencies": { "json-stringify-pretty-compact": "^1.2.0" } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index f8be4402f2..ae28e98c47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -754,7 +754,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.0.0-beta.38", "@babel/runtime@^7.0.0-beta.40", "@babel/runtime@^7.0.0-beta.51", "@babel/runtime@^7.1.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== @@ -982,7 +982,7 @@ "@sendgrid/client" "^6.3.0" "@sendgrid/helpers" "^6.3.0" -"@types/accepts@*", "@types/accepts@^1.3.5": +"@types/accepts@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== @@ -1012,13 +1012,6 @@ "@types/connect" "*" "@types/node" "*" -"@types/bunyan@*": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.5.tgz#d992adbce8ed20cde634764bd8f269f29f703647" - integrity sha512-7n8ANtxh2c5A/NfCuv8cVtWcgSLdq76MQbtmbInpzXuPw4TSAReUJ+MGHK4m67I4zI3ynCJoABfaeHYJaYSeRg== - dependencies: - "@types/node" "*" - "@types/caseless@*": version "0.12.1" resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.1.tgz#9794c69c8385d0192acc471a540d1f8e0d16218a" @@ -1042,23 +1035,13 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.8.tgz#d27600e9ba2f371e08695d90a0fe0408d89c7be7" integrity sha512-m812CONwdZn/dMzkIJEY0yAs4apyTkTORgfB2UsMOxgkUbC205AHnm4T8I0I5gPg9MHrFc1dJ35iS75c0CJkjg== -"@types/connect@*", "@types/connect@^3.4.31": +"@types/connect@*": version "3.4.32" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28" integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg== dependencies: "@types/node" "*" -"@types/cookies@*": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.1.tgz#f9f204bd6767d389eea3b87609e30c090c77a540" - integrity sha512-ku6IvbucEyuC6i4zAVK/KnuzWNXdbFd1HkXlNLg/zhWDGTtQT5VhumiPruB/BHW34PWVFwyfwGftDQHfWNxu3Q== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - "@types/cors@^2.8.4": version "2.8.4" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.4.tgz#50991a759a29c0b89492751008c6af7a7c8267b0" @@ -1080,7 +1063,7 @@ "@types/node" "*" "@types/range-parser" "*" -"@types/express@*", "@types/express@4.16.0", "@types/express@^4.0.36": +"@types/express@*", "@types/express@4.16.0": version "4.16.0" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.0.tgz#6d8bc42ccaa6f35cf29a2b7c3333cb47b5a32a19" integrity sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w== @@ -1096,11 +1079,6 @@ dependencies: "@types/node" "*" -"@types/http-assert@*": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.3.0.tgz#5e932606153da28e1d04f9043f4912cf61fd55dd" - integrity sha512-RObYTpPMo0IY+ZksPtKHsXlYFRxsYIvUqd68e89Y7otDrXsjBy1VgMd53kxVV0JMsNlkCASjllFOlLlhxEv0iw== - "@types/jquery@*": version "3.3.24" resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.24.tgz#3af73accd9da56a1fd59c706ca2145bd73a91c65" @@ -1113,42 +1091,6 @@ resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.6.tgz#5932ead926307ca21e5b36808257f7c926b06565" integrity sha512-403D4wN95Mtzt2EoQHARf5oe/jEPhzBOBNrunk+ydQGW8WmkQ/E8rViRAEB1qEt/vssfGfNVD6ujP4FVeegrLg== -"@types/keygrip@*": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.1.tgz#ff540462d2fb4d0a88441ceaf27d287b01c3d878" - integrity sha1-/1QEYtL7TQqIRBzq8n0oewHD2Hg= - -"@types/koa-bodyparser@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.2.1.tgz#e78f9ff1a21f9ebe9bf16d702e9f2a6d0c0c870d" - integrity sha512-dd6mVT30OmGYIOmNRF3269Bv+IJ68AVrvYcPViB7bYnzxk7nZyfeAsUx96lvXmaTpOGF4XZ7WDCuSOd7Npi6pw== - dependencies: - "@types/koa" "*" - -"@types/koa-compose@*": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.2.tgz#dc106e000bbf92a3ac900f756df47344887ee847" - integrity sha1-3BBuAAu/kqOskA91bfRzRIh+6Ec= - -"@types/koa-router@^7.0.27": - version "7.0.35" - resolved "https://registry.yarnpkg.com/@types/koa-router/-/koa-router-7.0.35.tgz#07442ac95e65ec1b042af4f72abea44dc96b909f" - integrity sha512-WSdZ0FkUSCDiGQBtsEAmTjsM3l5o4eq2WDSCR9UXm/buLY73b5MSkfSt4f8+LAhoZYa9uNNcEyiE43J0xISF5A== - dependencies: - "@types/koa" "*" - -"@types/koa@*", "@types/koa@^2.0.39": - version "2.0.47" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.0.47.tgz#ac7854384a4cc49c16593c86acd99e636a48142a" - integrity sha512-llhCaHNWKFDMx1GCrqwgsWgUO+C4Da0SccbgevHIYOKVxwegEjFzl0WaMWHk3wWx0P0AdqHR+gQYZ2ZAb0ez0Q== - dependencies: - "@types/accepts" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - "@types/lodash@4.14.87": version "4.14.87" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.87.tgz#55f92183b048c2c64402afe472f8333f4e319a6b" @@ -1207,15 +1149,6 @@ "@types/node" "*" "@types/tough-cookie" "*" -"@types/restify@^5.0.7": - version "5.0.10" - resolved "https://registry.yarnpkg.com/@types/restify/-/restify-5.0.10.tgz#12e416ca83308a6aaa97a54c0d47ff81197c7dcf" - integrity sha512-lrFhug755B6bF6X6ofR4q3bezJftHtJSnHxPxC4J2bSZQyKa6OI/Y5oJNl6Mb0LoFdSjnw09w6gOw9ChZs6N4A== - dependencies: - "@types/bunyan" "*" - "@types/node" "*" - "@types/spdy" "*" - "@types/serve-static@*": version "1.13.2" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48" @@ -1247,13 +1180,6 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== -"@types/spdy@*": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@types/spdy/-/spdy-3.4.4.tgz#3282fd4ad8c4603aa49f7017dd520a08a345b2bc" - integrity sha512-N9LBlbVRRYq6HgYpPkqQc3a9HJ/iEtVZToW6xlTtJiMhmRJ7jJdV7TaZQJw/Ve/1ePUsQiCTDc4JMuzzag94GA== - dependencies: - "@types/node" "*" - "@types/tough-cookie@*": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.4.tgz#821878b81bfab971b93a265a561d54ea61f9059f" @@ -1538,7 +1464,7 @@ apollo-cache-control@0.3.3: apollo-server-env "2.2.0" graphql-extensions "0.3.3" -apollo-cache-inmemory@^1.3.5: +apollo-cache-inmemory@^1.3.11: version "1.3.11" resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.3.11.tgz#6cb8f24ec812715169f9acbb0b67833f9a19ec90" integrity sha512-fSoyjBV5RV57J3i/VHDDB74ZgXc0PFiogheNFHEhC0mL6rg5e/DjTx0Vg+csIBk23gvlzTvV+eypx7Q2NJ+dYg== @@ -1554,7 +1480,7 @@ apollo-cache@1.1.21, apollo-cache@^1.1.21: dependencies: apollo-utilities "^1.0.26" -apollo-client@^2.4.2: +apollo-client@^2.4.7: version "2.4.7" resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.4.7.tgz#b6712fd4c9ba346e3c44cfec7e6868e532b6a957" integrity sha512-6aAm+16AFBYZhJF8eKxrup6AbYni01InDiwTfZhMMTP2xaXQWjsQnfaHbI2oE+hd3+AZFy1drkse8RZKghR/WQ== @@ -1577,21 +1503,6 @@ apollo-datasource@0.2.1: apollo-server-caching "0.2.1" apollo-server-env "2.2.0" -apollo-engine-binary-darwin@0.2018.6-20-gc0e4bb519: - version "0.2018.6-20-gc0e4bb519" - resolved "https://registry.yarnpkg.com/apollo-engine-binary-darwin/-/apollo-engine-binary-darwin-0.2018.6-20-gc0e4bb519.tgz#1458cf9af9adff1248730b9e7ea3408a778ff20e" - integrity sha512-yQB26z3s/lMCBOpoKjL0IiJPuk+EHwoY6zd9nZz0A99/461ZayE02LjV8MwB4HDvSPmvtaanrhQhTaLH6sLHfA== - -apollo-engine-binary-linux@0.2018.6-20-gc0e4bb519: - version "0.2018.6-20-gc0e4bb519" - resolved "https://registry.yarnpkg.com/apollo-engine-binary-linux/-/apollo-engine-binary-linux-0.2018.6-20-gc0e4bb519.tgz#0f61d7e7888a58d8723516d1dc44d4c8a6688df2" - integrity sha512-HTUysRxRmwYQmbztuvytq5I2dgbPT/Z0J5HNz0Hx5/Ej19EHIb0v82mFMdMZKGRKHvOfao8XGG3/++C1vSQGiw== - -apollo-engine-binary-windows@0.2018.6-20-gc0e4bb519: - version "0.2018.6-20-gc0e4bb519" - resolved "https://registry.yarnpkg.com/apollo-engine-binary-windows/-/apollo-engine-binary-windows-0.2018.6-20-gc0e4bb519.tgz#288c718a730f2a1f8bb0aae9fff3e6da23c1f00f" - integrity sha512-Cj0FSI8MDHcDc8EknzcqBP57R5S6gLIdD4/lpQaOtZureS/Ijx3mltZ0csmn5v8S0dDaMM6zjElBMDfwl6aEDg== - apollo-engine-reporting-protobuf@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.1.0.tgz#fbc220cac2a3b7800ffc155d7e54c21c56b7848e" @@ -1610,22 +1521,6 @@ apollo-engine-reporting@0.1.3: graphql-extensions "0.3.3" lodash "^4.17.10" -apollo-engine@1.x: - version "1.1.2" - resolved "https://registry.yarnpkg.com/apollo-engine/-/apollo-engine-1.1.2.tgz#ef8465fe5234b3bfe034b7e96d37bc441b72a9cb" - integrity sha512-XALQo4VjyMaOkCeuO5z0j68eSvOxh7KhZkWW3Vqj8ufxk2WbJGCACU7XQEvD6HyGBwtDDXxV8KvZyU0CDisi1Q== - dependencies: - "@types/connect" "^3.4.31" - "@types/express" "^4.0.36" - "@types/koa" "^2.0.39" - "@types/koa-bodyparser" "^4.2.0" - "@types/koa-router" "^7.0.27" - "@types/restify" "^5.0.7" - optionalDependencies: - apollo-engine-binary-darwin "0.2018.6-20-gc0e4bb519" - apollo-engine-binary-linux "0.2018.6-20-gc0e4bb519" - apollo-engine-binary-windows "0.2018.6-20-gc0e4bb519" - apollo-env@0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/apollo-env/-/apollo-env-0.2.5.tgz#162c785bccd2aea69350a7600fab4b7147fc9da5" @@ -1641,14 +1536,14 @@ apollo-link-dedup@^1.0.0: dependencies: apollo-link "^1.2.4" -apollo-link-http-common@^0.2.4, apollo-link-http-common@^0.2.6: +apollo-link-http-common@^0.2.5, apollo-link-http-common@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.6.tgz#47b9012500599fe343e2e87378026384b4fc8c1f" integrity sha512-LUOMWvrZuBP1hyWLBXyaW0KyFeKo79j+k3N+Q4HSkXKbLibnllXQ+JxxoSKGhm0bhREygiLtJAG9JnGlhxGO/Q== dependencies: apollo-link "^1.2.4" -apollo-link-http@^1.5.5: +apollo-link-http@^1.5.7: version "1.5.7" resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.7.tgz#098615c427a910ec8c5817476bbabe68c586b339" integrity sha512-EZ9nynHjwYCpGYP5IsRrZGTWidUVpshk7MuSG4joqGtJMwpFCgMQz+y3BHdUhowHtfAd9z60XmeOTG9FJolb8A== @@ -1656,7 +1551,7 @@ apollo-link-http@^1.5.5: apollo-link "^1.2.4" apollo-link-http-common "^0.2.6" -apollo-link-retry@^2.2.5: +apollo-link-retry@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/apollo-link-retry/-/apollo-link-retry-2.2.6.tgz#aa17e08b4a115ddcbdd70444ced254d3c915fc44" integrity sha512-GhMcugGVT3JXGaZ61by1GVc/m1ceaRjo1WTTIfJLm75k1wdwW1WUnNmBU5ZQrUgdUzkqXaADbWinbm0tDhmMlQ== @@ -1664,21 +1559,21 @@ apollo-link-retry@^2.2.5: "@types/zen-observable" "0.8.0" apollo-link "^1.2.4" -apollo-link-schema@^1.1.1: +apollo-link-schema@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/apollo-link-schema/-/apollo-link-schema-1.1.2.tgz#6c36150ab11e0ee8dfed36d6886ac518244220fe" integrity sha512-uTM5BXpW4iK/9BP/1BUENpUfZ9WQvjVMZelIE4978wqzNTQoxJVl3582gMOq3vZGvef7wtCAcxFrOTspeNcdgw== dependencies: apollo-link "^1.2.4" -apollo-link-ws@^1.0.9: +apollo-link-ws@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/apollo-link-ws/-/apollo-link-ws-1.0.10.tgz#9fb5489a36f5fcb0d139b6ada0eea979ecad3967" integrity sha512-1Yx4iIUsWS8wuAdVJ2LF+LdIYAsqHSto8eShwJ/d2SovocsMCwN9hyS+JkaOPD/KHAkavTWzN6l3XwSOdOwevQ== dependencies: apollo-link "^1.2.4" -apollo-link@^1.0.0, apollo-link@^1.2.2, apollo-link@^1.2.3, apollo-link@^1.2.4: +apollo-link@^1.0.0, apollo-link@^1.2.3, apollo-link@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.4.tgz#ab4d21d2e428db848e88b5e8f4adc717b19c954b" integrity sha512-B1z+9H2nTyWEhMXRFSnoZ1vSuAYP+V/EdUJvRx9uZ8yuIBZMm6reyVtr1n0BWlKeSFyPieKJy2RLzmITAAQAMQ== @@ -1732,7 +1627,7 @@ apollo-server-errors@2.2.0: resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.2.0.tgz#5b452a1d6ff76440eb0f127511dc58031a8f3cb5" integrity sha512-gV9EZG2tovFtT1cLuCTavnJu2DaKxnXPRNGSTo+SDI6IAk6cdzyW0Gje5N2+3LybI0Wq5KAbW6VLei31S4MWmg== -apollo-server-express@^2.0.4: +apollo-server-express@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.2.6.tgz#2c0c5bdab6eccf63ab138ad4b6d6836aeb723540" integrity sha512-+zajJDcJLhWdkW8f0D5KQfDsaxgx7fQ3ULGDT1eZgL0UY5pazWBOnXqeRoVKRl+r1WcrwN1SMfBVnAKWv6CyVw== @@ -1764,25 +1659,26 @@ apollo-tracing@0.3.3: apollo-server-env "2.2.0" graphql-extensions "0.3.3" -apollo-upload-client@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-8.1.0.tgz#db99eed6af926dbd54cb0bbde30345672c97fc5f" - integrity sha512-JEgStzhnwybj1ifE2nViLEl7NTM5+zS++fKbDL95PIpodg2AdYeeN7eEa7RXpYD14iC3FVcsfqgGMREv2+cSxw== +apollo-upload-client@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-9.1.0.tgz#13191714ae07388088f2c773ebbfd53ba2f64c53" + integrity sha512-ZN5gsbBjImEZTWWTUHpCEGDasnoBGbaODpznQ5EawyNHceuFYSNJbbft+ZZ841vZAcj9XZdKUKoaLBlMZ/r7nw== dependencies: - "@babel/runtime" "^7.0.0-beta.51" - apollo-link-http-common "^0.2.4" - extract-files "^3.1.0" + apollo-link "^1.2.3" + apollo-link-http-common "^0.2.5" + extract-files "^4.0.0" -apollo-upload-server@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/apollo-upload-server/-/apollo-upload-server-5.0.0.tgz#c953b523608313966e0c8444637f4ae8ef77d5bc" - integrity sha512-CzbHvMo/6TO5XrovzmV/ojTft17s9Cd+vKLGngChpB0UW1ObxKlNLlcXRLD+yt6Nec32/Kt209HmA31hnwxB/g== +apollo-upload-server@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/apollo-upload-server/-/apollo-upload-server-7.1.0.tgz#21e07b52252b3749b913468599813e13cfca805f" + integrity sha512-cD9ReCeyurYwZyEDqJYb5TOc9dt8yhPzS+MtrY3iJdqw+pqiiyPngAvVXHjN+Ca7Lajvom4/AT/PBrYVDMM3Kw== dependencies: - "@babel/runtime" "^7.0.0-beta.40" busboy "^0.2.14" + fs-capacitor "^1.0.0" + http-errors "^1.7.0" object-path "^0.11.4" -apollo-utilities@1.0.26, apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo-utilities@^1.0.21, apollo-utilities@^1.0.26: +apollo-utilities@1.0.26, apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo-utilities@^1.0.26: version "1.0.26" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.26.tgz#589c66bf4d16223531351cf667a230c787def1da" integrity sha512-URw7o3phymliqYCYatcird2YRPUU2eWCNvip64U9gQrX56mEfK4m99yBIDCMTpmcvOFsKLii1sIEZsHIs/bvnw== @@ -3004,7 +2900,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@6.26.0, babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@6.26.0, babel-runtime@6.x.x, babel-runtime@^6.18.0, 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" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -3188,7 +3084,7 @@ bluebird@3.5.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.4.7, bluebird@^3.5.1, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -3611,17 +3507,17 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -bull@3.4.8: - version "3.4.8" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.4.8.tgz#bd25ae82f47e0a092c0b06b6a13b875fa5b41bc0" - integrity sha512-dO/Dxbe7gpq8hyYlQfkLFz+N7JxTLM7KlEppViOdaaq8JSq15GgQo1wARG7E223MB6Ji9u9xTRcqXi/SwVvI1Q== +bull@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.5.2.tgz#9c85f205b17686efab2ee28aaa4388887360de32" + integrity sha512-tuL4Uj0kUeaQ7Cow3POkca20fk+VSsR8AiTFeNkyMmuicBnE1ZMwvF1NRDY7vIH43pD9PiMCSEP4Li/934Pw1w== dependencies: - bluebird "^3.5.0" + bluebird "^3.5.3" cron-parser "^2.5.0" debuglog "^1.0.0" ioredis "^3.1.4" - lodash "^4.17.4" - semver "^5.5.0" + lodash "^4.17.11" + semver "^5.6.0" uuid "^3.2.1" bundle-buddy-webpack-plugin@^0.3.0: @@ -4948,7 +4844,7 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -dataloader@^1.3.0: +dataloader@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== @@ -6345,16 +6241,6 @@ expect@^22.4.0: jest-message-util "^22.4.3" jest-regex-util "^22.4.3" -expo-server-sdk@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/expo-server-sdk/-/expo-server-sdk-2.4.0.tgz#aa5e02415ba3268546ff61dddb5b92cb796f6e3a" - integrity sha512-sxTE9EhLqlF5JR6eAMHUUWkaO8JOKLjYHNpM546vO3MxA8JtzZZtdRyJ1271ZbTTyFNFP9snjWN6MxUrqnFX5Q== - dependencies: - babel-runtime "^6.11.6" - invariant "^2.2.4" - node-fetch "^2.1.2" - promise-limit "^2.6.0" - express-enforces-ssl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/express-enforces-ssl/-/express-enforces-ssl-1.1.0.tgz#cf29c6a61c5bdd802e2c7ed265a4a98e7487d1ac" @@ -6461,12 +6347,10 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-3.1.0.tgz#b70424c9d4a1a4208efe22069388f428e4ae00f1" - integrity sha512-urkJPM4N88CMy1AfDw+Avudon6fToTsaG5j5VN0aybn88udv1yrERFCweV78NaZg7DOFsQULkFgvP64vNQFNMQ== - dependencies: - "@babel/runtime" "^7.0.0-beta.38" +extract-files@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-4.1.0.tgz#2d5b64af688dfd030274ca542c43fabba325019a" + integrity sha512-2gjdb3dVzr1ie9+K8pupPTnsNkK4qmzbTFOIxghiWoh6nCTajGCGC72ZNYX0nBWy5IOq1FXfRVgvkkLqqE4sdw== extract-text-webpack-plugin@3.0.2: version "3.0.2" @@ -6889,6 +6773,11 @@ from@~0: resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= +fs-capacitor@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-1.0.1.tgz#ff9dbfa14dfaf4472537720f19c3088ed9278df0" + integrity sha512-XdZK0Q78WP29Vm3FGgJRhRhrBm51PagovzWtW2kJ3Q6cYJbGtZqWSGTSPwvtEkyjIirFd7b8Yes/dpOYjt4RRQ== + fs-extra@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -7290,18 +7179,7 @@ graphql-tag@^2.10.0, graphql-tag@^2.9.2: resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.0.tgz#87da024be863e357551b2b8700e496ee2d4353ae" integrity sha512-9FD6cw976TLLf9WYIUPCaaTpniawIjHWZSwIRZSjrfufJamcXbVVYfN2TWvJYbw0Xf2JjYbl1/f2+wDnBVw3/w== -graphql-tools@^3.0.5: - version "3.1.1" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-3.1.1.tgz#d593358f01e7c8b1671a17b70ddb034dea9dbc50" - integrity sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg== - dependencies: - apollo-link "^1.2.2" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -graphql-tools@^4.0.0: +graphql-tools@^4.0.0, graphql-tools@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.3.tgz#23b5cb52c519212b1b2e4630a361464396ad264b" integrity sha512-NNZM0WSnVLX1zIMUxu7SjzLZ4prCp15N5L2T2ro02OVyydZ0fuCnZYRnx/yK9xjGWbZA0Q58yEO//Bv/psJWrg== @@ -7723,6 +7601,17 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" +http-errors@^1.7.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.1.tgz#6a4ffe5d35188e1c39f872534690585852e1f027" + integrity sha512-jWEUgtZWGSMba9I1N3gc1HmvpBUaNC9vDdA46yScAdp+C5rdEuKWUBLWTQpW9FwSWSbYYs++b6SDCxf9UEJzfw== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-parser-js@>=0.4.0: version "0.5.0" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" @@ -8044,7 +7933,7 @@ ioredis@^3.1.4: redis-commands "^1.2.0" redis-parser "^2.4.0" -ioredis@^4.0.0, ioredis@^4.2.0: +ioredis@^4.0.0, ioredis@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.3.0.tgz#a92850dd8794eaee4f38a265c830ca823a09d345" integrity sha512-TwTp93UDKlKVQeg9ThuavNh4Vs31JTlqn+cI/J6z21OtfghyJm5I349ZlsKobOeEyS4INITMLQ1fhR7xwf9Fxg== @@ -9869,11 +9758,6 @@ merge2@^1.2.3: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== -merge@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= - merge@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" @@ -11481,13 +11365,6 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13: source-map "^0.6.1" supports-color "^5.4.0" -postmark@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/postmark/-/postmark-1.6.1.tgz#23d48f7182509be5be0eb80c16b90a2e2326eb3c" - integrity sha1-I9SPcYJQm+W+DrgMFrkKLiMm6zw= - dependencies: - merge "1.2.0" - pre-commit@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" @@ -11583,11 +11460,6 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-limit@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/promise-limit/-/promise-limit-2.7.0.tgz#eb5737c33342a030eaeaecea9b3d3a93cb592b26" - integrity sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw== - promise@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.1.tgz#e45d68b00a17647b6da711bf85ed6ed47208f450" @@ -11867,7 +11739,7 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-apollo@^2.2.4: +react-apollo@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-2.3.2.tgz#b8e287d2813722b9e0a886cabf8149ab3b84a3b7" integrity sha512-3lU9iqmj4KMIZvlWWSuLihxMGLEAL6oNmnSTWrb3/mRP36Zy0zJD4rdaonDx4WzqFYQAnUPaOiFnHGp0UQUTwA== @@ -12013,7 +11885,7 @@ react-loadable@^5.5.0: dependencies: prop-types "^15.5.0" -react-modal@^3.6.1: +react-modal@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.7.1.tgz#342ed170133d0557e6c3e6fc40195bc45c8f09c3" integrity sha512-eSgotXkqOCXi0b27AwLCoJ8yqLepKnbZdMp/zfUmZPnMNoe39pDT0mbAPq9rp+TToqM5GUTv8C36Cuja+ThbhA== @@ -13030,7 +12902,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@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: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -13489,7 +13361,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -13736,7 +13608,7 @@ subarg@^1.0.0: dependencies: minimist "^1.1.0" -subscriptions-transport-ws@0.9.x, subscriptions-transport-ws@^0.9.11: +subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.15: version "0.9.15" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.15.tgz#68a8b7ba0037d8c489fb2f5a102d1494db297d0d" integrity sha512-f9eBfWdHsePQV67QIX+VRhf++dn1adyC/PZHP6XI5AfKnZ4n0FW+v5omxwdHVpd4xq2ZijaHEcmlQrhBY79ZWQ== @@ -14098,6 +13970,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + toobusy-js@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/toobusy-js/-/toobusy-js-0.5.1.tgz#5511f78f6a87a6a512d44fdb0efa13672217f659" From 0ac3bc50d2a6d08bb3b4f06d25f65077bb1f6902 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" Date: Wed, 12 Dec 2018 11:15:27 +0000 Subject: [PATCH 08/25] Update electron-updater to version 4.0.6 --- desktop/package.json | 2 +- desktop/yarn.lock | 32 +++++++++++++++++++++----------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index 3d1f2e2063..bbf4ca5fb6 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -14,7 +14,7 @@ "electron-context-menu": "^0.10.1", "electron-is-dev": "^1.0.1", "electron-log": "^2.2.17", - "electron-updater": "^4.0.5", + "electron-updater": "^4.0.6", "electron-window-state": "^5.0.3" }, "devDependencies": { diff --git a/desktop/yarn.lock b/desktop/yarn.lock index b778a5228d..62d31f0794 100644 --- a/desktop/yarn.lock +++ b/desktop/yarn.lock @@ -298,7 +298,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builder-util-runtime@8.0.2, builder-util-runtime@^8.0.1, builder-util-runtime@~8.0.2: +builder-util-runtime@8.0.2, builder-util-runtime@^8.0.1: version "8.0.2" resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.0.2.tgz#9d638a266ca3aa25ced1cff4df74c8fd97dd78cf" integrity sha512-46AjyMQ1/yBvGnXWmqNGlg8te7jCPCs7TJ0zDC2+4vV/t5iZp2dR1H9UfVpcBxlvBq3dlAOmwb9fz1d9xZN1+Q== @@ -308,6 +308,16 @@ builder-util-runtime@8.0.2, builder-util-runtime@^8.0.1, builder-util-runtime@~8 fs-extra-p "^7.0.0" sax "^1.2.4" +builder-util-runtime@~8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.1.0.tgz#dd7fca995d48ceee7580b4851ca057566c94601e" + integrity sha512-s1mlJ28mv+56Iebh6c9aXjVe11O3Z0cDTwAGeB0PCcUzHA37fDxGgS8ZGoYNMZP+rBHj21d/od1wuYofTVLaQg== + dependencies: + bluebird-lst "^1.0.6" + debug "^4.1.0" + fs-extra-p "^7.0.0" + sax "^1.2.4" + builder-util@9.3.0, builder-util@~9.3.0: version "9.3.0" resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.3.0.tgz#1c94c3bd1c9095840d46a59cdf9514852a47ce8a" @@ -797,18 +807,18 @@ electron-publish@20.36.0: lazy-val "^1.0.3" mime "^2.3.1" -electron-updater@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.0.5.tgz#0d35f13b539d0dde5a1ee18f676ea87c37bf5f4a" - integrity sha512-2w93987YlPNMbhYQe6+EsSpkhtgYtLyYuAMttqQckwFdBJJat4Jo8ja/gmBk2Aa760g2Jt7aIBPQvlJDiXGPgg== +electron-updater@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.0.6.tgz#9c4f495ae0e80bf4425e3e1b801c5ed2ab933c2d" + integrity sha512-JPGLME6fxJcHG8hX7HWFl6Aew6iVm0DkcrENreKa5SUJCHG+uUaAhxDGDt+YGcNkyx1uJ6eBGMvFxDTLUv67pg== dependencies: bluebird-lst "^1.0.6" - builder-util-runtime "~8.0.2" + builder-util-runtime "~8.1.0" fs-extra-p "^7.0.0" js-yaml "^3.12.0" lazy-val "^1.0.3" lodash.isequal "^4.5.0" - pako "^1.0.6" + pako "^1.0.7" semver "^5.6.0" source-map-support "^0.5.9" @@ -2121,10 +2131,10 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -pako@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" - integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== +pako@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" + integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ== parse-color@^1.0.0: version "1.0.0" From 199f70d809f995237363c4caaa45af62c08d8ce5 Mon Sep 17 00:00:00 2001 From: Chiamaka Nwolisa Date: Wed, 12 Dec 2018 14:21:33 +0000 Subject: [PATCH 09/25] Replace all occurences of Link with import from react-router-dom --- src/components/avatar/style.js | 2 +- src/components/granularUserProfile/index.js | 2 +- src/components/hoverProfile/channelProfile.js | 61 ++++--- .../hoverProfile/communityProfile.js | 59 ++++--- src/components/hoverProfile/style.js | 2 +- src/components/hoverProfile/userProfile.js | 2 +- src/components/link/index.js | 5 - src/components/listItems/channel/style.js | 2 +- src/components/listItems/index.js | 25 ++- src/components/listItems/style.js | 2 +- src/components/loading/style.js | 2 +- src/components/message/authorByline.js | 2 +- src/components/message/style.js | 10 +- .../modals/ChatInputLoginModal/index.js | 2 +- src/components/profile/community.js | 2 +- src/components/profile/coverPhoto.js | 2 +- src/components/profile/style.js | 2 +- src/components/profile/thread.js | 2 +- src/components/profile/user.js | 2 +- src/components/rich-text-editor/style.js | 2 +- src/components/settingsViews/header.js | 34 ++-- src/components/settingsViews/subnav.js | 2 +- src/components/threadFeed/index.js | 2 +- src/components/threadFeedCard/style.js | 2 +- src/components/upsell/index.js | 2 +- src/components/upsell/requestToJoinChannel.js | 9 +- src/helpers/notifications.js | 5 +- .../components/pendingUsersNotification.js | 2 +- src/views/channel/index.js | 2 +- .../channelSettings/components/editForm.js | 30 ++-- src/views/community/components/channelList.js | 78 +++++---- src/views/community/index.js | 25 ++- .../components/threadListItem.js | 6 +- src/views/communityAnalytics/index.js | 2 +- src/views/communityMembers/index.js | 2 +- .../components/brandedLogin.js | 7 +- .../components/channelList.js | 2 +- src/views/communitySettings/style.js | 6 +- .../dashboard/components/communityList.js | 2 +- .../dashboard/components/errorThreadFeed.js | 2 +- .../components/inboxThread/header/style.js | 2 +- .../dashboard/components/inboxThread/style.js | 6 +- .../dashboard/components/sidebarChannels.js | 9 +- .../components/threadSelectorHeader.js | 2 +- .../components/upsellExploreCommunities.js | 2 +- .../directMessages/components/loading.js | 2 +- src/views/directMessages/components/style.js | 2 +- src/views/directMessages/containers/index.js | 2 +- .../components/communitySearchWrapper.js | 2 +- src/views/explore/components/search.js | 122 +++++++------- src/views/explore/style.js | 2 +- src/views/login/index.js | 2 +- .../navbar/components/notificationDropdown.js | 23 ++- .../navbar/components/profileDropdown.js | 18 +- src/views/navbar/style.js | 2 +- .../components/createCommunityForm/index.js | 2 +- .../components/communitySearch/index.js | 154 +++++++++--------- .../components/newChannelNotification.js | 2 +- src/views/notifications/utils.js | 2 +- src/views/pages/components/footer.js | 2 +- src/views/pages/components/nav.js | 2 +- src/views/pages/features/index.js | 2 +- src/views/pages/support/index.js | 2 +- src/views/pages/view.js | 2 +- src/views/thread/components/sidebar.js | 2 +- .../components/threadCommunityBanner.js | 2 +- src/views/thread/components/threadDetail.js | 2 +- src/views/thread/container.js | 2 +- src/views/thread/style.js | 2 +- src/views/threadSlider/index.js | 2 +- src/views/threadSlider/style.js | 2 +- src/views/titlebar/index.js | 2 +- src/views/user/components/communityList.js | 2 +- src/views/user/index.js | 2 +- .../components/deleteAccountForm.js | 2 +- src/views/userSettings/components/editForm.js | 2 +- 76 files changed, 394 insertions(+), 410 deletions(-) delete mode 100644 src/components/link/index.js diff --git a/src/components/avatar/style.js b/src/components/avatar/style.js index 3cb851b04c..76edcd5e9c 100644 --- a/src/components/avatar/style.js +++ b/src/components/avatar/style.js @@ -3,7 +3,7 @@ import theme from 'shared/theme'; import styled, { css } from 'styled-components'; import ReactImage from 'react-image'; import { zIndex } from '../globals'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { ProfileHeaderAction } from '../profile/style'; export const Container = styled.div` diff --git a/src/components/granularUserProfile/index.js b/src/components/granularUserProfile/index.js index 348f8602f4..9ea1a71ff3 100644 --- a/src/components/granularUserProfile/index.js +++ b/src/components/granularUserProfile/index.js @@ -5,7 +5,7 @@ import compose from 'recompose/compose'; import { connect } from 'react-redux'; import { UserHoverProfile } from 'src/components/hoverProfile'; import { UserAvatar } from 'src/components/avatar'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Reputation from 'src/components/reputation'; import Badge from 'src/components/badges'; import Icon from 'src/components/icons'; diff --git a/src/components/hoverProfile/channelProfile.js b/src/components/hoverProfile/channelProfile.js index f0de08a149..3d5c67816e 100644 --- a/src/components/hoverProfile/channelProfile.js +++ b/src/components/hoverProfile/channelProfile.js @@ -4,7 +4,7 @@ import compose from 'recompose/compose'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; import AvatarImage from 'src/components/avatar/image'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Button, OutlineButton } from 'src/components/buttons'; import ToggleChannelMembership from 'src/components/toggleChannelMembership'; import renderTextWithLinks from 'src/helpers/render-text-with-markdown-links'; @@ -72,36 +72,35 @@ class HoverProfile extends Component { - {!isGlobalModerator && - !isGlobalOwner && ( - { - if (isChannelMember) { - return ( - - Joined - - ); - } else { - return ( - - ); - } - }} - /> - )} + {!isGlobalModerator && !isGlobalOwner && ( + { + if (isChannelMember) { + return ( + + Joined + + ); + } else { + return ( + + ); + } + }} + /> + )} {(isGlobalModerator || isGlobalOwner) && ( diff --git a/src/components/hoverProfile/communityProfile.js b/src/components/hoverProfile/communityProfile.js index 5f63e0af24..e77997b15d 100644 --- a/src/components/hoverProfile/communityProfile.js +++ b/src/components/hoverProfile/communityProfile.js @@ -4,7 +4,7 @@ import compose from 'recompose/compose'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; import AvatarImage from 'src/components/avatar/image'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Button, OutlineButton } from 'src/components/buttons'; import ToggleCommunityMembership from 'src/components/toggleCommunityMembership'; import type { GetCommunityType } from 'shared/graphql/queries/community/getCommunity'; @@ -67,35 +67,34 @@ class HoverProfile extends Component { - {!isModerator && - !isOwner && ( - { - if (isMember) { - return ( - - Member - - ); - } else { - return ( - - ); - } - }} - /> - )} + {!isModerator && !isOwner && ( + { + if (isMember) { + return ( + + Member + + ); + } else { + return ( + + ); + } + }} + /> + )} {(isModerator || isOwner) && ( diff --git a/src/components/hoverProfile/style.js b/src/components/hoverProfile/style.js index 80d0ee7c11..94210e81e4 100644 --- a/src/components/hoverProfile/style.js +++ b/src/components/hoverProfile/style.js @@ -2,7 +2,7 @@ import theme from 'shared/theme'; import styled from 'styled-components'; import { zIndex } from 'src/components/globals'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; export const HoverWrapper = styled.div` position: absolute; diff --git a/src/components/hoverProfile/userProfile.js b/src/components/hoverProfile/userProfile.js index 64ab9a65f4..cab70cc456 100644 --- a/src/components/hoverProfile/userProfile.js +++ b/src/components/hoverProfile/userProfile.js @@ -4,7 +4,7 @@ import compose from 'recompose/compose'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; import AvatarImage from 'src/components/avatar/image'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Badge from 'src/components/badges'; import { Button } from 'src/components/buttons'; import ConditionalWrap from 'src/components/conditionalWrap'; diff --git a/src/components/link/index.js b/src/components/link/index.js deleted file mode 100644 index 960a34e372..0000000000 --- a/src/components/link/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// @flow -// TODO(@mxstbr): Get rid of this file and replace all occurences with the import from react-router-dom -import { Link } from 'react-router-dom'; - -export default Link; diff --git a/src/components/listItems/channel/style.js b/src/components/listItems/channel/style.js index fa159f837b..2240f889a2 100644 --- a/src/components/listItems/channel/style.js +++ b/src/components/listItems/channel/style.js @@ -2,7 +2,7 @@ import theme from 'shared/theme'; import styled from 'styled-components'; import { Truncate } from 'src/components/globals'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; export const ChannelContainer = styled.div` display: flex; diff --git a/src/components/listItems/index.js b/src/components/listItems/index.js index 17b8027967..fc050d3967 100644 --- a/src/components/listItems/index.js +++ b/src/components/listItems/index.js @@ -1,6 +1,6 @@ // @flow import * as React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Badge from 'src/components/badges'; import { UserAvatar, CommunityAvatar } from 'src/components/avatar'; import { CommunityHoverProfile } from 'src/components/hoverProfile'; @@ -44,12 +44,11 @@ export class CommunityListItem extends React.Component { {community.name} {/* greater than -1 because we want to pass the 0 to the component so it returns null */} - {typeof reputation === 'number' && - reputation > -1 && ( - - - - )} + {typeof reputation === 'number' && reputation > -1 && ( + + + + )} {children} @@ -93,17 +92,17 @@ export const UserListItem = ({ ? user.contextPermissions.reputation : 0 : user.reputation && typeof user.reputation === 'number' - ? user.reputation - : user.totalReputation && typeof user.totalReputation === 'number' - ? user.totalReputation - : 0; + ? user.reputation + : user.totalReputation && typeof user.totalReputation === 'number' + ? user.totalReputation + : 0; const role = user.contextPermissions && user.contextPermissions.isOwner ? 'Admin' : user.contextPermissions && user.contextPermissions.isModerator - ? 'Moderator' - : null; + ? 'Moderator' + : null; return ( diff --git a/src/components/listItems/style.js b/src/components/listItems/style.js index 3635f5e8bc..3a2126e622 100644 --- a/src/components/listItems/style.js +++ b/src/components/listItems/style.js @@ -1,6 +1,6 @@ import styled from 'styled-components'; import theme from 'shared/theme'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Truncate, FlexCol, diff --git a/src/components/loading/style.js b/src/components/loading/style.js index 922bc07ba7..f319dba500 100644 --- a/src/components/loading/style.js +++ b/src/components/loading/style.js @@ -5,7 +5,7 @@ import styled, { keyframes } from 'styled-components'; import { Card } from '../card'; import { hexa, FlexCol, zIndex } from '../globals'; // $FlowFixMe -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; const containerFadeIn = keyframes` 0%{ diff --git a/src/components/message/authorByline.js b/src/components/message/authorByline.js index 71dc1b7725..b978c1b38e 100644 --- a/src/components/message/authorByline.js +++ b/src/components/message/authorByline.js @@ -3,7 +3,7 @@ import * as React from 'react'; import { convertTimestampToTime } from 'shared/time-formatting'; import ConditionalWrap from 'src/components/conditionalWrap'; import { UserHoverProfile } from 'src/components/hoverProfile'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { MessagesContext } from 'src/components/messageGroup'; import Badge from '../badges'; import { diff --git a/src/components/message/style.js b/src/components/message/style.js index 2f10a35ac8..5d9bfd19ce 100644 --- a/src/components/message/style.js +++ b/src/components/message/style.js @@ -1,7 +1,7 @@ // @flow import theme from 'shared/theme'; import styled, { css } from 'styled-components'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { SvgWrapper } from '../icons'; import { Truncate, monoStack, hexa, Tooltip } from 'src/components/globals'; import { Wrapper as EditorWrapper } from '../rich-text-editor/style'; @@ -136,8 +136,8 @@ export const OuterMessageContainer = styled.div` props.selected ? props.theme.special.wash : props.error - ? props.theme.warn.wash - : props.theme.bg.default}; + ? props.theme.warn.wash + : props.theme.bg.default}; ${props => props.selected && @@ -158,8 +158,8 @@ export const OuterMessageContainer = styled.div` props.selected ? props.theme.special.wash : props.error - ? props.theme.warn.border - : props.theme.bg.wash}; + ? props.theme.warn.border + : props.theme.bg.wash}; ${ActionsContainer} { opacity: 1; diff --git a/src/components/modals/ChatInputLoginModal/index.js b/src/components/modals/ChatInputLoginModal/index.js index 67e3454fb8..c01b4e7a52 100644 --- a/src/components/modals/ChatInputLoginModal/index.js +++ b/src/components/modals/ChatInputLoginModal/index.js @@ -3,7 +3,7 @@ import * as React from 'react'; import { connect } from 'react-redux'; import Modal from 'react-modal'; import compose from 'recompose/compose'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { closeModal } from 'src/actions/modals'; import ModalContainer from '../modalContainer'; import { modalStyles } from '../styles'; diff --git a/src/components/profile/community.js b/src/components/profile/community.js index ff272333cc..f3091c7ce2 100644 --- a/src/components/profile/community.js +++ b/src/components/profile/community.js @@ -2,7 +2,7 @@ import * as React from 'react'; import Card from '../card'; import compose from 'recompose/compose'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { connect } from 'react-redux'; import addProtocolToString from 'shared/normalize-url'; import { CLIENT_URL } from 'src/api/constants'; diff --git a/src/components/profile/coverPhoto.js b/src/components/profile/coverPhoto.js index 701d79ca42..23c03dd791 100644 --- a/src/components/profile/coverPhoto.js +++ b/src/components/profile/coverPhoto.js @@ -1,7 +1,7 @@ import React from 'react'; import theme from 'shared/theme'; import styled from 'styled-components'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { ProfileHeaderAction } from './style'; const PhotoContainer = styled.div` diff --git a/src/components/profile/style.js b/src/components/profile/style.js index e52d182015..b8e46399d4 100644 --- a/src/components/profile/style.js +++ b/src/components/profile/style.js @@ -1,7 +1,7 @@ // @flow import theme from 'shared/theme'; import styled from 'styled-components'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { FlexRow, FlexCol, diff --git a/src/components/profile/thread.js b/src/components/profile/thread.js index f15b086934..37fd2eb216 100644 --- a/src/components/profile/thread.js +++ b/src/components/profile/thread.js @@ -2,7 +2,7 @@ import * as React from 'react'; import { withRouter } from 'react-router'; import compose from 'recompose/compose'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { connect } from 'react-redux'; import { ThreadListItem } from '../listItems'; import { ThreadProfileCard } from './style'; diff --git a/src/components/profile/user.js b/src/components/profile/user.js index b056e5b7aa..4b4e1b02ab 100644 --- a/src/components/profile/user.js +++ b/src/components/profile/user.js @@ -1,6 +1,6 @@ // @flow import React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Card from 'src/components/card'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; diff --git a/src/components/rich-text-editor/style.js b/src/components/rich-text-editor/style.js index e69ba88c83..64d338edc3 100644 --- a/src/components/rich-text-editor/style.js +++ b/src/components/rich-text-editor/style.js @@ -4,7 +4,7 @@ import compose from 'recompose/compose'; import React from 'react'; import { connect } from 'react-redux'; import styled, { css } from 'styled-components'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Transition, zIndex } from 'src/components/globals'; import { UserHoverProfile } from 'src/components/hoverProfile'; import type { Node } from 'react'; diff --git a/src/components/settingsViews/header.js b/src/components/settingsViews/header.js index f5f8200956..16d4c25e25 100644 --- a/src/components/settingsViews/header.js +++ b/src/components/settingsViews/header.js @@ -1,6 +1,6 @@ // @flow import * as React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { StyledHeader, Heading, Subheading, HeaderText } from './style'; import { UserAvatar, CommunityAvatar } from '../avatar'; @@ -22,23 +22,21 @@ class Header extends React.Component { const { avatar, subheading, heading } = this.props; return ( - {avatar && - avatar.community && ( - - )} - {avatar && - avatar.user && ( - - )} + {avatar && avatar.community && ( + + )} + {avatar && avatar.user && ( + + )} {subheading.label} diff --git a/src/components/settingsViews/subnav.js b/src/components/settingsViews/subnav.js index 92fdfc194b..12e2821dc9 100644 --- a/src/components/settingsViews/subnav.js +++ b/src/components/settingsViews/subnav.js @@ -1,6 +1,6 @@ // @flow import * as React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { StyledSubnav, SubnavList, SubnavListItem } from './style'; type SubnavItem = { diff --git a/src/components/threadFeed/index.js b/src/components/threadFeed/index.js index 087526bac2..994627e227 100644 --- a/src/components/threadFeed/index.js +++ b/src/components/threadFeed/index.js @@ -7,7 +7,7 @@ import compose from 'recompose/compose'; import InfiniteList from 'src/components/infiniteScroll'; import { deduplicateChildren } from 'src/components/infiniteScroll/deduplicateChildren'; import { connect } from 'react-redux'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from 'src/components/icons'; import InboxThread from 'src/views/dashboard/components/inboxThread'; import { NullCard } from '../upsell'; diff --git a/src/components/threadFeedCard/style.js b/src/components/threadFeedCard/style.js index ac5eb99ccf..4711fcb978 100644 --- a/src/components/threadFeedCard/style.js +++ b/src/components/threadFeedCard/style.js @@ -1,6 +1,6 @@ import styled from 'styled-components'; import theme from 'shared/theme'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { FlexCol, FlexRow, Transition, Gradient, zIndex } from '../globals'; export const StyledThreadFeedCard = styled.div` diff --git a/src/components/upsell/index.js b/src/components/upsell/index.js index 6e338244cd..c73a8405d5 100644 --- a/src/components/upsell/index.js +++ b/src/components/upsell/index.js @@ -1,6 +1,6 @@ // @flow import * as React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from 'src/components/icons'; import { storeItem } from 'src/helpers/localStorage'; import ToggleCommunityMembership from 'src/components/toggleCommunityMembership'; diff --git a/src/components/upsell/requestToJoinChannel.js b/src/components/upsell/requestToJoinChannel.js index 711c2b9b49..4acc5febb1 100644 --- a/src/components/upsell/requestToJoinChannel.js +++ b/src/components/upsell/requestToJoinChannel.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import compose from 'recompose/compose'; import { connect } from 'react-redux'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import toggleChannelSubscriptionMutation from 'shared/graphql/mutations/channel/toggleChannelSubscription'; import type { ToggleChannelSubscriptionType } from 'shared/graphql/mutations/channel/toggleChannelSubscription'; import { addToastWithTimeout } from '../../actions/toasts'; @@ -119,6 +119,7 @@ class RequestToJoinChannel extends Component { } } -export default compose(connect(), toggleChannelSubscriptionMutation)( - RequestToJoinChannel -); +export default compose( + connect(), + toggleChannelSubscriptionMutation +)(RequestToJoinChannel); diff --git a/src/helpers/notifications.js b/src/helpers/notifications.js index 4f1c3bbe3e..1941fdd3fc 100644 --- a/src/helpers/notifications.js +++ b/src/helpers/notifications.js @@ -1,6 +1,6 @@ import React from 'react'; //$FlowFixMe -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from '../components/icons'; import { HorizontalRuleWithIcon } from '../components/globals'; @@ -51,7 +51,8 @@ export const constructMessage = notification => { }} > thread - : + + : ); default: diff --git a/src/views/channel/components/pendingUsersNotification.js b/src/views/channel/components/pendingUsersNotification.js index c1362a4365..b719ac9ecb 100644 --- a/src/views/channel/components/pendingUsersNotification.js +++ b/src/views/channel/components/pendingUsersNotification.js @@ -1,6 +1,6 @@ // @flow import React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import compose from 'recompose/compose'; import { displayLoadingCard } from '../../../components/loading'; import getPendingUsersQuery from 'shared/graphql/queries/channel/getChannelPendingUsers'; diff --git a/src/views/channel/index.js b/src/views/channel/index.js index 9fcce19d1f..a1a59e80be 100644 --- a/src/views/channel/index.js +++ b/src/views/channel/index.js @@ -10,7 +10,7 @@ import Head from 'src/components/head'; import AppViewWrapper from 'src/components/appViewWrapper'; import viewNetworkHandler from 'src/components/viewNetworkHandler'; import ViewError from 'src/components/viewError'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import ThreadFeed from 'src/components/threadFeed'; import PendingUsersNotification from './components/pendingUsersNotification'; import NotificationsToggle from './components/notificationsToggle'; diff --git a/src/views/channelSettings/components/editForm.js b/src/views/channelSettings/components/editForm.js index 6e2e981f49..4cd735d057 100644 --- a/src/views/channelSettings/components/editForm.js +++ b/src/views/channelSettings/components/editForm.js @@ -3,7 +3,7 @@ import * as React from 'react'; import compose from 'recompose/compose'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import editChannelMutation from 'shared/graphql/mutations/channel/editChannel'; import type { EditChannelType } from 'shared/graphql/mutations/channel/editChannel'; import type { GetChannelType } from 'shared/graphql/queries/channel/getChannel'; @@ -236,21 +236,19 @@ class ChannelWithData extends React.Component { Anyone on Spectrum can join this channel, post threads and messages, and will be able to see other members. If you want to create private channels,{' '} - get in touch - . + get in touch. )} {// if the user is moving from private to public - this.props.channel.isPrivate && - !isPrivate && ( - - When a private channel is made public all pending users will - be added as members of the channel. Blocked users will remain - blocked from viewing all content in this channel but in the - future any new person will be able to join. - - )} + this.props.channel.isPrivate && !isPrivate && ( + + When a private channel is made public all pending users will be + added as members of the channel. Blocked users will remain + blocked from viewing all content in this channel but in the + future any new person will be able to join. + + )} - - - + isFocused && searchString && ( + + + {searchResults.length > 0 && + !searchIsLoading && + searchResults.map(community => { + return ( + + + + + + + {community.name} + + {community.metaData && ( + + {community.metaData.members.toLocaleString()}{' '} + members + + )} + + + - )} - - {searchIsLoading && - isFocused && ( - - - -

Searching for “{searchString}”

-
-
-
- )} -
-
- )} + ); + })} + + {searchResults.length === 0 && !searchIsLoading && isFocused && ( + + + +

No communities found matching “{searchString}”

+ + + +
+
+
+ )} + + {searchIsLoading && isFocused && ( + + + +

Searching for “{searchString}”

+
+
+
+ )} + + + )} ); } diff --git a/src/views/explore/style.js b/src/views/explore/style.js index 0ea3ef9bdc..b83cb24eb7 100644 --- a/src/views/explore/style.js +++ b/src/views/explore/style.js @@ -3,7 +3,7 @@ import theme from 'shared/theme'; // $FlowFixMe import styled from 'styled-components'; // $FlowFixMe -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { FlexCol, FlexRow, diff --git a/src/views/login/index.js b/src/views/login/index.js index c61098b2d4..66a78de5f0 100644 --- a/src/views/login/index.js +++ b/src/views/login/index.js @@ -2,7 +2,7 @@ import * as React from 'react'; import { withRouter } from 'react-router'; import compose from 'recompose/compose'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from 'src/components/icons'; import FullscreenView from 'src/components/fullscreenView'; import LoginButtonSet from 'src/components/loginButtonSet'; diff --git a/src/views/navbar/components/notificationDropdown.js b/src/views/navbar/components/notificationDropdown.js index 8ffeb481d9..62b165ce65 100644 --- a/src/views/navbar/components/notificationDropdown.js +++ b/src/views/navbar/components/notificationDropdown.js @@ -5,7 +5,7 @@ import compose from 'recompose/compose'; // $FlowFixMe import { withRouter } from 'react-router'; // $FlowFixMe -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from '../../../components/icons'; import Dropdown from '../../../components/dropdown'; import { Loading } from '../../../components/loading'; @@ -88,17 +88,16 @@ const NotificationDropdownPure = props => { } /> - {rawNotifications && - rawNotifications.length > 0 && ( - - history.push('/notifications')} - > - View all - - - )} + {rawNotifications && rawNotifications.length > 0 && ( + + history.push('/notifications')} + > + View all + + + )} ); }; diff --git a/src/views/navbar/components/profileDropdown.js b/src/views/navbar/components/profileDropdown.js index e45edf3cc5..92249514e6 100644 --- a/src/views/navbar/components/profileDropdown.js +++ b/src/views/navbar/components/profileDropdown.js @@ -3,7 +3,7 @@ import theme from 'shared/theme'; import React from 'react'; import styled from 'styled-components'; import { connect } from 'react-redux'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Dropdown from 'src/components/dropdown'; import { SERVER_URL } from 'src/api/constants'; import type { UserInfoType } from 'shared/graphql/fragments/user/userInfo'; @@ -74,15 +74,13 @@ class ProfileDropdown extends React.Component { )} - {didMount && - isMac() && - !isDesktopApp() && ( - - - Desktop App - - - )} + {didMount && isMac() && !isDesktopApp() && ( + + + Desktop App + + + )} diff --git a/src/views/navbar/style.js b/src/views/navbar/style.js index 8e476d4397..09b7edd44c 100644 --- a/src/views/navbar/style.js +++ b/src/views/navbar/style.js @@ -1,7 +1,7 @@ // @flow import theme from 'shared/theme'; import styled, { css } from 'styled-components'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Transition, FlexRow, hexa, zIndex } from 'src/components/globals'; import { UserAvatar } from 'src/components/avatar'; import { isDesktopApp } from 'src/helpers/desktop-app-utils'; diff --git a/src/views/newCommunity/components/createCommunityForm/index.js b/src/views/newCommunity/components/createCommunityForm/index.js index 9651425bc9..3306455cc1 100644 --- a/src/views/newCommunity/components/createCommunityForm/index.js +++ b/src/views/newCommunity/components/createCommunityForm/index.js @@ -1,6 +1,6 @@ // @flow import * as React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; import { withRouter } from 'react-router'; diff --git a/src/views/newUserOnboarding/components/communitySearch/index.js b/src/views/newUserOnboarding/components/communitySearch/index.js index 9d097bf586..3375f9499c 100644 --- a/src/views/newUserOnboarding/components/communitySearch/index.js +++ b/src/views/newUserOnboarding/components/communitySearch/index.js @@ -3,7 +3,7 @@ import * as React from 'react'; import { withApollo } from 'react-apollo'; import { withRouter } from 'react-router'; import compose from 'recompose/compose'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { connect } from 'react-redux'; import { Button, OutlineButton } from 'src/components/buttons'; import ToggleCommunityMembership from 'src/components/toggleCommunityMembership'; @@ -282,84 +282,82 @@ class Search extends React.Component { {// user has typed in a search string - isFocused && - searchString && ( - - - {searchResults.length > 0 && - searchResults.map(community => { - return ( - - - - - {community.name} - {community.metaData && ( - - {community.metaData.members} members - - )} - - {community.description} - - - -
- {community.communityPermissions.isMember ? ( - ( - - Joined! - - )} - /> - ) : ( - ( - - )} - /> - )} -
-
- ); - })} - - {searchResults.length === 0 && - isFocused && ( - - -

No communities found matching “{searchString}”

- - - -
+ isFocused && searchString && ( + + + {searchResults.length > 0 && + searchResults.map(community => { + return ( + + + + + {community.name} + {community.metaData && ( + + {community.metaData.members} members + + )} + + {community.description} + + + +
+ {community.communityPermissions.isMember ? ( + ( + + Joined! + + )} + /> + ) : ( + ( + + )} + /> + )} +
- )} -
-
- )} + ); + })} + + {searchResults.length === 0 && isFocused && ( + + +

No communities found matching “{searchString}”

+ + + +
+
+ )} +
+
+ )} ); } diff --git a/src/views/notifications/components/newChannelNotification.js b/src/views/notifications/components/newChannelNotification.js index 9222f83d4d..d15927b3d6 100644 --- a/src/views/notifications/components/newChannelNotification.js +++ b/src/views/notifications/components/newChannelNotification.js @@ -5,7 +5,7 @@ import { getChannelById } from 'shared/graphql/queries/channel/getChannel'; import { displayLoadingCard } from '../../../components/loading'; import { parseNotificationDate, parseContext } from '../utils'; import Icon from '../../../components/icons'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { SegmentedNotificationCard, TextContent, diff --git a/src/views/notifications/utils.js b/src/views/notifications/utils.js index 85718e03b2..15fcb9be6b 100644 --- a/src/views/notifications/utils.js +++ b/src/views/notifications/utils.js @@ -1,5 +1,5 @@ import React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Query } from 'react-apollo'; import { timeDifferenceShort } from 'shared/time-difference'; import { getThreadByIdQuery } from 'shared/graphql/queries/thread/getThread'; diff --git a/src/views/pages/components/footer.js b/src/views/pages/components/footer.js index 9ca39da2f9..f0e7ee3594 100644 --- a/src/views/pages/components/footer.js +++ b/src/views/pages/components/footer.js @@ -9,7 +9,7 @@ import { Safety, SocialLinks, } from '../style'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { IconButton } from 'src/components/buttons'; import { Logo } from 'src/components/logo'; import { track, events } from 'src/helpers/analytics'; diff --git a/src/views/pages/components/nav.js b/src/views/pages/components/nav.js index 238ad0a052..946b2f1f53 100644 --- a/src/views/pages/components/nav.js +++ b/src/views/pages/components/nav.js @@ -3,7 +3,7 @@ import * as React from 'react'; import compose from 'recompose/compose'; import { connect } from 'react-redux'; import { Button, IconButton } from 'src/components/buttons'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from 'src/components/icons'; import { Logo } from 'src/components/logo'; import { UserAvatar } from 'src/components/avatar'; diff --git a/src/views/pages/features/index.js b/src/views/pages/features/index.js index ce0a69cd82..dbc727bdf4 100644 --- a/src/views/pages/features/index.js +++ b/src/views/pages/features/index.js @@ -2,7 +2,7 @@ import * as React from 'react'; import Section from 'src/components/themedSection'; import PageFooter from '../components/footer'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from 'src/components/icons'; import { Easy, Happy, Impact, Ideas } from 'src/components/illustrations'; import { Wrapper } from '../style'; diff --git a/src/views/pages/support/index.js b/src/views/pages/support/index.js index 89b868bd4e..c282655bcf 100644 --- a/src/views/pages/support/index.js +++ b/src/views/pages/support/index.js @@ -3,7 +3,7 @@ import * as React from 'react'; import PageFooter from '../components/footer'; import Section from 'src/components/themedSection'; import { Wrapper } from '../style'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Button } from 'src/components/buttons'; import { FourUp, diff --git a/src/views/pages/view.js b/src/views/pages/view.js index d46923ee75..35fe92f752 100644 --- a/src/views/pages/view.js +++ b/src/views/pages/view.js @@ -2,7 +2,7 @@ import theme from 'shared/theme'; import React from 'react'; import styled from 'styled-components'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Icon from '../../components/icons'; import { UserAvatar } from '../../components/avatar'; import { diff --git a/src/views/thread/components/sidebar.js b/src/views/thread/components/sidebar.js index e5d24921fa..bfeca81cdd 100644 --- a/src/views/thread/components/sidebar.js +++ b/src/views/thread/components/sidebar.js @@ -9,7 +9,7 @@ import { LoadingListThreadDetail, } from 'src/components/loading'; import ToggleCommunityMembership from 'src/components/toggleCommunityMembership'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import getCommunityThreads from 'shared/graphql/queries/community/getCommunityThreadConnection'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; diff --git a/src/views/thread/components/threadCommunityBanner.js b/src/views/thread/components/threadCommunityBanner.js index 1fa98e9441..685bed1fbd 100644 --- a/src/views/thread/components/threadCommunityBanner.js +++ b/src/views/thread/components/threadCommunityBanner.js @@ -2,7 +2,7 @@ import * as React from 'react'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { CommunityHoverProfile, ChannelHoverProfile, diff --git a/src/views/thread/components/threadDetail.js b/src/views/thread/components/threadDetail.js index 7bc2bbff93..78f687f1be 100644 --- a/src/views/thread/components/threadDetail.js +++ b/src/views/thread/components/threadDetail.js @@ -1,7 +1,7 @@ // @flow import * as React from 'react'; import compose from 'recompose/compose'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; import { timeDifference } from 'shared/time-difference'; diff --git a/src/views/thread/container.js b/src/views/thread/container.js index 94ac6683c0..6c396247b3 100644 --- a/src/views/thread/container.js +++ b/src/views/thread/container.js @@ -14,7 +14,7 @@ import Messages from './components/messages'; import Head from 'src/components/head'; import ChatInput from 'src/components/chatInput'; import ViewError from 'src/components/viewError'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import viewNetworkHandler from 'src/components/viewNetworkHandler'; import { withCurrentUser } from 'src/components/withCurrentUser'; import { diff --git a/src/views/thread/style.js b/src/views/thread/style.js index bcc85fe865..c5be0235bd 100644 --- a/src/views/thread/style.js +++ b/src/views/thread/style.js @@ -1,7 +1,7 @@ // @flow import theme from 'shared/theme'; import styled, { css } from 'styled-components'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Button } from 'src/components/buttons'; import Column from 'src/components/column'; import { diff --git a/src/views/threadSlider/index.js b/src/views/threadSlider/index.js index a717496a1a..5f34306523 100644 --- a/src/views/threadSlider/index.js +++ b/src/views/threadSlider/index.js @@ -5,7 +5,7 @@ import { closeThreadSlider, } from '../../actions/threadSlider'; import queryString from 'query-string'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import Transition from 'react-transition-group/Transition'; import { Container, diff --git a/src/views/threadSlider/style.js b/src/views/threadSlider/style.js index 4aab8a5849..85da952b8b 100644 --- a/src/views/threadSlider/style.js +++ b/src/views/threadSlider/style.js @@ -3,7 +3,7 @@ import theme from 'shared/theme'; // $FlowFixMe import styled, { css } from 'styled-components'; // $FlowFixMe -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { zIndex } from '../../components/globals'; const animation = css` diff --git a/src/views/titlebar/index.js b/src/views/titlebar/index.js index 1dba6dc0b6..4f12ee5478 100644 --- a/src/views/titlebar/index.js +++ b/src/views/titlebar/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import compose from 'recompose/compose'; import { withRouter } from 'react-router'; import queryString from 'query-string'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import ThreadSearch from '../dashboard/components/threadSearch'; import Icon from '../../components/icons'; import { IconButton } from '../../components/buttons'; diff --git a/src/views/user/components/communityList.js b/src/views/user/components/communityList.js index 1efa814b2d..a22698d5eb 100644 --- a/src/views/user/components/communityList.js +++ b/src/views/user/components/communityList.js @@ -1,6 +1,6 @@ //@flow import * as React from 'react'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; import compose from 'recompose/compose'; diff --git a/src/views/user/index.js b/src/views/user/index.js index a8b5dccc7e..a830b2c12d 100644 --- a/src/views/user/index.js +++ b/src/views/user/index.js @@ -4,7 +4,7 @@ import compose from 'recompose/compose'; import { type History, type Match } from 'react-router'; import { connect } from 'react-redux'; import generateMetaInfo from 'shared/generate-meta-info'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import AppViewWrapper from 'src/components/appViewWrapper'; import Head from 'src/components/head'; import ThreadFeed from 'src/components/threadFeed'; diff --git a/src/views/userSettings/components/deleteAccountForm.js b/src/views/userSettings/components/deleteAccountForm.js index b41c2a26d5..d20fe062ad 100644 --- a/src/views/userSettings/components/deleteAccountForm.js +++ b/src/views/userSettings/components/deleteAccountForm.js @@ -18,7 +18,7 @@ import viewNetworkHandler from 'src/components/viewNetworkHandler'; import { Button, TextButton, OutlineButton } from 'src/components/buttons'; import deleteCurrentUserMutation from 'shared/graphql/mutations/user/deleteCurrentUser'; import { SERVER_URL } from 'src/api/constants'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Loading } from 'src/components/loading'; import { track, events } from 'src/helpers/analytics'; import type { Dispatch } from 'redux'; diff --git a/src/views/userSettings/components/editForm.js b/src/views/userSettings/components/editForm.js index 073814bce3..780562c139 100644 --- a/src/views/userSettings/components/editForm.js +++ b/src/views/userSettings/components/editForm.js @@ -4,7 +4,7 @@ import { withRouter } from 'react-router'; import { withApollo } from 'react-apollo'; import compose from 'recompose/compose'; import { connect } from 'react-redux'; -import Link from 'src/components/link'; +import { Link } from 'react-router-dom'; import { Button } from 'src/components/buttons'; import Icon from 'src/components/icons'; import { SERVER_URL, CLIENT_URL } from 'src/api/constants'; From 51dbaf5e44f0f08898540c6bd9a863e897ed66f8 Mon Sep 17 00:00:00 2001 From: Chiamaka Nwolisa Date: Wed, 12 Dec 2018 14:41:00 +0000 Subject: [PATCH 10/25] Replace Link occurences for relative urls --- .../dashboard/components/emptyThreadFeed.js | 2 +- src/views/pages/style.js | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/views/dashboard/components/emptyThreadFeed.js b/src/views/dashboard/components/emptyThreadFeed.js index c0b278c9a2..c01b72daf2 100644 --- a/src/views/dashboard/components/emptyThreadFeed.js +++ b/src/views/dashboard/components/emptyThreadFeed.js @@ -2,7 +2,7 @@ import React from 'react'; // $FlowFixMe import { connect } from 'react-redux'; -import Link from '../../../components/link'; +import { Link } from 'react-router-dom'; import { changeActiveThread } from '../../../actions/dashboardFeed'; import Icon from '../../../components/icons'; import { Button } from '../../../components/buttons'; diff --git a/src/views/pages/style.js b/src/views/pages/style.js index 21ec7f8e51..4dfca8897c 100644 --- a/src/views/pages/style.js +++ b/src/views/pages/style.js @@ -1,7 +1,7 @@ // @flow import theme from 'shared/theme'; import styled, { css } from 'styled-components'; -import Link from '../../components/link'; +import { Link } from 'react-router-dom'; import { Button } from '../../components/buttons'; import { H2, @@ -239,8 +239,8 @@ export const ButtonTwitter = styled(Button)` props.whitebg ? props.theme.social.twitter.default : props.preferred - ? '#fff' - : 'rgba(255,255,255,0.8)'}; + ? '#fff' + : 'rgba(255,255,255,0.8)'}; &:hover { color: ${props => @@ -255,8 +255,8 @@ export const ButtonFacebook = styled(Button)` props.whitebg ? props.theme.social.facebook.default : props.preferred - ? '#fff' - : 'rgba(255,255,255,0.8)'}; + ? '#fff' + : 'rgba(255,255,255,0.8)'}; &:hover { color: ${props => @@ -271,8 +271,8 @@ export const ButtonGoogle = styled(Button)` props.whitebg ? props.theme.social.google.default : props.preferred - ? '#fff' - : 'rgba(255,255,255,0.8)'}; + ? '#fff' + : 'rgba(255,255,255,0.8)'}; &:hover { color: ${props => @@ -530,8 +530,8 @@ export const Tab = styled(Link)` ? props.theme.text.reverse : props.theme.text.default : props.dark - ? props.theme.text.reverse - : props.theme.text.alt}; + ? props.theme.text.reverse + : props.theme.text.alt}; &:hover { color: ${props => @@ -540,8 +540,8 @@ export const Tab = styled(Link)` ? props.theme.text.reverse : props.theme.text.default : props.dark - ? props.theme.text.reverse - : props.theme.text.alt}; + ? props.theme.text.reverse + : props.theme.text.alt}; text-shadow: ${props => props.dark ? `0 0 32px ${hexa(props.theme.text.reverse, 0.75)}` : 'none'}; } From c36483a537f0c8223f8af14c1502d2fa9ce2274d Mon Sep 17 00:00:00 2001 From: Max Stoiber Date: Wed, 12 Dec 2018 16:11:38 +0100 Subject: [PATCH 11/25] [HOTFIX] Fix email jobs never completing The job queue didn't know that the job had completed because the returned promise from `sendEmail` never resolved. Just need to return the Promise that is returned from `sg.send`, see https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/USE_CASES.md#handling-successfailureerrors --- hermes/send-email.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hermes/send-email.js b/hermes/send-email.js index a14d441feb..f93261eb73 100644 --- a/hermes/send-email.js +++ b/hermes/send-email.js @@ -80,7 +80,7 @@ const sendEmail = (options: Options) => { // $FlowFixMe return new Promise((res, rej) => { - sg.send({ + return sg.send({ ...defaultOptions, templateId, to, From d74ea9eeb70600a7d13ae7bb85afee884f10b4ef Mon Sep 17 00:00:00 2001 From: Max Stoiber Date: Wed, 12 Dec 2018 16:37:11 +0100 Subject: [PATCH 12/25] Remove unnecessary new Promise wrapper --- hermes/send-email.js | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/hermes/send-email.js b/hermes/send-email.js index f93261eb73..c82cd34d2f 100644 --- a/hermes/send-email.js +++ b/hermes/send-email.js @@ -27,7 +27,7 @@ const defaultOptions = { }, }; -const sendEmail = (options: Options) => { +const sendEmail = (options: Options): Promise => { const { templateId, to, dynamic_template_data, userId } = options; if (SENDGRID_API_KEY !== 'undefined') { @@ -50,7 +50,7 @@ const sendEmail = (options: Options) => { }) ); - return; + return Promise.resolve(); } if (userId) { @@ -69,23 +69,20 @@ const sendEmail = (options: Options) => { }); } - return; + return Promise.resolve(); } // qq.com email addresses are isp blocked, which raises our error rate // on sendgrid. prevent sending these emails at all if (to.substr(to.length - 7) === '@qq.com') { - return; + return Promise.resolve(); } - // $FlowFixMe - return new Promise((res, rej) => { - return sg.send({ - ...defaultOptions, - templateId, - to, - dynamic_template_data, - }); + return sg.send({ + ...defaultOptions, + templateId, + to, + dynamic_template_data, }); }; From aa626bc9ebbba13aab6cda4c88da0f76133597d7 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" Date: Wed, 12 Dec 2018 17:05:41 +0000 Subject: [PATCH 13/25] Update babel-plugin-styled-components to version 1.9.4 --- api/package.json | 2 +- api/yarn.lock | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/api/package.json b/api/package.json index 45f03fe475..ab5556bd29 100644 --- a/api/package.json +++ b/api/package.json @@ -11,7 +11,7 @@ "axios": "^0.16.2", "b2a": "^1.0.10", "babel-plugin-replace-dynamic-import-runtime": "^1.0.2", - "babel-plugin-styled-components": "^1.9.2", + "babel-plugin-styled-components": "^1.9.4", "babel-plugin-transform-flow-strip-types": "^6.22.0", "babel-plugin-transform-object-rest-spread": "^6.23.0", "babel-preset-env": "^1.7.0", diff --git a/api/yarn.lock b/api/yarn.lock index 179926335a..cbcb385870 100644 --- a/api/yarn.lock +++ b/api/yarn.lock @@ -1719,7 +1719,7 @@ babel-plugin-replace-dynamic-import-runtime@^1.0.2: babel-template "^6.24.1" babel-types "^6.24.1" -babel-plugin-styled-components@^1.1.4, babel-plugin-styled-components@^1.9.2: +babel-plugin-styled-components@^1.1.4: version "1.9.3" resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.9.3.tgz#facc61da441d15b291128b36cba07f309ed324f0" integrity sha512-MkRRvMyWRSZti9HlNCROdbrxkaE2TCsRjKqT8OJ1GH4+ksNIIPNEG3HuqWzcwicKbpW6O1KZizOGFEmnpOeD4Q== @@ -1728,6 +1728,15 @@ babel-plugin-styled-components@^1.1.4, babel-plugin-styled-components@^1.9.2: babel-plugin-syntax-jsx "^6.18.0" lodash "^4.17.10" +babel-plugin-styled-components@^1.9.4: + version "1.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.9.4.tgz#5f2c34d31237c6ee1e86453cc5fa488b97136669" + integrity sha512-FIACAvgJsUasYA+CdhPMWUIXWCdUUirz7fL9FGQYNNuOls+bs9OUWWHYVM2W9gjVoS2TXdEMqcOVVyG3Hagd/g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.10" + babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" From 95ecf6234209bd6e37a7d8afeb8e1d5d4c9bb798 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" Date: Wed, 12 Dec 2018 18:18:18 +0000 Subject: [PATCH 14/25] Update electron-builder to version 20.38.3 --- desktop/package.json | 2 +- desktop/yarn.lock | 166 +++++++++++++++++++++---------------------- 2 files changed, 82 insertions(+), 86 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index bbf4ca5fb6..745d98e30d 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "electron": "^3.0.11", - "electron-builder": "^20.36.2", + "electron-builder": "^20.38.3", "nodemon": "^1.18.8", "rimraf": "^2.6.2" }, diff --git a/desktop/yarn.lock b/desktop/yarn.lock index 62d31f0794..1800ad50fe 100644 --- a/desktop/yarn.lock +++ b/desktop/yarn.lock @@ -64,30 +64,30 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -app-builder-bin@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.5.1.tgz#a5bcff31e4572d8a179bd88a1335bad8e5d62d81" - integrity sha512-Hm+eyyfQCs5N5avLAw3w9Cf1S5TX/t6ecAfHusbzCDh/rLKLKYso2vwDWH4OQZ8uWLnuJwaAUDf3PstRcn0H+A== +app-builder-bin@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.6.0.tgz#b4e5d5ee5bcf264818ab9830b95338f9f419de5d" + integrity sha512-7HphDMS2U9MwAA6R7lSU6MASFR/D+VJDb5hQ4Fn2coOMyaRn71QDWPdG0TPnDr88F2I7bsTuHYud28S/yN2lZw== -app-builder-lib@20.36.2, app-builder-lib@~20.36.0: - version "20.36.2" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-20.36.2.tgz#9bc2fb3191eb81afe9af2bc35e9384d3bf7b6f01" - integrity sha512-5FxLnWI13t0LLmh2QjmPx3KW/xhj67su7UxdCzQgULsUmYurdPx8yAOb9YxoX+RpR08inqt+H3GBOJlqSSrVgg== +app-builder-lib@20.38.3, app-builder-lib@~20.38.3: + version "20.38.3" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-20.38.3.tgz#3998cbe07cad6eb45918eba43aa6313bf6cc15c2" + integrity sha512-xZTzWgH2pDUfic9KAv17julgp4/HVD451AzYdyFcwGTrDvLjoZee2Ua6/Els88GKbH3QIkpntJEn5gCwdc4O9A== dependencies: "7zip-bin" "~4.1.0" - app-builder-bin "2.5.1" + app-builder-bin "2.6.0" async-exit-hook "^2.0.1" bluebird-lst "^1.0.6" - builder-util "9.3.0" - builder-util-runtime "8.0.2" + builder-util "9.6.0" + builder-util-runtime "8.1.0" chromium-pickle-js "^0.2.0" debug "^4.1.0" ejs "^2.6.1" electron-osx-sign "0.4.11" - electron-publish "20.36.0" + electron-publish "20.38.3" fs-extra-p "^7.0.0" hosted-git-info "^2.7.1" - is-ci "^1.2.1" + is-ci "^2.0.0" isbinaryfile "^3.0.3" js-yaml "^3.12.0" lazy-val "^1.0.3" @@ -97,7 +97,7 @@ app-builder-lib@20.36.2, app-builder-lib@~20.36.0: read-config-file "3.2.0" sanitize-filename "^1.6.1" semver "^5.6.0" - temp-file "^3.2.0" + temp-file "^3.3.2" aproba@^1.0.3: version "1.2.0" @@ -298,17 +298,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builder-util-runtime@8.0.2, builder-util-runtime@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.0.2.tgz#9d638a266ca3aa25ced1cff4df74c8fd97dd78cf" - integrity sha512-46AjyMQ1/yBvGnXWmqNGlg8te7jCPCs7TJ0zDC2+4vV/t5iZp2dR1H9UfVpcBxlvBq3dlAOmwb9fz1d9xZN1+Q== - dependencies: - bluebird-lst "^1.0.6" - debug "^4.1.0" - fs-extra-p "^7.0.0" - sax "^1.2.4" - -builder-util-runtime@~8.1.0: +builder-util-runtime@8.1.0, builder-util-runtime@^8.0.2, builder-util-runtime@^8.1.0, builder-util-runtime@~8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.1.0.tgz#dd7fca995d48ceee7580b4851ca057566c94601e" integrity sha512-s1mlJ28mv+56Iebh6c9aXjVe11O3Z0cDTwAGeB0PCcUzHA37fDxGgS8ZGoYNMZP+rBHj21d/od1wuYofTVLaQg== @@ -318,15 +308,15 @@ builder-util-runtime@~8.1.0: fs-extra-p "^7.0.0" sax "^1.2.4" -builder-util@9.3.0, builder-util@~9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.3.0.tgz#1c94c3bd1c9095840d46a59cdf9514852a47ce8a" - integrity sha512-K+kj5vWj4Mk3jOm6kVT9ZwNcECLHe449vdMxYuZpCnn7CSxRm+TeZm9P9ZFCQUID5Hww/Sy4NMFo+VVJh6+Ptw== +builder-util@9.6.0, builder-util@~9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.6.0.tgz#ffcc0f713d0f4dfa6bcda2aee83b8fcb1f16f5b6" + integrity sha512-6T4E3aNVndTZ2oCt+22S0wxt47d094MxrADi6S012QumXlDNfSsyu1ffbGN9w0HG+4aubpLzf9apKgMP1yl4Kw== dependencies: "7zip-bin" "~4.1.0" - app-builder-bin "2.5.1" + app-builder-bin "2.6.0" bluebird-lst "^1.0.6" - builder-util-runtime "^8.0.1" + builder-util-runtime "^8.0.2" chalk "^2.4.1" debug "^4.1.0" fs-extra-p "^7.0.0" @@ -334,7 +324,7 @@ builder-util@9.3.0, builder-util@~9.3.0: js-yaml "^3.12.0" source-map-support "^0.5.9" stat-mode "^0.2.2" - temp-file "^3.2.0" + temp-file "^3.3.2" builtin-modules@^1.0.0: version "1.1.1" @@ -369,11 +359,16 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^4.0.0, camelcase@^4.1.0: +camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" @@ -428,6 +423,11 @@ ci-info@^1.5.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -608,18 +608,11 @@ debug@^4.1.0: dependencies: ms "^2.1.1" -decamelize@^1.1.2: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -667,14 +660,14 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -dmg-builder@6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-6.4.0.tgz#a95a9cb951d8535acc14bde7b1cd3412ccf43c34" - integrity sha512-q84fMrMm9mXh2qH0Sb3+o0gCvfeJRBI+46y+CpQystqgRyB+3bZB11WqCf5d8+qsENhzpi786jR82xbHG1Vvag== +dmg-builder@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-6.5.3.tgz#95afe3deab33fd874f68d299bc71b481e94f5312" + integrity sha512-ZNl4GFBg6rdFplnuoK56iftxh/qgM7rXJUxgl21eK4WsjxgQwtQ0REZo+pDSL4OzVeyOO8MMNWSNQcCsBLiDyA== dependencies: - app-builder-lib "~20.36.0" + app-builder-lib "~20.38.3" bluebird-lst "^1.0.6" - builder-util "~9.3.0" + builder-util "~9.6.0" fs-extra-p "^7.0.0" iconv-lite "^0.4.24" js-yaml "^3.12.0" @@ -721,24 +714,24 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== -electron-builder@^20.36.2: - version "20.36.2" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-20.36.2.tgz#9fefef8c5f08ced5c2085d8331c2ad3c545daef8" - integrity sha512-xPJNt3ZBn5IYlp3pCP0Rvi00JYAKdTeOSLWFrkST1xqWfRZxXrI4uisVD9HQjzRN8hBHhTgTfXtb9uhWPha9eA== +electron-builder@^20.38.3: + version "20.38.3" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-20.38.3.tgz#32eaa08575b5036e4dafc78adef25ff5a7370004" + integrity sha512-KVM90FtSmryi6JT+YEOTJPsB34ZPdrJn2X18Rt8uatSQPj4vVCSwT834cyvF79idRea8yRVoMcm69XtH9VNPjg== dependencies: - app-builder-lib "20.36.2" + app-builder-lib "20.38.3" bluebird-lst "^1.0.6" - builder-util "9.3.0" - builder-util-runtime "8.0.2" + builder-util "9.6.0" + builder-util-runtime "8.1.0" chalk "^2.4.1" - dmg-builder "6.4.0" + dmg-builder "6.5.3" fs-extra-p "^7.0.0" - is-ci "^1.2.1" + is-ci "^2.0.0" lazy-val "^1.0.3" read-config-file "3.2.0" sanitize-filename "^1.6.1" update-notifier "^2.5.0" - yargs "^12.0.2" + yargs "^12.0.5" electron-context-menu@^0.10.1: version "0.10.1" @@ -794,18 +787,18 @@ electron-osx-sign@0.4.11: minimist "^1.2.0" plist "^3.0.1" -electron-publish@20.36.0: - version "20.36.0" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.36.0.tgz#419fe994938af2b158ac4677f72839ad229e05e8" - integrity sha512-LjJ4KoApSLtKyGWotv0B+PoTzpLEdHHXzDF9HLxatPlfoZCmrOexqm7Qiv1ODuYWPac7Zpf2OHitJp8WIOcZRQ== +electron-publish@20.38.3: + version "20.38.3" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.38.3.tgz#7c162904f728ba2bbf2640bc3620b65ce1061ce3" + integrity sha512-Qomq253NT5DfjUZgFSx6p+gheU5YhM6zZ67fTtBZvwyk0v8HwxNXfa8fZT7h+1c3BwEmjusTbmjZRNW/XZBXFA== dependencies: bluebird-lst "^1.0.6" - builder-util "~9.3.0" - builder-util-runtime "^8.0.1" + builder-util "~9.6.0" + builder-util-runtime "^8.1.0" chalk "^2.4.1" fs-extra-p "^7.0.0" lazy-val "^1.0.3" - mime "^2.3.1" + mime "^2.4.0" electron-updater@^4.0.6: version "4.0.6" @@ -1363,6 +1356,13 @@ is-ci@^1.0.10, is-ci@^1.2.1: dependencies: ci-info "^1.5.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -1795,10 +1795,10 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "~1.37.0" -mime@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== +mime@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== mimic-fn@^1.0.0: version "1.2.0" @@ -2837,7 +2837,7 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -temp-file@^3.2.0: +temp-file@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.2.tgz#69b6daf1bbe23231d0a5d03844e3d96f3f531aaa" integrity sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ== @@ -3135,11 +3135,6 @@ xmldom@0.1.x: resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" @@ -3162,20 +3157,21 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" -yargs@^12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== +yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" - decamelize "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -3185,7 +3181,7 @@ yargs@^12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + yargs-parser "^11.1.1" yauzl@2.4.1: version "2.4.1" From 460bd8cbf4cec931aa8769eb2394752d4b39bb9b Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Wed, 12 Dec 2018 10:50:41 -0800 Subject: [PATCH 15/25] Use array of email objects for sending emails --- hermes/queues/send-admin-active-community-report-email.js | 6 +++++- hermes/queues/send-admin-community-created-email.js | 6 +++++- hermes/queues/send-admin-slack-import-email.js | 6 +++++- hermes/queues/send-admin-toxic-content-email.js | 6 +++++- hermes/queues/send-admin-user-reported-email.js | 6 +++++- .../send-admin-user-spamming-threads-notification-email.js | 6 +++++- hermes/queues/send-administrator-email-validation-email.js | 2 +- hermes/queues/send-community-invite-email.js | 3 ++- hermes/queues/send-digest-email.js | 2 +- hermes/queues/send-email-validation-email.js | 2 +- hermes/queues/send-mention-message-email.js | 2 +- hermes/queues/send-mention-thread-email.js | 2 +- hermes/queues/send-new-community-welcome-email.js | 2 +- hermes/queues/send-new-direct-message-email.js | 2 +- hermes/queues/send-new-message-email.js | 2 +- hermes/queues/send-new-thread-email.js | 2 +- .../queues/send-private-channel-request-approved-email.js | 2 +- hermes/queues/send-private-channel-request-sent-email.js | 2 +- .../queues/send-private-community-request-approved-email.js | 2 +- hermes/queues/send-private-community-request-sent-email.js | 2 +- hermes/queues/send-user-welcome-email.js | 2 +- 21 files changed, 46 insertions(+), 21 deletions(-) diff --git a/hermes/queues/send-admin-active-community-report-email.js b/hermes/queues/send-admin-active-community-report-email.js index c892f9ae88..76bf85e773 100644 --- a/hermes/queues/send-admin-active-community-report-email.js +++ b/hermes/queues/send-admin-active-community-report-email.js @@ -27,7 +27,11 @@ export default (job: Job) => { try { return sendEmail({ templateId: ADMIN_ACTIVE_COMMUNITY_REPORT_TEMPLATE, - to: 'brian@spectrum.chat, max@spectrum.chat, bryn@spectrum.chat', + to: [ + { email: 'brian@spectrum.chat ' }, + { email: 'max@spectrum.chat ' }, + { email: 'bryn@spectrum.chat ' }, + ], dynamic_template_data: { subject: `Active Community Report: ${month} ${day}, ${year}`, data: { diff --git a/hermes/queues/send-admin-community-created-email.js b/hermes/queues/send-admin-community-created-email.js index f1c334c812..df714fa30c 100644 --- a/hermes/queues/send-admin-community-created-email.js +++ b/hermes/queues/send-admin-community-created-email.js @@ -14,7 +14,11 @@ export default job => { try { return sendEmail({ templateId: ADMIN_COMMUNITY_CREATED_TEMPLATE, - to: 'brian@spectrum.chat, max@spectrum.chat, bryn@spectrum.chat', + to: [ + { email: 'brian@spectrum.chat ' }, + { email: 'max@spectrum.chat ' }, + { email: 'bryn@spectrum.chat ' }, + ], dynamic_template_data: { subject: `New community: ${community.name}`, user: { diff --git a/hermes/queues/send-admin-slack-import-email.js b/hermes/queues/send-admin-slack-import-email.js index 0aff465fc5..5d865d684b 100644 --- a/hermes/queues/send-admin-slack-import-email.js +++ b/hermes/queues/send-admin-slack-import-email.js @@ -17,7 +17,11 @@ export default job => { try { return sendEmail({ templateId: ADMIN_SLACK_IMPORT_PROCESSED_TEMPLATE, - to: 'brian@spectrum.chat, max@spectrum.chat, bryn@spectrum.chat', + to: [ + { email: 'brian@spectrum.chat ' }, + { email: 'max@spectrum.chat ' }, + { email: 'bryn@spectrum.chat ' }, + ], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-admin-toxic-content-email.js b/hermes/queues/send-admin-toxic-content-email.js index 96186a725d..05c6d28276 100644 --- a/hermes/queues/send-admin-toxic-content-email.js +++ b/hermes/queues/send-admin-toxic-content-email.js @@ -29,7 +29,11 @@ export default job => { try { return sendEmail({ templateId: ADMIN_TOXIC_MESSAGE_TEMPLATE, - to: 'brian@spectrum.chat, bryn@spectrum.chat, max@spectrum.chat', + to: [ + { email: 'brian@spectrum.chat ' }, + { email: 'max@spectrum.chat ' }, + { email: 'bryn@spectrum.chat ' }, + ], dynamic_template_data: { subject, preheader: text, diff --git a/hermes/queues/send-admin-user-reported-email.js b/hermes/queues/send-admin-user-reported-email.js index b868f83746..62cc65a194 100644 --- a/hermes/queues/send-admin-user-reported-email.js +++ b/hermes/queues/send-admin-user-reported-email.js @@ -24,7 +24,11 @@ export default async (job: Job) => { try { return sendEmail({ templateId: ADMIN_USER_REPORTED_TEMPLATE, - to: 'brian@spectrum.chat, max@spectrum.chat, bryn@spectrum.chat', + to: [ + { email: 'brian@spectrum.chat ' }, + { email: 'max@spectrum.chat ' }, + { email: 'bryn@spectrum.chat ' }, + ], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-admin-user-spamming-threads-notification-email.js b/hermes/queues/send-admin-user-spamming-threads-notification-email.js index e92adb951f..1ca2579815 100644 --- a/hermes/queues/send-admin-user-spamming-threads-notification-email.js +++ b/hermes/queues/send-admin-user-spamming-threads-notification-email.js @@ -36,7 +36,11 @@ export default (job: Job) => { try { return sendEmail({ templateId: ADMIN_USER_SPAMMING_THREADS_NOTIFICATION_TEMPLATE, - to: 'brian@spectrum.chat, max@spectrum.chat, bryn@spectrum.chat', + to: [ + { email: 'brian@spectrum.chat ' }, + { email: 'max@spectrum.chat ' }, + { email: 'bryn@spectrum.chat ' }, + ], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-administrator-email-validation-email.js b/hermes/queues/send-administrator-email-validation-email.js index b542e25462..62c7d00532 100644 --- a/hermes/queues/send-administrator-email-validation-email.js +++ b/hermes/queues/send-administrator-email-validation-email.js @@ -43,7 +43,7 @@ export default async (job: Job) => { try { return sendEmail({ templateId: ADMINISTRATOR_EMAIL_VALIDATION_TEMPLATE, - to: email, + to: [{ email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-community-invite-email.js b/hermes/queues/send-community-invite-email.js index 288c7d193f..81cc32757b 100644 --- a/hermes/queues/send-community-invite-email.js +++ b/hermes/queues/send-community-invite-email.js @@ -36,6 +36,7 @@ export default (job: SendCommunityInviteEmailJob) => { community, communitySettings, customMessage, + to, } = job.data; const subject = `${job.data.sender.name} has invited you to join the ${ @@ -54,7 +55,7 @@ export default (job: SendCommunityInviteEmailJob) => { try { return sendEmail({ templateId: COMMUNITY_INVITE_TEMPLATE, - to: job.data.to, + to: [{ email: to }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-digest-email.js b/hermes/queues/send-digest-email.js index 7f8bf5c1ca..4c4d2a73c2 100644 --- a/hermes/queues/send-digest-email.js +++ b/hermes/queues/send-digest-email.js @@ -62,7 +62,7 @@ export default async (job: Job) => { try { return sendEmail({ templateId: DIGEST_TEMPLATE, - to: email, + to: [{ email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-email-validation-email.js b/hermes/queues/send-email-validation-email.js index d05fd6eaf5..effa032714 100644 --- a/hermes/queues/send-email-validation-email.js +++ b/hermes/queues/send-email-validation-email.js @@ -34,7 +34,7 @@ export default async (job: SendEmailValidationJob) => { try { return sendEmail({ templateId: EMAIL_VALIDATION_TEMPLATE, - to: email, + to: [{ email }], dynamic_template_data: { subject: 'Confirm your email address on Spectrum', validateToken, diff --git a/hermes/queues/send-mention-message-email.js b/hermes/queues/send-mention-message-email.js index cd52ba680e..e85a6d71e6 100644 --- a/hermes/queues/send-mention-message-email.js +++ b/hermes/queues/send-mention-message-email.js @@ -34,7 +34,7 @@ export default async (job: Job) => { try { return sendEmail({ templateId: NEW_MENTION_MESSAGE_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-mention-thread-email.js b/hermes/queues/send-mention-thread-email.js index 0dc5e9ffb1..b54bdba7f7 100644 --- a/hermes/queues/send-mention-thread-email.js +++ b/hermes/queues/send-mention-thread-email.js @@ -28,7 +28,7 @@ export default async (job: Job) => { try { return sendEmail({ templateId: NEW_MENTION_THREAD_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-new-community-welcome-email.js b/hermes/queues/send-new-community-welcome-email.js index 88fd411811..4b8ed0a9b3 100644 --- a/hermes/queues/send-new-community-welcome-email.js +++ b/hermes/queues/send-new-community-welcome-email.js @@ -17,7 +17,7 @@ export default job => { try { return sendEmail({ templateId: NEW_COMMUNITY_WELCOME_TEMPLATE, - to: user.email, + to: [{ email: user.email }], dynamic_template_data: { user, community, diff --git a/hermes/queues/send-new-direct-message-email.js b/hermes/queues/send-new-direct-message-email.js index b7612a0f2d..2ed8fb3313 100644 --- a/hermes/queues/send-new-direct-message-email.js +++ b/hermes/queues/send-new-direct-message-email.js @@ -32,7 +32,7 @@ export default async (job: Job) => { try { return sendEmail({ templateId: NEW_DIRECT_MESSAGE_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, user, diff --git a/hermes/queues/send-new-message-email.js b/hermes/queues/send-new-message-email.js index 558c109c9f..4958c74dac 100644 --- a/hermes/queues/send-new-message-email.js +++ b/hermes/queues/send-new-message-email.js @@ -81,7 +81,7 @@ export default async (job: Job) => { try { return sendEmail({ templateId: NEW_MESSAGE_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-new-thread-email.js b/hermes/queues/send-new-thread-email.js index 55abbd33bd..343464ccbe 100644 --- a/hermes/queues/send-new-thread-email.js +++ b/hermes/queues/send-new-thread-email.js @@ -75,7 +75,7 @@ export default async (job: SendNewThreadEmailJob) => { try { return sendEmail({ templateId: NEW_THREAD_CREATED_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-private-channel-request-approved-email.js b/hermes/queues/send-private-channel-request-approved-email.js index 98fcbfb7aa..0dc4c10405 100644 --- a/hermes/queues/send-private-channel-request-approved-email.js +++ b/hermes/queues/send-private-channel-request-approved-email.js @@ -28,7 +28,7 @@ export default (job: Job) => { try { return sendEmail({ templateId: PRIVATE_CHANNEL_REQUEST_APPROVED_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-private-channel-request-sent-email.js b/hermes/queues/send-private-channel-request-sent-email.js index b0923bef80..1ace681609 100644 --- a/hermes/queues/send-private-channel-request-sent-email.js +++ b/hermes/queues/send-private-channel-request-sent-email.js @@ -27,7 +27,7 @@ export default (job: Job) => { try { return sendEmail({ templateId: PRIVATE_CHANNEL_REQUEST_SENT_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-private-community-request-approved-email.js b/hermes/queues/send-private-community-request-approved-email.js index b5e3f74c32..fbdf37ab37 100644 --- a/hermes/queues/send-private-community-request-approved-email.js +++ b/hermes/queues/send-private-community-request-approved-email.js @@ -28,7 +28,7 @@ export default (job: Job) => { try { return sendEmail({ templateId: PRIVATE_COMMUNITY_REQUEST_APPROVED_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-private-community-request-sent-email.js b/hermes/queues/send-private-community-request-sent-email.js index c551923515..a24159c6b0 100644 --- a/hermes/queues/send-private-community-request-sent-email.js +++ b/hermes/queues/send-private-community-request-sent-email.js @@ -29,7 +29,7 @@ export default (job: Job) => { try { return sendEmail({ templateId: PRIVATE_COMMUNITY_REQUEST_SENT_TEMPLATE, - to: recipient.email, + to: [{ email: recipient.email }], dynamic_template_data: { subject, preheader, diff --git a/hermes/queues/send-user-welcome-email.js b/hermes/queues/send-user-welcome-email.js index 5405da328e..a11ed1781a 100644 --- a/hermes/queues/send-user-welcome-email.js +++ b/hermes/queues/send-user-welcome-email.js @@ -17,7 +17,7 @@ export default job => { try { return sendEmail({ templateId: NEW_USER_WELCOME_TEMPLATE, - to: user.email, + to: [{ email: user.email }], Tag: SEND_NEW_USER_WELCOME_EMAIL, dynamic_template_data: { user, From de282384503cf563daaa9bdf5bad9584cf972293 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Wed, 12 Dec 2018 11:23:53 -0800 Subject: [PATCH 16/25] Improve flow typings and returns in hermes --- analytics/package.json | 3 +- analytics/yarn.lock | 30 +- api/package.json | 1 + athena/package.json | 3 +- athena/queues/send-slack-invitations.js | 2 +- athena/yarn.lock | 47 +-- chronos/package.json | 3 +- chronos/yarn.lock | 14 +- flow-typed/npm/bluebird_vx.x.x.js | 312 ++++++++++++++++++ hermes/package.json | 3 +- ...end-admin-active-community-report-email.js | 13 +- .../send-admin-community-created-email.js | 11 +- .../queues/send-admin-slack-import-email.js | 9 +- .../queues/send-admin-toxic-content-email.js | 12 +- .../queues/send-admin-user-reported-email.js | 6 +- ...ser-spamming-threads-notification-email.js | 4 +- ...nd-administrator-email-validation-email.js | 44 +-- hermes/queues/send-community-invite-email.js | 4 +- hermes/queues/send-digest-email.js | 8 +- hermes/queues/send-email-validation-email.js | 35 +- hermes/queues/send-mention-message-email.js | 8 +- hermes/queues/send-mention-thread-email.js | 8 +- .../send-new-community-welcome-email.js | 7 +- .../queues/send-new-direct-message-email.js | 9 +- hermes/queues/send-new-message-email.js | 7 +- hermes/queues/send-new-thread-email.js | 6 +- ...-private-channel-request-approved-email.js | 6 +- ...send-private-channel-request-sent-email.js | 6 +- ...rivate-community-request-approved-email.js | 6 +- ...nd-private-community-request-sent-email.js | 6 +- hermes/queues/send-user-welcome-email.js | 7 +- hermes/queues/sendgrid-webhook-events.js | 14 +- hermes/send-email.js | 31 +- hermes/yarn.lock | 2 +- mercury/package.json | 3 +- mercury/yarn.lock | 2 +- package.json | 1 + shared/bull/create-redis.js | 1 + shared/bull/types.js | 16 +- shared/cache/redis.js | 1 + vulcan/package.json | 3 +- vulcan/yarn.lock | 2 +- 42 files changed, 518 insertions(+), 198 deletions(-) create mode 100644 flow-typed/npm/bluebird_vx.x.x.js diff --git a/analytics/package.json b/analytics/package.json index a966d49c64..67e4716e9b 100644 --- a/analytics/package.json +++ b/analytics/package.json @@ -7,6 +7,7 @@ "dependencies": { "amplitude": "^3.5.0", "aws-sdk": "^2.373.0", + "bluebird": "^3.5.3", "bull": "3.3.10", "debug": "^4.1.0", "faker": "^4.1.0", @@ -22,4 +23,4 @@ "source-map-support": "^0.5.9", "toobusy-js": "^0.5.1" } -} \ No newline at end of file +} diff --git a/analytics/yarn.lock b/analytics/yarn.lock index ccd9a51a37..f1104a2309 100644 --- a/analytics/yarn.lock +++ b/analytics/yarn.lock @@ -34,7 +34,7 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.3: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -53,18 +53,18 @@ buffer@4.9.1: ieee754 "^1.1.4" isarray "^1.0.0" -bull@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.5.2.tgz#9c85f205b17686efab2ee28aaa4388887360de32" - integrity sha512-tuL4Uj0kUeaQ7Cow3POkca20fk+VSsR8AiTFeNkyMmuicBnE1ZMwvF1NRDY7vIH43pD9PiMCSEP4Li/934Pw1w== +bull@3.3.10: + version "3.3.10" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.3.10.tgz#32e76281902070b4720bc37b3793f09db635f646" + integrity sha512-bO1w83BONVTE3Rb10e0wPf11lXH1fGFNGmZH4Ys9jR7jGN4qmTNo7odxm7ELhjKXofjiFLWZFuTdONCs8kV8ug== dependencies: - bluebird "^3.5.3" - cron-parser "^2.5.0" + bluebird "^3.5.0" + cron-parser "^2.4.1" debuglog "^1.0.0" ioredis "^3.1.4" - lodash "^4.17.11" - semver "^5.6.0" - uuid "^3.2.1" + lodash "^4.17.4" + semver "^5.4.1" + uuid "^3.1.0" "charenc@>= 0.0.1", charenc@~0.0.1: version "0.0.2" @@ -103,7 +103,7 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cron-parser@^2.5.0: +cron-parser@^2.4.1: version "2.7.3" resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.7.3.tgz#12603f89f5375af353a9357be2543d3172eac651" integrity sha512-t9Kc7HWBWPndBzvbdQ1YG9rpPRB37Tb/tTviziUOh1qs3TARGh3b1p+tnkOHNe1K5iI3oheBPgLqwotMM7+lpg== @@ -360,7 +360,7 @@ lodash.values@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c= -lodash@^4.17.11: +lodash@^4.17.4: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -506,7 +506,7 @@ redis-tag-cache@^1.2.1: dependencies: ioredis "^4.0.0" -rethinkdbdash@^2.3.29: +rethinkdbdash@^2.3.31: version "2.3.31" resolved "https://registry.yarnpkg.com/rethinkdbdash/-/rethinkdbdash-2.3.31.tgz#fe2f73d1fa6e6f5d96d8e881292013cf6dca914d" integrity sha512-6nXrKFjdg2Ug0YpdmPWSvyD/2EisHnFNt4FWZ74dcXGK48ievSv+cNFTmVv+KjLi6I9CCf6w4CKZ6yCYTfMfdQ== @@ -542,7 +542,7 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -semver@^5.6.0: +semver@^5.4.1: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -641,7 +641,7 @@ uuid@3.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== -uuid@3.3.2, uuid@^3.2.1: +uuid@3.3.2, uuid@^3.1.0: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== diff --git a/api/package.json b/api/package.json index ab5556bd29..7d873356e5 100644 --- a/api/package.json +++ b/api/package.json @@ -16,6 +16,7 @@ "babel-plugin-transform-object-rest-spread": "^6.23.0", "babel-preset-env": "^1.7.0", "backpack-core": "^0.8.3", + "bluebird": "^3.5.3", "body-parser": "^1.18.3", "bull": "^3.5.2", "casual": "^1.5.12", diff --git a/athena/package.json b/athena/package.json index 9a4b4b775f..0fbb5fc4a2 100644 --- a/athena/package.json +++ b/athena/package.json @@ -7,6 +7,7 @@ "dependencies": { "aws-sdk": "^2.373.0", "axios": "^0.16.2", + "bluebird": "^3.5.3", "bull": "3.3.10", "cryptr": "^3.0.0", "debug": "^4.1.0", @@ -29,4 +30,4 @@ "validator": "^9.4.1", "web-push": "^3.3.3" } -} \ No newline at end of file +} diff --git a/athena/queues/send-slack-invitations.js b/athena/queues/send-slack-invitations.js index 88473eb87e..2985c8dcb9 100644 --- a/athena/queues/send-slack-invitations.js +++ b/athena/queues/send-slack-invitations.js @@ -100,7 +100,7 @@ const processJob = async (job: Job) => { ...invitePromises, updateSlackInvitesMemberCount(communityId, membersCount), _adminProcessSlackImportQueue.add({ - thisUser: owner, + user: owner, community, invitedCount: membersCount, teamName, diff --git a/athena/yarn.lock b/athena/yarn.lock index 61dcee2185..f6bbe27307 100644 --- a/athena/yarn.lock +++ b/athena/yarn.lock @@ -46,20 +46,12 @@ axios@^0.16.2: follow-redirects "^1.2.3" is-buffer "^1.1.5" -babel-runtime@^6.11.6: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -124,11 +116,6 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= -core-js@^2.4.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== - crc@^3.5.0: version "3.8.0" resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" @@ -254,16 +241,6 @@ events@1.1.1: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -expo-server-sdk@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/expo-server-sdk/-/expo-server-sdk-2.4.0.tgz#aa5e02415ba3268546ff61dddb5b92cb796f6e3a" - integrity sha512-sxTE9EhLqlF5JR6eAMHUUWkaO8JOKLjYHNpM546vO3MxA8JtzZZtdRyJ1271ZbTTyFNFP9snjWN6MxUrqnFX5Q== - dependencies: - babel-runtime "^6.11.6" - invariant "^2.2.4" - node-fetch "^2.1.2" - promise-limit "^2.6.0" - faker@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" @@ -345,13 +322,6 @@ inherits@^2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" @@ -610,11 +580,6 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.1.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" - integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== - now-env@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/now-env/-/now-env-3.1.0.tgz#e0198b67279d387229cfd4b25de4c2fc7156943f" @@ -630,11 +595,6 @@ object-keys@^1.0.12: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== -promise-limit@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/promise-limit/-/promise-limit-2.7.0.tgz#eb5737c33342a030eaeaecea9b3d3a93cb592b26" - integrity sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw== - promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -692,11 +652,6 @@ redis-tag-cache@^1.2.1: dependencies: ioredis "^4.0.0" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - rethinkdbdash@^2.3.31: version "2.3.31" resolved "https://registry.yarnpkg.com/rethinkdbdash/-/rethinkdbdash-2.3.31.tgz#fe2f73d1fa6e6f5d96d8e881292013cf6dca914d" diff --git a/chronos/package.json b/chronos/package.json index 9540473274..cd4d4b963a 100644 --- a/chronos/package.json +++ b/chronos/package.json @@ -4,6 +4,7 @@ }, "dependencies": { "aws-sdk": "^2.373.0", + "bluebird": "^3.5.3", "bull": "^3.5.2", "debug": "^4.1.0", "decode-uri-component": "^0.2.0", @@ -24,4 +25,4 @@ "devDependencies": { "json-stringify-pretty-compact": "^1.2.0" } -} \ No newline at end of file +} diff --git a/chronos/yarn.lock b/chronos/yarn.lock index 9f27bd180a..0cccdcec12 100644 --- a/chronos/yarn.lock +++ b/chronos/yarn.lock @@ -421,11 +421,6 @@ md5@^2.2.1: crypt "~0.0.1" is-buffer "~1.1.1" -merge@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= - moment-timezone@^0.5.23: version "0.5.23" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463" @@ -471,13 +466,6 @@ object-keys@^1.0.12: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== -postmark@^1.3.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/postmark/-/postmark-1.6.1.tgz#23d48f7182509be5be0eb80c16b90a2e2326eb3c" - integrity sha1-I9SPcYJQm+W+DrgMFrkKLiMm6zw= - dependencies: - merge "1.2.0" - promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -535,7 +523,7 @@ redis-tag-cache@^1.2.1: dependencies: ioredis "^4.0.0" -rethinkdbdash@^2.3.29: +rethinkdbdash@^2.3.31: version "2.3.31" resolved "https://registry.yarnpkg.com/rethinkdbdash/-/rethinkdbdash-2.3.31.tgz#fe2f73d1fa6e6f5d96d8e881292013cf6dca914d" integrity sha512-6nXrKFjdg2Ug0YpdmPWSvyD/2EisHnFNt4FWZ74dcXGK48ievSv+cNFTmVv+KjLi6I9CCf6w4CKZ6yCYTfMfdQ== diff --git a/flow-typed/npm/bluebird_vx.x.x.js b/flow-typed/npm/bluebird_vx.x.x.js new file mode 100644 index 0000000000..1d7a969a60 --- /dev/null +++ b/flow-typed/npm/bluebird_vx.x.x.js @@ -0,0 +1,312 @@ +// flow-typed signature: fd6015492cc31b2750e3b5e1b048858f +// flow-typed version: <>/bluebird_v3.5.3/flow_v0.66.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'bluebird' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'bluebird' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'bluebird/js/browser/bluebird.core' { + declare module.exports: any; +} + +declare module 'bluebird/js/browser/bluebird.core.min' { + declare module.exports: any; +} + +declare module 'bluebird/js/browser/bluebird' { + declare module.exports: any; +} + +declare module 'bluebird/js/browser/bluebird.min' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/any' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/assert' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/async' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/bind' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/bluebird' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/call_get' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/cancel' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/catch_filter' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/context' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/debuggability' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/direct_resolve' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/each' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/errors' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/es5' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/filter' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/finally' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/generators' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/join' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/map' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/method' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/nodeback' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/nodeify' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/promise_array' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/promise' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/promisify' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/props' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/queue' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/race' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/reduce' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/schedule' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/settle' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/some' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/synchronous_inspection' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/thenables' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/timers' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/using' { + declare module.exports: any; +} + +declare module 'bluebird/js/release/util' { + declare module.exports: any; +} + +// Filename aliases +declare module 'bluebird/js/browser/bluebird.core.js' { + declare module.exports: $Exports<'bluebird/js/browser/bluebird.core'>; +} +declare module 'bluebird/js/browser/bluebird.core.min.js' { + declare module.exports: $Exports<'bluebird/js/browser/bluebird.core.min'>; +} +declare module 'bluebird/js/browser/bluebird.js' { + declare module.exports: $Exports<'bluebird/js/browser/bluebird'>; +} +declare module 'bluebird/js/browser/bluebird.min.js' { + declare module.exports: $Exports<'bluebird/js/browser/bluebird.min'>; +} +declare module 'bluebird/js/release/any.js' { + declare module.exports: $Exports<'bluebird/js/release/any'>; +} +declare module 'bluebird/js/release/assert.js' { + declare module.exports: $Exports<'bluebird/js/release/assert'>; +} +declare module 'bluebird/js/release/async.js' { + declare module.exports: $Exports<'bluebird/js/release/async'>; +} +declare module 'bluebird/js/release/bind.js' { + declare module.exports: $Exports<'bluebird/js/release/bind'>; +} +declare module 'bluebird/js/release/bluebird.js' { + declare module.exports: $Exports<'bluebird/js/release/bluebird'>; +} +declare module 'bluebird/js/release/call_get.js' { + declare module.exports: $Exports<'bluebird/js/release/call_get'>; +} +declare module 'bluebird/js/release/cancel.js' { + declare module.exports: $Exports<'bluebird/js/release/cancel'>; +} +declare module 'bluebird/js/release/catch_filter.js' { + declare module.exports: $Exports<'bluebird/js/release/catch_filter'>; +} +declare module 'bluebird/js/release/context.js' { + declare module.exports: $Exports<'bluebird/js/release/context'>; +} +declare module 'bluebird/js/release/debuggability.js' { + declare module.exports: $Exports<'bluebird/js/release/debuggability'>; +} +declare module 'bluebird/js/release/direct_resolve.js' { + declare module.exports: $Exports<'bluebird/js/release/direct_resolve'>; +} +declare module 'bluebird/js/release/each.js' { + declare module.exports: $Exports<'bluebird/js/release/each'>; +} +declare module 'bluebird/js/release/errors.js' { + declare module.exports: $Exports<'bluebird/js/release/errors'>; +} +declare module 'bluebird/js/release/es5.js' { + declare module.exports: $Exports<'bluebird/js/release/es5'>; +} +declare module 'bluebird/js/release/filter.js' { + declare module.exports: $Exports<'bluebird/js/release/filter'>; +} +declare module 'bluebird/js/release/finally.js' { + declare module.exports: $Exports<'bluebird/js/release/finally'>; +} +declare module 'bluebird/js/release/generators.js' { + declare module.exports: $Exports<'bluebird/js/release/generators'>; +} +declare module 'bluebird/js/release/join.js' { + declare module.exports: $Exports<'bluebird/js/release/join'>; +} +declare module 'bluebird/js/release/map.js' { + declare module.exports: $Exports<'bluebird/js/release/map'>; +} +declare module 'bluebird/js/release/method.js' { + declare module.exports: $Exports<'bluebird/js/release/method'>; +} +declare module 'bluebird/js/release/nodeback.js' { + declare module.exports: $Exports<'bluebird/js/release/nodeback'>; +} +declare module 'bluebird/js/release/nodeify.js' { + declare module.exports: $Exports<'bluebird/js/release/nodeify'>; +} +declare module 'bluebird/js/release/promise_array.js' { + declare module.exports: $Exports<'bluebird/js/release/promise_array'>; +} +declare module 'bluebird/js/release/promise.js' { + declare module.exports: $Exports<'bluebird/js/release/promise'>; +} +declare module 'bluebird/js/release/promisify.js' { + declare module.exports: $Exports<'bluebird/js/release/promisify'>; +} +declare module 'bluebird/js/release/props.js' { + declare module.exports: $Exports<'bluebird/js/release/props'>; +} +declare module 'bluebird/js/release/queue.js' { + declare module.exports: $Exports<'bluebird/js/release/queue'>; +} +declare module 'bluebird/js/release/race.js' { + declare module.exports: $Exports<'bluebird/js/release/race'>; +} +declare module 'bluebird/js/release/reduce.js' { + declare module.exports: $Exports<'bluebird/js/release/reduce'>; +} +declare module 'bluebird/js/release/schedule.js' { + declare module.exports: $Exports<'bluebird/js/release/schedule'>; +} +declare module 'bluebird/js/release/settle.js' { + declare module.exports: $Exports<'bluebird/js/release/settle'>; +} +declare module 'bluebird/js/release/some.js' { + declare module.exports: $Exports<'bluebird/js/release/some'>; +} +declare module 'bluebird/js/release/synchronous_inspection.js' { + declare module.exports: $Exports<'bluebird/js/release/synchronous_inspection'>; +} +declare module 'bluebird/js/release/thenables.js' { + declare module.exports: $Exports<'bluebird/js/release/thenables'>; +} +declare module 'bluebird/js/release/timers.js' { + declare module.exports: $Exports<'bluebird/js/release/timers'>; +} +declare module 'bluebird/js/release/using.js' { + declare module.exports: $Exports<'bluebird/js/release/using'>; +} +declare module 'bluebird/js/release/util.js' { + declare module.exports: $Exports<'bluebird/js/release/util'>; +} diff --git a/hermes/package.json b/hermes/package.json index 610975afac..90df1f0f82 100644 --- a/hermes/package.json +++ b/hermes/package.json @@ -5,6 +5,7 @@ "dependencies": { "@sendgrid/mail": "^6.3.1", "aws-sdk": "^2.373.0", + "bluebird": "^3.5.3", "bull": "3.3.10", "debug": "^4.1.0", "draft-js": "^0.10.5", @@ -26,4 +27,4 @@ "devDependencies": { "json-stringify-pretty-compact": "^1.2.0" } -} \ No newline at end of file +} diff --git a/hermes/queues/send-admin-active-community-report-email.js b/hermes/queues/send-admin-active-community-report-email.js index 76bf85e773..8759456f55 100644 --- a/hermes/queues/send-admin-active-community-report-email.js +++ b/hermes/queues/send-admin-active-community-report-email.js @@ -1,15 +1,22 @@ +// @flow const debug = require('debug')( 'hermes:queue:send-admin-active-community-report-email' ); import sendEmail from '../send-email'; +import Raven from 'shared/raven'; import { ADMIN_ACTIVE_COMMUNITY_REPORT_TEMPLATE, SEND_ACTIVE_COMMUNITY_ADMIN_REPORT_EMAIL, } from './constants'; -import type { AdminActiveCommunityReportJobData, Job } from 'shared/bull/types'; +import type { + AdminActiveCommunityReportEmailJobData, + Job, +} from 'shared/bull/types'; import formatDate from '../utils/format-date'; -export default (job: Job) => { +export default ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { dacCount, @@ -50,6 +57,6 @@ export default (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-community-created-email.js b/hermes/queues/send-admin-community-created-email.js index df714fa30c..3c08cabffb 100644 --- a/hermes/queues/send-admin-community-created-email.js +++ b/hermes/queues/send-admin-community-created-email.js @@ -1,13 +1,14 @@ -const debug = require('debug')( - 'hermes:queue:send-admin-community-created-email' -); +// @flow +const debug = require('debug')('hermes:queue:admin-community-created-email'); +import Raven from 'shared/raven'; import sendEmail from '../send-email'; +import type { Job, AdminCommunityCreatedEmailJobData } from 'shared/bull/types'; import { ADMIN_COMMUNITY_CREATED_TEMPLATE, SEND_ADMIN_COMMUNITY_CREATED_EMAIL, } from './constants'; -export default job => { +export default (job: Job): Promise => { debug(`\nnew job: ${job.id}`); const { user, community } = job.data; @@ -31,6 +32,6 @@ export default job => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-slack-import-email.js b/hermes/queues/send-admin-slack-import-email.js index 5d865d684b..97ef1b7f3e 100644 --- a/hermes/queues/send-admin-slack-import-email.js +++ b/hermes/queues/send-admin-slack-import-email.js @@ -1,13 +1,16 @@ +// @flow const debug = require('debug')( - 'hermes:queue:send-admin-slack-import-processed-email' + 'hermes:queue:admin-slack-import-processed-email' ); +import Raven from 'shared/raven'; import sendEmail from '../send-email'; import { ADMIN_SLACK_IMPORT_PROCESSED_TEMPLATE, SEND_ADMIN_SLACK_IMPORT_PROCESSED_EMAIL, } from './constants'; +import type { Job, AdminSlackImportJobData } from 'shared/bull/types'; -export default job => { +export default (job: Job): Promise => { debug(`\nnew job: ${job.id}`); const { user, community, invitedCount, teamName } = job.data; const subject = `New Slack import: ${invitedCount} invites from the ${teamName} Slack team`; @@ -36,6 +39,6 @@ export default job => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-toxic-content-email.js b/hermes/queues/send-admin-toxic-content-email.js index 05c6d28276..6c2adf57a3 100644 --- a/hermes/queues/send-admin-toxic-content-email.js +++ b/hermes/queues/send-admin-toxic-content-email.js @@ -6,9 +6,9 @@ import { ADMIN_TOXIC_MESSAGE_TEMPLATE, SEND_ADMIN_TOXIC_MESSAGE_EMAIL, } from './constants'; +import type { Job, AdminToxicContentEmailJobData } from 'shared/bull/types'; -// $FlowFixMe -export default job => { +export default (job: Job): Promise => { debug(`\nnew job: ${job.id}`); const { type, @@ -20,10 +20,8 @@ export default job => { toxicityConfidence: { perspectiveScore }, } = job.data; - const toPercent = (num: number) => Math.round(num * 100); - - const perspectivePercent = perspectiveScore.toPercent(perspectiveScore); - + const toPercent = (num: number): number => Math.round(num * 100); + const perspectivePercent = toPercent(perspectiveScore); const subject = `Toxic alert (${perspectivePercent.toString()}%): ${text}`; try { @@ -53,6 +51,6 @@ export default job => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-user-reported-email.js b/hermes/queues/send-admin-user-reported-email.js index 62cc65a194..37e2045967 100644 --- a/hermes/queues/send-admin-user-reported-email.js +++ b/hermes/queues/send-admin-user-reported-email.js @@ -9,7 +9,9 @@ import { } from './constants'; import type { Job, AdminProcessUserReportedJobData } from 'shared/bull/types'; -export default async (job: Job) => { +export default async ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { userId, reason, reportedBy, reportedAt } = job.data; @@ -40,6 +42,6 @@ export default async (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-admin-user-spamming-threads-notification-email.js b/hermes/queues/send-admin-user-spamming-threads-notification-email.js index 1ca2579815..502a2e2139 100644 --- a/hermes/queues/send-admin-user-spamming-threads-notification-email.js +++ b/hermes/queues/send-admin-user-spamming-threads-notification-email.js @@ -14,7 +14,7 @@ import type { Job, AdminUserSpammingThreadsJobData } from 'shared/bull/types'; const threadBodyToPlainText = (body: any): string => toPlainText(toState(JSON.parse(body))); -export default (job: Job) => { +export default (job: Job): Promise => { debug(`\nnew job: ${job.id}`); const { user, threads, publishing, community, channel } = job.data; @@ -56,6 +56,6 @@ export default (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-administrator-email-validation-email.js b/hermes/queues/send-administrator-email-validation-email.js index 62c7d00532..d2d28e07a9 100644 --- a/hermes/queues/send-administrator-email-validation-email.js +++ b/hermes/queues/send-administrator-email-validation-email.js @@ -14,7 +14,9 @@ import type { AdministratorEmailValidationEmailJobData, } from 'shared/bull/types'; -export default async (job: Job) => { +export default async ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); debug(`\nsending email validation email to: ${job.data.email}`); @@ -23,7 +25,7 @@ export default async (job: Job) => { debug( '\nno email or userId or communityId found for this request, returning' ); - return; + return Promise.resolve(); } const subject = `Confirm new administrator email for the ${ @@ -38,24 +40,24 @@ export default async (job: Job) => { ); if (!validateToken) { - return; - } else { - try { - return sendEmail({ - templateId: ADMINISTRATOR_EMAIL_VALIDATION_TEMPLATE, - to: [{ email }], - dynamic_template_data: { - subject, - preheader, - validateToken, - community, - }, - userId, - }); - } catch (err) { - console.error('❌ Error in job:\n'); - console.error(err); - Raven.captureException(err); - } + return Promise.resolve(); + } + + try { + return sendEmail({ + templateId: ADMINISTRATOR_EMAIL_VALIDATION_TEMPLATE, + to: [{ email }], + dynamic_template_data: { + subject, + preheader, + validateToken, + community, + }, + userId, + }); + } catch (err) { + console.error('❌ Error in job:\n'); + console.error(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-community-invite-email.js b/hermes/queues/send-community-invite-email.js index 81cc32757b..ad2eb56fec 100644 --- a/hermes/queues/send-community-invite-email.js +++ b/hermes/queues/send-community-invite-email.js @@ -26,7 +26,7 @@ type SendCommunityInviteEmailJob = { id: string, }; -export default (job: SendCommunityInviteEmailJob) => { +export default (job: SendCommunityInviteEmailJob): Promise => { debug(`\nnew job: ${job.id}`); debug(`\nsending community invite to: ${job.data.to}`); @@ -70,6 +70,6 @@ export default (job: SendCommunityInviteEmailJob) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-digest-email.js b/hermes/queues/send-digest-email.js index 4c4d2a73c2..e51a79072c 100644 --- a/hermes/queues/send-digest-email.js +++ b/hermes/queues/send-digest-email.js @@ -8,7 +8,7 @@ import { TYPE_DAILY_DIGEST, TYPE_WEEKLY_DIGEST } from './constants'; import formatDate from '../utils/format-date'; import type { Job, SendDigestEmailJobData } from 'shared/bull/types'; -export default async (job: Job) => { +export default async (job: Job): Promise => { const { email, username, @@ -21,7 +21,7 @@ export default async (job: Job) => { } = job.data; if (!email || !userId || !username) { - return; + return Promise.resolve(); } const unsubscribeType = @@ -32,7 +32,7 @@ export default async (job: Job) => { unsubscribeType ); - if (!unsubscribeToken) return; + if (!unsubscribeToken) return Promise.resolve(); const tag = timeframe === 'daily' @@ -84,6 +84,6 @@ export default async (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-email-validation-email.js b/hermes/queues/send-email-validation-email.js index effa032714..9af77e7623 100644 --- a/hermes/queues/send-email-validation-email.js +++ b/hermes/queues/send-email-validation-email.js @@ -16,34 +16,31 @@ type SendEmailValidationJob = { id: string, }; -export default async (job: SendEmailValidationJob) => { +export default async (job: SendEmailValidationJob): Promise => { debug(`\nnew job: ${job.id}`); debug(`\nsending email validation email to: ${job.data.email}`); const { email, userId } = job.data; if (!email || !userId) { debug('\nno email or userId found for this request, returning'); - return; + return Promise.resolve(); } const validateToken = await generateEmailValidationToken(userId, email); - if (!validateToken) { - return; - } else { - try { - return sendEmail({ - templateId: EMAIL_VALIDATION_TEMPLATE, - to: [{ email }], - dynamic_template_data: { - subject: 'Confirm your email address on Spectrum', - validateToken, - }, - }); - } catch (err) { - console.error('❌ Error in job:\n'); - console.error(err); - Raven.captureException(err); - } + if (!validateToken) return Promise.resolve(); + try { + return sendEmail({ + templateId: EMAIL_VALIDATION_TEMPLATE, + to: [{ email }], + dynamic_template_data: { + subject: 'Confirm your email address on Spectrum', + validateToken, + }, + }); + } catch (err) { + console.error('❌ Error in job:\n'); + console.error(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-mention-message-email.js b/hermes/queues/send-mention-message-email.js index e85a6d71e6..68a22afafc 100644 --- a/hermes/queues/send-mention-message-email.js +++ b/hermes/queues/send-mention-message-email.js @@ -11,7 +11,9 @@ import { } from './constants'; import type { SendNewMessageMentionEmailJobData, Job } from 'shared/bull/types'; -export default async (job: Job) => { +export default async ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { recipient, sender, thread, message } = job.data; @@ -29,7 +31,7 @@ export default async (job: Job) => { thread.id ); - if (!recipient.email || !unsubscribeToken) return; + if (!recipient.email || !unsubscribeToken) return Promise.resolve(); try { return sendEmail({ @@ -52,6 +54,6 @@ export default async (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-mention-thread-email.js b/hermes/queues/send-mention-thread-email.js index b54bdba7f7..047852c817 100644 --- a/hermes/queues/send-mention-thread-email.js +++ b/hermes/queues/send-mention-thread-email.js @@ -11,7 +11,9 @@ import { } from './constants'; import type { SendNewMessageMentionEmailJobData, Job } from 'shared/bull/types'; -export default async (job: Job) => { +export default async ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { recipient, sender, thread } = job.data; @@ -23,7 +25,7 @@ export default async (job: Job) => { generateUnsubscribeToken(recipient.id, TYPE_MUTE_THREAD, thread.id), ]); - if (!recipient.email || !unsubscribeToken) return; + if (!recipient.email || !unsubscribeToken) return Promise.resolve(); try { return sendEmail({ @@ -45,6 +47,6 @@ export default async (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-community-welcome-email.js b/hermes/queues/send-new-community-welcome-email.js index 4b8ed0a9b3..c88502eb99 100644 --- a/hermes/queues/send-new-community-welcome-email.js +++ b/hermes/queues/send-new-community-welcome-email.js @@ -1,11 +1,14 @@ +// @flow const debug = require('debug')('hermes:queue:send-new-community-welcome-email'); import sendEmail from '../send-email'; +import Raven from 'shared/raven'; import { NEW_COMMUNITY_WELCOME_TEMPLATE, SEND_NEW_COMMUNITY_WELCOME_EMAIL, } from './constants'; +import type { Job, NewCommunityWelcomeEmailJobData } from 'shared/bull/types'; -export default job => { +export default (job: Job): Promise => { debug(`\nnew job: ${job.id}`); const { user, community } = job.data; @@ -27,6 +30,6 @@ export default job => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-direct-message-email.js b/hermes/queues/send-new-direct-message-email.js index 2ed8fb3313..16efb69768 100644 --- a/hermes/queues/send-new-direct-message-email.js +++ b/hermes/queues/send-new-direct-message-email.js @@ -11,7 +11,9 @@ import { } from './constants'; import type { Job, SendNewDirectMessageEmailJobData } from 'shared/bull/types'; -export default async (job: Job) => { +export default async ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { recipient, user, thread, message } = job.data; const subject = `New direct message from ${user.name} on Spectrum`; @@ -27,7 +29,8 @@ export default async (job: Job) => { thread.id ); - if (!recipient.email || !unsubscribeToken || !muteThreadToken) return; + if (!recipient.email || !unsubscribeToken || !muteThreadToken) + return Promise.resolve(); try { return sendEmail({ @@ -47,6 +50,6 @@ export default async (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-message-email.js b/hermes/queues/send-new-message-email.js index 4958c74dac..a02ef67ad4 100644 --- a/hermes/queues/send-new-message-email.js +++ b/hermes/queues/send-new-message-email.js @@ -12,7 +12,7 @@ import { } from './constants'; import type { Job, SendNewMessageEmailJobData } from 'shared/bull/types'; -export default async (job: Job) => { +export default async (job: Job): Promise => { debug(`\nnew job: ${job.id}`); const { recipient, threads } = job.data; @@ -77,7 +77,8 @@ export default async (job: Job) => { ) : null; - if (!unsubscribeToken || !recipient.email || !recipient.username) return; + if (!unsubscribeToken || !recipient.email || !recipient.username) + return Promise.resolve(); try { return sendEmail({ templateId: NEW_MESSAGE_TEMPLATE, @@ -104,6 +105,6 @@ export default async (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-new-thread-email.js b/hermes/queues/send-new-thread-email.js index 343464ccbe..52d7b4e06b 100644 --- a/hermes/queues/send-new-thread-email.js +++ b/hermes/queues/send-new-thread-email.js @@ -49,7 +49,7 @@ type SendNewThreadEmailJob = { id: string, }; -export default async (job: SendNewThreadEmailJob) => { +export default async (job: SendNewThreadEmailJob): Promise => { const { recipient, thread, primaryActionLabel } = job.data; debug(`\nnew job: ${job.id}`); @@ -62,7 +62,7 @@ export default async (job: SendNewThreadEmailJob) => { if (!unsubscribeToken || !recipient.email) { console.error('Aborting no unsub token or recipient email'); - return null; + return Promise.resolve(); } const subject = `‘${truncate(smarten(thread.content.title), 80)}’ by ${ @@ -101,6 +101,6 @@ export default async (job: SendNewThreadEmailJob) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-channel-request-approved-email.js b/hermes/queues/send-private-channel-request-approved-email.js index 0dc4c10405..64b372725b 100644 --- a/hermes/queues/send-private-channel-request-approved-email.js +++ b/hermes/queues/send-private-channel-request-approved-email.js @@ -13,7 +13,9 @@ import type { SendPrivateChannelRequestApprovedEmailJobData, } from 'shared/bull/types'; -export default (job: Job) => { +export default ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { recipient, channel, community } = job.data; debug(`\nsending notification to user: ${recipient.email}`); @@ -42,6 +44,6 @@ export default (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-channel-request-sent-email.js b/hermes/queues/send-private-channel-request-sent-email.js index 1ace681609..1f00d80f9e 100644 --- a/hermes/queues/send-private-channel-request-sent-email.js +++ b/hermes/queues/send-private-channel-request-sent-email.js @@ -13,7 +13,9 @@ import type { SendPrivateChannelRequestEmailJobData, } from 'shared/bull/types'; -export default (job: Job) => { +export default ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { user, recipient, channel, community } = job.data; debug(`\nsending notification to private channel owner: ${recipient.email}`); @@ -42,6 +44,6 @@ export default (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-community-request-approved-email.js b/hermes/queues/send-private-community-request-approved-email.js index fbdf37ab37..ef76d04403 100644 --- a/hermes/queues/send-private-community-request-approved-email.js +++ b/hermes/queues/send-private-community-request-approved-email.js @@ -13,7 +13,9 @@ import type { SendPrivateCommunityRequestApprovedEmailJobData, } from 'shared/bull/types'; -export default (job: Job) => { +export default ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { recipient, community } = job.data; debug(`\nsending notification to user: ${recipient.email}`); @@ -41,6 +43,6 @@ export default (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-private-community-request-sent-email.js b/hermes/queues/send-private-community-request-sent-email.js index a24159c6b0..8c4cc287b3 100644 --- a/hermes/queues/send-private-community-request-sent-email.js +++ b/hermes/queues/send-private-community-request-sent-email.js @@ -13,7 +13,9 @@ import type { SendPrivateCommunityRequestEmailJobData, } from 'shared/bull/types'; -export default (job: Job) => { +export default ( + job: Job +): Promise => { debug(`\nnew job: ${job.id}`); const { user, recipient, community } = job.data; debug( @@ -43,6 +45,6 @@ export default (job: Job) => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/send-user-welcome-email.js b/hermes/queues/send-user-welcome-email.js index a11ed1781a..76972f4094 100644 --- a/hermes/queues/send-user-welcome-email.js +++ b/hermes/queues/send-user-welcome-email.js @@ -1,11 +1,14 @@ +// @flow const debug = require('debug')('hermes:queue:send-user-welcome-email'); import sendEmail from '../send-email'; +import Raven from 'shared/raven'; +import type { Job, NewUserWelcomeEmailJobData } from 'shared/bull/types'; import { NEW_USER_WELCOME_TEMPLATE, SEND_NEW_USER_WELCOME_EMAIL, } from './constants'; -export default job => { +export default (job: Job): Promise => { debug(`\nnew job: ${job.id}`); const { user } = job.data; @@ -27,6 +30,6 @@ export default job => { } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/queues/sendgrid-webhook-events.js b/hermes/queues/sendgrid-webhook-events.js index 8da048cfcf..963ad47a22 100644 --- a/hermes/queues/sendgrid-webhook-events.js +++ b/hermes/queues/sendgrid-webhook-events.js @@ -5,28 +5,28 @@ import { getUserByEmail } from 'shared/db/queries/user'; import { deactivateUserEmailNotifications } from '../models/usersSettings'; import type { Job, SendGridWebhookEventJobData } from 'shared/bull/types'; -const processEvent = async (job: Job) => { +const processEvent = async ( + job: Job +): Promise => { const { event } = job.data; const user = await getUserByEmail(event.email); if (!user) { debug(`No user found with email ${event.email}`); - return; + throw new Error(`No user found with email ${event.email}`); } - return await deactivateUserEmailNotifications(user.id).catch(e => - console.error(e.message) - ); + return await deactivateUserEmailNotifications(user.id); }; -export default (job: Job) => { +export default (job: Job): Promise => { try { debug('Processing SendGrid webhook event'); return processEvent(job); } catch (err) { console.error('❌ Error in job:\n'); console.error(err); - Raven.captureException(err); + return Raven.captureException(err); } }; diff --git a/hermes/send-email.js b/hermes/send-email.js index a14d441feb..150697742b 100644 --- a/hermes/send-email.js +++ b/hermes/send-email.js @@ -8,9 +8,14 @@ import { events } from 'shared/analytics'; import { trackQueue } from 'shared/bull/queues'; const { SENDGRID_API_KEY } = process.env; +type ToType = { + email: string, + name?: string, +}; + type Options = { templateId: string, - to: string, + to: Array, dynamic_template_data: Object, userId?: string, }; @@ -27,18 +32,24 @@ const defaultOptions = { }, }; -const sendEmail = (options: Options) => { - const { templateId, to, dynamic_template_data, userId } = options; +const sendEmail = (options: Options): Promise => { + let { templateId, to, dynamic_template_data, userId } = options; if (SENDGRID_API_KEY !== 'undefined') { debug( - `--Send LIVE email with templateId ${templateId}--\nto: ${to}\ndynamic_template_data: ${stringify( + `--Send LIVE email with templateId ${templateId}--\nto: ${to + .map(t => t.email) + .join(', ')}\ndynamic_template_data: ${stringify( dynamic_template_data )}` ); sg.setApiKey(SENDGRID_API_KEY); } else { - debug(`--Send TEST email with templateId ${templateId}--\n--to: ${to}--`); + debug( + `--Send TEST email with templateId ${templateId}--\n--to: ${to + .map(t => t.email) + .join(', ')}--` + ); // eslint-disable-next-line debug( @@ -50,7 +61,7 @@ const sendEmail = (options: Options) => { }) ); - return; + return Promise.resolve(); } if (userId) { @@ -69,14 +80,14 @@ const sendEmail = (options: Options) => { }); } - return; + return Promise.resolve(); } // qq.com email addresses are isp blocked, which raises our error rate // on sendgrid. prevent sending these emails at all - if (to.substr(to.length - 7) === '@qq.com') { - return; - } + to = to.filter(toType => { + return toType.email.substr(to.length - 7) !== '@qq.com'; + }); // $FlowFixMe return new Promise((res, rej) => { diff --git a/hermes/yarn.lock b/hermes/yarn.lock index 3ff32cb60f..35905a42e9 100644 --- a/hermes/yarn.lock +++ b/hermes/yarn.lock @@ -135,7 +135,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== diff --git a/mercury/package.json b/mercury/package.json index de3e37e0ed..d413d66df4 100644 --- a/mercury/package.json +++ b/mercury/package.json @@ -3,6 +3,7 @@ "start": "NODE_ENV=production node main.js" }, "dependencies": { + "bluebird": "^3.5.3", "bull": "^3.5.2", "debug": "^4.1.0", "now-env": "^3.1.0", @@ -16,4 +17,4 @@ "devDependencies": { "json-stringify-pretty-compact": "^1.2.0" } -} \ No newline at end of file +} diff --git a/mercury/yarn.lock b/mercury/yarn.lock index 23007f176e..29e993c539 100644 --- a/mercury/yarn.lock +++ b/mercury/yarn.lock @@ -319,7 +319,7 @@ redis-tag-cache@^1.2.1: dependencies: ioredis "^4.0.0" -rethinkdbdash@^2.3.29: +rethinkdbdash@^2.3.31: version "2.3.31" resolved "https://registry.yarnpkg.com/rethinkdbdash/-/rethinkdbdash-2.3.31.tgz#fe2f73d1fa6e6f5d96d8e881292013cf6dca914d" integrity sha512-6nXrKFjdg2Ug0YpdmPWSvyD/2EisHnFNt4FWZ74dcXGK48ievSv+cNFTmVv+KjLi6I9CCf6w4CKZ6yCYTfMfdQ== diff --git a/package.json b/package.json index 9f89818049..25d91db321 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "axios": "^0.17.1", "b2a": "^1.0.10", "bad-words": "^1.6.4", + "bluebird": "^3.5.3", "body-parser": "^1.18.3", "bull": "^3.5.2", "casual": "^1.5.19", diff --git a/shared/bull/create-redis.js b/shared/bull/create-redis.js index 52a8061bf4..4a8db53215 100644 --- a/shared/bull/create-redis.js +++ b/shared/bull/create-redis.js @@ -1,5 +1,6 @@ // @flow import Redis from 'ioredis'; +Redis.Promise = require('bluebird'); const config = process.env.NODE_ENV === 'production' && !process.env.FORCE_DEV diff --git a/shared/bull/types.js b/shared/bull/types.js index 1a80927a28..287bdff3df 100644 --- a/shared/bull/types.js +++ b/shared/bull/types.js @@ -326,7 +326,7 @@ export type AdminToxicMessageJobData = { message: DBMessage }; export type AdminToxicThreadJobData = { thread: DBThread }; export type AdminSlackImportJobData = { - thisUser: DBUser, + user: DBUser, community: DBCommunity, invitedCount: number, teamName: string, @@ -442,6 +442,18 @@ export type SendGridWebhookEventJobData = { }, }; +export type AdminToxicContentEmailJobData = { + type: string, + text: string, + user: DBUser, + thread: DBThread, + community: DBCommunity, + channel: DBChannel, + toxicityConfidence: { + perspectiveScore: number, + }, +}; + export type Queues = { // athena sendThreadNotificationQueue: BullQueue, @@ -499,7 +511,7 @@ export type Queues = { _adminProcessSlackImportQueue: BullQueue, _adminProcessUserReportedQueue: BullQueue, // TODO: Properly type this - _adminSendToxicContentEmailQueue: BullQueue, + _adminSendToxicContentEmailQueue: BullQueue, _adminProcessUserSpammingThreadsQueue: BullQueue, _adminSendActiveCommunityReportEmailQueue: BullQueue, diff --git a/shared/cache/redis.js b/shared/cache/redis.js index b1fd4fcc96..8c3207a707 100644 --- a/shared/cache/redis.js +++ b/shared/cache/redis.js @@ -1,5 +1,6 @@ // @flow import Redis from 'ioredis'; +Redis.Promise = require('bluebird'); const config = process.env.NODE_ENV === 'production' && !process.env.FORCE_DEV diff --git a/vulcan/package.json b/vulcan/package.json index e0bfa947a4..16beac731b 100644 --- a/vulcan/package.json +++ b/vulcan/package.json @@ -5,6 +5,7 @@ "dependencies": { "algoliasearch": "^3.31.0", "aws-sdk": "^2.373.0", + "bluebird": "^3.5.3", "bull": "^3.5.2", "debug": "^4.1.0", "draft-js": "^0.10.3", @@ -27,4 +28,4 @@ "devDependencies": { "json-stringify-pretty-compact": "^1.2.0" } -} \ No newline at end of file +} diff --git a/vulcan/yarn.lock b/vulcan/yarn.lock index 3f55075601..5372707343 100644 --- a/vulcan/yarn.lock +++ b/vulcan/yarn.lock @@ -625,7 +625,7 @@ rethinkdb-changefeed-reconnect@^0.3.2: dependencies: babel-runtime "^6.18.0" -rethinkdbdash@^2.3.29: +rethinkdbdash@^2.3.31: version "2.3.31" resolved "https://registry.yarnpkg.com/rethinkdbdash/-/rethinkdbdash-2.3.31.tgz#fe2f73d1fa6e6f5d96d8e881292013cf6dca914d" integrity sha512-6nXrKFjdg2Ug0YpdmPWSvyD/2EisHnFNt4FWZ74dcXGK48ievSv+cNFTmVv+KjLi6I9CCf6w4CKZ6yCYTfMfdQ== From 6f244242605d6c2de7f44624d638f04cbabcad93 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Wed, 12 Dec 2018 11:43:48 -0800 Subject: [PATCH 17/25] Use default worker options on hermes --- hermes/index.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/hermes/index.js b/hermes/index.js index 87c197d343..4b0735baae 100644 --- a/hermes/index.js +++ b/hermes/index.js @@ -96,11 +96,7 @@ const server = createWorker( [SENDGRID_WEBHOOK_EVENT]: processSendGridWebhookEvent, }, - { - settings: { - maxStalledCount: 3, // Max amount of times a stalled job will be re-processed. - }, - }, + {}, requestHandler ); From e5203a7596dcc880441a2515247d65fb77f726f0 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" Date: Wed, 12 Dec 2018 22:40:28 +0000 Subject: [PATCH 18/25] Update slate to version 0.44.9 --- api/package.json | 2 +- api/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/api/package.json b/api/package.json index ab5556bd29..483253a6b5 100644 --- a/api/package.json +++ b/api/package.json @@ -115,7 +115,7 @@ "sanitize-filename": "^1.6.1", "serialize-javascript": "^1.5.0", "session-rethinkdb": "^2.0.0", - "slate": "^0.44.8", + "slate": "^0.44.9", "slate-markdown": "0.1.0", "slugg": "^1.1.0", "string-replace-to-array": "^1.0.3", diff --git a/api/yarn.lock b/api/yarn.lock index cbcb385870..5a6f972184 100644 --- a/api/yarn.lock +++ b/api/yarn.lock @@ -8476,10 +8476,10 @@ slate-markdown@0.1.0: react "^0.14.0 || ^15.0.0" styled-components "^2.0.0" -slate@^0.44.8: - version "0.44.8" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.44.8.tgz#cd39a4e238acf21d072be9b0b5a5220bc4bd5f4c" - integrity sha512-O7RMFsNiTxRxiVL6ndZplICQ9jK7wG8cJ9jZ0vYv5/RBir2RjH0tgRVSVvlgVEQv51h5vpmSQcrQ+GhEiWKX4g== +slate@^0.44.9: + version "0.44.9" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.44.9.tgz#0fc9ba9f08b379b86c4c0a1ddebbe6bf28aa3c4b" + integrity sha512-PKZUVZU416UJKuOakNvhJ5qh2umjPdkaO41Wf8x1xnkFe4IQcZuw3ZTWWm35rYD7fd0X238uEnxIqF5RuxENlA== dependencies: debug "^3.1.0" direction "^0.1.5" From 9f9ff7fd7772b12c08ceda07750182d2e4093671 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" Date: Thu, 13 Dec 2018 02:50:33 +0000 Subject: [PATCH 19/25] Update immutability-helper to version 2.9.0 --- api/package.json | 2 +- api/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/api/package.json b/api/package.json index ab5556bd29..565bfa82c3 100644 --- a/api/package.json +++ b/api/package.json @@ -60,7 +60,7 @@ "hpp": "^0.2.2", "hsts": "^2.1.0", "imgix-core-js": "^1.2.0", - "immutability-helper": "^2.8.1", + "immutability-helper": "^2.9.0", "ioredis": "^4.3.0", "isomorphic-fetch": "^2.2.1", "iterall": "^1.2.2", diff --git a/api/yarn.lock b/api/yarn.lock index cbcb385870..77ef083377 100644 --- a/api/yarn.lock +++ b/api/yarn.lock @@ -4919,10 +4919,10 @@ imgix-core-js@^1.2.0: js-base64 "^2.1.9" md5 "^2.2.1" -immutability-helper@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.8.1.tgz#3c5ec05fcd83676bfae7146f319595243ad904f4" - integrity sha512-8AVB5EUpRBUdXqfe4cFsFECsOIZ9hX/Arl8B8S9/tmwpYv3UWvOsXUPOjkuZIMaVxfSWkxCzkng1rjmEoSWrxQ== +immutability-helper@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.9.0.tgz#04a1c646300cd3a68aa5dc1daa7758da2ca75292" + integrity sha512-2LYtDuGugMLyoFV0qGvblnq39E2VVQ9m4dDktlRLVBBVV1LnUMK0rlqkbtlUjfT1UJO876OobtPlNZTEbOOYVQ== dependencies: invariant "^2.2.0" From ced066667aa31ff65052fefada9dc5d6ad180241 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Thu, 13 Dec 2018 19:05:45 -0800 Subject: [PATCH 20/25] Remove bluebird --- analytics/package.json | 1 - analytics/yarn.lock | 2 +- api/package.json | 1 - athena/package.json | 1 - athena/yarn.lock | 2 +- chronos/package.json | 1 - hermes/package.json | 1 - hermes/yarn.lock | 2 +- mercury/package.json | 1 - package.json | 1 - shared/bull/create-redis.js | 1 - shared/cache/redis.js | 1 - vulcan/package.json | 1 - 13 files changed, 3 insertions(+), 13 deletions(-) diff --git a/analytics/package.json b/analytics/package.json index 67e4716e9b..0b6f0c59e8 100644 --- a/analytics/package.json +++ b/analytics/package.json @@ -7,7 +7,6 @@ "dependencies": { "amplitude": "^3.5.0", "aws-sdk": "^2.373.0", - "bluebird": "^3.5.3", "bull": "3.3.10", "debug": "^4.1.0", "faker": "^4.1.0", diff --git a/analytics/yarn.lock b/analytics/yarn.lock index f1104a2309..e84909a372 100644 --- a/analytics/yarn.lock +++ b/analytics/yarn.lock @@ -34,7 +34,7 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0, bluebird@^3.5.3: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== diff --git a/api/package.json b/api/package.json index 83a28ca57a..97348263d5 100644 --- a/api/package.json +++ b/api/package.json @@ -16,7 +16,6 @@ "babel-plugin-transform-object-rest-spread": "^6.23.0", "babel-preset-env": "^1.7.0", "backpack-core": "^0.8.3", - "bluebird": "^3.5.3", "body-parser": "^1.18.3", "bull": "^3.5.2", "casual": "^1.5.12", diff --git a/athena/package.json b/athena/package.json index 0fbb5fc4a2..4cb5fb87a3 100644 --- a/athena/package.json +++ b/athena/package.json @@ -7,7 +7,6 @@ "dependencies": { "aws-sdk": "^2.373.0", "axios": "^0.16.2", - "bluebird": "^3.5.3", "bull": "3.3.10", "cryptr": "^3.0.0", "debug": "^4.1.0", diff --git a/athena/yarn.lock b/athena/yarn.lock index f6bbe27307..eecc1bfd5d 100644 --- a/athena/yarn.lock +++ b/athena/yarn.lock @@ -51,7 +51,7 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0, bluebird@^3.5.3: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== diff --git a/chronos/package.json b/chronos/package.json index cd4d4b963a..5ad2c540db 100644 --- a/chronos/package.json +++ b/chronos/package.json @@ -4,7 +4,6 @@ }, "dependencies": { "aws-sdk": "^2.373.0", - "bluebird": "^3.5.3", "bull": "^3.5.2", "debug": "^4.1.0", "decode-uri-component": "^0.2.0", diff --git a/hermes/package.json b/hermes/package.json index 90df1f0f82..077de76a2d 100644 --- a/hermes/package.json +++ b/hermes/package.json @@ -5,7 +5,6 @@ "dependencies": { "@sendgrid/mail": "^6.3.1", "aws-sdk": "^2.373.0", - "bluebird": "^3.5.3", "bull": "3.3.10", "debug": "^4.1.0", "draft-js": "^0.10.5", diff --git a/hermes/yarn.lock b/hermes/yarn.lock index 35905a42e9..3ff32cb60f 100644 --- a/hermes/yarn.lock +++ b/hermes/yarn.lock @@ -135,7 +135,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0, bluebird@^3.5.3: +"bluebird@>= 3.0.1", bluebird@^3.3.4, bluebird@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== diff --git a/mercury/package.json b/mercury/package.json index d413d66df4..7ce097aae8 100644 --- a/mercury/package.json +++ b/mercury/package.json @@ -3,7 +3,6 @@ "start": "NODE_ENV=production node main.js" }, "dependencies": { - "bluebird": "^3.5.3", "bull": "^3.5.2", "debug": "^4.1.0", "now-env": "^3.1.0", diff --git a/package.json b/package.json index 25d91db321..9f89818049 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,6 @@ "axios": "^0.17.1", "b2a": "^1.0.10", "bad-words": "^1.6.4", - "bluebird": "^3.5.3", "body-parser": "^1.18.3", "bull": "^3.5.2", "casual": "^1.5.19", diff --git a/shared/bull/create-redis.js b/shared/bull/create-redis.js index 4a8db53215..52a8061bf4 100644 --- a/shared/bull/create-redis.js +++ b/shared/bull/create-redis.js @@ -1,6 +1,5 @@ // @flow import Redis from 'ioredis'; -Redis.Promise = require('bluebird'); const config = process.env.NODE_ENV === 'production' && !process.env.FORCE_DEV diff --git a/shared/cache/redis.js b/shared/cache/redis.js index 8c3207a707..b1fd4fcc96 100644 --- a/shared/cache/redis.js +++ b/shared/cache/redis.js @@ -1,6 +1,5 @@ // @flow import Redis from 'ioredis'; -Redis.Promise = require('bluebird'); const config = process.env.NODE_ENV === 'production' && !process.env.FORCE_DEV diff --git a/vulcan/package.json b/vulcan/package.json index 16beac731b..324542cc26 100644 --- a/vulcan/package.json +++ b/vulcan/package.json @@ -5,7 +5,6 @@ "dependencies": { "algoliasearch": "^3.31.0", "aws-sdk": "^2.373.0", - "bluebird": "^3.5.3", "bull": "^3.5.2", "debug": "^4.1.0", "draft-js": "^0.10.3", From 928ee4176154b7bdc490b2e70560a7cf8b163e37 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Thu, 13 Dec 2018 19:18:03 -0800 Subject: [PATCH 21/25] Downgrade ioredis --- analytics/package.json | 1 + analytics/yarn.lock | 2 +- api/package.json | 2 +- api/yarn.lock | 4 ++-- athena/package.json | 1 + athena/yarn.lock | 2 +- chronos/package.json | 1 + chronos/yarn.lock | 2 +- hermes/package.json | 1 + hermes/yarn.lock | 2 +- mercury/package.json | 1 + mercury/yarn.lock | 2 +- package.json | 2 +- vulcan/package.json | 1 + vulcan/yarn.lock | 2 +- yarn.lock | 4 ++-- 16 files changed, 18 insertions(+), 12 deletions(-) diff --git a/analytics/package.json b/analytics/package.json index 0b6f0c59e8..6fb0ccb34a 100644 --- a/analytics/package.json +++ b/analytics/package.json @@ -10,6 +10,7 @@ "bull": "3.3.10", "debug": "^4.1.0", "faker": "^4.1.0", + "ioredis": "3.2.2", "lodash.intersection": "^4.4.0", "node-env-file": "^0.1.8", "now-env": "^3.1.0", diff --git a/analytics/yarn.lock b/analytics/yarn.lock index e84909a372..267fb34341 100644 --- a/analytics/yarn.lock +++ b/analytics/yarn.lock @@ -208,7 +208,7 @@ inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== diff --git a/api/package.json b/api/package.json index 97348263d5..dccbf0487b 100644 --- a/api/package.json +++ b/api/package.json @@ -61,7 +61,7 @@ "hsts": "^2.1.0", "imgix-core-js": "^1.2.0", "immutability-helper": "^2.9.0", - "ioredis": "^4.3.0", + "ioredis": "3.2.2", "isomorphic-fetch": "^2.2.1", "iterall": "^1.2.2", "jest": "^21.2.1", diff --git a/api/yarn.lock b/api/yarn.lock index 0a0c4d3c59..47e1efe8c7 100644 --- a/api/yarn.lock +++ b/api/yarn.lock @@ -4993,7 +4993,7 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== @@ -5022,7 +5022,7 @@ ioredis@^3.1.4: redis-commands "^1.2.0" redis-parser "^2.4.0" -ioredis@^4.0.0, ioredis@^4.3.0: +ioredis@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.3.0.tgz#a92850dd8794eaee4f38a265c830ca823a09d345" integrity sha512-TwTp93UDKlKVQeg9ThuavNh4Vs31JTlqn+cI/J6z21OtfghyJm5I349ZlsKobOeEyS4INITMLQ1fhR7xwf9Fxg== diff --git a/athena/package.json b/athena/package.json index 4cb5fb87a3..52014ab8d6 100644 --- a/athena/package.json +++ b/athena/package.json @@ -16,6 +16,7 @@ "escape-html": "^1.0.3", "faker": "^4.1.0", "imgix-core-js": "^1.2.0", + "ioredis": "3.2.2", "lodash.intersection": "^4.4.0", "node-env-file": "^0.1.8", "now-env": "^3.1.0", diff --git a/athena/yarn.lock b/athena/yarn.lock index eecc1bfd5d..d27e2214b9 100644 --- a/athena/yarn.lock +++ b/athena/yarn.lock @@ -322,7 +322,7 @@ inherits@^2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== diff --git a/chronos/package.json b/chronos/package.json index 5ad2c540db..1c188b506b 100644 --- a/chronos/package.json +++ b/chronos/package.json @@ -10,6 +10,7 @@ "draft-js": "^0.10.5", "faker": "^4.1.0", "imgix-core-js": "^1.2.0", + "ioredis": "3.2.2", "lodash": "^4.17.11", "lodash.intersection": "^4.4.0", "now-env": "^3.1.0", diff --git a/chronos/yarn.lock b/chronos/yarn.lock index 0cccdcec12..141b6d96be 100644 --- a/chronos/yarn.lock +++ b/chronos/yarn.lock @@ -220,7 +220,7 @@ immutable@~3.7.4: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== diff --git a/hermes/package.json b/hermes/package.json index 077de76a2d..56c20db8f5 100644 --- a/hermes/package.json +++ b/hermes/package.json @@ -10,6 +10,7 @@ "draft-js": "^0.10.5", "escape-html": "^1.0.3", "faker": "^4.1.0", + "ioredis": "3.2.2", "jsonwebtoken": "^8.4.0", "lodash.intersection": "^4.4.0", "node-env-file": "^0.1.8", diff --git a/hermes/yarn.lock b/hermes/yarn.lock index 3ff32cb60f..7e2a4b9500 100644 --- a/hermes/yarn.lock +++ b/hermes/yarn.lock @@ -457,7 +457,7 @@ immutable@~3.7.4: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== diff --git a/mercury/package.json b/mercury/package.json index 7ce097aae8..2b33ceda30 100644 --- a/mercury/package.json +++ b/mercury/package.json @@ -5,6 +5,7 @@ "dependencies": { "bull": "^3.5.2", "debug": "^4.1.0", + "ioredis": "3.2.2", "now-env": "^3.1.0", "raven": "^2.6.4", "redis-tag-cache": "^1.2.1", diff --git a/mercury/yarn.lock b/mercury/yarn.lock index 29e993c539..f000be25a0 100644 --- a/mercury/yarn.lock +++ b/mercury/yarn.lock @@ -91,7 +91,7 @@ flexbuffer@0.0.6: resolved "https://registry.yarnpkg.com/flexbuffer/-/flexbuffer-0.0.6.tgz#039fdf23f8823e440c38f3277e6fef1174215b30" integrity sha1-A5/fI/iCPkQMOPMnfm/vEXQhWzA= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== diff --git a/package.json b/package.json index 9f89818049..f1c5c2b2ca 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "hsts": "^2.1.0", "idx": "^2.4.0", "imgix-core-js": "^1.0.6", - "ioredis": "^4.3.0", + "ioredis": "3.2.2", "is-electron": "^2.1.0", "isomorphic-fetch": "^2.2.1", "jest": "22.4.3", diff --git a/vulcan/package.json b/vulcan/package.json index 324542cc26..2d884c8456 100644 --- a/vulcan/package.json +++ b/vulcan/package.json @@ -10,6 +10,7 @@ "draft-js": "^0.10.3", "emoji-regex": "^6.1.1", "faker": "^4.1.0", + "ioredis": "3.2.2", "lodash": "^4.17.11", "lodash.intersection": "^4.4.0", "node-env-file": "^0.1.8", diff --git a/vulcan/yarn.lock b/vulcan/yarn.lock index 5372707343..8d5a1e42b2 100644 --- a/vulcan/yarn.lock +++ b/vulcan/yarn.lock @@ -276,7 +276,7 @@ inherits@^2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== diff --git a/yarn.lock b/yarn.lock index ae28e98c47..43a2bd1066 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7904,7 +7904,7 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -ioredis@^3.1.4: +ioredis@3.2.2, ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== @@ -7933,7 +7933,7 @@ ioredis@^3.1.4: redis-commands "^1.2.0" redis-parser "^2.4.0" -ioredis@^4.0.0, ioredis@^4.3.0: +ioredis@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.3.0.tgz#a92850dd8794eaee4f38a265c830ca823a09d345" integrity sha512-TwTp93UDKlKVQeg9ThuavNh4Vs31JTlqn+cI/J6z21OtfghyJm5I349ZlsKobOeEyS4INITMLQ1fhR7xwf9Fxg== From e7afa5f85c19f457d572897d3e8d9ce684c1fb38 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Thu, 13 Dec 2018 19:40:39 -0800 Subject: [PATCH 22/25] Dont use createwritequery for setuseronline --- shared/db/queries/user.js | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/shared/db/queries/user.js b/shared/db/queries/user.js index eaa1f854de..8c76efc79d 100644 --- a/shared/db/queries/user.js +++ b/shared/db/queries/user.js @@ -533,26 +533,23 @@ export const editUser = createWriteQuery( } ); -export const setUserOnline = createWriteQuery( - (id: string, isOnline: boolean) => ({ - query: db - .table('users') - .get(id) - .update( - { - isOnline, - lastSeen: new Date(), - }, - { returnChanges: 'always' } - ) - .run() - .then(res => { - const user = res.changes[0].new_val || res.changes[0].old_val; - return user; - }), - invalidateTags: () => [id], - }) -); +export const setUserOnline = async (id: string, isOnline: boolean) => { + return await db + .table('users') + .get(id) + .update( + { + isOnline, + lastSeen: new Date(), + }, + { returnChanges: 'always' } + ) + .run() + .then(res => { + const user = res.changes[0].new_val || res.changes[0].old_val; + return user; + }); +}; export const setUserPendingEmail = createWriteQuery( (userId: string, pendingEmail: string) => ({ From 3e3fb4f398441e4c2967d5ee74d4ff566839d03a Mon Sep 17 00:00:00 2001 From: Max Stoiber Date: Fri, 14 Dec 2018 13:09:41 +0100 Subject: [PATCH 23/25] More aggressively reconnect changefeeds The library implements a linear back-off strategy, that means the delay between connection attempts is set to `attemptDelay * numAttempts`. Our efault value of 60s for the attemptDelay is thusly very slow, the first attempt will be made after 60s, second 120s after that, third 180s after that, etc. etc. etc. This switches it to be a bit more aggressive and try reconnecting after 10s, then 20s after that, then 30s after that, then 40s after that, etc. --- shared/changefeed-utils/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/changefeed-utils/index.js b/shared/changefeed-utils/index.js index b9e647e63b..49e5b0c5a7 100644 --- a/shared/changefeed-utils/index.js +++ b/shared/changefeed-utils/index.js @@ -63,7 +63,7 @@ export const createChangefeed = ( }, { changefeedName: name, - attemptDelay: 60000, + attemptDelay: 10000, maxAttempts: Infinity, logger: { // Ignore log and info logs in production From ed8e81a56964d8bf3ffa8e7232fedac97ea61ad5 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Fri, 14 Dec 2018 09:57:35 -0800 Subject: [PATCH 24/25] Increase connection timeout to 30s --- shared/db/db.js | 1 + 1 file changed, 1 insertion(+) diff --git a/shared/db/db.js b/shared/db/db.js index bcfe99ebac..1fc5dfbd99 100644 --- a/shared/db/db.js +++ b/shared/db/db.js @@ -13,6 +13,7 @@ const DEFAULT_CONFIG = { max: 1000, // Maximum number of connections, default is 1000 buffer: 50, // Minimum number of connections open at any given moment, default is 50 timeoutGb: 60 * 60 * 1000, // How long should an unused connection stick around, default is an hour, this is a minute + timeout: 30, // The number of seconds for a connection to be opened, default 20 }; let ca; From 40cf23dc36a07c908d227ade69c8c5692bf38898 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Fri, 14 Dec 2018 10:38:09 -0800 Subject: [PATCH 25/25] 2.5.1 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 727a1d95e6..a291fce628 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Spectrum", - "version": "2.5.0", + "version": "2.5.1", "license": "BSD-3-Clause", "devDependencies": { "@babel/preset-flow": "^7.0.0", @@ -280,4 +280,4 @@ ] }, "pre-commit": "lint:staged" -} +} \ No newline at end of file