diff --git a/package-lock.json b/package-lock.json index 3cc4a91a15..5aa3c5d09a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -214,9 +214,9 @@ } }, "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.1.tgz", + "integrity": "sha512-XH4o5BK5jmw9PzSGK7mNf+/xV+mPxQxGZoeC36OVsJZYV77JAG9NnI7T90hoUpI/C1TOfXWTvugRdZ9ZR3iE2Q==" }, "acorn-dynamic-import": { "version": "2.0.2", @@ -933,12 +933,12 @@ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" }, "autoprefixer": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.1.tgz", - "integrity": "sha512-0zXQ6OqbnVaplQKkKTASxHFPMNy6WfrXS5QRDJ4zTDxEBB3r7NPDSK4h9KCyQi1tq0tX5MsN4RdzChVBn2k/aw==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.2.tgz", + "integrity": "sha512-X3BmI+0YBTGaqw0cR9FCPTyTAAPRpijzIUPkysRumGmJC6r8vhix1RjzLNjX01Kbb/iSezjZ9OR3G92pa31+WQ==", "requires": { "browserslist": "3.2.8", - "caniuse-lite": "1.0.30000846", + "caniuse-lite": "1.0.30000847", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "6.0.22", @@ -946,9 +946,9 @@ } }, "aws-sdk": { - "version": "2.248.1", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.248.1.tgz", - "integrity": "sha1-prZdOh75zcd0sM+cVSr5l9I0LAM=", + "version": "2.249.1", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.249.1.tgz", + "integrity": "sha1-KenvNa+xTODpH5kFsz7TVEF7lls=", "requires": { "buffer": "4.9.1", "events": "1.1.1", @@ -2521,7 +2521,7 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "requires": { - "caniuse-lite": "1.0.30000846", + "caniuse-lite": "1.0.30000847", "electron-to-chromium": "1.3.48" } }, @@ -2541,18 +2541,18 @@ } }, "buffer-alloc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", - "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { - "buffer-alloc-unsafe": "0.1.1", - "buffer-fill": "0.1.1" + "buffer-alloc-unsafe": "1.1.0", + "buffer-fill": "1.0.0" } }, "buffer-alloc-unsafe": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", - "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, "buffer-crc32": { "version": "0.2.13", @@ -2565,14 +2565,14 @@ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" }, "buffer-fill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", - "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" }, "buffer-more-ints": { "version": "0.0.2", @@ -2797,7 +2797,7 @@ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000846", + "caniuse-db": "1.0.30000847", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -2807,21 +2807,21 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000846", + "caniuse-db": "1.0.30000847", "electron-to-chromium": "1.3.48" } } } }, "caniuse-db": { - "version": "1.0.30000846", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000846.tgz", - "integrity": "sha1-2chvkUc4202gmO7e2ZdBPERWG9I=" + "version": "1.0.30000847", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000847.tgz", + "integrity": "sha1-/0BypUaICf7ArprDtANe+JHlsUQ=" }, "caniuse-lite": { - "version": "1.0.30000846", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz", - "integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg==" + "version": "1.0.30000847", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz", + "integrity": "sha512-Weo+tRtVWcN2da782Ebx/27hFNEb+KP+uP6tdqAa+2S5bp1zOJhVH9tEpDygagrfvU4QjeuPwi/5VGsgT4SLaA==" }, "capture-stack-trace": { "version": "1.0.0", @@ -3577,7 +3577,7 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.0.0", + "buffer-from": "1.1.0", "inherits": "2.0.3", "readable-stream": "2.3.6", "typedarray": "0.0.6" @@ -3747,9 +3747,9 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "cookiejar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", - "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" }, "cookies": { "version": "0.7.1", @@ -4232,7 +4232,7 @@ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000846", + "caniuse-db": "1.0.30000847", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -4244,7 +4244,7 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000846", + "caniuse-db": "1.0.30000847", "electron-to-chromium": "1.3.48" } }, @@ -4389,7 +4389,7 @@ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "requires": { - "es5-ext": "0.10.43" + "es5-ext": "0.10.44" } }, "dashdash": { @@ -5857,9 +5857,9 @@ } }, "es-abstract": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", - "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", "requires": { "es-to-primitive": "1.1.1", "function-bind": "1.1.1", @@ -5879,9 +5879,9 @@ } }, "es5-ext": { - "version": "0.10.43", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.43.tgz", - "integrity": "sha512-cZd1vezWuTM5qMlasKWqQFioFKwO352nVBzhOTMUf/pKQl5Gcq5EdJzqtSNXKnFQSCJDiQZjCYlYbnzFB657OA==", + "version": "0.10.44", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz", + "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==", "requires": { "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", @@ -5894,7 +5894,7 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.43", + "es5-ext": "0.10.44", "es6-symbol": "3.1.1" } }, @@ -5904,7 +5904,7 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.43", + "es5-ext": "0.10.44", "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", @@ -5931,7 +5931,7 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.43", + "es5-ext": "0.10.44", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -5943,7 +5943,7 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.43" + "es5-ext": "0.10.44" } }, "es6-weak-map": { @@ -5952,7 +5952,7 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.43", + "es5-ext": "0.10.44", "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } @@ -6277,7 +6277,7 @@ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.5.3", + "acorn": "5.6.1", "acorn-jsx": "3.0.1" } }, @@ -6324,7 +6324,7 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "requires": { "d": "1.0.0", - "es5-ext": "0.10.43" + "es5-ext": "0.10.44" } }, "event-stream": { @@ -6856,7 +6856,7 @@ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", "requires": { - "acorn": "5.5.3", + "acorn": "5.6.1", "foreach": "2.0.5", "isarray": "0.0.1", "object-keys": "1.0.11" @@ -8761,7 +8761,7 @@ "async": "2.1.5", "minimatch": "3.0.4", "spritesheet-templates": "10.2.2", - "spritesmith": "3.3.0", + "spritesmith": "3.3.1", "through2": "2.0.3", "underscore": "1.8.3", "url2": "1.0.4", @@ -9470,9 +9470,9 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "in-app-purchase": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/in-app-purchase/-/in-app-purchase-1.9.7.tgz", - "integrity": "sha1-kR8MgWQlWXoQ02STINEV7sDx5/Q=", + "version": "1.9.8", + "resolved": "https://registry.npmjs.org/in-app-purchase/-/in-app-purchase-1.9.8.tgz", + "integrity": "sha1-kpjX3A5rgykIA3gEkbRQxgbB6Zg=", "requires": { "request": "2.86.0", "xml-crypto": "0.10.1", @@ -10271,7 +10271,7 @@ "istanbul-lib-hook": "1.2.0", "istanbul-lib-instrument": "1.10.1", "istanbul-lib-report": "1.1.4", - "istanbul-lib-source-maps": "1.2.4", + "istanbul-lib-source-maps": "1.2.5", "istanbul-reports": "1.3.0", "js-yaml": "3.7.0", "mkdirp": "0.5.1", @@ -10357,9 +10357,9 @@ } }, "istanbul-lib-source-maps": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", - "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz", + "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==", "dev": true, "requires": { "debug": "3.1.0", @@ -10609,7 +10609,7 @@ "http-proxy": "1.17.0", "isbinaryfile": "3.0.2", "lodash": "4.17.10", - "log4js": "2.7.0", + "log4js": "2.8.0", "mime": "1.6.0", "minimatch": "3.0.4", "optimist": "0.6.1", @@ -11951,9 +11951,9 @@ } }, "log4js": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.7.0.tgz", - "integrity": "sha512-FyTwaPJfbfiK2AHc9ct/oFHNN4bJj0IQeqdO/LaDHhfjeBi8fnZU5rPcHOZhkYV0Aes31Ow+St1YTCluPtzs5g==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.8.0.tgz", + "integrity": "sha512-PjsaE4ElS0e2jWOY14Ef2PrC1Y+fny4AWPPT3xD6+2k2Aa5golhqJ4DSzP+5kXRL5bSw/5j1ocU5A9ceaxZeGA==", "dev": true, "requires": { "amqplib": "0.5.2", @@ -12779,16 +12779,16 @@ "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=" }, "moment": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", - "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" }, "moment-recur": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/moment-recur/-/moment-recur-1.0.7.tgz", "integrity": "sha1-TVCSr2SK7e1q/lwT7zjFKQHJlBk=", "requires": { - "moment": "2.22.1" + "moment": "2.22.2" } }, "mongodb": { @@ -13346,9 +13346,9 @@ } }, "nise": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", - "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.0.tgz", + "integrity": "sha512-vQ4J69BBu0CjNoTJICJzIEzmomn+KqLLAp6VSv5zU6Ea3HI01rg86yUuCmzNv+AhxpRvLiTufV+c72sIzF9Wiw==", "dev": true, "requires": { "@sinonjs/formatio": "2.0.0", @@ -13597,7 +13597,7 @@ "integrity": "sha512-1mjTyyiNID8WXpN1afvsuK4Qp7JX/JsKdnO5xMJpRfEo8ePleCBvWVyaDpJgWuypxZ4BGHcH2MKMe4TClbb5dA==", "requires": { "json-stringify-safe": "5.0.1", - "moment": "2.22.1", + "moment": "2.22.2", "request": "2.76.0" } }, @@ -13663,13 +13663,13 @@ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "requires": { - "globule": "1.2.0" + "globule": "1.2.1" } }, "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", "requires": { "glob": "7.1.2", "lodash": "4.17.10", @@ -14042,7 +14042,7 @@ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "requires": { "define-properties": "1.1.2", - "es-abstract": "1.11.0" + "es-abstract": "1.12.0" } }, "object.map": { @@ -14096,7 +14096,7 @@ "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", "requires": { "define-properties": "1.1.2", - "es-abstract": "1.11.0", + "es-abstract": "1.12.0", "function-bind": "1.1.1", "has": "1.0.1" } @@ -15897,7 +15897,7 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "caniuse-db": "1.0.30000846", + "caniuse-db": "1.0.30000847", "electron-to-chromium": "1.3.48" } }, @@ -16824,9 +16824,9 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.2.tgz", - "integrity": "sha512-D9oFKkJ7g76fRxkRh9MWBh4j2vbNGO4rtEUJbj46zId5wnm0dwHruoyg4Od9Zqh3WNl0jwxnWSlEGAnl+/thWA==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.4.tgz", + "integrity": "sha512-emsEZ2bAigL1lq6ssgkpPm1MIBqgeTvcp90NxOP5XDqprub/V/WS2Hfgih3mS7/1dqTUvhG+sxx1Dv8crnVexA==" }, "pretty-bytes": { "version": "4.0.2", @@ -18399,7 +18399,7 @@ "diff": "3.2.0", "lodash.get": "4.4.2", "lolex": "2.7.0", - "nise": "1.3.3", + "nise": "1.4.0", "supports-color": "5.4.0", "type-detect": "4.0.8" }, @@ -18817,9 +18817,9 @@ } }, "spritesmith": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/spritesmith/-/spritesmith-3.3.0.tgz", - "integrity": "sha1-M40taGKV9QQJMWWBHys4NqTVc0Q=", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/spritesmith/-/spritesmith-3.3.1.tgz", + "integrity": "sha512-7mq+oBkeHU66DvJZGeGZO6NGkCbRbQA/WXToLAPyl4YQ2dsYfT9kF2wECJ5ImskmQWllve4T1hGt7tmyaa7OqA==", "requires": { "concat-stream": "1.5.2", "layout": "2.2.0", @@ -19336,7 +19336,7 @@ "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "requires": { "component-emitter": "1.2.1", - "cookiejar": "2.1.1", + "cookiejar": "2.1.2", "debug": "3.1.0", "extend": "3.0.1", "form-data": "2.3.2", @@ -19548,7 +19548,7 @@ "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", "requires": { "bl": "1.2.2", - "buffer-alloc": "1.1.0", + "buffer-alloc": "1.2.0", "end-of-stream": "1.4.1", "fs-constants": "1.0.0", "readable-stream": "2.3.6", @@ -20614,7 +20614,7 @@ "postcss": "6.0.22", "postcss-load-config": "1.2.0", "postcss-selector-parser": "2.2.3", - "prettier": "1.13.2", + "prettier": "1.13.4", "resolve": "1.7.1", "source-map": "0.6.1", "vue-hot-reload-api": "2.3.0", @@ -20743,7 +20743,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", "requires": { - "acorn": "5.5.3", + "acorn": "5.6.1", "acorn-dynamic-import": "2.0.2", "ajv": "6.5.0", "ajv-keywords": "3.2.0", @@ -20918,7 +20918,7 @@ "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", "dev": true, "requires": { - "acorn": "5.5.3", + "acorn": "5.6.1", "bfj-node4": "5.3.1", "chalk": "2.4.1", "commander": "2.15.1", diff --git a/test/api/v3/unit/libs/payments/payments.test.js b/test/api/v3/unit/libs/payments/payments.test.js index d67c51afe2..41a080c577 100644 --- a/test/api/v3/unit/libs/payments/payments.test.js +++ b/test/api/v3/unit/libs/payments/payments.test.js @@ -210,7 +210,7 @@ describe('payments/index', () => { let msg = '\`Hello recipient, sender has sent you 3 months of subscription!\`'; expect(user.sendMessage).to.be.calledOnce; - expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg }); + expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg, save: false }); }); it('sends an email about the gift', async () => { @@ -629,7 +629,7 @@ describe('payments/index', () => { await api.buyGems(data); let msg = '\`Hello recipient, sender has sent you 4 gems!\`'; - expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg }); + expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg, save: false }); }); it('sends a message from purchaser to recipient wtih custom message', async () => { @@ -638,7 +638,7 @@ describe('payments/index', () => { await api.buyGems(data); const msg = `\`Hello recipient, sender has sent you 4 gems!\` ${data.gift.message}`; - expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg }); + expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg, save: false }); }); it('sends a push notification if user did not gift to self', async () => { @@ -667,7 +667,7 @@ describe('payments/index', () => { return `\`${messageContent}\``; }); - expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: recipientsMessageContent, senderMsg: sendersMessageContent }); + expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: recipientsMessageContent, senderMsg: sendersMessageContent, save: false }); }); }); }); diff --git a/test/api/v3/unit/middlewares/cronMiddleware.js b/test/api/v3/unit/middlewares/cronMiddleware.js index 12209b1a87..f973bfe36d 100644 --- a/test/api/v3/unit/middlewares/cronMiddleware.js +++ b/test/api/v3/unit/middlewares/cronMiddleware.js @@ -176,7 +176,7 @@ describe('cron middleware', () => { user.lastCron = moment(new Date()).subtract({days: 2}); let todo = generateTodo(user); let todoValueBefore = todo.value; - await user.save(); + await Promise.all([todo.save(), user.save()]); await new Promise((resolve, reject) => { cronMiddleware(req, res, (err) => { diff --git a/test/helpers/api-unit.helper.js b/test/helpers/api-unit.helper.js index 6e5c88891d..9b8d13d420 100644 --- a/test/helpers/api-unit.helper.js +++ b/test/helpers/api-unit.helper.js @@ -94,7 +94,6 @@ export function generateTodo (user) { let task = new Tasks.todo(Tasks.Task.sanitize(todo)); // eslint-disable-line new-cap task.userId = user._id; - task.save(); return task; } @@ -109,7 +108,6 @@ export function generateDaily (user) { let task = new Tasks.daily(Tasks.Task.sanitize(daily)); // eslint-disable-line new-cap task.userId = user._id; - task.save(); return task; } diff --git a/website/server/controllers/api-v3/challenges.js b/website/server/controllers/api-v3/challenges.js index 3ad57642b9..0f36e6387c 100644 --- a/website/server/controllers/api-v3/challenges.js +++ b/website/server/controllers/api-v3/challenges.js @@ -312,7 +312,7 @@ api.leaveChallenge = { if (!challenge.isMember(user)) throw new NotAuthorized(res.t('challengeMemberNotFound')); // Unlink challenge's tasks from user's tasks and save the challenge - await Promise.all([challenge.unlinkTasks(user, keep), challenge.save()]); + await challenge.unlinkTasks(user, keep); res.analytics.track('challenge leave', { uuid: user._id, diff --git a/website/server/libs/payments/gems.js b/website/server/libs/payments/gems.js index 7e0bfa6c51..35d18cc706 100644 --- a/website/server/libs/payments/gems.js +++ b/website/server/libs/payments/gems.js @@ -28,7 +28,7 @@ async function buyGemGift (data) { const senderMsg = getGiftMessage(data, byUsername, gemAmount, languages[0]); const receiverMsg = getGiftMessage(data, byUsername, gemAmount, languages[1]); - data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg }); + data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg, save: false }); if (data.gift.member.preferences.emailNotifications.giftedGems !== false) { txnEmail(data.gift.member, 'gifted-gems', [ diff --git a/website/server/libs/payments/subscriptions.js b/website/server/libs/payments/subscriptions.js index 43f7b18577..82e9a30d70 100644 --- a/website/server/libs/payments/subscriptions.js +++ b/website/server/libs/payments/subscriptions.js @@ -185,7 +185,7 @@ async function createSubscription (data) { senderMsg += ` ${data.gift.message}`; } - data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg }); + data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg, save: false }); if (data.gift.member.preferences.emailNotifications.giftedSubscription !== false) { txnEmail(data.gift.member, 'gifted-subscription', [ @@ -208,12 +208,8 @@ async function createSubscription (data) { } } - if (group) { - await group.save(); - } else { - await data.user.save(); - } - + if (group) await group.save(); + if (data.user && data.user.isModified()) await data.user.save(); if (data.gift) await data.gift.member.save(); slack.sendSubscriptionNotification({ diff --git a/website/server/models/user/methods.js b/website/server/models/user/methods.js index 80e0f385c2..38af7d6df7 100644 --- a/website/server/models/user/methods.js +++ b/website/server/models/user/methods.js @@ -99,6 +99,8 @@ schema.methods.getObjectionsToInteraction = function getObjectionsToInteraction schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, options) { let sender = this; let senderMsg = options.senderMsg || options.receiverMsg; + // whether to save users after sending the message, defaults to true + let saveUsers = options.save === false ? false : true; common.refPush(userToReceiveMessage.inbox.messages, chatDefaults(options.receiverMsg, sender)); userToReceiveMessage.inbox.newMessages++; @@ -130,8 +132,9 @@ schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, o common.refPush(sender.inbox.messages, defaults({sent: true}, chatDefaults(senderMsg, userToReceiveMessage))); sender.markModified('inbox.messages'); - let promises = [userToReceiveMessage.save(), sender.save()]; - await Promise.all(promises); + if (saveUsers) { + await Promise.all(userToReceiveMessage.save(), sender.save()); + } }; /**