Remove parallel calls to save (#10416)

* remove parallel saves from the code

* fix more unit tests

* do not save users when sending message in buyGift (saved later)

* fix test

* reinstall

* fix tests

* fix tests
This commit is contained in:
Matteo Pagliazzi
2018-06-01 15:56:01 +02:00
committed by GitHub
parent 1e786412ba
commit a35c1954af
8 changed files with 108 additions and 111 deletions

186
package-lock.json generated
View File

@@ -214,9 +214,9 @@
} }
}, },
"acorn": { "acorn": {
"version": "5.5.3", "version": "5.6.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.1.tgz",
"integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" "integrity": "sha512-XH4o5BK5jmw9PzSGK7mNf+/xV+mPxQxGZoeC36OVsJZYV77JAG9NnI7T90hoUpI/C1TOfXWTvugRdZ9ZR3iE2Q=="
}, },
"acorn-dynamic-import": { "acorn-dynamic-import": {
"version": "2.0.2", "version": "2.0.2",
@@ -933,12 +933,12 @@
"integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio="
}, },
"autoprefixer": { "autoprefixer": {
"version": "8.5.1", "version": "8.5.2",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.1.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.2.tgz",
"integrity": "sha512-0zXQ6OqbnVaplQKkKTASxHFPMNy6WfrXS5QRDJ4zTDxEBB3r7NPDSK4h9KCyQi1tq0tX5MsN4RdzChVBn2k/aw==", "integrity": "sha512-X3BmI+0YBTGaqw0cR9FCPTyTAAPRpijzIUPkysRumGmJC6r8vhix1RjzLNjX01Kbb/iSezjZ9OR3G92pa31+WQ==",
"requires": { "requires": {
"browserslist": "3.2.8", "browserslist": "3.2.8",
"caniuse-lite": "1.0.30000846", "caniuse-lite": "1.0.30000847",
"normalize-range": "0.1.2", "normalize-range": "0.1.2",
"num2fraction": "1.2.2", "num2fraction": "1.2.2",
"postcss": "6.0.22", "postcss": "6.0.22",
@@ -946,9 +946,9 @@
} }
}, },
"aws-sdk": { "aws-sdk": {
"version": "2.248.1", "version": "2.249.1",
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.248.1.tgz", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.249.1.tgz",
"integrity": "sha1-prZdOh75zcd0sM+cVSr5l9I0LAM=", "integrity": "sha1-KenvNa+xTODpH5kFsz7TVEF7lls=",
"requires": { "requires": {
"buffer": "4.9.1", "buffer": "4.9.1",
"events": "1.1.1", "events": "1.1.1",
@@ -2521,7 +2521,7 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
"integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
"requires": { "requires": {
"caniuse-lite": "1.0.30000846", "caniuse-lite": "1.0.30000847",
"electron-to-chromium": "1.3.48" "electron-to-chromium": "1.3.48"
} }
}, },
@@ -2541,18 +2541,18 @@
} }
}, },
"buffer-alloc": { "buffer-alloc": {
"version": "1.1.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"requires": { "requires": {
"buffer-alloc-unsafe": "0.1.1", "buffer-alloc-unsafe": "1.1.0",
"buffer-fill": "0.1.1" "buffer-fill": "1.0.0"
} }
}, },
"buffer-alloc-unsafe": { "buffer-alloc-unsafe": {
"version": "0.1.1", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=" "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
}, },
"buffer-crc32": { "buffer-crc32": {
"version": "0.2.13", "version": "0.2.13",
@@ -2565,14 +2565,14 @@
"integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74="
}, },
"buffer-fill": { "buffer-fill": {
"version": "0.1.1", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==" "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
}, },
"buffer-from": { "buffer-from": {
"version": "1.0.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
"integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ=="
}, },
"buffer-more-ints": { "buffer-more-ints": {
"version": "0.0.2", "version": "0.0.2",
@@ -2797,7 +2797,7 @@
"integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
"requires": { "requires": {
"browserslist": "1.7.7", "browserslist": "1.7.7",
"caniuse-db": "1.0.30000846", "caniuse-db": "1.0.30000847",
"lodash.memoize": "4.1.2", "lodash.memoize": "4.1.2",
"lodash.uniq": "4.5.0" "lodash.uniq": "4.5.0"
}, },
@@ -2807,21 +2807,21 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"requires": { "requires": {
"caniuse-db": "1.0.30000846", "caniuse-db": "1.0.30000847",
"electron-to-chromium": "1.3.48" "electron-to-chromium": "1.3.48"
} }
} }
} }
}, },
"caniuse-db": { "caniuse-db": {
"version": "1.0.30000846", "version": "1.0.30000847",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000846.tgz", "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000847.tgz",
"integrity": "sha1-2chvkUc4202gmO7e2ZdBPERWG9I=" "integrity": "sha1-/0BypUaICf7ArprDtANe+JHlsUQ="
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30000846", "version": "1.0.30000847",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz",
"integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg==" "integrity": "sha512-Weo+tRtVWcN2da782Ebx/27hFNEb+KP+uP6tdqAa+2S5bp1zOJhVH9tEpDygagrfvU4QjeuPwi/5VGsgT4SLaA=="
}, },
"capture-stack-trace": { "capture-stack-trace": {
"version": "1.0.0", "version": "1.0.0",
@@ -3577,7 +3577,7 @@
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": { "requires": {
"buffer-from": "1.0.0", "buffer-from": "1.1.0",
"inherits": "2.0.3", "inherits": "2.0.3",
"readable-stream": "2.3.6", "readable-stream": "2.3.6",
"typedarray": "0.0.6" "typedarray": "0.0.6"
@@ -3747,9 +3747,9 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
}, },
"cookiejar": { "cookiejar": {
"version": "2.1.1", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
}, },
"cookies": { "cookies": {
"version": "0.7.1", "version": "0.7.1",
@@ -4232,7 +4232,7 @@
"integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
"requires": { "requires": {
"browserslist": "1.7.7", "browserslist": "1.7.7",
"caniuse-db": "1.0.30000846", "caniuse-db": "1.0.30000847",
"normalize-range": "0.1.2", "normalize-range": "0.1.2",
"num2fraction": "1.2.2", "num2fraction": "1.2.2",
"postcss": "5.2.18", "postcss": "5.2.18",
@@ -4244,7 +4244,7 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"requires": { "requires": {
"caniuse-db": "1.0.30000846", "caniuse-db": "1.0.30000847",
"electron-to-chromium": "1.3.48" "electron-to-chromium": "1.3.48"
} }
}, },
@@ -4389,7 +4389,7 @@
"resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"requires": { "requires": {
"es5-ext": "0.10.43" "es5-ext": "0.10.44"
} }
}, },
"dashdash": { "dashdash": {
@@ -5857,9 +5857,9 @@
} }
}, },
"es-abstract": { "es-abstract": {
"version": "1.11.0", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
"integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
"requires": { "requires": {
"es-to-primitive": "1.1.1", "es-to-primitive": "1.1.1",
"function-bind": "1.1.1", "function-bind": "1.1.1",
@@ -5879,9 +5879,9 @@
} }
}, },
"es5-ext": { "es5-ext": {
"version": "0.10.43", "version": "0.10.44",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.43.tgz", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz",
"integrity": "sha512-cZd1vezWuTM5qMlasKWqQFioFKwO352nVBzhOTMUf/pKQl5Gcq5EdJzqtSNXKnFQSCJDiQZjCYlYbnzFB657OA==", "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==",
"requires": { "requires": {
"es6-iterator": "2.0.3", "es6-iterator": "2.0.3",
"es6-symbol": "3.1.1", "es6-symbol": "3.1.1",
@@ -5894,7 +5894,7 @@
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"requires": { "requires": {
"d": "1.0.0", "d": "1.0.0",
"es5-ext": "0.10.43", "es5-ext": "0.10.44",
"es6-symbol": "3.1.1" "es6-symbol": "3.1.1"
} }
}, },
@@ -5904,7 +5904,7 @@
"integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
"requires": { "requires": {
"d": "1.0.0", "d": "1.0.0",
"es5-ext": "0.10.43", "es5-ext": "0.10.44",
"es6-iterator": "2.0.3", "es6-iterator": "2.0.3",
"es6-set": "0.1.5", "es6-set": "0.1.5",
"es6-symbol": "3.1.1", "es6-symbol": "3.1.1",
@@ -5931,7 +5931,7 @@
"integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
"requires": { "requires": {
"d": "1.0.0", "d": "1.0.0",
"es5-ext": "0.10.43", "es5-ext": "0.10.44",
"es6-iterator": "2.0.3", "es6-iterator": "2.0.3",
"es6-symbol": "3.1.1", "es6-symbol": "3.1.1",
"event-emitter": "0.3.5" "event-emitter": "0.3.5"
@@ -5943,7 +5943,7 @@
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"requires": { "requires": {
"d": "1.0.0", "d": "1.0.0",
"es5-ext": "0.10.43" "es5-ext": "0.10.44"
} }
}, },
"es6-weak-map": { "es6-weak-map": {
@@ -5952,7 +5952,7 @@
"integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
"requires": { "requires": {
"d": "1.0.0", "d": "1.0.0",
"es5-ext": "0.10.43", "es5-ext": "0.10.44",
"es6-iterator": "2.0.3", "es6-iterator": "2.0.3",
"es6-symbol": "3.1.1" "es6-symbol": "3.1.1"
} }
@@ -6277,7 +6277,7 @@
"integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
"dev": true, "dev": true,
"requires": { "requires": {
"acorn": "5.5.3", "acorn": "5.6.1",
"acorn-jsx": "3.0.1" "acorn-jsx": "3.0.1"
} }
}, },
@@ -6324,7 +6324,7 @@
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"requires": { "requires": {
"d": "1.0.0", "d": "1.0.0",
"es5-ext": "0.10.43" "es5-ext": "0.10.44"
} }
}, },
"event-stream": { "event-stream": {
@@ -6856,7 +6856,7 @@
"resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz",
"integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=",
"requires": { "requires": {
"acorn": "5.5.3", "acorn": "5.6.1",
"foreach": "2.0.5", "foreach": "2.0.5",
"isarray": "0.0.1", "isarray": "0.0.1",
"object-keys": "1.0.11" "object-keys": "1.0.11"
@@ -8761,7 +8761,7 @@
"async": "2.1.5", "async": "2.1.5",
"minimatch": "3.0.4", "minimatch": "3.0.4",
"spritesheet-templates": "10.2.2", "spritesheet-templates": "10.2.2",
"spritesmith": "3.3.0", "spritesmith": "3.3.1",
"through2": "2.0.3", "through2": "2.0.3",
"underscore": "1.8.3", "underscore": "1.8.3",
"url2": "1.0.4", "url2": "1.0.4",
@@ -9470,9 +9470,9 @@
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
}, },
"in-app-purchase": { "in-app-purchase": {
"version": "1.9.7", "version": "1.9.8",
"resolved": "https://registry.npmjs.org/in-app-purchase/-/in-app-purchase-1.9.7.tgz", "resolved": "https://registry.npmjs.org/in-app-purchase/-/in-app-purchase-1.9.8.tgz",
"integrity": "sha1-kR8MgWQlWXoQ02STINEV7sDx5/Q=", "integrity": "sha1-kpjX3A5rgykIA3gEkbRQxgbB6Zg=",
"requires": { "requires": {
"request": "2.86.0", "request": "2.86.0",
"xml-crypto": "0.10.1", "xml-crypto": "0.10.1",
@@ -10271,7 +10271,7 @@
"istanbul-lib-hook": "1.2.0", "istanbul-lib-hook": "1.2.0",
"istanbul-lib-instrument": "1.10.1", "istanbul-lib-instrument": "1.10.1",
"istanbul-lib-report": "1.1.4", "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", "istanbul-reports": "1.3.0",
"js-yaml": "3.7.0", "js-yaml": "3.7.0",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
@@ -10357,9 +10357,9 @@
} }
}, },
"istanbul-lib-source-maps": { "istanbul-lib-source-maps": {
"version": "1.2.4", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz",
"integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==",
"dev": true, "dev": true,
"requires": { "requires": {
"debug": "3.1.0", "debug": "3.1.0",
@@ -10609,7 +10609,7 @@
"http-proxy": "1.17.0", "http-proxy": "1.17.0",
"isbinaryfile": "3.0.2", "isbinaryfile": "3.0.2",
"lodash": "4.17.10", "lodash": "4.17.10",
"log4js": "2.7.0", "log4js": "2.8.0",
"mime": "1.6.0", "mime": "1.6.0",
"minimatch": "3.0.4", "minimatch": "3.0.4",
"optimist": "0.6.1", "optimist": "0.6.1",
@@ -11951,9 +11951,9 @@
} }
}, },
"log4js": { "log4js": {
"version": "2.7.0", "version": "2.8.0",
"resolved": "https://registry.npmjs.org/log4js/-/log4js-2.7.0.tgz", "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.8.0.tgz",
"integrity": "sha512-FyTwaPJfbfiK2AHc9ct/oFHNN4bJj0IQeqdO/LaDHhfjeBi8fnZU5rPcHOZhkYV0Aes31Ow+St1YTCluPtzs5g==", "integrity": "sha512-PjsaE4ElS0e2jWOY14Ef2PrC1Y+fny4AWPPT3xD6+2k2Aa5golhqJ4DSzP+5kXRL5bSw/5j1ocU5A9ceaxZeGA==",
"dev": true, "dev": true,
"requires": { "requires": {
"amqplib": "0.5.2", "amqplib": "0.5.2",
@@ -12779,16 +12779,16 @@
"integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=" "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE="
}, },
"moment": { "moment": {
"version": "2.22.1", "version": "2.22.2",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
"integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
}, },
"moment-recur": { "moment-recur": {
"version": "1.0.7", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/moment-recur/-/moment-recur-1.0.7.tgz", "resolved": "https://registry.npmjs.org/moment-recur/-/moment-recur-1.0.7.tgz",
"integrity": "sha1-TVCSr2SK7e1q/lwT7zjFKQHJlBk=", "integrity": "sha1-TVCSr2SK7e1q/lwT7zjFKQHJlBk=",
"requires": { "requires": {
"moment": "2.22.1" "moment": "2.22.2"
} }
}, },
"mongodb": { "mongodb": {
@@ -13346,9 +13346,9 @@
} }
}, },
"nise": { "nise": {
"version": "1.3.3", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.0.tgz",
"integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", "integrity": "sha512-vQ4J69BBu0CjNoTJICJzIEzmomn+KqLLAp6VSv5zU6Ea3HI01rg86yUuCmzNv+AhxpRvLiTufV+c72sIzF9Wiw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@sinonjs/formatio": "2.0.0", "@sinonjs/formatio": "2.0.0",
@@ -13597,7 +13597,7 @@
"integrity": "sha512-1mjTyyiNID8WXpN1afvsuK4Qp7JX/JsKdnO5xMJpRfEo8ePleCBvWVyaDpJgWuypxZ4BGHcH2MKMe4TClbb5dA==", "integrity": "sha512-1mjTyyiNID8WXpN1afvsuK4Qp7JX/JsKdnO5xMJpRfEo8ePleCBvWVyaDpJgWuypxZ4BGHcH2MKMe4TClbb5dA==",
"requires": { "requires": {
"json-stringify-safe": "5.0.1", "json-stringify-safe": "5.0.1",
"moment": "2.22.1", "moment": "2.22.2",
"request": "2.76.0" "request": "2.76.0"
} }
}, },
@@ -13663,13 +13663,13 @@
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"requires": { "requires": {
"globule": "1.2.0" "globule": "1.2.1"
} }
}, },
"globule": { "globule": {
"version": "1.2.0", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
"integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
"requires": { "requires": {
"glob": "7.1.2", "glob": "7.1.2",
"lodash": "4.17.10", "lodash": "4.17.10",
@@ -14042,7 +14042,7 @@
"integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
"requires": { "requires": {
"define-properties": "1.1.2", "define-properties": "1.1.2",
"es-abstract": "1.11.0" "es-abstract": "1.12.0"
} }
}, },
"object.map": { "object.map": {
@@ -14096,7 +14096,7 @@
"integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=",
"requires": { "requires": {
"define-properties": "1.1.2", "define-properties": "1.1.2",
"es-abstract": "1.11.0", "es-abstract": "1.12.0",
"function-bind": "1.1.1", "function-bind": "1.1.1",
"has": "1.0.1" "has": "1.0.1"
} }
@@ -15897,7 +15897,7 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"requires": { "requires": {
"caniuse-db": "1.0.30000846", "caniuse-db": "1.0.30000847",
"electron-to-chromium": "1.3.48" "electron-to-chromium": "1.3.48"
} }
}, },
@@ -16824,9 +16824,9 @@
"integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
}, },
"prettier": { "prettier": {
"version": "1.13.2", "version": "1.13.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.2.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.4.tgz",
"integrity": "sha512-D9oFKkJ7g76fRxkRh9MWBh4j2vbNGO4rtEUJbj46zId5wnm0dwHruoyg4Od9Zqh3WNl0jwxnWSlEGAnl+/thWA==" "integrity": "sha512-emsEZ2bAigL1lq6ssgkpPm1MIBqgeTvcp90NxOP5XDqprub/V/WS2Hfgih3mS7/1dqTUvhG+sxx1Dv8crnVexA=="
}, },
"pretty-bytes": { "pretty-bytes": {
"version": "4.0.2", "version": "4.0.2",
@@ -18399,7 +18399,7 @@
"diff": "3.2.0", "diff": "3.2.0",
"lodash.get": "4.4.2", "lodash.get": "4.4.2",
"lolex": "2.7.0", "lolex": "2.7.0",
"nise": "1.3.3", "nise": "1.4.0",
"supports-color": "5.4.0", "supports-color": "5.4.0",
"type-detect": "4.0.8" "type-detect": "4.0.8"
}, },
@@ -18817,9 +18817,9 @@
} }
}, },
"spritesmith": { "spritesmith": {
"version": "3.3.0", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/spritesmith/-/spritesmith-3.3.0.tgz", "resolved": "https://registry.npmjs.org/spritesmith/-/spritesmith-3.3.1.tgz",
"integrity": "sha1-M40taGKV9QQJMWWBHys4NqTVc0Q=", "integrity": "sha512-7mq+oBkeHU66DvJZGeGZO6NGkCbRbQA/WXToLAPyl4YQ2dsYfT9kF2wECJ5ImskmQWllve4T1hGt7tmyaa7OqA==",
"requires": { "requires": {
"concat-stream": "1.5.2", "concat-stream": "1.5.2",
"layout": "2.2.0", "layout": "2.2.0",
@@ -19336,7 +19336,7 @@
"integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
"requires": { "requires": {
"component-emitter": "1.2.1", "component-emitter": "1.2.1",
"cookiejar": "2.1.1", "cookiejar": "2.1.2",
"debug": "3.1.0", "debug": "3.1.0",
"extend": "3.0.1", "extend": "3.0.1",
"form-data": "2.3.2", "form-data": "2.3.2",
@@ -19548,7 +19548,7 @@
"integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
"requires": { "requires": {
"bl": "1.2.2", "bl": "1.2.2",
"buffer-alloc": "1.1.0", "buffer-alloc": "1.2.0",
"end-of-stream": "1.4.1", "end-of-stream": "1.4.1",
"fs-constants": "1.0.0", "fs-constants": "1.0.0",
"readable-stream": "2.3.6", "readable-stream": "2.3.6",
@@ -20614,7 +20614,7 @@
"postcss": "6.0.22", "postcss": "6.0.22",
"postcss-load-config": "1.2.0", "postcss-load-config": "1.2.0",
"postcss-selector-parser": "2.2.3", "postcss-selector-parser": "2.2.3",
"prettier": "1.13.2", "prettier": "1.13.4",
"resolve": "1.7.1", "resolve": "1.7.1",
"source-map": "0.6.1", "source-map": "0.6.1",
"vue-hot-reload-api": "2.3.0", "vue-hot-reload-api": "2.3.0",
@@ -20743,7 +20743,7 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz",
"integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==",
"requires": { "requires": {
"acorn": "5.5.3", "acorn": "5.6.1",
"acorn-dynamic-import": "2.0.2", "acorn-dynamic-import": "2.0.2",
"ajv": "6.5.0", "ajv": "6.5.0",
"ajv-keywords": "3.2.0", "ajv-keywords": "3.2.0",
@@ -20918,7 +20918,7 @@
"integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"acorn": "5.5.3", "acorn": "5.6.1",
"bfj-node4": "5.3.1", "bfj-node4": "5.3.1",
"chalk": "2.4.1", "chalk": "2.4.1",
"commander": "2.15.1", "commander": "2.15.1",

View File

@@ -210,7 +210,7 @@ describe('payments/index', () => {
let msg = '\`Hello recipient, sender has sent you 3 months of subscription!\`'; let msg = '\`Hello recipient, sender has sent you 3 months of subscription!\`';
expect(user.sendMessage).to.be.calledOnce; 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 () => { it('sends an email about the gift', async () => {
@@ -629,7 +629,7 @@ describe('payments/index', () => {
await api.buyGems(data); await api.buyGems(data);
let msg = '\`Hello recipient, sender has sent you 4 gems!\`'; 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 () => { it('sends a message from purchaser to recipient wtih custom message', async () => {
@@ -638,7 +638,7 @@ describe('payments/index', () => {
await api.buyGems(data); await api.buyGems(data);
const msg = `\`Hello recipient, sender has sent you 4 gems!\` ${data.gift.message}`; 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 () => { it('sends a push notification if user did not gift to self', async () => {
@@ -667,7 +667,7 @@ describe('payments/index', () => {
return `\`${messageContent}\``; 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 });
}); });
}); });
}); });

View File

@@ -176,7 +176,7 @@ describe('cron middleware', () => {
user.lastCron = moment(new Date()).subtract({days: 2}); user.lastCron = moment(new Date()).subtract({days: 2});
let todo = generateTodo(user); let todo = generateTodo(user);
let todoValueBefore = todo.value; let todoValueBefore = todo.value;
await user.save(); await Promise.all([todo.save(), user.save()]);
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
cronMiddleware(req, res, (err) => { cronMiddleware(req, res, (err) => {

View File

@@ -94,7 +94,6 @@ export function generateTodo (user) {
let task = new Tasks.todo(Tasks.Task.sanitize(todo)); // eslint-disable-line new-cap let task = new Tasks.todo(Tasks.Task.sanitize(todo)); // eslint-disable-line new-cap
task.userId = user._id; task.userId = user._id;
task.save();
return task; return task;
} }
@@ -109,7 +108,6 @@ export function generateDaily (user) {
let task = new Tasks.daily(Tasks.Task.sanitize(daily)); // eslint-disable-line new-cap let task = new Tasks.daily(Tasks.Task.sanitize(daily)); // eslint-disable-line new-cap
task.userId = user._id; task.userId = user._id;
task.save();
return task; return task;
} }

View File

@@ -312,7 +312,7 @@ api.leaveChallenge = {
if (!challenge.isMember(user)) throw new NotAuthorized(res.t('challengeMemberNotFound')); if (!challenge.isMember(user)) throw new NotAuthorized(res.t('challengeMemberNotFound'));
// Unlink challenge's tasks from user's tasks and save the challenge // 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', { res.analytics.track('challenge leave', {
uuid: user._id, uuid: user._id,

View File

@@ -28,7 +28,7 @@ async function buyGemGift (data) {
const senderMsg = getGiftMessage(data, byUsername, gemAmount, languages[0]); const senderMsg = getGiftMessage(data, byUsername, gemAmount, languages[0]);
const receiverMsg = getGiftMessage(data, byUsername, gemAmount, languages[1]); 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) { if (data.gift.member.preferences.emailNotifications.giftedGems !== false) {
txnEmail(data.gift.member, 'gifted-gems', [ txnEmail(data.gift.member, 'gifted-gems', [

View File

@@ -185,7 +185,7 @@ async function createSubscription (data) {
senderMsg += ` ${data.gift.message}`; 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) { if (data.gift.member.preferences.emailNotifications.giftedSubscription !== false) {
txnEmail(data.gift.member, 'gifted-subscription', [ txnEmail(data.gift.member, 'gifted-subscription', [
@@ -208,12 +208,8 @@ async function createSubscription (data) {
} }
} }
if (group) { if (group) await group.save();
await group.save(); if (data.user && data.user.isModified()) await data.user.save();
} else {
await data.user.save();
}
if (data.gift) await data.gift.member.save(); if (data.gift) await data.gift.member.save();
slack.sendSubscriptionNotification({ slack.sendSubscriptionNotification({

View File

@@ -99,6 +99,8 @@ schema.methods.getObjectionsToInteraction = function getObjectionsToInteraction
schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, options) { schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, options) {
let sender = this; let sender = this;
let senderMsg = options.senderMsg || options.receiverMsg; 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)); common.refPush(userToReceiveMessage.inbox.messages, chatDefaults(options.receiverMsg, sender));
userToReceiveMessage.inbox.newMessages++; 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))); common.refPush(sender.inbox.messages, defaults({sent: true}, chatDefaults(senderMsg, userToReceiveMessage)));
sender.markModified('inbox.messages'); sender.markModified('inbox.messages');
let promises = [userToReceiveMessage.save(), sender.save()]; if (saveUsers) {
await Promise.all(promises); await Promise.all(userToReceiveMessage.save(), sender.save());
}
}; };
/** /**