From f01c352969c2d0d6c2c72568669216d29dba4a52 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Fri, 21 Jan 2022 14:55:34 -0600 Subject: [PATCH 01/19] fix(chat): Enter key improvement by @maryketa --- website/client/src/components/groups/chat.vue | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/website/client/src/components/groups/chat.vue b/website/client/src/components/groups/chat.vue index 504817cea0..e2c341b525 100644 --- a/website/client/src/components/groups/chat.vue +++ b/website/client/src/components/groups/chat.vue @@ -27,7 +27,7 @@ @keydown.tab="handleTab($event)" @keydown.up="selectPreviousAutocomplete($event)" @keydown.down="selectNextAutocomplete($event)" - @keydown.enter="selectAutocomplete($event)" + @keypress.enter="selectAutocomplete($event)" @keydown.esc="handleEscape($event)" @paste="disableMessageSendShortcut()" > @@ -247,8 +247,13 @@ export default { selectAutocomplete (e) { if (this.$refs.autocomplete.searchActive) { - e.preventDefault(); - this.$refs.autocomplete.makeSelection(); + if (this.$refs.autocomplete.selected !== null) { + e.preventDefault(); + this.$refs.autocomplete.makeSelection(); + } else { + // no autocomplete selected, newline instead + this.$refs.autocomplete.cancel(); + } } }, From d11810677c1389ea3e692ae5ce4e83cadaae5a01 Mon Sep 17 00:00:00 2001 From: abigley <49001612+abigley@users.noreply.github.com> Date: Fri, 21 Jan 2022 16:10:50 -0500 Subject: [PATCH 02/19] Fixed issue with mystery sets, pets, and mounts staying pinned in the rewards column after purchasing. Added logic to look up item info and remove from pinned list by path. (#13701) --- website/common/script/ops/buy/buyMysterySet.js | 5 +++++ website/common/script/ops/buy/hourglassPurchase.js | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/website/common/script/ops/buy/buyMysterySet.js b/website/common/script/ops/buy/buyMysterySet.js index 9227507f2e..3b8cd514b2 100644 --- a/website/common/script/ops/buy/buyMysterySet.js +++ b/website/common/script/ops/buy/buyMysterySet.js @@ -8,6 +8,8 @@ import { NotFound, } from '../../libs/errors'; import errorMessage from '../../libs/errorMessage'; +import { removeItemByPath } from '../pinnedGearUtils'; +import getItemInfo from '../../libs/getItemInfo'; export default function buyMysterySet (user, req = {}, analytics) { const key = get(req, 'params.key'); @@ -28,6 +30,9 @@ export default function buyMysterySet (user, req = {}, analytics) { user.items.gear.owned[item.key] = true; }); + const itemInfo = getItemInfo(user, 'mystery_set', mysterySet); + removeItemByPath(user, itemInfo.path); + if (analytics) { analytics.track('buy', { uuid: user._id, diff --git a/website/common/script/ops/buy/hourglassPurchase.js b/website/common/script/ops/buy/hourglassPurchase.js index 1d0b6fa185..9c7a6f1cc9 100644 --- a/website/common/script/ops/buy/hourglassPurchase.js +++ b/website/common/script/ops/buy/hourglassPurchase.js @@ -71,6 +71,11 @@ export default function purchaseHourglass (user, req = {}, analytics, quantity = [key]: 5, }; if (user.markModified) user.markModified('items.pets'); + const itemInfo = getItemInfo(user, 'timeTravelersStable', { + key, + type, + }); + removeItemByPath(user, itemInfo.path); } if (type === 'mounts') { @@ -79,6 +84,11 @@ export default function purchaseHourglass (user, req = {}, analytics, quantity = [key]: true, }; if (user.markModified) user.markModified('items.mounts'); + const itemInfo = getItemInfo(user, 'timeTravelersStable', { + key, + type, + }); + removeItemByPath(user, itemInfo.path); } } From 1177ad8b8c3586beff3e7470dab766f9df54c616 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Fri, 21 Jan 2022 22:15:58 +0100 Subject: [PATCH 03/19] Prerequisites to removing Facebook authentication (#13683) * Don't sign in user when trying to connect a social account that was already created * Log social users into matching local auth accounts If the social account has an email that already exists as a local user, instead of creating a new account log them into their account and add the social auth to the account * If possible set local authentication email for social users * Allow password reset emails to be sent to social login users * lint fixes * Fix issues and tests * fix tests * Fix lint error. --- config.json.example | 4 +- .../user/auth/GET-user_auth_apple.test.js | 16 +- .../user/auth/POST-user_auth_social.test.js | 188 ++++++++++++++++-- .../auth/POST-user_reset_password.test.js | 13 ++ .../components/auth/registerLoginReset.vue | 2 +- .../header/notifications/worldBoss.vue | 6 +- .../src/components/inventory/items/index.vue | 5 +- .../src/components/snackbars/notification.vue | 33 ++- .../components/snackbars/notifications.vue | 6 +- website/common/locales/en/front.json | 1 + website/server/controllers/api-v3/auth.js | 9 +- website/server/libs/auth/social.js | 77 ++++--- 12 files changed, 288 insertions(+), 72 deletions(-) diff --git a/config.json.example b/config.json.example index 04c1c535b4..fbf18f1b82 100644 --- a/config.json.example +++ b/config.json.example @@ -32,8 +32,8 @@ "LOGGLY_SUBDOMAIN": "example-subdomain", "LOGGLY_TOKEN": "example-token", "MAINTENANCE_MODE": "false", - "NODE_DB_URI": "mongodb://localhost:27017/habitica-dev?replicaSet=rs", - "TEST_DB_URI": "mongodb://localhost:27017/habitica-test?replicaSet=rs", + "NODE_DB_URI": "mongodb://localhost:27017/habitica-dev", + "TEST_DB_URI": "mongodb://localhost:27017/habitica-test", "MONGODB_POOL_SIZE": "10", "NODE_ENV": "development", "PATH": "bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin", diff --git a/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js b/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js index 975fccfa3f..b1c97f6ca4 100644 --- a/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js +++ b/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js @@ -1,3 +1,4 @@ +import { v4 as generateUUID } from 'uuid'; import { generateUser, requester, @@ -9,15 +10,18 @@ describe('GET /user/auth/apple', () => { let api; let user; const appleEndpoint = '/user/auth/apple'; - - before(async () => { - const expectedResult = { id: 'appleId', name: 'an apple user' }; - sandbox.stub(appleAuth, 'appleProfile').returns(Promise.resolve(expectedResult)); - }); + let randomAppleId = '123456'; beforeEach(async () => { api = requester(); user = await generateUser(); + randomAppleId = generateUUID(); + const expectedResult = { id: randomAppleId, name: 'an apple user' }; + sandbox.stub(appleAuth, 'appleProfile').returns(Promise.resolve(expectedResult)); + }); + + afterEach(async () => { + appleAuth.appleProfile.restore(); }); it('registers a new user', async () => { @@ -26,7 +30,7 @@ describe('GET /user/auth/apple', () => { expect(response.apiToken).to.exist; expect(response.id).to.exist; expect(response.newUser).to.be.true; - await expect(getProperty('users', response.id, 'auth.apple.id')).to.eventually.equal('appleId'); + await expect(getProperty('users', response.id, 'auth.apple.id')).to.eventually.equal(randomAppleId); await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('an apple user'); }); diff --git a/test/api/v3/integration/user/auth/POST-user_auth_social.test.js b/test/api/v3/integration/user/auth/POST-user_auth_social.test.js index eff5525603..c4ffe57efb 100644 --- a/test/api/v3/integration/user/auth/POST-user_auth_social.test.js +++ b/test/api/v3/integration/user/auth/POST-user_auth_social.test.js @@ -1,4 +1,5 @@ import passport from 'passport'; +import { v4 as generateUUID } from 'uuid'; import { generateUser, requester, @@ -10,14 +11,15 @@ describe('POST /user/auth/social', () => { let api; let user; const endpoint = '/user/auth/social'; - const randomAccessToken = '123456'; - const facebookId = 'facebookId'; - const googleId = 'googleId'; + let randomAccessToken = '123456'; + let randomFacebookId = 'facebookId'; + let randomGoogleId = 'googleId'; let network = 'NoNetwork'; beforeEach(async () => { api = requester(); user = await generateUser(); + randomAccessToken = generateUUID(); }); it('fails if network is not supported', async () => { @@ -32,12 +34,23 @@ describe('POST /user/auth/social', () => { }); describe('facebook', () => { - before(async () => { - const expectedResult = { id: facebookId, displayName: 'a facebook user' }; + beforeEach(async () => { + randomFacebookId = generateUUID(); + const expectedResult = { + id: randomFacebookId, + displayName: 'a facebook user', + emails: [ + { value: `${user.auth.local.username}+facebook@example.com` }, + ], + }; sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult); network = 'facebook'; }); + afterEach(async () => { + passport._strategies.facebook.userProfile.restore(); + }); + it('registers a new user', async () => { const response = await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase @@ -51,7 +64,8 @@ describe('POST /user/auth/social', () => { await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a facebook user'); await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.exist; - await expect(getProperty('users', response.id, 'auth.facebook.id')).to.eventually.equal(facebookId); + await expect(getProperty('users', response.id, 'auth.local.email')).to.eventually.equal(`${user.auth.local.username}+facebook@example.com`); + await expect(getProperty('users', response.id, 'auth.facebook.id')).to.eventually.equal(randomFacebookId); }); it('logs an existing user in', async () => { @@ -68,6 +82,57 @@ describe('POST /user/auth/social', () => { expect(response.apiToken).to.eql(registerResponse.apiToken); expect(response.id).to.eql(registerResponse.id); expect(response.newUser).to.be.false; + expect(registerResponse.newUser).to.be.true; + }); + + it('logs an existing user in if they have local auth with matching email', async () => { + passport._strategies.facebook.userProfile.restore(); + const expectedResult = { + id: randomFacebookId, + displayName: 'a facebook user', + emails: [ + { value: user.auth.local.email }, + ], + }; + sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult); + + const response = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + + expect(response.apiToken).to.eql(user.apiToken); + expect(response.id).to.eql(user._id); + expect(response.newUser).to.be.false; + }); + + it('logs an existing user into their social account if they have local auth with matching email', async () => { + const registerResponse = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + expect(registerResponse.newUser).to.be.true; + // This is important for existing accounts before the new social handling + passport._strategies.facebook.userProfile.restore(); + const expectedResult = { + id: randomFacebookId, + displayName: 'a facebook user', + emails: [ + { value: user.auth.local.email }, + ], + }; + sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult); + + const response = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + + expect(response.apiToken).to.eql(registerResponse.apiToken); + expect(response.id).to.eql(registerResponse.id); + expect(response.apiToken).not.to.eql(user.apiToken); + expect(response.id).not.to.eql(user._id); + expect(response.newUser).to.be.false; }); it('add social auth to an existing user', async () => { @@ -76,11 +141,28 @@ describe('POST /user/auth/social', () => { network, }); - expect(response.apiToken).to.exist; - expect(response.id).to.exist; + expect(response.apiToken).to.eql(user.apiToken); + expect(response.id).to.eql(user._id); expect(response.newUser).to.be.false; }); + it('does not log into other account if social auth already exists', async () => { + const registerResponse = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + expect(registerResponse.newUser).to.be.true; + + await expect(user.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + })).to.eventually.be.rejected.and.eql({ + code: 401, + error: 'NotAuthorized', + message: t('socialAlreadyExists'), + }); + }); + xit('enrolls a new user in an A/B test', async () => { await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase @@ -92,12 +174,23 @@ describe('POST /user/auth/social', () => { }); describe('google', () => { - before(async () => { - const expectedResult = { id: googleId, displayName: 'a google user' }; + beforeEach(async () => { + randomGoogleId = generateUUID(); + const expectedResult = { + id: randomGoogleId, + displayName: 'a google user', + emails: [ + { value: `${user.auth.local.username}+google@example.com` }, + ], + }; sandbox.stub(passport._strategies.google, 'userProfile').yields(null, expectedResult); network = 'google'; }); + afterEach(async () => { + passport._strategies.google.userProfile.restore(); + }); + it('registers a new user', async () => { const response = await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase @@ -107,7 +200,8 @@ describe('POST /user/auth/social', () => { expect(response.apiToken).to.exist; expect(response.id).to.exist; expect(response.newUser).to.be.true; - await expect(getProperty('users', response.id, 'auth.google.id')).to.eventually.equal(googleId); + await expect(getProperty('users', response.id, 'auth.google.id')).to.eventually.equal(randomGoogleId); + await expect(getProperty('users', response.id, 'auth.local.email')).to.eventually.equal(`${user.auth.local.username}+google@example.com`); await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a google user'); }); @@ -125,6 +219,57 @@ describe('POST /user/auth/social', () => { expect(response.apiToken).to.eql(registerResponse.apiToken); expect(response.id).to.eql(registerResponse.id); expect(response.newUser).to.be.false; + expect(registerResponse.newUser).to.be.true; + }); + + it('logs an existing user in if they have local auth with matching email', async () => { + passport._strategies.google.userProfile.restore(); + const expectedResult = { + id: randomGoogleId, + displayName: 'a google user', + emails: [ + { value: user.auth.local.email }, + ], + }; + sandbox.stub(passport._strategies.google, 'userProfile').yields(null, expectedResult); + + const response = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + + expect(response.apiToken).to.eql(user.apiToken); + expect(response.id).to.eql(user._id); + expect(response.newUser).to.be.false; + }); + + it('logs an existing user into their social account if they have local auth with matching email', async () => { + const registerResponse = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + expect(registerResponse.newUser).to.be.true; + // This is important for existing accounts before the new social handling + passport._strategies.google.userProfile.restore(); + const expectedResult = { + id: randomGoogleId, + displayName: 'a google user', + emails: [ + { value: user.auth.local.email }, + ], + }; + sandbox.stub(passport._strategies.google, 'userProfile').yields(null, expectedResult); + + const response = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + + expect(response.apiToken).to.eql(registerResponse.apiToken); + expect(response.id).to.eql(registerResponse.id); + expect(response.apiToken).not.to.eql(user.apiToken); + expect(response.id).not.to.eql(user._id); + expect(response.newUser).to.be.false; }); it('add social auth to an existing user', async () => { @@ -133,11 +278,28 @@ describe('POST /user/auth/social', () => { network, }); - expect(response.apiToken).to.exist; - expect(response.id).to.exist; + expect(response.apiToken).to.eql(user.apiToken); + expect(response.id).to.eql(user._id); expect(response.newUser).to.be.false; }); + it('does not log into other account if social auth already exists', async () => { + const registerResponse = await api.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + }); + expect(registerResponse.newUser).to.be.true; + + await expect(user.post(endpoint, { + authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase + network, + })).to.eventually.be.rejected.and.eql({ + code: 401, + error: 'NotAuthorized', + message: t('socialAlreadyExists'), + }); + }); + xit('enrolls a new user in an A/B test', async () => { await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase diff --git a/test/api/v3/integration/user/auth/POST-user_reset_password.test.js b/test/api/v3/integration/user/auth/POST-user_reset_password.test.js index 8603fa7cb3..da66e5fd3e 100644 --- a/test/api/v3/integration/user/auth/POST-user_reset_password.test.js +++ b/test/api/v3/integration/user/auth/POST-user_reset_password.test.js @@ -25,6 +25,19 @@ describe('POST /user/reset-password', async () => { expect(user.auth.local.hashed_password).to.not.eql(previousPassword); }); + it('resets password for social users', async () => { + const email = `${user.auth.local.username}+google@example.com`; + await user.update({ 'auth.google.emails': [{ value: email }] }); + await user.sync(); + const previousPassword = user.auth.local.passwordResetCode; + const response = await user.post(endpoint, { + email, + }); + expect(response).to.eql({ data: {}, message: t('passwordReset') }); + await user.sync(); + expect(user.auth.local.passwordResetCode).to.not.eql(previousPassword); + }); + it('same message on error as on success', async () => { const response = await user.post(endpoint, { email: 'nonExistent@email.com', diff --git a/website/client/src/components/auth/registerLoginReset.vue b/website/client/src/components/auth/registerLoginReset.vue index b406b124c3..0ea5cf8f84 100644 --- a/website/client/src/components/auth/registerLoginReset.vue +++ b/website/client/src/components/auth/registerLoginReset.vue @@ -20,8 +20,8 @@
{{ context.item.text }} - +

diff --git a/website/client/src/components/snackbars/notification.vue b/website/client/src/components/snackbars/notification.vue index 0a007a4f4d..0334995c1a 100644 --- a/website/client/src/components/snackbars/notification.vue +++ b/website/client/src/components/snackbars/notification.vue @@ -1,10 +1,17 @@ diff --git a/website/client/src/components/snackbars/notifications.vue b/website/client/src/components/snackbars/notifications.vue index 40d2ceca0f..eeab99bacf 100644 --- a/website/client/src/components/snackbars/notifications.vue +++ b/website/client/src/components/snackbars/notifications.vue @@ -81,12 +81,12 @@ const DELAY_DELETE_AND_NEW = 60; const DELAY_FILLING_ENTRIES = 240; export default { - mixins: [ - worldStateMixin, - ], components: { notification, }, + mixins: [ + worldStateMixin, + ], props: { preventQueue: { type: Boolean, diff --git a/website/common/locales/en/front.json b/website/common/locales/en/front.json index 58c3e06b80..9b1fae34ef 100644 --- a/website/common/locales/en/front.json +++ b/website/common/locales/en/front.json @@ -133,6 +133,7 @@ "unsupportedNetwork": "This network is not currently supported.", "cantDetachSocial": "Account lacks another authentication method; can't detach this authentication method.", "onlySocialAttachLocal": "Local authentication can be added to only a social account.", + "socialAlreadyExists": "This social login is already linked to an existing Habitica account.", "invalidReqParams": "Invalid request parameters.", "memberIdRequired": "\"member\" must be a valid UUID.", "heroIdRequired": "\"heroId\" must be a valid UUID.", diff --git a/website/server/controllers/api-v3/auth.js b/website/server/controllers/api-v3/auth.js index 7860a3db61..6b7c16636e 100644 --- a/website/server/controllers/api-v3/auth.js +++ b/website/server/controllers/api-v3/auth.js @@ -341,7 +341,14 @@ api.resetPassword = { if (validationErrors) throw validationErrors; const email = req.body.email.toLowerCase(); - const user = await User.findOne({ 'auth.local.email': email }).exec(); + const user = await User.findOne({ + $or: [ + { 'auth.local.email': email }, + { 'auth.apple.emails.value': email }, + { 'auth.google.emails.value': email }, + { 'auth.facebook.emails.value': email }, + ], + }).exec(); if (user) { // create an encrypted link to be used to reset the password diff --git a/website/server/libs/auth/social.js b/website/server/libs/auth/social.js index 02e4d64faf..61883a2f87 100644 --- a/website/server/libs/auth/social.js +++ b/website/server/libs/auth/social.js @@ -1,6 +1,6 @@ import passport from 'passport'; import common from '../../../common'; -import { BadRequest } from '../errors'; +import { BadRequest, NotAuthorized } from '../errors'; import logger from '../logger'; import { generateUsername, @@ -24,7 +24,7 @@ function _passportProfile (network, accessToken) { } export async function loginSocial (req, res) { // eslint-disable-line import/prefer-default-export - const existingUser = res.locals.user; + let existingUser = res.locals.user; const { network } = req.body; const isSupportedNetwork = common.constants.SUPPORTED_SOCIAL_NETWORKS @@ -47,37 +47,52 @@ export async function loginSocial (req, res) { // eslint-disable-line import/pre // User already signed up if (user) { + if (existingUser) { + throw new NotAuthorized(res.t('socialAlreadyExists')); + } return loginRes(user, req, res); } - const generatedUsername = generateUsername(); + let email; + if (profile.emails && profile.emails[0] && profile.emails[0].value) { + email = profile.emails[0].value.toLowerCase(); + } - user = { - auth: { - [network]: { - id: profile.id, - emails: profile.emails, - }, - local: { - username: generatedUsername, - lowerCaseUsername: generatedUsername, - }, - }, - profile: { - name: profile.displayName || profile.name || profile.username, - }, - preferences: { - language: req.language, - }, - flags: { - verifiedUsername: true, - }, - }; + if (!existingUser && email) { + existingUser = await User.findOne({ 'auth.local.email': email }).exec(); + } if (existingUser) { - existingUser.auth[network] = user.auth[network]; + existingUser.auth[network] = { + id: profile.id, + emails: profile.emails, + }; user = existingUser; } else { + const generatedUsername = generateUsername(); + + user = { + auth: { + [network]: { + id: profile.id, + emails: profile.emails, + }, + local: { + username: generatedUsername, + lowerCaseUsername: generatedUsername, + email, + }, + }, + profile: { + name: profile.displayName || profile.name || profile.username, + }, + preferences: { + language: req.language, + }, + flags: { + verifiedUsername: true, + }, + }; user = new User(user); user.registeredThrough = req.headers['x-client']; // Not saved, used to create the correct tasks based on the device used } @@ -85,19 +100,15 @@ export async function loginSocial (req, res) { // eslint-disable-line import/pre const savedUser = await user.save(); if (!existingUser) { - user.newUser = true; + savedUser.newUser = true; } - const response = loginRes(user, req, res); + const response = loginRes(savedUser, req, res); // Clean previous email preferences - if ( - savedUser.auth[network].emails - && savedUser.auth[network].emails[0] - && savedUser.auth[network].emails[0].value - ) { + if (email) { EmailUnsubscription - .remove({ email: savedUser.auth[network].emails[0].value.toLowerCase() }) + .remove({ email }) .exec() .then(() => { if (!existingUser) { From 9a6b05fe67d51cc8744a190a8885533063a5d3b8 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 25 Jan 2022 08:24:04 -0600 Subject: [PATCH 04/19] Revert "build(deps): bump redis from 3.1.2 to 4.0.2 (#13757)" This reverts commit 8e93ddf06c0e5ab61519c8b1b2ec79302dc54dee. --- package-lock.json | 68 +++++++++++++---------------------------------- package.json | 2 +- 2 files changed, 20 insertions(+), 50 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b6a55ec86..13aefc5d8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1557,37 +1557,6 @@ } } }, - "@node-redis/bloom": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@node-redis/bloom/-/bloom-1.0.1.tgz", - "integrity": "sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==" - }, - "@node-redis/client": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@node-redis/client/-/client-1.0.2.tgz", - "integrity": "sha512-C+gkx68pmTnxfV+y4pzasvCH3s4UGHNOAUNhdJxGI27aMdnXNDZct7ffDHBL7bAZSGv9FSwCP5PeYvEIEKGbiA==", - "requires": { - "cluster-key-slot": "1.1.0", - "generic-pool": "3.8.2", - "redis-parser": "3.0.0", - "yallist": "4.0.0" - } - }, - "@node-redis/json": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@node-redis/json/-/json-1.0.2.tgz", - "integrity": "sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==" - }, - "@node-redis/search": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@node-redis/search/-/search-1.0.2.tgz", - "integrity": "sha512-gWhEeji+kTAvzZeguUNJdMSZNH2c5dv3Bci8Nn2f7VGuf6IvvwuZDSBOuOlirLVgayVuWzAG7EhwaZWK1VDnWQ==" - }, - "@node-redis/time-series": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@node-redis/time-series/-/time-series-1.0.1.tgz", - "integrity": "sha512-+nTn6EewVj3GlUXPuD3dgheWqo219jTxlo6R+pg24OeVvFHx9aFGGiyOgj3vBPhWUdRZ0xMcujXV5ki4fbLyMw==" - }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -4314,11 +4283,6 @@ } } }, - "cluster-key-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", - "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -7236,11 +7200,6 @@ "json-bigint": "^1.0.0" } }, - "generic-pool": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", - "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==" - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -12304,17 +12263,28 @@ } }, "redis": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.0.2.tgz", - "integrity": "sha512-Ip1DJ/lwuvtJz9AZ6pl1Bv33fWzk5d3iQpGzsXpi04ErkT4fq0pfGOm4k/p9DHmPGieEIOWvJ9xmIeQMooLybg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", + "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", "requires": { - "@node-redis/bloom": "^1.0.0", - "@node-redis/client": "^1.0.2", - "@node-redis/json": "^1.0.2", - "@node-redis/search": "^1.0.2", - "@node-redis/time-series": "^1.0.1" + "denque": "^1.5.0", + "redis-commands": "^1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0" + }, + "dependencies": { + "denque": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", + "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" + } } }, + "redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, "redis-errors": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", diff --git a/package.json b/package.json index ac63d1b60d..9c37377aee 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "pp-ipn": "^1.1.0", "ps-tree": "^1.0.0", "rate-limiter-flexible": "^2.3.6", - "redis": "^4.0.2", + "redis": "^3.1.2", "regenerator-runtime": "^0.13.9", "remove-markdown": "^0.3.0", "rimraf": "^3.0.2", From b3c466ad5afe99db9409284a9c53ee72b17f539c Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 25 Jan 2022 09:30:37 -0600 Subject: [PATCH 05/19] Revert "Prerequisites to removing Facebook authentication (#13683)" This reverts commit 1177ad8b8c3586beff3e7470dab766f9df54c616. --- config.json.example | 4 +- .../user/auth/GET-user_auth_apple.test.js | 16 +- .../user/auth/POST-user_auth_social.test.js | 188 ++---------------- .../auth/POST-user_reset_password.test.js | 13 -- .../components/auth/registerLoginReset.vue | 2 +- .../header/notifications/worldBoss.vue | 6 +- .../src/components/inventory/items/index.vue | 5 +- .../src/components/snackbars/notification.vue | 33 +-- .../components/snackbars/notifications.vue | 6 +- website/common/locales/en/front.json | 1 - website/server/controllers/api-v3/auth.js | 9 +- website/server/libs/auth/social.js | 77 +++---- 12 files changed, 72 insertions(+), 288 deletions(-) diff --git a/config.json.example b/config.json.example index fbf18f1b82..04c1c535b4 100644 --- a/config.json.example +++ b/config.json.example @@ -32,8 +32,8 @@ "LOGGLY_SUBDOMAIN": "example-subdomain", "LOGGLY_TOKEN": "example-token", "MAINTENANCE_MODE": "false", - "NODE_DB_URI": "mongodb://localhost:27017/habitica-dev", - "TEST_DB_URI": "mongodb://localhost:27017/habitica-test", + "NODE_DB_URI": "mongodb://localhost:27017/habitica-dev?replicaSet=rs", + "TEST_DB_URI": "mongodb://localhost:27017/habitica-test?replicaSet=rs", "MONGODB_POOL_SIZE": "10", "NODE_ENV": "development", "PATH": "bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin", diff --git a/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js b/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js index b1c97f6ca4..975fccfa3f 100644 --- a/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js +++ b/test/api/v3/integration/user/auth/GET-user_auth_apple.test.js @@ -1,4 +1,3 @@ -import { v4 as generateUUID } from 'uuid'; import { generateUser, requester, @@ -10,18 +9,15 @@ describe('GET /user/auth/apple', () => { let api; let user; const appleEndpoint = '/user/auth/apple'; - let randomAppleId = '123456'; + + before(async () => { + const expectedResult = { id: 'appleId', name: 'an apple user' }; + sandbox.stub(appleAuth, 'appleProfile').returns(Promise.resolve(expectedResult)); + }); beforeEach(async () => { api = requester(); user = await generateUser(); - randomAppleId = generateUUID(); - const expectedResult = { id: randomAppleId, name: 'an apple user' }; - sandbox.stub(appleAuth, 'appleProfile').returns(Promise.resolve(expectedResult)); - }); - - afterEach(async () => { - appleAuth.appleProfile.restore(); }); it('registers a new user', async () => { @@ -30,7 +26,7 @@ describe('GET /user/auth/apple', () => { expect(response.apiToken).to.exist; expect(response.id).to.exist; expect(response.newUser).to.be.true; - await expect(getProperty('users', response.id, 'auth.apple.id')).to.eventually.equal(randomAppleId); + await expect(getProperty('users', response.id, 'auth.apple.id')).to.eventually.equal('appleId'); await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('an apple user'); }); diff --git a/test/api/v3/integration/user/auth/POST-user_auth_social.test.js b/test/api/v3/integration/user/auth/POST-user_auth_social.test.js index c4ffe57efb..eff5525603 100644 --- a/test/api/v3/integration/user/auth/POST-user_auth_social.test.js +++ b/test/api/v3/integration/user/auth/POST-user_auth_social.test.js @@ -1,5 +1,4 @@ import passport from 'passport'; -import { v4 as generateUUID } from 'uuid'; import { generateUser, requester, @@ -11,15 +10,14 @@ describe('POST /user/auth/social', () => { let api; let user; const endpoint = '/user/auth/social'; - let randomAccessToken = '123456'; - let randomFacebookId = 'facebookId'; - let randomGoogleId = 'googleId'; + const randomAccessToken = '123456'; + const facebookId = 'facebookId'; + const googleId = 'googleId'; let network = 'NoNetwork'; beforeEach(async () => { api = requester(); user = await generateUser(); - randomAccessToken = generateUUID(); }); it('fails if network is not supported', async () => { @@ -34,23 +32,12 @@ describe('POST /user/auth/social', () => { }); describe('facebook', () => { - beforeEach(async () => { - randomFacebookId = generateUUID(); - const expectedResult = { - id: randomFacebookId, - displayName: 'a facebook user', - emails: [ - { value: `${user.auth.local.username}+facebook@example.com` }, - ], - }; + before(async () => { + const expectedResult = { id: facebookId, displayName: 'a facebook user' }; sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult); network = 'facebook'; }); - afterEach(async () => { - passport._strategies.facebook.userProfile.restore(); - }); - it('registers a new user', async () => { const response = await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase @@ -64,8 +51,7 @@ describe('POST /user/auth/social', () => { await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a facebook user'); await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.exist; - await expect(getProperty('users', response.id, 'auth.local.email')).to.eventually.equal(`${user.auth.local.username}+facebook@example.com`); - await expect(getProperty('users', response.id, 'auth.facebook.id')).to.eventually.equal(randomFacebookId); + await expect(getProperty('users', response.id, 'auth.facebook.id')).to.eventually.equal(facebookId); }); it('logs an existing user in', async () => { @@ -82,57 +68,6 @@ describe('POST /user/auth/social', () => { expect(response.apiToken).to.eql(registerResponse.apiToken); expect(response.id).to.eql(registerResponse.id); expect(response.newUser).to.be.false; - expect(registerResponse.newUser).to.be.true; - }); - - it('logs an existing user in if they have local auth with matching email', async () => { - passport._strategies.facebook.userProfile.restore(); - const expectedResult = { - id: randomFacebookId, - displayName: 'a facebook user', - emails: [ - { value: user.auth.local.email }, - ], - }; - sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult); - - const response = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - - expect(response.apiToken).to.eql(user.apiToken); - expect(response.id).to.eql(user._id); - expect(response.newUser).to.be.false; - }); - - it('logs an existing user into their social account if they have local auth with matching email', async () => { - const registerResponse = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - expect(registerResponse.newUser).to.be.true; - // This is important for existing accounts before the new social handling - passport._strategies.facebook.userProfile.restore(); - const expectedResult = { - id: randomFacebookId, - displayName: 'a facebook user', - emails: [ - { value: user.auth.local.email }, - ], - }; - sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult); - - const response = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - - expect(response.apiToken).to.eql(registerResponse.apiToken); - expect(response.id).to.eql(registerResponse.id); - expect(response.apiToken).not.to.eql(user.apiToken); - expect(response.id).not.to.eql(user._id); - expect(response.newUser).to.be.false; }); it('add social auth to an existing user', async () => { @@ -141,28 +76,11 @@ describe('POST /user/auth/social', () => { network, }); - expect(response.apiToken).to.eql(user.apiToken); - expect(response.id).to.eql(user._id); + expect(response.apiToken).to.exist; + expect(response.id).to.exist; expect(response.newUser).to.be.false; }); - it('does not log into other account if social auth already exists', async () => { - const registerResponse = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - expect(registerResponse.newUser).to.be.true; - - await expect(user.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - })).to.eventually.be.rejected.and.eql({ - code: 401, - error: 'NotAuthorized', - message: t('socialAlreadyExists'), - }); - }); - xit('enrolls a new user in an A/B test', async () => { await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase @@ -174,23 +92,12 @@ describe('POST /user/auth/social', () => { }); describe('google', () => { - beforeEach(async () => { - randomGoogleId = generateUUID(); - const expectedResult = { - id: randomGoogleId, - displayName: 'a google user', - emails: [ - { value: `${user.auth.local.username}+google@example.com` }, - ], - }; + before(async () => { + const expectedResult = { id: googleId, displayName: 'a google user' }; sandbox.stub(passport._strategies.google, 'userProfile').yields(null, expectedResult); network = 'google'; }); - afterEach(async () => { - passport._strategies.google.userProfile.restore(); - }); - it('registers a new user', async () => { const response = await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase @@ -200,8 +107,7 @@ describe('POST /user/auth/social', () => { expect(response.apiToken).to.exist; expect(response.id).to.exist; expect(response.newUser).to.be.true; - await expect(getProperty('users', response.id, 'auth.google.id')).to.eventually.equal(randomGoogleId); - await expect(getProperty('users', response.id, 'auth.local.email')).to.eventually.equal(`${user.auth.local.username}+google@example.com`); + await expect(getProperty('users', response.id, 'auth.google.id')).to.eventually.equal(googleId); await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a google user'); }); @@ -219,57 +125,6 @@ describe('POST /user/auth/social', () => { expect(response.apiToken).to.eql(registerResponse.apiToken); expect(response.id).to.eql(registerResponse.id); expect(response.newUser).to.be.false; - expect(registerResponse.newUser).to.be.true; - }); - - it('logs an existing user in if they have local auth with matching email', async () => { - passport._strategies.google.userProfile.restore(); - const expectedResult = { - id: randomGoogleId, - displayName: 'a google user', - emails: [ - { value: user.auth.local.email }, - ], - }; - sandbox.stub(passport._strategies.google, 'userProfile').yields(null, expectedResult); - - const response = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - - expect(response.apiToken).to.eql(user.apiToken); - expect(response.id).to.eql(user._id); - expect(response.newUser).to.be.false; - }); - - it('logs an existing user into their social account if they have local auth with matching email', async () => { - const registerResponse = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - expect(registerResponse.newUser).to.be.true; - // This is important for existing accounts before the new social handling - passport._strategies.google.userProfile.restore(); - const expectedResult = { - id: randomGoogleId, - displayName: 'a google user', - emails: [ - { value: user.auth.local.email }, - ], - }; - sandbox.stub(passport._strategies.google, 'userProfile').yields(null, expectedResult); - - const response = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - - expect(response.apiToken).to.eql(registerResponse.apiToken); - expect(response.id).to.eql(registerResponse.id); - expect(response.apiToken).not.to.eql(user.apiToken); - expect(response.id).not.to.eql(user._id); - expect(response.newUser).to.be.false; }); it('add social auth to an existing user', async () => { @@ -278,28 +133,11 @@ describe('POST /user/auth/social', () => { network, }); - expect(response.apiToken).to.eql(user.apiToken); - expect(response.id).to.eql(user._id); + expect(response.apiToken).to.exist; + expect(response.id).to.exist; expect(response.newUser).to.be.false; }); - it('does not log into other account if social auth already exists', async () => { - const registerResponse = await api.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - }); - expect(registerResponse.newUser).to.be.true; - - await expect(user.post(endpoint, { - authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase - network, - })).to.eventually.be.rejected.and.eql({ - code: 401, - error: 'NotAuthorized', - message: t('socialAlreadyExists'), - }); - }); - xit('enrolls a new user in an A/B test', async () => { await api.post(endpoint, { authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase diff --git a/test/api/v3/integration/user/auth/POST-user_reset_password.test.js b/test/api/v3/integration/user/auth/POST-user_reset_password.test.js index da66e5fd3e..8603fa7cb3 100644 --- a/test/api/v3/integration/user/auth/POST-user_reset_password.test.js +++ b/test/api/v3/integration/user/auth/POST-user_reset_password.test.js @@ -25,19 +25,6 @@ describe('POST /user/reset-password', async () => { expect(user.auth.local.hashed_password).to.not.eql(previousPassword); }); - it('resets password for social users', async () => { - const email = `${user.auth.local.username}+google@example.com`; - await user.update({ 'auth.google.emails': [{ value: email }] }); - await user.sync(); - const previousPassword = user.auth.local.passwordResetCode; - const response = await user.post(endpoint, { - email, - }); - expect(response).to.eql({ data: {}, message: t('passwordReset') }); - await user.sync(); - expect(user.auth.local.passwordResetCode).to.not.eql(previousPassword); - }); - it('same message on error as on success', async () => { const response = await user.post(endpoint, { email: 'nonExistent@email.com', diff --git a/website/client/src/components/auth/registerLoginReset.vue b/website/client/src/components/auth/registerLoginReset.vue index 0ea5cf8f84..b406b124c3 100644 --- a/website/client/src/components/auth/registerLoginReset.vue +++ b/website/client/src/components/auth/registerLoginReset.vue @@ -20,8 +20,8 @@

{{ context.item.text }} - +

diff --git a/website/client/src/components/snackbars/notification.vue b/website/client/src/components/snackbars/notification.vue index 0334995c1a..0a007a4f4d 100644 --- a/website/client/src/components/snackbars/notification.vue +++ b/website/client/src/components/snackbars/notification.vue @@ -1,17 +1,10 @@ diff --git a/website/client/src/components/snackbars/notifications.vue b/website/client/src/components/snackbars/notifications.vue index eeab99bacf..40d2ceca0f 100644 --- a/website/client/src/components/snackbars/notifications.vue +++ b/website/client/src/components/snackbars/notifications.vue @@ -81,12 +81,12 @@ const DELAY_DELETE_AND_NEW = 60; const DELAY_FILLING_ENTRIES = 240; export default { - components: { - notification, - }, mixins: [ worldStateMixin, ], + components: { + notification, + }, props: { preventQueue: { type: Boolean, diff --git a/website/common/locales/en/front.json b/website/common/locales/en/front.json index 9b1fae34ef..58c3e06b80 100644 --- a/website/common/locales/en/front.json +++ b/website/common/locales/en/front.json @@ -133,7 +133,6 @@ "unsupportedNetwork": "This network is not currently supported.", "cantDetachSocial": "Account lacks another authentication method; can't detach this authentication method.", "onlySocialAttachLocal": "Local authentication can be added to only a social account.", - "socialAlreadyExists": "This social login is already linked to an existing Habitica account.", "invalidReqParams": "Invalid request parameters.", "memberIdRequired": "\"member\" must be a valid UUID.", "heroIdRequired": "\"heroId\" must be a valid UUID.", diff --git a/website/server/controllers/api-v3/auth.js b/website/server/controllers/api-v3/auth.js index 6b7c16636e..7860a3db61 100644 --- a/website/server/controllers/api-v3/auth.js +++ b/website/server/controllers/api-v3/auth.js @@ -341,14 +341,7 @@ api.resetPassword = { if (validationErrors) throw validationErrors; const email = req.body.email.toLowerCase(); - const user = await User.findOne({ - $or: [ - { 'auth.local.email': email }, - { 'auth.apple.emails.value': email }, - { 'auth.google.emails.value': email }, - { 'auth.facebook.emails.value': email }, - ], - }).exec(); + const user = await User.findOne({ 'auth.local.email': email }).exec(); if (user) { // create an encrypted link to be used to reset the password diff --git a/website/server/libs/auth/social.js b/website/server/libs/auth/social.js index 61883a2f87..02e4d64faf 100644 --- a/website/server/libs/auth/social.js +++ b/website/server/libs/auth/social.js @@ -1,6 +1,6 @@ import passport from 'passport'; import common from '../../../common'; -import { BadRequest, NotAuthorized } from '../errors'; +import { BadRequest } from '../errors'; import logger from '../logger'; import { generateUsername, @@ -24,7 +24,7 @@ function _passportProfile (network, accessToken) { } export async function loginSocial (req, res) { // eslint-disable-line import/prefer-default-export - let existingUser = res.locals.user; + const existingUser = res.locals.user; const { network } = req.body; const isSupportedNetwork = common.constants.SUPPORTED_SOCIAL_NETWORKS @@ -47,52 +47,37 @@ export async function loginSocial (req, res) { // eslint-disable-line import/pre // User already signed up if (user) { - if (existingUser) { - throw new NotAuthorized(res.t('socialAlreadyExists')); - } return loginRes(user, req, res); } - let email; - if (profile.emails && profile.emails[0] && profile.emails[0].value) { - email = profile.emails[0].value.toLowerCase(); - } + const generatedUsername = generateUsername(); - if (!existingUser && email) { - existingUser = await User.findOne({ 'auth.local.email': email }).exec(); - } + user = { + auth: { + [network]: { + id: profile.id, + emails: profile.emails, + }, + local: { + username: generatedUsername, + lowerCaseUsername: generatedUsername, + }, + }, + profile: { + name: profile.displayName || profile.name || profile.username, + }, + preferences: { + language: req.language, + }, + flags: { + verifiedUsername: true, + }, + }; if (existingUser) { - existingUser.auth[network] = { - id: profile.id, - emails: profile.emails, - }; + existingUser.auth[network] = user.auth[network]; user = existingUser; } else { - const generatedUsername = generateUsername(); - - user = { - auth: { - [network]: { - id: profile.id, - emails: profile.emails, - }, - local: { - username: generatedUsername, - lowerCaseUsername: generatedUsername, - email, - }, - }, - profile: { - name: profile.displayName || profile.name || profile.username, - }, - preferences: { - language: req.language, - }, - flags: { - verifiedUsername: true, - }, - }; user = new User(user); user.registeredThrough = req.headers['x-client']; // Not saved, used to create the correct tasks based on the device used } @@ -100,15 +85,19 @@ export async function loginSocial (req, res) { // eslint-disable-line import/pre const savedUser = await user.save(); if (!existingUser) { - savedUser.newUser = true; + user.newUser = true; } - const response = loginRes(savedUser, req, res); + const response = loginRes(user, req, res); // Clean previous email preferences - if (email) { + if ( + savedUser.auth[network].emails + && savedUser.auth[network].emails[0] + && savedUser.auth[network].emails[0].value + ) { EmailUnsubscription - .remove({ email }) + .remove({ email: savedUser.auth[network].emails[0].value.toLowerCase() }) .exec() .then(() => { if (!existingUser) { From a0860e62e8f0f561f31c26ad77a822c857c21847 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:30:47 -0500 Subject: [PATCH 06/19] build(deps): bump nanoid from 3.1.30 to 3.2.0 in /website/client (#13778) Bumps [nanoid](https://github.com/ai/nanoid) from 3.1.30 to 3.2.0. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/3.1.30...3.2.0) --- updated-dependencies: - dependency-name: nanoid dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index d253111c06..90a9d1e58e 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -22573,9 +22573,9 @@ "optional": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==" }, "nanomatch": { "version": "1.2.13", From 7358edb98eea60969d82c6ebd74a18e307da5bb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:39:43 -0500 Subject: [PATCH 07/19] build(deps): bump superagent from 7.0.2 to 7.1.1 (#13780) Bumps [superagent](https://github.com/visionmedia/superagent) from 7.0.2 to 7.1.1. - [Release notes](https://github.com/visionmedia/superagent/releases) - [Changelog](https://github.com/visionmedia/superagent/blob/master/HISTORY.md) - [Commits](https://github.com/visionmedia/superagent/compare/v7.0.2...v7.1.1) --- updated-dependencies: - dependency-name: superagent dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 13aefc5d8e..f78b709117 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13782,9 +13782,9 @@ "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" }, "superagent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.0.2.tgz", - "integrity": "sha512-2Kx35bZxLLJMBKtuXezxvD0aZQ7l923VwoCn7EtUx+aFxdG7co7PeRIddfrNtvvMuGaLZXA0mKzX+yWRhjrJ7A==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz", + "integrity": "sha512-CQ2weSS6M+doIwwYFoMatklhRbx6sVNdB99OEJ5czcP3cng76Ljqus694knFWgOj3RkrtxZqIgpe6vhe0J7QWQ==", "requires": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.3", diff --git a/package.json b/package.json index 9c37377aee..f2ce70ffdd 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "rimraf": "^3.0.2", "short-uuid": "^4.2.0", "stripe": "^8.199.0", - "superagent": "^7.0.2", + "superagent": "^7.1.1", "universal-analytics": "^0.5.3", "useragent": "^2.1.9", "uuid": "^8.3.2", From cc79902900e499c508f62a605a7089ddf8da52ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:43:16 -0500 Subject: [PATCH 08/19] build(deps): bump @babel/core from 7.16.7 to 7.16.12 (#13782) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.16.7 to 7.16.12. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.16.12/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 284 ++++------------------------------------------ package.json | 2 +- 2 files changed, 20 insertions(+), 266 deletions(-) diff --git a/package-lock.json b/package-lock.json index f78b709117..d427b2f828 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,19 +18,19 @@ "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==" }, "@babel/core": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz", - "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.7", + "@babel/generator": "^7.16.8", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.7", + "@babel/parser": "^7.16.12", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -47,114 +47,15 @@ "@babel/highlight": "^7.16.7" } }, - "@babel/generator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.7.tgz", - "integrity": "sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==", - "requires": { - "@babel/types": "^7.16.7", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, "@babel/helper-validator-identifier": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" - }, "@babel/highlight": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", - "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "requires": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -162,46 +63,27 @@ } }, "@babel/parser": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.7.tgz", - "integrity": "sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==" - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==" }, "@babel/traverse": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.7.tgz", - "integrity": "sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.7", + "@babel/generator": "^7.16.8", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" } }, - "@babel/types": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.7.tgz", - "integrity": "sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -477,134 +359,6 @@ "@babel/template": "^7.16.7", "@babel/traverse": "^7.16.7", "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/generator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.7.tgz", - "integrity": "sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==", - "requires": { - "@babel/types": "^7.16.7", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/highlight": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", - "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.7.tgz", - "integrity": "sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==" - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.7.tgz", - "integrity": "sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.7.tgz", - "integrity": "sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } } }, "@babel/highlight": { diff --git a/package.json b/package.json index f2ce70ffdd..8febebfad8 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "4.218.0", "main": "./website/server/index.js", "dependencies": { - "@babel/core": "^7.16.7", + "@babel/core": "^7.16.12", "@babel/preset-env": "^7.16.8", "@babel/register": "^7.16.9", "@google-cloud/trace-agent": "^5.1.6", From 92e8e24bfc90e9dc34bcaab8e9744d2f2f66804d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:43:40 -0500 Subject: [PATCH 09/19] build(deps): bump @storybook/addon-links in /website/client (#13783) Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 6.4.13 to 6.4.14. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.14/addons/links) --- updated-dependencies: - dependency-name: "@storybook/addon-links" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/client/package-lock.json | 90 ++++++++++++++++---------------- website/client/package.json | 2 +- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 90a9d1e58e..8b942740e5 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -5329,15 +5329,15 @@ } }, "@storybook/addon-links": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.4.13.tgz", - "integrity": "sha512-d/uxMZoEjgCRhVvJXYIKJ0VtHARA7p7/oDxBMiexBDGZ2FzZWtq/nejdER539X71JMUkjkaqTs+ekTunZe0eMg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.4.14.tgz", + "integrity": "sha512-Y+5tdmAdkFzk0OC9wJnHdpVfhq3uqqlrAUFE3QYeof4uL6wLNSr2pl0BzCGQtnTfLs0i0bExXaTP5pZhwSnQoA==", "requires": { - "@storybook/addons": "6.4.13", - "@storybook/client-logger": "6.4.13", - "@storybook/core-events": "6.4.13", + "@storybook/addons": "6.4.14", + "@storybook/client-logger": "6.4.14", + "@storybook/core-events": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.13", + "@storybook/router": "6.4.14", "@types/qs": "^6.9.5", "core-js": "^3.8.2", "global": "^4.4.0", @@ -5457,17 +5457,17 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "@storybook/addons": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.13.tgz", - "integrity": "sha512-2oxZ/VOuXUpOvtKGy+fR1FNwyfaTkzKs9I6cZq2zbEGK2q/5x6rtczwNRm5PjK35At+VurMq0E+IHH10JO9vHw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.14.tgz", + "integrity": "sha512-Snu42ejLyBAh6PWdlrdI72HKN1oKY7q0R9qEID2wk953WrqgGu4URakp14YLxghJCyKTSfGPs6LNZRRI6H5xgA==", "requires": { - "@storybook/api": "6.4.13", - "@storybook/channels": "6.4.13", - "@storybook/client-logger": "6.4.13", - "@storybook/core-events": "6.4.13", + "@storybook/api": "6.4.14", + "@storybook/channels": "6.4.14", + "@storybook/client-logger": "6.4.14", + "@storybook/core-events": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.13", - "@storybook/theming": "6.4.13", + "@storybook/router": "6.4.14", + "@storybook/theming": "6.4.14", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", "global": "^4.4.0", @@ -5475,17 +5475,17 @@ } }, "@storybook/api": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.13.tgz", - "integrity": "sha512-Hr5/dL4tLnQPjrUlVdhsYMSAuJmsZcu3jdfqpjbsDC9S2HNaVtyHGBhQ33jD8+xtXoorsuS7t4SfWzLOgPPflg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.14.tgz", + "integrity": "sha512-GGGwB5+EquoausTXYx4dnLBBk2sOiS1Z58mDj0swBXCZdjfyUfLyxjxvvb/hl65ltufWP3IdmlKKaLiuARXNtw==", "requires": { - "@storybook/channels": "6.4.13", - "@storybook/client-logger": "6.4.13", - "@storybook/core-events": "6.4.13", + "@storybook/channels": "6.4.14", + "@storybook/client-logger": "6.4.14", + "@storybook/core-events": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.13", + "@storybook/router": "6.4.14", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.4.13", + "@storybook/theming": "6.4.14", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -5499,9 +5499,9 @@ } }, "@storybook/channels": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.13.tgz", - "integrity": "sha512-QWvm2TiqPZVPQLBq7ETcABNi17HIhNaXhJJUyNFBBXFtAHcbzMRFEBi6gkCVXK7QdtFo3Z68TU5htDkwjYVerg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.14.tgz", + "integrity": "sha512-3QOVxFG6ZAxDXCta1ie4SUPQ3s50yHeuZzVg6uPp+DcC1FrXeDFYBcU9t0j/jrSgbeKcnFHWxmRHNy1BRyWv/A==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -5509,18 +5509,18 @@ } }, "@storybook/client-logger": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.13.tgz", - "integrity": "sha512-VPrrgJRURztXAKTeHOpzKMAHnNupkGApUDNlPIs0Qxyn5gaSiy806q4XPoROno3mVgEe+7Chf86hRiL8pJnlCA==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.14.tgz", + "integrity": "sha512-4VmFWZxhpeiG5fDhfqAyQbCfXZSBKS4fNKf35ABWiHStZRDndxml8K5WFtmOmMvVzjrGQx8HesenYMawK6xo/Q==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/core-events": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.13.tgz", - "integrity": "sha512-zNlzNv7qVXjLf7yfvY9KfLvDY8nVskxrjmz0+21rIqUefS9+7SWBrtJJURpCaoPf/BmACqh/6c1RnuOY7TESnw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.14.tgz", + "integrity": "sha512-9QFltg2mxTDjMBfmVtFHtrAEPY/i0oVp2kVdTWo6g05cPffYKAjNUnUVjUl7yiqcQmdEcdqUUQ0ut3xgmcYi/A==", "requires": { "core-js": "^3.8.2" } @@ -5534,11 +5534,11 @@ } }, "@storybook/router": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.13.tgz", - "integrity": "sha512-6KbIpSL8QhGglzGb+tWTvAF/2EVpmgwlU5VP6Xs3GANcOc3VeXWl1fcJD6CNPp2DHwjkblW+21dcoHqfljnTmg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.14.tgz", + "integrity": "sha512-5+tePyINtwPYm4izgOBZ2sX2ViWtfmmO2vwOAPlWWEGzsRosVQsGMdZv1R8rk4Jl/TotMjlTmd8I1/BufEeIeQ==", "requires": { - "@storybook/client-logger": "6.4.13", + "@storybook/client-logger": "6.4.14", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -5552,14 +5552,14 @@ } }, "@storybook/theming": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.13.tgz", - "integrity": "sha512-oWRoNnvO4QnRnplZ74DVdU4k91eqw8y0Xqn6lzZBeC8hq6mYWldgfj1LZ24gJhVtEIa7ZKoyujGUygHaH8WXHw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.14.tgz", + "integrity": "sha512-kqmXNnIoOSAS4cgr9PitMgVrOps725O99eTsJNxB6J1Ide0CsA5v2tV6AmQn/scnpCQNr8uSjZerNlEcl/ensg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.4.13", + "@storybook/client-logger": "6.4.14", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -5635,11 +5635,11 @@ "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "dependencies": { "@babel/runtime": { diff --git a/website/client/package.json b/website/client/package.json index 2904a3da4a..4f848434ef 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -16,7 +16,7 @@ "@storybook/addons": "6.4.13", "@storybook/addon-actions": "6.4.13", "@storybook/addon-knobs": "6.2.9", - "@storybook/addon-links": "6.4.13", + "@storybook/addon-links": "6.4.14", "@storybook/addon-notes": "5.3.21", "@storybook/vue": "6.3.13", "@vue/cli-plugin-babel": "^4.5.15", From d2e1265b62523a37fc7921ab059804f18d31f4f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:59:22 -0500 Subject: [PATCH 10/19] build(deps-dev): bump axios from 0.24.0 to 0.25.0 (#13786) Bumps [axios](https://github.com/axios/axios) from 0.24.0 to 0.25.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.24.0...v0.25.0) --- updated-dependencies: - dependency-name: axios dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 19 +++++++++++++++---- package.json | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index d427b2f828..8afed0f9d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1907,6 +1907,16 @@ "integrity": "sha512-lr1hpTh0GBk9dEIW1gkeBcBvPQtp3O6Y+ynhpEPc8MoW2+yw6rJt4HQRxN5QFJGvO/41QaYeFXjoGyxXrgfgsw==", "requires": { "axios": "^0.24.0" + }, + "dependencies": { + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" + } + } } }, "ansi-align": { @@ -2642,11 +2652,12 @@ "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.14.7" } }, "babel-code-frame": { diff --git a/package.json b/package.json index 8febebfad8..4b4db8ffec 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "apidoc": "gulp apidoc" }, "devDependencies": { - "axios": "^0.24.0", + "axios": "^0.25.0", "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "chai-moment": "^0.1.0", From 62a7c4bc280fb2b8ab386209d3b538af6db20ddb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:59:44 -0500 Subject: [PATCH 11/19] build(deps): bump helmet from 5.0.1 to 5.0.2 (#13787) Bumps [helmet](https://github.com/helmetjs/helmet) from 5.0.1 to 5.0.2. - [Release notes](https://github.com/helmetjs/helmet/releases) - [Changelog](https://github.com/helmetjs/helmet/blob/main/CHANGELOG.md) - [Commits](https://github.com/helmetjs/helmet/compare/v5.0.1...v5.0.2) --- updated-dependencies: - dependency-name: helmet dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8afed0f9d9..ae0f9cd07f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8020,9 +8020,9 @@ "dev": true }, "helmet": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.0.1.tgz", - "integrity": "sha512-iyYpGYH2nbQVaQtauYDnemWg45S2RyGvJ+iKj+V9jp7Dc1NTtAJHmD+hFOSYS7Xdwe1GeyVEYSydggXLOg6TKQ==" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.0.2.tgz", + "integrity": "sha512-QWlwUZZ8BtlvwYVTSDTBChGf8EOcQ2LkGMnQJxSzD1mUu8CCjXJZq/BXP8eWw4kikRnzlhtYo3lCk0ucmYA3Vg==" }, "hex2dec": { "version": "1.1.2", diff --git a/package.json b/package.json index 4b4db8ffec..22fa860d82 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "gulp-nodemon": "^2.5.0", "gulp.spritesmith": "^6.12.1", "habitica-markdown": "^3.0.0", - "helmet": "^5.0.1", + "helmet": "^5.0.2", "image-size": "^1.0.1", "in-app-purchase": "^1.11.3", "js2xmlparser": "^4.0.2", From 2ec1fc20db568fd597b94838d62a440aef5bbe9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 13:09:25 -0500 Subject: [PATCH 12/19] build(deps): bump amplitude-js from 8.15.0 to 8.16.0 in /website/client (#13791) Bumps [amplitude-js](https://github.com/amplitude/amplitude-javascript) from 8.15.0 to 8.16.0. - [Release notes](https://github.com/amplitude/amplitude-javascript/releases) - [Changelog](https://github.com/amplitude/Amplitude-JavaScript/blob/main/CHANGELOG.md) - [Commits](https://github.com/amplitude/amplitude-javascript/compare/v8.15.0...v8.16.0) --- updated-dependencies: - dependency-name: amplitude-js dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/client/package-lock.json | 6 +++--- website/client/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 8b942740e5..568fa8ceb6 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -13581,9 +13581,9 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, "amplitude-js": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-8.15.0.tgz", - "integrity": "sha512-8pHN4dfKB0XwzgtgdEZgPVgkPr/fRsv11BECATYdUAIpLkj+sVEob7DphBa7fpBWPmRm+NXe1LRryThPZp7UuQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-8.16.0.tgz", + "integrity": "sha512-PtHuYphktZsCf2BRSbb0EMuClQjHP2kSTDz2QBy6cv18yRvqVs3I2MB386BfeOxgxR16J/OlfFVBWhv9CX2rYw==", "requires": { "@amplitude/ua-parser-js": "0.7.26", "@amplitude/utils": "^1.0.5", diff --git a/website/client/package.json b/website/client/package.json index 4f848434ef..81617db929 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -25,7 +25,7 @@ "@vue/cli-plugin-unit-mocha": "^4.5.15", "@vue/cli-service": "^4.5.15", "@vue/test-utils": "1.0.0-beta.29", - "amplitude-js": "^8.15.0", + "amplitude-js": "^8.16.0", "axios": "^0.24.0", "axios-progress-bar": "^1.2.0", "babel-eslint": "^10.1.0", From e0c75e6afd0e0242ad385e8fd719c0ee2e26866d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 13:09:56 -0500 Subject: [PATCH 13/19] build(deps): bump node-fetch from 2.6.1 to 2.6.7 (#13794) Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7. - [Release notes](https://github.com/node-fetch/node-fetch/releases) - [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7) --- updated-dependencies: - dependency-name: node-fetch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae0f9cd07f..ae3eb929ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10737,9 +10737,12 @@ "integrity": "sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE=" }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "node-forge": { "version": "0.10.0", @@ -14157,6 +14160,11 @@ "punycode": "^2.1.1" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -14962,6 +14970,11 @@ "graceful-fs": "^4.1.2" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, "webpack": { "version": "5.65.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", @@ -15140,6 +15153,15 @@ } } }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", From e4e3eb4376200d31ffe1432979257dadd2b2cd9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 13:11:40 -0500 Subject: [PATCH 14/19] build(deps): bump @babel/preset-env from 7.16.8 to 7.16.11 (#13784) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.8 to 7.16.11. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.16.11/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 22 +++++++++++----------- package.json | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae3eb929ab..7945e2617b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -147,9 +147,9 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", - "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-environment-visitor": "^7.16.7", @@ -521,11 +521,11 @@ } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", - "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.10", "@babel/helper-plugin-utils": "^7.16.7" } }, @@ -951,9 +951,9 @@ } }, "@babel/preset-env": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", - "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", "requires": { "@babel/compat-data": "^7.16.8", "@babel/helper-compilation-targets": "^7.16.7", @@ -973,7 +973,7 @@ "@babel/plugin-proposal-object-rest-spread": "^7.16.7", "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", "@babel/plugin-proposal-private-property-in-object": "^7.16.7", "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", diff --git a/package.json b/package.json index 22fa860d82..b040b8a7a3 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.16.12", - "@babel/preset-env": "^7.16.8", + "@babel/preset-env": "^7.16.11", "@babel/register": "^7.16.9", "@google-cloud/trace-agent": "^5.1.6", "@parse/node-apn": "^5.1.0", From 755ff8d22ddcde71cc7b7eddeaa31a8111afacf1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 13:12:55 -0500 Subject: [PATCH 15/19] build(deps): bump @storybook/addon-actions in /website/client (#13785) Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 6.4.13 to 6.4.14. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.14/addons/actions) --- updated-dependencies: - dependency-name: "@storybook/addon-actions" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/client/package-lock.json | 104 ++++++++++++++++++------------- website/client/package.json | 2 +- 2 files changed, 62 insertions(+), 44 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 568fa8ceb6..6e6924ae5f 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -4723,16 +4723,16 @@ "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==" }, "@storybook/addon-actions": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.13.tgz", - "integrity": "sha512-Bf/M3Kdq60xj48oXnRCm7+qstWL9wT8rjFPFm7+A0NSfVSlox6pFU5SfPuOI4Za/6Ll2XDaYwsaF3QYHX0jQAA==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.14.tgz", + "integrity": "sha512-EBraATDCKCbb1IpT+bTIV+noFIoK5ykXj8Nt0qmQGD2OC1cZovIyH3DigyD0/3D55znGzxqRruTK8lm0nc1jbg==", "requires": { - "@storybook/addons": "6.4.13", - "@storybook/api": "6.4.13", - "@storybook/components": "6.4.13", - "@storybook/core-events": "6.4.13", + "@storybook/addons": "6.4.14", + "@storybook/api": "6.4.14", + "@storybook/components": "6.4.14", + "@storybook/core-events": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/theming": "6.4.13", + "@storybook/theming": "6.4.14", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -4856,18 +4856,36 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, - "@storybook/api": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.13.tgz", - "integrity": "sha512-Hr5/dL4tLnQPjrUlVdhsYMSAuJmsZcu3jdfqpjbsDC9S2HNaVtyHGBhQ33jD8+xtXoorsuS7t4SfWzLOgPPflg==", + "@storybook/addons": { + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.14.tgz", + "integrity": "sha512-Snu42ejLyBAh6PWdlrdI72HKN1oKY7q0R9qEID2wk953WrqgGu4URakp14YLxghJCyKTSfGPs6LNZRRI6H5xgA==", "requires": { - "@storybook/channels": "6.4.13", - "@storybook/client-logger": "6.4.13", - "@storybook/core-events": "6.4.13", + "@storybook/api": "6.4.14", + "@storybook/channels": "6.4.14", + "@storybook/client-logger": "6.4.14", + "@storybook/core-events": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.13", + "@storybook/router": "6.4.14", + "@storybook/theming": "6.4.14", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.14.tgz", + "integrity": "sha512-GGGwB5+EquoausTXYx4dnLBBk2sOiS1Z58mDj0swBXCZdjfyUfLyxjxvvb/hl65ltufWP3IdmlKKaLiuARXNtw==", + "requires": { + "@storybook/channels": "6.4.14", + "@storybook/client-logger": "6.4.14", + "@storybook/core-events": "6.4.14", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.14", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.4.13", + "@storybook/theming": "6.4.14", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -4881,9 +4899,9 @@ } }, "@storybook/channels": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.13.tgz", - "integrity": "sha512-QWvm2TiqPZVPQLBq7ETcABNi17HIhNaXhJJUyNFBBXFtAHcbzMRFEBi6gkCVXK7QdtFo3Z68TU5htDkwjYVerg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.14.tgz", + "integrity": "sha512-3QOVxFG6ZAxDXCta1ie4SUPQ3s50yHeuZzVg6uPp+DcC1FrXeDFYBcU9t0j/jrSgbeKcnFHWxmRHNy1BRyWv/A==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -4891,23 +4909,23 @@ } }, "@storybook/client-logger": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.13.tgz", - "integrity": "sha512-VPrrgJRURztXAKTeHOpzKMAHnNupkGApUDNlPIs0Qxyn5gaSiy806q4XPoROno3mVgEe+7Chf86hRiL8pJnlCA==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.14.tgz", + "integrity": "sha512-4VmFWZxhpeiG5fDhfqAyQbCfXZSBKS4fNKf35ABWiHStZRDndxml8K5WFtmOmMvVzjrGQx8HesenYMawK6xo/Q==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/components": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.13.tgz", - "integrity": "sha512-edeoYycQMsPaXPyPvYV4Aoiz4A/9kPsZt0Wf2zBGMGX6cpaGV3aoy8pFBl6XSq2hPxIn8JdcB/8MK3/tj35h4w==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.14.tgz", + "integrity": "sha512-M7unerbOnvg+UN7qPxBCBWzK/boVdSSQxRiPAr1OL3M4OyEU8+TNPdQeAG0aF4zqtU0BrsDf4E85EznoMXUiFQ==", "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.4.13", + "@storybook/client-logger": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/theming": "6.4.13", + "@storybook/theming": "6.4.14", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -4931,9 +4949,9 @@ } }, "@storybook/core-events": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.13.tgz", - "integrity": "sha512-zNlzNv7qVXjLf7yfvY9KfLvDY8nVskxrjmz0+21rIqUefS9+7SWBrtJJURpCaoPf/BmACqh/6c1RnuOY7TESnw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.14.tgz", + "integrity": "sha512-9QFltg2mxTDjMBfmVtFHtrAEPY/i0oVp2kVdTWo6g05cPffYKAjNUnUVjUl7yiqcQmdEcdqUUQ0ut3xgmcYi/A==", "requires": { "core-js": "^3.8.2" } @@ -4947,11 +4965,11 @@ } }, "@storybook/router": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.13.tgz", - "integrity": "sha512-6KbIpSL8QhGglzGb+tWTvAF/2EVpmgwlU5VP6Xs3GANcOc3VeXWl1fcJD6CNPp2DHwjkblW+21dcoHqfljnTmg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.14.tgz", + "integrity": "sha512-5+tePyINtwPYm4izgOBZ2sX2ViWtfmmO2vwOAPlWWEGzsRosVQsGMdZv1R8rk4Jl/TotMjlTmd8I1/BufEeIeQ==", "requires": { - "@storybook/client-logger": "6.4.13", + "@storybook/client-logger": "6.4.14", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -4965,14 +4983,14 @@ } }, "@storybook/theming": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.13.tgz", - "integrity": "sha512-oWRoNnvO4QnRnplZ74DVdU4k91eqw8y0Xqn6lzZBeC8hq6mYWldgfj1LZ24gJhVtEIa7ZKoyujGUygHaH8WXHw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.14.tgz", + "integrity": "sha512-kqmXNnIoOSAS4cgr9PitMgVrOps725O99eTsJNxB6J1Ide0CsA5v2tV6AmQn/scnpCQNr8uSjZerNlEcl/ensg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.4.13", + "@storybook/client-logger": "6.4.14", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -5108,11 +5126,11 @@ } }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "dependencies": { "@babel/runtime": { diff --git a/website/client/package.json b/website/client/package.json index 81617db929..daca278b7d 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@storybook/addons": "6.4.13", - "@storybook/addon-actions": "6.4.13", + "@storybook/addon-actions": "6.4.14", "@storybook/addon-knobs": "6.2.9", "@storybook/addon-links": "6.4.14", "@storybook/addon-notes": "5.3.21", From d8c6237173b75364c6605ad8941b7103a16bb1b9 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 25 Jan 2022 15:35:51 -0600 Subject: [PATCH 16/19] Revert "build(deps): bump helmet from 5.0.1 to 5.0.2 (#13787)" This reverts commit 62a7c4bc280fb2b8ab386209d3b538af6db20ddb. --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7945e2617b..3e044c468c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8020,9 +8020,9 @@ "dev": true }, "helmet": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.0.2.tgz", - "integrity": "sha512-QWlwUZZ8BtlvwYVTSDTBChGf8EOcQ2LkGMnQJxSzD1mUu8CCjXJZq/BXP8eWw4kikRnzlhtYo3lCk0ucmYA3Vg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.0.1.tgz", + "integrity": "sha512-iyYpGYH2nbQVaQtauYDnemWg45S2RyGvJ+iKj+V9jp7Dc1NTtAJHmD+hFOSYS7Xdwe1GeyVEYSydggXLOg6TKQ==" }, "hex2dec": { "version": "1.1.2", diff --git a/package.json b/package.json index b040b8a7a3..3c6c42f96e 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "gulp-nodemon": "^2.5.0", "gulp.spritesmith": "^6.12.1", "habitica-markdown": "^3.0.0", - "helmet": "^5.0.2", + "helmet": "^5.0.1", "image-size": "^1.0.1", "in-app-purchase": "^1.11.3", "js2xmlparser": "^4.0.2", From 620801ef6152d96677497da0b49ec6916c948959 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 25 Jan 2022 15:37:09 -0600 Subject: [PATCH 17/19] Revert "build(deps): bump helmet from 4.6.0 to 5.0.1 (#13735)" This reverts commit dcffd8b03216b851fad8254d2614dfc1956fbd11. --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e044c468c..3140b7881d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8020,9 +8020,9 @@ "dev": true }, "helmet": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.0.1.tgz", - "integrity": "sha512-iyYpGYH2nbQVaQtauYDnemWg45S2RyGvJ+iKj+V9jp7Dc1NTtAJHmD+hFOSYS7Xdwe1GeyVEYSydggXLOg6TKQ==" + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz", + "integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg==" }, "hex2dec": { "version": "1.1.2", diff --git a/package.json b/package.json index 3c6c42f96e..c11a43b13f 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "gulp-nodemon": "^2.5.0", "gulp.spritesmith": "^6.12.1", "habitica-markdown": "^3.0.0", - "helmet": "^5.0.1", + "helmet": "^4.6.0", "image-size": "^1.0.1", "in-app-purchase": "^1.11.3", "js2xmlparser": "^4.0.2", From c4d0f826730359bf66396f3ab75396105ac76169 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jan 2022 11:20:11 -0500 Subject: [PATCH 18/19] build(deps): bump axios from 0.24.0 to 0.25.0 in /website/client (#13790) Bumps [axios](https://github.com/axios/axios) from 0.24.0 to 0.25.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.24.0...v0.25.0) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/client/package-lock.json | 8 ++++---- website/client/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 6e6924ae5f..abc90eaad3 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -14312,11 +14312,11 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.14.7" } }, "axios-progress-bar": { diff --git a/website/client/package.json b/website/client/package.json index daca278b7d..669c870f89 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -26,7 +26,7 @@ "@vue/cli-service": "^4.5.15", "@vue/test-utils": "1.0.0-beta.29", "amplitude-js": "^8.16.0", - "axios": "^0.24.0", + "axios": "^0.25.0", "axios-progress-bar": "^1.2.0", "babel-eslint": "^10.1.0", "bootstrap": "^4.6.0", From e687140cfc521c6980579c57adeee4e53379bc5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jan 2022 11:20:34 -0500 Subject: [PATCH 19/19] build(deps): bump @storybook/addons in /website/client (#13789) Bumps [@storybook/addons](https://github.com/storybookjs/storybook/tree/HEAD/lib/addons) from 6.4.13 to 6.4.14. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v6.4.14/lib/addons) --- updated-dependencies: - dependency-name: "@storybook/addons" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/client/package-lock.json | 76 ++++++++++++++++---------------- website/client/package.json | 2 +- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index abc90eaad3..7fce4153a9 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -5881,17 +5881,17 @@ } }, "@storybook/addons": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.13.tgz", - "integrity": "sha512-2oxZ/VOuXUpOvtKGy+fR1FNwyfaTkzKs9I6cZq2zbEGK2q/5x6rtczwNRm5PjK35At+VurMq0E+IHH10JO9vHw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.14.tgz", + "integrity": "sha512-Snu42ejLyBAh6PWdlrdI72HKN1oKY7q0R9qEID2wk953WrqgGu4URakp14YLxghJCyKTSfGPs6LNZRRI6H5xgA==", "requires": { - "@storybook/api": "6.4.13", - "@storybook/channels": "6.4.13", - "@storybook/client-logger": "6.4.13", - "@storybook/core-events": "6.4.13", + "@storybook/api": "6.4.14", + "@storybook/channels": "6.4.14", + "@storybook/client-logger": "6.4.14", + "@storybook/core-events": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.13", - "@storybook/theming": "6.4.13", + "@storybook/router": "6.4.14", + "@storybook/theming": "6.4.14", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", "global": "^4.4.0", @@ -6008,17 +6008,17 @@ "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "@storybook/api": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.13.tgz", - "integrity": "sha512-Hr5/dL4tLnQPjrUlVdhsYMSAuJmsZcu3jdfqpjbsDC9S2HNaVtyHGBhQ33jD8+xtXoorsuS7t4SfWzLOgPPflg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.14.tgz", + "integrity": "sha512-GGGwB5+EquoausTXYx4dnLBBk2sOiS1Z58mDj0swBXCZdjfyUfLyxjxvvb/hl65ltufWP3IdmlKKaLiuARXNtw==", "requires": { - "@storybook/channels": "6.4.13", - "@storybook/client-logger": "6.4.13", - "@storybook/core-events": "6.4.13", + "@storybook/channels": "6.4.14", + "@storybook/client-logger": "6.4.14", + "@storybook/core-events": "6.4.14", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.13", + "@storybook/router": "6.4.14", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.4.13", + "@storybook/theming": "6.4.14", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -6032,9 +6032,9 @@ } }, "@storybook/channels": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.13.tgz", - "integrity": "sha512-QWvm2TiqPZVPQLBq7ETcABNi17HIhNaXhJJUyNFBBXFtAHcbzMRFEBi6gkCVXK7QdtFo3Z68TU5htDkwjYVerg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.14.tgz", + "integrity": "sha512-3QOVxFG6ZAxDXCta1ie4SUPQ3s50yHeuZzVg6uPp+DcC1FrXeDFYBcU9t0j/jrSgbeKcnFHWxmRHNy1BRyWv/A==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -6042,18 +6042,18 @@ } }, "@storybook/client-logger": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.13.tgz", - "integrity": "sha512-VPrrgJRURztXAKTeHOpzKMAHnNupkGApUDNlPIs0Qxyn5gaSiy806q4XPoROno3mVgEe+7Chf86hRiL8pJnlCA==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.14.tgz", + "integrity": "sha512-4VmFWZxhpeiG5fDhfqAyQbCfXZSBKS4fNKf35ABWiHStZRDndxml8K5WFtmOmMvVzjrGQx8HesenYMawK6xo/Q==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/core-events": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.13.tgz", - "integrity": "sha512-zNlzNv7qVXjLf7yfvY9KfLvDY8nVskxrjmz0+21rIqUefS9+7SWBrtJJURpCaoPf/BmACqh/6c1RnuOY7TESnw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.14.tgz", + "integrity": "sha512-9QFltg2mxTDjMBfmVtFHtrAEPY/i0oVp2kVdTWo6g05cPffYKAjNUnUVjUl7yiqcQmdEcdqUUQ0ut3xgmcYi/A==", "requires": { "core-js": "^3.8.2" } @@ -6067,11 +6067,11 @@ } }, "@storybook/router": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.13.tgz", - "integrity": "sha512-6KbIpSL8QhGglzGb+tWTvAF/2EVpmgwlU5VP6Xs3GANcOc3VeXWl1fcJD6CNPp2DHwjkblW+21dcoHqfljnTmg==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.14.tgz", + "integrity": "sha512-5+tePyINtwPYm4izgOBZ2sX2ViWtfmmO2vwOAPlWWEGzsRosVQsGMdZv1R8rk4Jl/TotMjlTmd8I1/BufEeIeQ==", "requires": { - "@storybook/client-logger": "6.4.13", + "@storybook/client-logger": "6.4.14", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -6085,14 +6085,14 @@ } }, "@storybook/theming": { - "version": "6.4.13", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.13.tgz", - "integrity": "sha512-oWRoNnvO4QnRnplZ74DVdU4k91eqw8y0Xqn6lzZBeC8hq6mYWldgfj1LZ24gJhVtEIa7ZKoyujGUygHaH8WXHw==", + "version": "6.4.14", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.14.tgz", + "integrity": "sha512-kqmXNnIoOSAS4cgr9PitMgVrOps725O99eTsJNxB6J1Ide0CsA5v2tV6AmQn/scnpCQNr8uSjZerNlEcl/ensg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.4.13", + "@storybook/client-logger": "6.4.14", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -6168,11 +6168,11 @@ "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "dependencies": { "@babel/runtime": { diff --git a/website/client/package.json b/website/client/package.json index 669c870f89..58b930e91a 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -13,7 +13,7 @@ "storybook:serve": "vue-cli-service storybook:serve -p 6006 -c config/storybook" }, "dependencies": { - "@storybook/addons": "6.4.13", + "@storybook/addons": "6.4.14", "@storybook/addon-actions": "6.4.14", "@storybook/addon-knobs": "6.2.9", "@storybook/addon-links": "6.4.14",