mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-08-04 04:59:40 +00:00
Merge branch 'develop' into sabrecat/usernames-master
This commit is contained in:
commit
23b0688abb
13 changed files with 80 additions and 363 deletions
368
package-lock.json
generated
368
package-lock.json
generated
|
|
@ -4699,7 +4699,7 @@
|
|||
},
|
||||
"bin-wrapper": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz",
|
||||
"resolved": "http://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz",
|
||||
"integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
|
|
@ -4733,7 +4733,7 @@
|
|||
},
|
||||
"blob": {
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
|
||||
"resolved": "http://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
|
||||
"integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
|
||||
"dev": true
|
||||
},
|
||||
|
|
@ -8243,11 +8243,6 @@
|
|||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
|
||||
},
|
||||
"deprecated": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz",
|
||||
"integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk="
|
||||
},
|
||||
"des.js": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
|
||||
|
|
@ -9667,7 +9662,7 @@
|
|||
},
|
||||
"espree": {
|
||||
"version": "3.5.4",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
|
||||
"resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
|
||||
"integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
|
@ -10434,7 +10429,7 @@
|
|||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
|
||||
"resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
|
||||
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
|
|
@ -10746,11 +10741,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"find-index": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
|
||||
"integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ="
|
||||
},
|
||||
"find-pkg": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz",
|
||||
|
|
@ -11587,14 +11577,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"gaze": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
|
||||
"integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
|
||||
"requires": {
|
||||
"globule": "~0.1.0"
|
||||
}
|
||||
},
|
||||
"generate-function": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
|
||||
|
|
@ -11754,7 +11736,7 @@
|
|||
},
|
||||
"gifsicle": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz",
|
||||
"resolved": "http://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz",
|
||||
"integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
|
|
@ -11886,14 +11868,6 @@
|
|||
"object.defaults": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"glob2base": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
|
||||
"integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
|
||||
"requires": {
|
||||
"find-index": "^0.1.1"
|
||||
}
|
||||
},
|
||||
"global-dirs": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
|
||||
|
|
@ -11948,57 +11922,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"globule": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
|
||||
"integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
|
||||
"requires": {
|
||||
"glob": "~3.1.21",
|
||||
"lodash": "~1.0.1",
|
||||
"minimatch": "~0.2.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob": {
|
||||
"version": "3.1.21",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
|
||||
"integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
|
||||
"requires": {
|
||||
"graceful-fs": "~1.2.0",
|
||||
"inherits": "1",
|
||||
"minimatch": "~0.2.11"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
|
||||
"integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q="
|
||||
},
|
||||
"inherits": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
|
||||
"integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js="
|
||||
},
|
||||
"lodash": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
|
||||
"integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE="
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "2.7.3",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
|
||||
"integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "0.2.14",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
|
||||
"integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
|
||||
"requires": {
|
||||
"lru-cache": "2",
|
||||
"sigmund": "~1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"glogg": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz",
|
||||
|
|
@ -12305,196 +12228,20 @@
|
|||
}
|
||||
},
|
||||
"gulp-nodemon": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/gulp-nodemon/-/gulp-nodemon-2.2.1.tgz",
|
||||
"integrity": "sha1-2b8Zn1WFRYFZ09KZFT5gtGhotvQ=",
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/gulp-nodemon/-/gulp-nodemon-2.4.1.tgz",
|
||||
"integrity": "sha512-IZMEfUZggvXvYDCCbb4jq8xMSsS24OltlgL0KhumhDAbZJUHMm3tHEolHbNLLL9704Wm/DgZ5bdFqCb2hXG0bQ==",
|
||||
"requires": {
|
||||
"colors": "^1.0.3",
|
||||
"event-stream": "^3.2.1",
|
||||
"gulp": "^3.9.1",
|
||||
"nodemon": "^1.10.2"
|
||||
"colors": "^1.2.1",
|
||||
"event-stream": "^3.3.4",
|
||||
"gulp": "^4.0.0",
|
||||
"nodemon": "^1.17.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||
"requires": {
|
||||
"ansi-styles": "^2.2.1",
|
||||
"escape-string-regexp": "^1.0.2",
|
||||
"has-ansi": "^2.0.0",
|
||||
"strip-ansi": "^3.0.0",
|
||||
"supports-color": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"clone": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
|
||||
"integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8="
|
||||
},
|
||||
"clone-stats": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
|
||||
"integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE="
|
||||
},
|
||||
"glob": {
|
||||
"version": "4.5.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
|
||||
"integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
|
||||
"requires": {
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^2.0.1",
|
||||
"once": "^1.3.0"
|
||||
}
|
||||
},
|
||||
"glob-stream": {
|
||||
"version": "3.1.18",
|
||||
"resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
|
||||
"integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
|
||||
"requires": {
|
||||
"glob": "^4.3.1",
|
||||
"glob2base": "^0.0.12",
|
||||
"minimatch": "^2.0.1",
|
||||
"ordered-read-streams": "^0.1.0",
|
||||
"through2": "^0.6.1",
|
||||
"unique-stream": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"glob-watcher": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
|
||||
"integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
|
||||
"requires": {
|
||||
"gaze": "^0.5.1"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "3.0.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
|
||||
"integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
|
||||
"requires": {
|
||||
"natives": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"gulp": {
|
||||
"version": "3.9.1",
|
||||
"resolved": "http://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
|
||||
"integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
|
||||
"requires": {
|
||||
"archy": "^1.0.0",
|
||||
"chalk": "^1.0.0",
|
||||
"deprecated": "^0.0.1",
|
||||
"gulp-util": "^3.0.0",
|
||||
"interpret": "^1.0.0",
|
||||
"liftoff": "^2.1.0",
|
||||
"minimist": "^1.1.0",
|
||||
"orchestrator": "^0.3.0",
|
||||
"pretty-hrtime": "^1.0.0",
|
||||
"semver": "^4.1.0",
|
||||
"tildify": "^1.0.0",
|
||||
"v8flags": "^2.0.2",
|
||||
"vinyl-fs": "^0.3.0"
|
||||
}
|
||||
},
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
|
||||
"integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
|
||||
},
|
||||
"ordered-read-streams": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz",
|
||||
"integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "4.3.6",
|
||||
"resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
|
||||
"integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
},
|
||||
"strip-bom": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
|
||||
"integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
|
||||
"requires": {
|
||||
"first-chunk-stream": "^1.0.0",
|
||||
"is-utf8": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"through2": {
|
||||
"version": "0.6.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
|
||||
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
|
||||
"requires": {
|
||||
"readable-stream": ">=1.0.33-1 <1.1.0-0",
|
||||
"xtend": ">=4.0.0 <4.1.0-0"
|
||||
}
|
||||
},
|
||||
"unique-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs="
|
||||
},
|
||||
"v8flags": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
|
||||
"integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
|
||||
"requires": {
|
||||
"user-home": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"vinyl": {
|
||||
"version": "0.4.6",
|
||||
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
|
||||
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
|
||||
"requires": {
|
||||
"clone": "^0.2.0",
|
||||
"clone-stats": "^0.0.1"
|
||||
}
|
||||
},
|
||||
"vinyl-fs": {
|
||||
"version": "0.3.14",
|
||||
"resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
|
||||
"integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
|
||||
"requires": {
|
||||
"defaults": "^1.0.0",
|
||||
"glob-stream": "^3.1.5",
|
||||
"glob-watcher": "^0.0.6",
|
||||
"graceful-fs": "^3.0.0",
|
||||
"mkdirp": "^0.5.0",
|
||||
"strip-bom": "^1.0.0",
|
||||
"through2": "^0.6.1",
|
||||
"vinyl": "^0.4.0"
|
||||
}
|
||||
"colors": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
|
||||
"integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -13288,7 +13035,7 @@
|
|||
},
|
||||
"imagemin-optipng": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz",
|
||||
"resolved": "http://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz",
|
||||
"integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
|
|
@ -17421,11 +17168,6 @@
|
|||
"integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=",
|
||||
"dev": true
|
||||
},
|
||||
"natives": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
|
||||
"integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA=="
|
||||
},
|
||||
"natural-compare": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
|
||||
|
|
@ -18130,11 +17872,11 @@
|
|||
"integrity": "sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA=="
|
||||
},
|
||||
"nodemon": {
|
||||
"version": "1.18.4",
|
||||
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.4.tgz",
|
||||
"integrity": "sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg==",
|
||||
"version": "1.18.5",
|
||||
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.5.tgz",
|
||||
"integrity": "sha512-8806dC8dfBlbxQmqNOSEeay/qlbddKvFzxIGNxnPtxUlTtH77xsrC66RnA3M47HCSgMgE5bj+U586o50RowXBg==",
|
||||
"requires": {
|
||||
"chokidar": "^2.0.2",
|
||||
"chokidar": "^2.0.4",
|
||||
"debug": "^3.1.0",
|
||||
"ignore-by-default": "^1.0.1",
|
||||
"minimatch": "^3.0.4",
|
||||
|
|
@ -18775,9 +18517,9 @@
|
|||
}
|
||||
},
|
||||
"ora": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz",
|
||||
"integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ora/-/ora-3.0.0.tgz",
|
||||
"integrity": "sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg==",
|
||||
"requires": {
|
||||
"chalk": "^2.3.1",
|
||||
"cli-cursor": "^2.1.0",
|
||||
|
|
@ -18802,34 +18544,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"orchestrator": {
|
||||
"version": "0.3.8",
|
||||
"resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
|
||||
"integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
|
||||
"requires": {
|
||||
"end-of-stream": "~0.1.5",
|
||||
"sequencify": "~0.0.7",
|
||||
"stream-consume": "~0.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"end-of-stream": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
|
||||
"integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
|
||||
"requires": {
|
||||
"once": "~1.3.0"
|
||||
}
|
||||
},
|
||||
"once": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
|
||||
"integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ordered-read-streams": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
|
||||
|
|
@ -22588,7 +22302,7 @@
|
|||
},
|
||||
"regjsgen": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
|
||||
"resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
|
||||
"integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc="
|
||||
},
|
||||
"regjsparser": {
|
||||
|
|
@ -23146,7 +22860,7 @@
|
|||
},
|
||||
"safe-regex": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
|
||||
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
|
||||
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
|
||||
"requires": {
|
||||
"ret": "~0.1.10"
|
||||
|
|
@ -23373,11 +23087,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"sequencify": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz",
|
||||
"integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw="
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
|
||||
|
|
@ -23501,11 +23210,6 @@
|
|||
"uuid": "^3.2.1"
|
||||
}
|
||||
},
|
||||
"sigmund": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
|
||||
"integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||
|
|
@ -24320,11 +24024,6 @@
|
|||
"readable-stream": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"stream-consume": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz",
|
||||
"integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg=="
|
||||
},
|
||||
"stream-exhaust": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
|
||||
|
|
@ -24514,7 +24213,7 @@
|
|||
},
|
||||
"strip-eof": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
||||
"resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
||||
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
|
||||
},
|
||||
"strip-indent": {
|
||||
|
|
@ -25188,14 +24887,6 @@
|
|||
"integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=",
|
||||
"dev": true
|
||||
},
|
||||
"tildify": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
|
||||
"integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
|
||||
"requires": {
|
||||
"os-homedir": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"time-diff": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/time-diff/-/time-diff-0.3.1.tgz",
|
||||
|
|
@ -26316,11 +26007,6 @@
|
|||
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
|
||||
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
|
||||
},
|
||||
"user-home": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
|
||||
"integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
|
||||
},
|
||||
"useragent": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
"gulp": "^4.0.0",
|
||||
"gulp-babel": "^7.0.1",
|
||||
"gulp-imagemin": "^4.1.0",
|
||||
"gulp-nodemon": "^2.2.1",
|
||||
"gulp-nodemon": "^2.4.1",
|
||||
"gulp.spritesmith": "^6.9.0",
|
||||
"habitica-markdown": "^1.3.0",
|
||||
"hellojs": "^1.15.1",
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
import moment from 'moment';
|
||||
|
||||
import taskDefaults from '../../../website/common/script/libs/taskDefaults';
|
||||
import { generateUser } from '../../helpers/common.helper';
|
||||
|
||||
describe('taskDefaults', () => {
|
||||
it('applies defaults to undefined type or habit', () => {
|
||||
let task = taskDefaults();
|
||||
let task = taskDefaults({}, generateUser());
|
||||
expect(task.type).to.eql('habit');
|
||||
expect(task._id).to.exist;
|
||||
expect(task.text).to.eql(task._id);
|
||||
|
|
@ -18,7 +21,7 @@ describe('taskDefaults', () => {
|
|||
});
|
||||
|
||||
it('applies defaults to a daily', () => {
|
||||
let task = taskDefaults({ type: 'daily' });
|
||||
let task = taskDefaults({ type: 'daily' }, generateUser());
|
||||
expect(task.type).to.eql('daily');
|
||||
expect(task._id).to.exist;
|
||||
expect(task.text).to.eql(task._id);
|
||||
|
|
@ -42,7 +45,7 @@ describe('taskDefaults', () => {
|
|||
});
|
||||
|
||||
it('applies defaults a reward', () => {
|
||||
let task = taskDefaults({ type: 'reward' });
|
||||
let task = taskDefaults({ type: 'reward' }, generateUser());
|
||||
expect(task.type).to.eql('reward');
|
||||
expect(task._id).to.exist;
|
||||
expect(task.text).to.eql(task._id);
|
||||
|
|
@ -52,7 +55,7 @@ describe('taskDefaults', () => {
|
|||
});
|
||||
|
||||
it('applies defaults a todo', () => {
|
||||
let task = taskDefaults({ type: 'todo' });
|
||||
let task = taskDefaults({ type: 'todo' }, generateUser());
|
||||
expect(task.type).to.eql('todo');
|
||||
expect(task._id).to.exist;
|
||||
expect(task.text).to.eql(task._id);
|
||||
|
|
@ -61,4 +64,18 @@ describe('taskDefaults', () => {
|
|||
expect(task.priority).to.eql(1);
|
||||
expect(task.completed).to.eql(false);
|
||||
});
|
||||
|
||||
it('starts a task yesterday if user cron is later today', () => {
|
||||
// Configure to have a day start that's *always* tomorrow.
|
||||
let user = generateUser({'preferences.dayStart': 25});
|
||||
let task = taskDefaults({ type: 'daily' }, user);
|
||||
|
||||
expect(task.startDate).to.eql(
|
||||
moment()
|
||||
.zone(user.preferences.timezoneOffset, 'hour')
|
||||
.startOf('day')
|
||||
.subtract(1, 'day')
|
||||
.toDate()
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ describe('shouldDo', () => {
|
|||
options.timezoneOffset = 0;
|
||||
options.nextDue = true;
|
||||
|
||||
day = moment('2017-05-01').toDate();
|
||||
day = moment.utc('2017-05-01').toDate();
|
||||
dailyTask.frequency = 'daily';
|
||||
dailyTask.everyX = 2;
|
||||
dailyTask.startDate = day;
|
||||
|
|
@ -391,7 +391,7 @@ describe('shouldDo', () => {
|
|||
options.timezoneOffset = 0;
|
||||
options.nextDue = true;
|
||||
|
||||
day = moment('2017-05-01').toDate();
|
||||
day = moment.utc('2017-05-01').toDate();
|
||||
dailyTask.frequency = 'weekly';
|
||||
dailyTask.everyX = 1;
|
||||
dailyTask.repeat = {
|
||||
|
|
@ -780,7 +780,7 @@ describe('shouldDo', () => {
|
|||
options.timezoneOffset = 0;
|
||||
options.nextDue = true;
|
||||
|
||||
day = moment('2017-05-01').toDate();
|
||||
day = moment.utc('2017-05-01').toDate();
|
||||
|
||||
dailyTask.frequency = 'monthly';
|
||||
dailyTask.everyX = 3;
|
||||
|
|
@ -817,7 +817,7 @@ describe('shouldDo', () => {
|
|||
expect(moment(nextDue[4]).toDate()).to.eql(moment.utc('2017-10-02').toDate());
|
||||
expect(moment(nextDue[5]).toDate()).to.eql(moment.utc('2017-11-06').toDate());
|
||||
|
||||
day = moment('2017-05-08').toDate();
|
||||
day = moment.utc('2017-05-08').toDate();
|
||||
|
||||
dailyTask.daysOfMonth = [];
|
||||
dailyTask.weeksOfMonth = [1];
|
||||
|
|
@ -841,7 +841,7 @@ describe('shouldDo', () => {
|
|||
expect(moment(nextDue[4]).toDate()).to.eql(moment.utc('2017-10-09').toDate());
|
||||
expect(moment(nextDue[5]).toDate()).to.eql(moment.utc('2017-11-13').toDate());
|
||||
|
||||
day = moment('2017-05-29').toDate();
|
||||
day = moment.utc('2017-05-29').toDate();
|
||||
|
||||
dailyTask.daysOfMonth = [];
|
||||
dailyTask.weeksOfMonth = [4];
|
||||
|
|
@ -1143,7 +1143,7 @@ describe('shouldDo', () => {
|
|||
options.timezoneOffset = 0;
|
||||
options.nextDue = true;
|
||||
|
||||
day = moment('2017-05-01').toDate();
|
||||
day = moment.utc('2017-05-01').toDate();
|
||||
|
||||
dailyTask.frequency = 'yearly';
|
||||
dailyTask.everyX = 5;
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ export default {
|
|||
},
|
||||
createTask (type) {
|
||||
this.taskFormPurpose = 'create';
|
||||
this.creatingTask = taskDefaults({type, text: ''});
|
||||
this.creatingTask = taskDefaults({type, text: ''}, this.user);
|
||||
this.workingTask = this.creatingTask;
|
||||
// Necessary otherwise the first time the modal is not rendered
|
||||
Vue.nextTick(() => {
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ export default {
|
|||
type: 'todo',
|
||||
notes,
|
||||
};
|
||||
this.task = taskDefaults(newTask);
|
||||
this.task = taskDefaults(newTask, this.$store.state.user.data);
|
||||
this.$root.$emit('bv::show::modal', 'copyAsTodo');
|
||||
});
|
||||
},
|
||||
|
|
|
|||
|
|
@ -401,7 +401,7 @@ export default {
|
|||
},
|
||||
createTask (type) {
|
||||
this.taskFormPurpose = 'create';
|
||||
this.creatingTask = taskDefaults({type, text: ''});
|
||||
this.creatingTask = taskDefaults({type, text: ''}, this.user);
|
||||
this.workingTask = this.creatingTask;
|
||||
// Necessary otherwise the first time the modal is not rendered
|
||||
Vue.nextTick(() => {
|
||||
|
|
|
|||
|
|
@ -373,9 +373,12 @@ export default {
|
|||
if (potion === null || egg === null)
|
||||
return false;
|
||||
|
||||
let petKey = `${egg.key}-${potion.key}`;
|
||||
const petKey = `${egg.key}-${potion.key}`;
|
||||
|
||||
if (!this.content.petInfo[petKey])
|
||||
const petInfo = this.content.petInfo[petKey];
|
||||
|
||||
// Check pet exists and is hatchable
|
||||
if (!petInfo || !petInfo.potion)
|
||||
return false;
|
||||
|
||||
return !this.userHasPet(potion.key, egg.key);
|
||||
|
|
|
|||
|
|
@ -540,7 +540,7 @@ export default {
|
|||
const tasks = text.split('\n').reverse().filter(taskText => {
|
||||
return taskText ? true : false;
|
||||
}).map(taskText => {
|
||||
const task = taskDefaults({type: this.type, text: taskText});
|
||||
const task = taskDefaults({type: this.type, text: taskText}, this.user);
|
||||
task.tags = this.selectedTags;
|
||||
return task;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@
|
|||
cursor: default !important;
|
||||
}
|
||||
|
||||
.svg-icon.check {
|
||||
.svg-icon.check:not(.display-check-icon) {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -445,7 +445,7 @@ export default {
|
|||
},
|
||||
createTask (type) {
|
||||
this.openCreateBtn = false;
|
||||
this.creatingTask = taskDefaults({type, text: ''});
|
||||
this.creatingTask = taskDefaults({type, text: ''}, this.user);
|
||||
this.creatingTask.tags = this.selectedTags;
|
||||
|
||||
// Necessary otherwise the first time the modal is not rendered
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import moment from 'moment';
|
|||
|
||||
const tasksTypes = ['habit', 'daily', 'todo', 'reward'];
|
||||
|
||||
module.exports = function taskDefaults (task = {}) {
|
||||
module.exports = function taskDefaults (task, user) {
|
||||
if (!task.type || tasksTypes.indexOf(task.type) === -1) {
|
||||
task.type = 'habit';
|
||||
}
|
||||
|
|
@ -65,6 +65,14 @@ module.exports = function taskDefaults (task = {}) {
|
|||
}
|
||||
|
||||
if (task.type === 'daily') {
|
||||
let now = moment().zone(user.preferences.timezoneOffset);
|
||||
let startOfDay = now.clone().startOf('day');
|
||||
let startOfDayWithCDSTime = startOfDay
|
||||
.clone()
|
||||
.add({
|
||||
hours: user.preferences.dayStart,
|
||||
});
|
||||
|
||||
defaults(task, {
|
||||
streak: 0,
|
||||
repeat: {
|
||||
|
|
@ -76,7 +84,10 @@ module.exports = function taskDefaults (task = {}) {
|
|||
s: true,
|
||||
su: true,
|
||||
},
|
||||
startDate: moment().startOf('day').toDate(),
|
||||
// If cron will happen today, start the daily yesterday
|
||||
startDate: startOfDayWithCDSTime.isAfter(now) ?
|
||||
startOfDay.clone().subtract(1, 'day').toDate() :
|
||||
startOfDay.toDate(),
|
||||
everyX: 1,
|
||||
frequency: 'weekly',
|
||||
daysOfMonth: [],
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import clone from 'lodash/clone';
|
|||
// TODO move to client since it's only used there?
|
||||
|
||||
module.exports = function addTask (user, req = {body: {}}) {
|
||||
let task = taskDefaults(req.body);
|
||||
let task = taskDefaults(req.body, user);
|
||||
user.tasksOrder[`${task.type}s`].unshift(task._id);
|
||||
user[`${task.type}s`].unshift(task);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue