diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
index 12201d3479..b18a8982cf 100644
--- a/npm-shrinkwrap.json
+++ b/npm-shrinkwrap.json
@@ -244,7 +244,7 @@
"mime": {
"version": "1.3.6",
"from": "mime@>=1.3.4 <2.0.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz"
+ "resolved": "http://registry.npmjs.org/mime/-/mime-1.3.6.tgz"
},
"superagent": {
"version": "2.3.0",
@@ -500,9 +500,9 @@
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz"
},
"aws-sdk": {
- "version": "2.50.0",
+ "version": "2.52.0",
"from": "aws-sdk@>=2.0.25 <3.0.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.50.0.tgz",
+ "resolved": "http://registry.npmjs.org/aws-sdk/-/aws-sdk-2.52.0.tgz",
"dependencies": {
"sax": {
"version": "1.2.1",
@@ -808,7 +808,7 @@
"babylon": {
"version": "6.17.1",
"from": "babylon@>=6.11.0 <7.0.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.1.tgz"
+ "resolved": "http://registry.npmjs.org/babylon/-/babylon-6.17.1.tgz"
},
"backo2": {
"version": "1.0.2",
@@ -1010,7 +1010,7 @@
"bootstrap-vue": {
"version": "0.15.8",
"from": "bootstrap-vue@>=0.15.8 <0.16.0",
- "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-0.15.8.tgz",
+ "resolved": "http://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-0.15.8.tgz",
"dependencies": {
"tether": {
"version": "1.4.0",
@@ -1690,9 +1690,9 @@
}
},
"caniuse-db": {
- "version": "1.0.30000667",
+ "version": "1.0.30000670",
"from": "caniuse-db@>=1.0.30000634 <2.0.0",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000667.tgz"
+ "resolved": "http://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000670.tgz"
},
"capture-stack-trace": {
"version": "1.0.0",
@@ -2126,27 +2126,15 @@
}
},
"connect": {
- "version": "3.6.1",
+ "version": "3.6.2",
"from": "connect@>=3.6.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.1.tgz",
+ "resolved": "http://registry.npmjs.org/connect/-/connect-3.6.2.tgz",
"dev": true,
"dependencies": {
- "debug": {
- "version": "2.6.3",
- "from": "debug@2.6.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
- "dev": true
- },
"finalhandler": {
- "version": "1.0.1",
- "from": "finalhandler@1.0.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.1.tgz",
- "dev": true
- },
- "ms": {
- "version": "0.7.2",
- "from": "ms@0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "version": "1.0.3",
+ "from": "finalhandler@1.0.3",
+ "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
"dev": true
}
}
@@ -2353,12 +2341,12 @@
"create-hash": {
"version": "1.1.3",
"from": "create-hash@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz"
+ "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz"
},
"create-hmac": {
"version": "1.1.6",
"from": "create-hmac@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz"
+ "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz"
},
"cross-env": {
"version": "4.0.0",
@@ -2424,7 +2412,7 @@
"css-loader": {
"version": "0.28.1",
"from": "css-loader@>=0.28.0 <0.29.0",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.1.tgz",
+ "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.1.tgz",
"dependencies": {
"loader-utils": {
"version": "1.1.0",
@@ -2518,9 +2506,9 @@
"resolved": "https://registry.npmjs.org/cwise/-/cwise-1.0.10.tgz",
"dependencies": {
"uglify-js": {
- "version": "2.8.23",
+ "version": "2.8.26",
"from": "uglify-js@>=2.6.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz"
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.8.26.tgz"
}
}
},
@@ -2582,9 +2570,9 @@
"resolved": "https://registry.npmjs.org/deap/-/deap-1.0.0.tgz"
},
"debug": {
- "version": "2.6.6",
+ "version": "2.6.7",
"from": "debug@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.6.tgz"
+ "resolved": "http://registry.npmjs.org/debug/-/debug-2.6.7.tgz"
},
"debug-fabulous": {
"version": "0.0.4",
@@ -2700,7 +2688,7 @@
"tar-stream": {
"version": "1.5.4",
"from": "tar-stream@>=1.1.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz"
+ "resolved": "http://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz"
},
"through2": {
"version": "0.6.5",
@@ -2744,7 +2732,7 @@
"tar-stream": {
"version": "1.5.4",
"from": "tar-stream@>=1.1.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz"
+ "resolved": "http://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz"
},
"through2": {
"version": "0.6.5",
@@ -2788,7 +2776,7 @@
"tar-stream": {
"version": "1.5.4",
"from": "tar-stream@>=1.1.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz"
+ "resolved": "http://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz"
},
"through2": {
"version": "0.6.5",
@@ -2876,7 +2864,7 @@
"deep-extend": {
"version": "0.4.2",
"from": "deep-extend@>=0.4.0 <0.5.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz"
+ "resolved": "http://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz"
},
"deep-is": {
"version": "0.1.3",
@@ -3231,9 +3219,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.3.10",
+ "version": "1.3.11",
"from": "electron-to-chromium@>=1.2.7 <2.0.0",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.10.tgz"
+ "resolved": "http://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.11.tgz"
},
"elliptic": {
"version": "6.4.0",
@@ -3353,9 +3341,9 @@
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz"
},
"es5-ext": {
- "version": "0.10.16",
+ "version": "0.10.20",
"from": "es5-ext@>=0.10.6 <0.11.0",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.16.tgz"
+ "resolved": "http://registry.npmjs.org/es5-ext/-/es5-ext-0.10.20.tgz"
},
"es6-iterator": {
"version": "2.0.1",
@@ -4210,700 +4198,6 @@
"from": "fs.realpath@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
},
- "fsevents": {
- "version": "1.1.1",
- "from": "fsevents@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz",
- "optional": true,
- "dependencies": {
- "abbrev": {
- "version": "1.1.0",
- "from": "abbrev@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "from": "ansi-regex@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
- },
- "ansi-styles": {
- "version": "2.2.1",
- "from": "ansi-styles@>=2.2.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "optional": true
- },
- "aproba": {
- "version": "1.1.1",
- "from": "aproba@>=1.0.3 <2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz",
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.2",
- "from": "are-we-there-yet@>=1.1.2 <1.2.0",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz",
- "optional": true
- },
- "asn1": {
- "version": "0.2.3",
- "from": "asn1@>=0.2.3 <0.3.0",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "optional": true
- },
- "assert-plus": {
- "version": "0.2.0",
- "from": "assert-plus@>=0.2.0 <0.3.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "optional": true
- },
- "asynckit": {
- "version": "0.4.0",
- "from": "asynckit@>=0.4.0 <0.5.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "optional": true
- },
- "aws-sign2": {
- "version": "0.6.0",
- "from": "aws-sign2@>=0.6.0 <0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "optional": true
- },
- "aws4": {
- "version": "1.6.0",
- "from": "aws4@>=1.2.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
- "optional": true
- },
- "balanced-match": {
- "version": "0.4.2",
- "from": "balanced-match@>=0.4.1 <0.5.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz"
- },
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "from": "bcrypt-pbkdf@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "optional": true
- },
- "block-stream": {
- "version": "0.0.9",
- "from": "block-stream@*",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz"
- },
- "boom": {
- "version": "2.10.1",
- "from": "boom@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
- },
- "brace-expansion": {
- "version": "1.1.6",
- "from": "brace-expansion@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz"
- },
- "buffer-shims": {
- "version": "1.0.0",
- "from": "buffer-shims@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz"
- },
- "caseless": {
- "version": "0.11.0",
- "from": "caseless@>=0.11.0 <0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
- "optional": true
- },
- "chalk": {
- "version": "1.1.3",
- "from": "chalk@>=1.1.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "from": "code-point-at@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
- },
- "combined-stream": {
- "version": "1.0.5",
- "from": "combined-stream@>=1.0.5 <1.1.0",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
- },
- "commander": {
- "version": "2.9.0",
- "from": "commander@>=2.9.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
- "optional": true
- },
- "concat-map": {
- "version": "0.0.1",
- "from": "concat-map@0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
- },
- "console-control-strings": {
- "version": "1.1.0",
- "from": "console-control-strings@>=1.1.0 <1.2.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
- },
- "core-util-is": {
- "version": "1.0.2",
- "from": "core-util-is@>=1.0.0 <1.1.0",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
- },
- "cryptiles": {
- "version": "2.0.5",
- "from": "cryptiles@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "optional": true
- },
- "dashdash": {
- "version": "1.14.1",
- "from": "dashdash@>=1.12.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "optional": true,
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "from": "assert-plus@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "optional": true
- }
- }
- },
- "debug": {
- "version": "2.2.0",
- "from": "debug@>=2.2.0 <2.3.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
- "optional": true
- },
- "deep-extend": {
- "version": "0.4.1",
- "from": "deep-extend@>=0.4.0 <0.5.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz",
- "optional": true
- },
- "delayed-stream": {
- "version": "1.0.0",
- "from": "delayed-stream@>=1.0.0 <1.1.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
- },
- "delegates": {
- "version": "1.0.0",
- "from": "delegates@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "optional": true
- },
- "ecc-jsbn": {
- "version": "0.1.1",
- "from": "ecc-jsbn@>=0.1.1 <0.2.0",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "optional": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "from": "escape-string-regexp@>=1.0.2 <2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "optional": true
- },
- "extend": {
- "version": "3.0.0",
- "from": "extend@>=3.0.0 <3.1.0",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
- "optional": true
- },
- "extsprintf": {
- "version": "1.0.2",
- "from": "extsprintf@1.0.2",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
- },
- "forever-agent": {
- "version": "0.6.1",
- "from": "forever-agent@>=0.6.1 <0.7.0",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "optional": true
- },
- "form-data": {
- "version": "2.1.2",
- "from": "form-data@>=2.1.1 <2.2.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz",
- "optional": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "from": "fs.realpath@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
- },
- "fstream": {
- "version": "1.0.10",
- "from": "fstream@>=1.0.2 <2.0.0",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz"
- },
- "fstream-ignore": {
- "version": "1.0.5",
- "from": "fstream-ignore@>=1.0.5 <1.1.0",
- "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz",
- "optional": true
- },
- "gauge": {
- "version": "2.7.3",
- "from": "gauge@>=2.7.1 <2.8.0",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.3.tgz",
- "optional": true
- },
- "generate-function": {
- "version": "2.0.0",
- "from": "generate-function@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
- "optional": true
- },
- "generate-object-property": {
- "version": "1.2.0",
- "from": "generate-object-property@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "optional": true
- },
- "getpass": {
- "version": "0.1.6",
- "from": "getpass@>=0.1.1 <0.2.0",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz",
- "optional": true,
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "from": "assert-plus@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "optional": true
- }
- }
- },
- "glob": {
- "version": "7.1.1",
- "from": "glob@>=7.0.5 <8.0.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
- },
- "graceful-fs": {
- "version": "4.1.11",
- "from": "graceful-fs@>=4.1.2 <5.0.0",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
- },
- "graceful-readlink": {
- "version": "1.0.1",
- "from": "graceful-readlink@>=1.0.0",
- "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
- "optional": true
- },
- "har-validator": {
- "version": "2.0.6",
- "from": "har-validator@>=2.0.6 <2.1.0",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
- "optional": true
- },
- "has-ansi": {
- "version": "2.0.0",
- "from": "has-ansi@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "optional": true
- },
- "has-unicode": {
- "version": "2.0.1",
- "from": "has-unicode@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "optional": true
- },
- "hawk": {
- "version": "3.1.3",
- "from": "hawk@>=3.1.3 <3.2.0",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "optional": true
- },
- "hoek": {
- "version": "2.16.3",
- "from": "hoek@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
- },
- "http-signature": {
- "version": "1.1.1",
- "from": "http-signature@>=1.1.0 <1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "optional": true
- },
- "inflight": {
- "version": "1.0.6",
- "from": "inflight@>=1.0.4 <2.0.0",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
- },
- "inherits": {
- "version": "2.0.3",
- "from": "inherits@>=2.0.1 <2.1.0",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
- },
- "ini": {
- "version": "1.3.4",
- "from": "ini@>=1.3.0 <1.4.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
- },
- "is-my-json-valid": {
- "version": "2.15.0",
- "from": "is-my-json-valid@>=2.12.4 <3.0.0",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz",
- "optional": true
- },
- "is-property": {
- "version": "1.0.2",
- "from": "is-property@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "optional": true
- },
- "is-typedarray": {
- "version": "1.0.0",
- "from": "is-typedarray@>=1.0.0 <1.1.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "optional": true
- },
- "isarray": {
- "version": "1.0.0",
- "from": "isarray@>=1.0.0 <1.1.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
- },
- "isstream": {
- "version": "0.1.2",
- "from": "isstream@>=0.1.2 <0.2.0",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "optional": true
- },
- "jodid25519": {
- "version": "1.0.2",
- "from": "jodid25519@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
- "optional": true
- },
- "jsbn": {
- "version": "0.1.1",
- "from": "jsbn@>=0.1.0 <0.2.0",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "optional": true
- },
- "json-schema": {
- "version": "0.2.3",
- "from": "json-schema@0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "optional": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "from": "json-stringify-safe@>=5.0.1 <5.1.0",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "optional": true
- },
- "jsonpointer": {
- "version": "4.0.1",
- "from": "jsonpointer@>=4.0.0 <5.0.0",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
- "optional": true
- },
- "jsprim": {
- "version": "1.3.1",
- "from": "jsprim@>=1.2.2 <2.0.0",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz",
- "optional": true
- },
- "mime-db": {
- "version": "1.26.0",
- "from": "mime-db@>=1.26.0 <1.27.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz"
- },
- "mime-types": {
- "version": "2.1.14",
- "from": "mime-types@>=2.1.7 <2.2.0",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz"
- },
- "minimatch": {
- "version": "3.0.3",
- "from": "minimatch@>=3.0.2 <4.0.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
- },
- "minimist": {
- "version": "0.0.8",
- "from": "minimist@0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
- },
- "mkdirp": {
- "version": "0.5.1",
- "from": "mkdirp@>=0.5.1 <0.6.0",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
- },
- "ms": {
- "version": "0.7.1",
- "from": "ms@0.7.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
- "optional": true
- },
- "node-pre-gyp": {
- "version": "0.6.33",
- "from": "node-pre-gyp@>=0.6.29 <0.7.0",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz",
- "optional": true
- },
- "nopt": {
- "version": "3.0.6",
- "from": "nopt@>=3.0.6 <3.1.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "optional": true
- },
- "npmlog": {
- "version": "4.0.2",
- "from": "npmlog@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz",
- "optional": true
- },
- "number-is-nan": {
- "version": "1.0.1",
- "from": "number-is-nan@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
- },
- "oauth-sign": {
- "version": "0.8.2",
- "from": "oauth-sign@>=0.8.1 <0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "from": "object-assign@>=4.1.0 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "from": "once@>=1.3.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "from": "path-is-absolute@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
- },
- "pinkie": {
- "version": "2.0.4",
- "from": "pinkie@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "optional": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "from": "pinkie-promise@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "optional": true
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "from": "process-nextick-args@>=1.0.6 <1.1.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
- },
- "punycode": {
- "version": "1.4.1",
- "from": "punycode@>=1.4.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "optional": true
- },
- "qs": {
- "version": "6.3.1",
- "from": "qs@>=6.3.0 <6.4.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz",
- "optional": true
- },
- "rc": {
- "version": "1.1.7",
- "from": "rc@>=1.1.6 <1.2.0",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz",
- "optional": true,
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "from": "minimist@>=1.2.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "optional": true
- }
- }
- },
- "readable-stream": {
- "version": "2.2.2",
- "from": "readable-stream@>=2.0.0 <3.0.0||>=1.1.13 <2.0.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz",
- "optional": true
- },
- "request": {
- "version": "2.79.0",
- "from": "request@>=2.79.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
- "optional": true
- },
- "rimraf": {
- "version": "2.5.4",
- "from": "rimraf@>=2.5.4 <2.6.0",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz"
- },
- "semver": {
- "version": "5.3.0",
- "from": "semver@>=5.3.0 <5.4.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "from": "set-blocking@>=2.0.0 <2.1.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "from": "signal-exit@>=3.0.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "optional": true
- },
- "sntp": {
- "version": "1.0.9",
- "from": "sntp@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "optional": true
- },
- "sshpk": {
- "version": "1.10.2",
- "from": "sshpk@>=1.7.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz",
- "optional": true,
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "from": "assert-plus@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "optional": true
- }
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "from": "string_decoder@>=0.10.0 <0.11.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
- },
- "string-width": {
- "version": "1.0.2",
- "from": "string-width@>=1.0.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
- },
- "stringstream": {
- "version": "0.0.5",
- "from": "stringstream@>=0.0.4 <0.1.0",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
- "optional": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "from": "strip-ansi@>=3.0.1 <4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "from": "strip-json-comments@>=2.0.1 <2.1.0",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "optional": true
- },
- "supports-color": {
- "version": "2.0.0",
- "from": "supports-color@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "optional": true
- },
- "tar": {
- "version": "2.2.1",
- "from": "tar@>=2.2.1 <2.3.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz"
- },
- "tar-pack": {
- "version": "3.3.0",
- "from": "tar-pack@>=3.3.0 <3.4.0",
- "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz",
- "optional": true,
- "dependencies": {
- "once": {
- "version": "1.3.3",
- "from": "once@>=1.3.3 <1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
- "optional": true
- },
- "readable-stream": {
- "version": "2.1.5",
- "from": "readable-stream@>=2.1.4 <2.2.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
- "optional": true
- }
- }
- },
- "tough-cookie": {
- "version": "2.3.2",
- "from": "tough-cookie@>=2.3.0 <2.4.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
- "optional": true
- },
- "tunnel-agent": {
- "version": "0.4.3",
- "from": "tunnel-agent@>=0.4.1 <0.5.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "optional": true
- },
- "tweetnacl": {
- "version": "0.14.5",
- "from": "tweetnacl@>=0.14.0 <0.15.0",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "optional": true
- },
- "uid-number": {
- "version": "0.0.6",
- "from": "uid-number@>=0.0.6 <0.1.0",
- "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
- "optional": true
- },
- "util-deprecate": {
- "version": "1.0.2",
- "from": "util-deprecate@>=1.0.1 <1.1.0",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
- },
- "uuid": {
- "version": "3.0.1",
- "from": "uuid@>=3.0.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
- "optional": true
- },
- "verror": {
- "version": "1.3.6",
- "from": "verror@1.3.6",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
- "optional": true
- },
- "wide-align": {
- "version": "1.1.0",
- "from": "wide-align@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz",
- "optional": true
- },
- "wrappy": {
- "version": "1.0.2",
- "from": "wrappy@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
- },
- "xtend": {
- "version": "4.0.1",
- "from": "xtend@>=4.0.0 <5.0.0",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "optional": true
- }
- }
- },
"fstream": {
"version": "1.0.11",
"from": "fstream@>=1.0.2 <2.0.0",
@@ -5519,9 +4813,9 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
},
"uglify-js": {
- "version": "2.8.23",
+ "version": "2.8.26",
"from": "uglify-js@>=2.4.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz"
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.8.26.tgz"
}
}
},
@@ -6103,7 +5397,7 @@
"hash-base": {
"version": "2.0.2",
"from": "hash-base@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz"
+ "resolved": "http://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz"
},
"hash-sum": {
"version": "1.0.2",
@@ -6177,19 +5471,19 @@
"dev": true
},
"html-minifier": {
- "version": "3.4.4",
+ "version": "3.5.0",
"from": "html-minifier@>=3.2.3 <4.0.0",
- "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.4.4.tgz",
+ "resolved": "http://registry.npmjs.org/html-minifier/-/html-minifier-3.5.0.tgz",
"dependencies": {
"clean-css": {
- "version": "4.0.13",
- "from": "clean-css@>=4.0.0 <4.1.0",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.0.13.tgz"
+ "version": "4.1.2",
+ "from": "clean-css@>=4.1.0 <4.2.0",
+ "resolved": "http://registry.npmjs.org/clean-css/-/clean-css-4.1.2.tgz"
},
"uglify-js": {
- "version": "2.8.23",
- "from": "uglify-js@>=2.8.22 <2.9.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz"
+ "version": "3.0.7",
+ "from": "uglify-js@>=3.0.0 <3.1.0",
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-3.0.7.tgz"
}
}
},
@@ -7142,9 +6436,9 @@
"dev": true
},
"uglify-js": {
- "version": "2.8.23",
+ "version": "2.8.26",
"from": "uglify-js@>=2.6.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz",
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.8.26.tgz",
"dev": true,
"optional": true,
"dependencies": {
@@ -7167,7 +6461,7 @@
"clean-css": {
"version": "3.4.26",
"from": "clean-css@>=3.1.9 <4.0.0",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.26.tgz",
+ "resolved": "http://registry.npmjs.org/clean-css/-/clean-css-3.4.26.tgz",
"dependencies": {
"commander": {
"version": "2.8.1",
@@ -7187,9 +6481,9 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz"
},
"uglify-js": {
- "version": "2.8.23",
+ "version": "2.8.26",
"from": "uglify-js@>=2.4.19 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz",
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.8.26.tgz",
"dependencies": {
"source-map": {
"version": "0.5.6",
@@ -7267,7 +6561,7 @@
"js-beautify": {
"version": "1.6.14",
"from": "js-beautify@>=1.6.3 <2.0.0",
- "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.6.14.tgz"
+ "resolved": "http://registry.npmjs.org/js-beautify/-/js-beautify-1.6.14.tgz"
},
"js-stringify": {
"version": "1.0.2",
@@ -7355,7 +6649,7 @@
"jsonparse": {
"version": "1.3.1",
"from": "jsonparse@>=1.2.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz"
+ "resolved": "http://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz"
},
"jsonpointer": {
"version": "4.0.1",
@@ -7421,7 +6715,7 @@
"mime": {
"version": "1.3.6",
"from": "mime@>=1.3.4 <2.0.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
"dev": true
},
"tmp": {
@@ -7560,9 +6854,9 @@
"dev": true
},
"uglify-js": {
- "version": "2.8.23",
+ "version": "2.8.26",
"from": "uglify-js@>=2.6.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz",
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.8.26.tgz",
"dev": true,
"optional": true
},
@@ -7675,9 +6969,9 @@
"resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.1.tgz"
},
"kind-of": {
- "version": "3.2.0",
+ "version": "3.2.2",
"from": "kind-of@>=3.0.2 <4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz"
+ "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz"
},
"klaw": {
"version": "1.3.1",
@@ -7719,7 +7013,7 @@
"lazy-debug-legacy": {
"version": "0.0.1",
"from": "lazy-debug-legacy@>=0.0.0 <0.1.0",
- "resolved": "https://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz"
+ "resolved": "http://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz"
},
"lazy-req": {
"version": "1.1.0",
@@ -8356,7 +7650,7 @@
"make-dir": {
"version": "1.0.0",
"from": "make-dir@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz"
+ "resolved": "http://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz"
},
"map-cache": {
"version": "0.2.2",
@@ -8577,9 +7871,9 @@
"resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz"
},
"mocha": {
- "version": "3.3.0",
+ "version": "3.4.1",
"from": "mocha@>=3.2.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.3.0.tgz",
+ "resolved": "http://registry.npmjs.org/mocha/-/mocha-3.4.1.tgz",
"dependencies": {
"debug": {
"version": "2.6.0",
@@ -8689,9 +7983,9 @@
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.10.tgz"
},
"mongoose": {
- "version": "4.9.8",
+ "version": "4.9.9",
"from": "mongoose@>=4.8.6 <5.0.0",
- "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.9.8.tgz",
+ "resolved": "http://registry.npmjs.org/mongoose/-/mongoose-4.9.9.tgz",
"dependencies": {
"async": {
"version": "2.1.4",
@@ -8787,9 +8081,9 @@
}
},
"ms": {
- "version": "0.7.3",
- "from": "ms@0.7.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz"
+ "version": "2.0.0",
+ "from": "ms@2.0.0",
+ "resolved": "http://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
},
"multipipe": {
"version": "0.1.2",
@@ -9183,9 +8477,9 @@
}
},
"node-sass": {
- "version": "4.5.2",
+ "version": "4.5.3",
"from": "node-sass@>=4.5.0 <5.0.0",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.2.tgz",
+ "resolved": "http://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz",
"dependencies": {
"caseless": {
"version": "0.12.0",
@@ -9746,7 +9040,7 @@
"pageres": {
"version": "4.5.0",
"from": "pageres@>=4.1.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/pageres/-/pageres-4.5.0.tgz",
+ "resolved": "http://registry.npmjs.org/pageres/-/pageres-4.5.0.tgz",
"dependencies": {
"filename-reserved-regex": {
"version": "2.0.0",
@@ -9953,7 +9247,7 @@
"pbkdf2": {
"version": "3.0.12",
"from": "pbkdf2@>=3.0.3 <4.0.0",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz"
+ "resolved": "http://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz"
},
"pend": {
"version": "1.2.0",
@@ -10560,7 +9854,7 @@
"clean-css": {
"version": "3.4.26",
"from": "clean-css@>=3.3.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.26.tgz"
+ "resolved": "http://registry.npmjs.org/clean-css/-/clean-css-3.4.26.tgz"
},
"commander": {
"version": "2.8.1",
@@ -10583,9 +9877,9 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz"
},
"uglify-js": {
- "version": "2.8.23",
+ "version": "2.8.26",
"from": "uglify-js@>=2.6.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz",
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.8.26.tgz",
"dependencies": {
"source-map": {
"version": "0.5.6",
@@ -11134,7 +10428,7 @@
"ripemd160": {
"version": "2.0.1",
"from": "ripemd160@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz"
+ "resolved": "http://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz"
},
"run-async": {
"version": "0.1.0",
@@ -11175,9 +10469,9 @@
"dev": true
},
"sass-graph": {
- "version": "2.2.3",
+ "version": "2.2.4",
"from": "sass-graph@>=2.1.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.3.tgz",
+ "resolved": "http://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
"dependencies": {
"camelcase": {
"version": "3.0.0",
@@ -11195,16 +10489,16 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
},
"yargs": {
- "version": "6.6.0",
- "from": "yargs@>=6.6.0 <7.0.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz"
+ "version": "7.1.0",
+ "from": "yargs@>=7.0.0 <8.0.0",
+ "resolved": "http://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz"
}
}
},
"sass-loader": {
"version": "6.0.5",
"from": "sass-loader@>=6.0.2 <7.0.0",
- "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.5.tgz",
+ "resolved": "http://registry.npmjs.org/sass-loader/-/sass-loader-6.0.5.tgz",
"dependencies": {
"async": {
"version": "2.4.0",
@@ -11249,7 +10543,7 @@
"scss-tokenizer": {
"version": "0.2.3",
"from": "scss-tokenizer@>=0.2.3 <0.3.0",
- "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "resolved": "http://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
"dependencies": {
"source-map": {
"version": "0.4.4",
@@ -11389,9 +10683,9 @@
"resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz"
},
"serve-favicon": {
- "version": "2.4.2",
+ "version": "2.4.3",
"from": "serve-favicon@>=2.3.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.2.tgz",
+ "resolved": "http://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.3.tgz",
"dependencies": {
"etag": {
"version": "1.8.0",
@@ -11402,11 +10696,6 @@
"version": "0.5.0",
"from": "fresh@0.5.0",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz"
- },
- "ms": {
- "version": "1.0.0",
- "from": "ms@1.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-1.0.0.tgz"
}
}
},
@@ -11840,9 +11129,9 @@
"dev": true
},
"stack-trace": {
- "version": "0.0.9",
+ "version": "0.0.10",
"from": "stack-trace@>=0.0.0 <0.1.0",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz"
+ "resolved": "http://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"
},
"stat-mode": {
"version": "0.2.2",
@@ -11977,7 +11266,7 @@
"stream-http": {
"version": "2.7.1",
"from": "stream-http@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.1.tgz",
+ "resolved": "http://registry.npmjs.org/stream-http/-/stream-http-2.7.1.tgz",
"dependencies": {
"readable-stream": {
"version": "2.2.9",
@@ -12127,7 +11416,7 @@
"stripe": {
"version": "4.19.0",
"from": "stripe@>=4.2.0 <5.0.0",
- "resolved": "https://registry.npmjs.org/stripe/-/stripe-4.19.0.tgz",
+ "resolved": "http://registry.npmjs.org/stripe/-/stripe-4.19.0.tgz",
"dependencies": {
"bluebird": {
"version": "2.11.0",
@@ -12203,7 +11492,7 @@
"mime": {
"version": "1.3.6",
"from": "mime@>=1.3.4 <2.0.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz"
+ "resolved": "http://registry.npmjs.org/mime/-/mime-1.3.6.tgz"
}
}
},
@@ -12429,9 +11718,9 @@
"resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz"
},
"time-stamp": {
- "version": "1.0.1",
+ "version": "1.1.0",
"from": "time-stamp@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz"
+ "resolved": "http://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz"
},
"timed-out": {
"version": "4.0.1",
@@ -12650,7 +11939,7 @@
"uglify-js-harmony": {
"version": "2.7.7",
"from": "uglify-js-harmony@>=2.7.5 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js-harmony/-/uglify-js-harmony-2.7.7.tgz",
+ "resolved": "http://registry.npmjs.org/uglify-js-harmony/-/uglify-js-harmony-2.7.7.tgz",
"dependencies": {
"async": {
"version": "0.2.10",
@@ -12850,7 +12139,7 @@
"mime": {
"version": "1.3.6",
"from": "mime@>=1.3.0 <1.4.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz"
+ "resolved": "http://registry.npmjs.org/mime/-/mime-1.3.6.tgz"
}
}
},
@@ -13144,7 +12433,7 @@
"vue": {
"version": "2.3.3",
"from": "vue@>=2.1.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.3.3.tgz"
+ "resolved": "http://registry.npmjs.org/vue/-/vue-2.3.3.tgz"
},
"vue-hot-reload-api": {
"version": "2.1.0",
@@ -13176,7 +12465,7 @@
"vue-mugen-scroll": {
"version": "0.2.4",
"from": "vue-mugen-scroll@>=0.2.1 <0.3.0",
- "resolved": "https://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.4.tgz",
+ "resolved": "http://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.4.tgz",
"dependencies": {
"throttleit": {
"version": "1.0.0",
@@ -13193,7 +12482,7 @@
"vue-style-loader": {
"version": "3.0.1",
"from": "vue-style-loader@>=3.0.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.1.tgz",
+ "resolved": "http://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.1.tgz",
"dependencies": {
"loader-utils": {
"version": "1.1.0",
@@ -13205,7 +12494,7 @@
"vue-template-compiler": {
"version": "2.3.3",
"from": "vue-template-compiler@>=2.1.10 <3.0.0",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.3.3.tgz"
+ "resolved": "http://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.3.3.tgz"
},
"vue-template-es2015-compiler": {
"version": "1.5.2",
@@ -13260,9 +12549,9 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz"
},
"uglify-js": {
- "version": "2.8.23",
+ "version": "2.8.26",
"from": "uglify-js@>=2.8.5 <3.0.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.23.tgz",
+ "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.8.26.tgz",
"dependencies": {
"yargs": {
"version": "3.10.0",
@@ -13292,13 +12581,25 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz"
}
}
+ },
+ "yargs-parser": {
+ "version": "4.2.1",
+ "from": "yargs-parser@>=4.2.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "from": "camelcase@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz"
+ }
+ }
}
}
},
"webpack-bundle-analyzer": {
"version": "2.8.1",
"from": "webpack-bundle-analyzer@>=2.2.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.8.1.tgz",
+ "resolved": "http://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.8.1.tgz",
"dev": true,
"dependencies": {
"acorn": {
@@ -13307,12 +12608,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz",
"dev": true
},
- "debug": {
- "version": "2.6.1",
- "from": "debug@2.6.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
- "dev": true
- },
"ejs": {
"version": "2.5.6",
"from": "ejs@>=2.5.6 <3.0.0",
@@ -13326,30 +12621,16 @@
"dev": true
},
"express": {
- "version": "4.15.2",
+ "version": "4.15.3",
"from": "express@>=4.15.2 <5.0.0",
- "resolved": "https://registry.npmjs.org/express/-/express-4.15.2.tgz",
+ "resolved": "http://registry.npmjs.org/express/-/express-4.15.3.tgz",
"dev": true
},
"finalhandler": {
- "version": "1.0.2",
- "from": "finalhandler@>=1.0.0 <1.1.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.2.tgz",
- "dev": true,
- "dependencies": {
- "debug": {
- "version": "2.6.4",
- "from": "debug@2.6.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz",
- "dev": true
- },
- "ms": {
- "version": "0.7.3",
- "from": "ms@0.7.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz",
- "dev": true
- }
- }
+ "version": "1.0.3",
+ "from": "finalhandler@>=1.0.3 <1.1.0",
+ "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
+ "dev": true
},
"fresh": {
"version": "0.5.0",
@@ -13369,12 +12650,6 @@
"resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
"dev": true
},
- "ms": {
- "version": "0.7.2",
- "from": "ms@0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "dev": true
- },
"qs": {
"version": "6.4.0",
"from": "qs@6.4.0",
@@ -13382,27 +12657,27 @@
"dev": true
},
"send": {
- "version": "0.15.1",
- "from": "send@0.15.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz",
+ "version": "0.15.3",
+ "from": "send@0.15.3",
+ "resolved": "http://registry.npmjs.org/send/-/send-0.15.3.tgz",
"dev": true
},
"serve-static": {
- "version": "1.12.1",
- "from": "serve-static@1.12.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.1.tgz",
+ "version": "1.12.3",
+ "from": "serve-static@1.12.3",
+ "resolved": "http://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz",
"dev": true
},
"ultron": {
"version": "1.1.0",
"from": "ultron@>=1.1.0 <1.2.0",
- "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz",
+ "resolved": "http://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz",
"dev": true
},
"ws": {
"version": "2.3.1",
"from": "ws@>=2.3.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz",
+ "resolved": "http://registry.npmjs.org/ws/-/ws-2.3.1.tgz",
"dev": true
}
}
@@ -13416,7 +12691,7 @@
"mime": {
"version": "1.3.6",
"from": "mime@>=1.3.4 <2.0.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
+ "resolved": "http://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
"dev": true
}
}
@@ -13455,7 +12730,7 @@
"wide-align": {
"version": "1.1.2",
"from": "wide-align@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz"
+ "resolved": "http://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz"
},
"win-release": {
"version": "1.1.1",
@@ -13630,9 +12905,9 @@
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz"
},
"yargs-parser": {
- "version": "4.2.1",
- "from": "yargs-parser@>=4.2.0 <5.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
+ "version": "5.0.0",
+ "from": "yargs-parser@>=5.0.0 <6.0.0",
+ "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
"dependencies": {
"camelcase": {
"version": "3.0.0",
diff --git a/website/client/assets/chat/copy.svg b/website/client/assets/chat/copy.svg
new file mode 100644
index 0000000000..268531a9a6
--- /dev/null
+++ b/website/client/assets/chat/copy.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/client/assets/chat/delete.svg b/website/client/assets/chat/delete.svg
new file mode 100644
index 0000000000..64b691f361
--- /dev/null
+++ b/website/client/assets/chat/delete.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/client/assets/chat/like.svg b/website/client/assets/chat/like.svg
new file mode 100644
index 0000000000..56f24f5ebe
--- /dev/null
+++ b/website/client/assets/chat/like.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/client/assets/chat/liked.svg b/website/client/assets/chat/liked.svg
new file mode 100644
index 0000000000..44dd5ec3d5
--- /dev/null
+++ b/website/client/assets/chat/liked.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/client/assets/chat/report.svg b/website/client/assets/chat/report.svg
new file mode 100644
index 0000000000..006d817947
--- /dev/null
+++ b/website/client/assets/chat/report.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/client/assets/guilds/bronze-guild-badge.svg b/website/client/assets/guilds/bronze-guild-badge.svg
new file mode 100644
index 0000000000..d8b829c62b
--- /dev/null
+++ b/website/client/assets/guilds/bronze-guild-badge.svg
@@ -0,0 +1,18 @@
+
diff --git a/website/client/assets/guilds/gold-guild-badge.svg b/website/client/assets/guilds/gold-guild-badge.svg
new file mode 100644
index 0000000000..29ea8e7d54
--- /dev/null
+++ b/website/client/assets/guilds/gold-guild-badge.svg
@@ -0,0 +1,18 @@
+
diff --git a/website/client/assets/guilds/green-gem.svg b/website/client/assets/guilds/green-gem.svg
new file mode 100644
index 0000000000..6d3331ce47
--- /dev/null
+++ b/website/client/assets/guilds/green-gem.svg
@@ -0,0 +1,10 @@
+
diff --git a/website/client/assets/guilds/grey-badge.svg b/website/client/assets/guilds/grey-badge.svg
new file mode 100644
index 0000000000..1c42e5a78d
--- /dev/null
+++ b/website/client/assets/guilds/grey-badge.svg
@@ -0,0 +1,13 @@
+
diff --git a/website/client/assets/guilds/information.svg b/website/client/assets/guilds/information.svg
new file mode 100644
index 0000000000..cb4a531a1e
--- /dev/null
+++ b/website/client/assets/guilds/information.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/client/assets/guilds/silver-guild-badge.svg b/website/client/assets/guilds/silver-guild-badge.svg
new file mode 100644
index 0000000000..8a4b120aea
--- /dev/null
+++ b/website/client/assets/guilds/silver-guild-badge.svg
@@ -0,0 +1,18 @@
+
diff --git a/website/client/assets/scss/button.scss b/website/client/assets/scss/button.scss
index 544c3d6693..e84de3e4d7 100644
--- a/website/client/assets/scss/button.scss
+++ b/website/client/assets/scss/button.scss
@@ -122,4 +122,4 @@
box-shadow: none;
color: inherit !important;
}
-}
\ No newline at end of file
+}
diff --git a/website/client/assets/scss/dropdown.scss b/website/client/assets/scss/dropdown.scss
index 54e47a70b2..5e267b6391 100644
--- a/website/client/assets/scss/dropdown.scss
+++ b/website/client/assets/scss/dropdown.scss
@@ -57,4 +57,4 @@
color: $gray-10;
margin-right: 20px;
margin-left: 20px;
-}
\ No newline at end of file
+}
diff --git a/website/client/assets/scss/form.scss b/website/client/assets/scss/form.scss
index 136cf0fef9..38e3654310 100644
--- a/website/client/assets/scss/form.scss
+++ b/website/client/assets/scss/form.scss
@@ -27,7 +27,7 @@ input, textarea, input.form-control, textarea.form-control {
background: $gray-500;
}
- &.input-search { // TODO Abstract to work with all icons
+ &.input-search { // TODO Abstract to work with all icons
background-repeat: no-repeat;
background-position: center left 16px;
background-size: 16px 16px;
@@ -165,4 +165,4 @@ $bg-disabled-control: #34303a;
&:focus:disabled:checked~.custom-control-indicator, &:active:disabled:checked~.custom-control-indicator {
border-color: $gray-400;
}
-}
\ No newline at end of file
+}
diff --git a/website/client/assets/scss/index.scss b/website/client/assets/scss/index.scss
index a162a8fe06..cf1df2022c 100644
--- a/website/client/assets/scss/index.scss
+++ b/website/client/assets/scss/index.scss
@@ -19,4 +19,3 @@
@import './dropdown';
@import './popover';
@import './item';
-
diff --git a/website/client/assets/scss/item.scss b/website/client/assets/scss/item.scss
index 51161e1b8a..ee131e7e99 100644
--- a/website/client/assets/scss/item.scss
+++ b/website/client/assets/scss/item.scss
@@ -64,4 +64,4 @@
text-align: center;
color: $gray-400;
margin-top: 4px;
-}
\ No newline at end of file
+}
diff --git a/website/client/assets/scss/page.scss b/website/client/assets/scss/page.scss
index 70509ad83c..5a0dd456f8 100644
--- a/website/client/assets/scss/page.scss
+++ b/website/client/assets/scss/page.scss
@@ -16,4 +16,4 @@ html, body {
.page-header {
color: $purple-200;
-}
\ No newline at end of file
+}
diff --git a/website/client/assets/scss/typography.scss b/website/client/assets/scss/typography.scss
index 7e0aae6e43..09b09da720 100644
--- a/website/client/assets/scss/typography.scss
+++ b/website/client/assets/scss/typography.scss
@@ -48,4 +48,4 @@ h3 {
h4 {
font-size: 14px;
line-height: 1.43;
-}
\ No newline at end of file
+}
diff --git a/website/client/components/appMenu.vue b/website/client/components/appMenu.vue
index 0f3e4fc58d..6625808194 100644
--- a/website/client/components/appMenu.vue
+++ b/website/client/components/appMenu.vue
@@ -5,7 +5,7 @@ nav.navbar.navbar-inverse.fixed-top.navbar-toggleable-sm
img(src="~assets/header/png/logo@3x.png")
.collapse.navbar-collapse
ul.navbar-nav.mr-auto
- router-link.nav-item(tag="li", :to="{name: 'tasks'}", exact)
+ router-link.nav-item(tag="li", :to="{name: 'tasks'}", exact)
a.nav-link(v-once) {{ $t('tasks') }}
router-link.nav-item.dropdown(tag="li", :to="{name: 'items'}", :class="{'active': $route.path.startsWith('/inventory')}")
a.nav-link(v-once) {{ $t('inventory') }}
@@ -13,16 +13,20 @@ nav.navbar.navbar-inverse.fixed-top.navbar-toggleable-sm
router-link.dropdown-item(:to="{name: 'items'}", exact) {{ $t('items') }}
router-link.dropdown-item(:to="{name: 'equipment'}") {{ $t('equipment') }}
router-link.dropdown-item(:to="{name: 'stable'}") {{ $t('stable') }}
- router-link.nav-item(tag="li", :to="{name: 'market'}", exact)
+ router-link.nav-item(tag="li", :to="{name: 'market'}", exact)
a.nav-link(v-once) {{ $t('market') }}
+ router-link.nav-item.dropdown(tag="li", :to="{name: 'tavern'}", :class="{'active': $route.path.startsWith('/guilds')}")
+ a.nav-link(v-once) {{ $t('guilds') }}
+ .dropdown-menu
+ router-link.dropdown-item(:to="{name: 'tavern'}") {{ $t('tavern') }}
+ router-link.dropdown-item(:to="{name: 'myGuilds'}") {{ $t('myGuilds') }}
+ router-link.dropdown-item(:to="{name: 'guildsDiscovery'}") {{ $t('guildsDiscovery') }}
router-link.nav-item.dropdown(tag="li", :to="{name: 'tavern'}", :class="{'active': $route.path.startsWith('/social')}")
a.nav-link(v-once) {{ $t('social') }}
.dropdown-menu
- router-link.dropdown-item(:to="{name: 'tavern'}") {{ $t('tavern') }}
router-link.dropdown-item(:to="{name: 'inbox'}") {{ $t('inbox') }}
router-link.dropdown-item(:to="{name: 'challenges'}") {{ $t('challenges') }}
router-link.dropdown-item(:to="{name: 'party'}") {{ $t('party') }}
- router-link.dropdown-item(:to="{name: 'guildsDiscovery'}") {{ $t('guilds') }}
router-link.nav-item.dropdown(tag="li", to="/help", :class="{'active': $route.path.startsWith('/help')}")
a.nav-link(v-once) {{ $t('help') }}
.dropdown-menu
@@ -155,4 +159,4 @@ export default {
...mapState({user: 'user.data'}),
},
};
-
\ No newline at end of file
+
diff --git a/website/client/components/guilds/discovery.vue b/website/client/components/guilds/discovery.vue
new file mode 100644
index 0000000000..00a430f3b5
--- /dev/null
+++ b/website/client/components/guilds/discovery.vue
@@ -0,0 +1,104 @@
+
+.row
+ sidebar(@search="updateSearch", @filter="updateFilters")
+
+ .col-10.standard-page
+ .clearfix
+ h1.page-header.float-left(v-once) {{ $t('publicGuilds') }}
+ .float-right
+ span.dropdown-label {{ $t('sortBy') }}
+ b-dropdown(:text="$t('sort')", right=true)
+ b-dropdown-item(v-for='sortOption in sortOptions', @click='sort(sortOption.value)') {{sortOption.text}}
+ .col-md-12
+ public-guild-item(v-for="guild in filteredGuilds", :key='guild._id', :guild="guild", :display-leave='true')
+ mugen-scroll(
+ :handler="fetchGuilds",
+ :should-handle="!loading && !this.hasLoadedAllGuilds",
+ :handle-on-mount="false",
+ v-show="loading",
+ )
+ span(v-once) {{ $t('loading') }}
+
+
+
+
+
diff --git a/website/client/components/guilds/groupFormModal.vue b/website/client/components/guilds/groupFormModal.vue
new file mode 100644
index 0000000000..4ab28652b3
--- /dev/null
+++ b/website/client/components/guilds/groupFormModal.vue
@@ -0,0 +1,340 @@
+
+ b-modal#guild-form(:title="title", :hide-footer="true")
+ form(@submit.stop.prevent="submit")
+ .form-group
+ label
+ strong(v-once) {{$t('name')}}*
+ b-form-input(type="text", placeholder="$t('newGuildPlaceHolder')", v-model="newGuild.name")
+
+ .form-group(v-if='newGuild.id')
+ label
+ strong(v-once) {{$t('guildLeader')}}*
+ b-form-select(v-model="newGuild.newLeader" :options="members")
+
+ .form-group
+ label
+ strong(v-once) {{$t('privacySettings')}}*
+ br
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", v-model="newGuild.onlyLeaderCreatesChallenges")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t('onlyLeaderCreatesChallenges') }}
+ b-tooltip.icon(:content="$t('privateDescription')")
+ img(src='~assets/guilds/information.svg')
+
+ br
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", v-model="newGuild.guildLeaderCantBeMessaged")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t('guildLeaderCantBeMessaged') }}
+
+ br
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", v-model="newGuild.privateGuild")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t('privateGuild') }}
+ b-tooltip.icon(:content="$t('privateDescription')")
+ img(src='~assets/guilds/information.svg')
+
+ br
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", v-model="newGuild.allowGuildInvationsFromNonMembers")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t('allowGuildInvationsFromNonMembers') }}
+
+ .form-group
+ label
+ strong(v-once) {{$t('description')}}*
+ div.description-count {{charactersRemaining}} {{ $t('charactersRemaining') }}
+ b-form-input(type="text", textarea :placeholder="$t('guildDescriptionPlaceHolder')", v-model="newGuild.description")
+
+ .form-group(v-if='newGuild.id')
+ label
+ strong(v-once) {{$t('guildInformation')}}*
+ b-form-input(type="text", textarea :placeholder="$t('guildInformationPlaceHolder')", v-model="newGuild.guildInformation")
+
+ .form-group(style='position: relative;')
+ label
+ strong(v-once) {{$t('categories')}}*
+ div.category-wrap(@click.prevent="toggleCategorySelect")
+ span.category-select(v-if='newGuild.categories.length === 0') {{$t('none')}}
+ .category-label(v-for='category in newGuild.categories') {{$t(categoriesHashByKey[category])}}
+ .category-box(v-if="showCategorySelect")
+ .form-check(
+ v-for="group in categoryOptions",
+ :key="group.key",
+ )
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", :value='group.key' v-model="newGuild.categories")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t(group.label) }}
+ button.btn.btn-primary(@click.prevent="toggleCategorySelect") {{$t('close')}}
+
+ .form-group.text-center
+ div.item-with-icon
+ img(src="~assets/guilds/green-gem.svg")
+ span.count 4
+ button.btn.btn-primary.btn-md(v-if='!newGuild.id', :disabled='!newGuild.name || !newGuild.description') {{ $t('createGuild') }}
+ button.btn.btn-primary.btn-md(v-if='newGuild.id', :disabled='!newGuild.name || !newGuild.description') {{ $t('updateGuild') }}
+ .gem-description(v-once) {{ $t('guildGemCostInfo') }}
+
+
+
+
+
diff --git a/website/client/components/guilds/guild.vue b/website/client/components/guilds/guild.vue
new file mode 100644
index 0000000000..c11f67430b
--- /dev/null
+++ b/website/client/components/guilds/guild.vue
@@ -0,0 +1,317 @@
+
+// TODO this is necessary until we have a way to wait for data to be loaded from the server
+.row(v-if="guild")
+ .clearfix.col-8
+ .row
+ .col-6
+ .float-left
+ h2 {{guild.name}}
+ strong.float-left(v-once) {{$t('groupLeader')}}
+ span.float-left : {{guild.leader.profile.name}}
+ .col-6
+ .float-right
+ .row.icon-row
+ .col-6
+ img.icon.shield(src="~assets/guilds/gold-guild-badge.svg")
+ span.number {{guild.memberCount}}
+ div(v-once) {{ $t('guildMembers') }}
+ .col-6
+ .item-with-icon
+ img.icon.gem(src="~assets/header/png/gem@3x.png")
+ span.number {{guild.memberCount}}
+ div(v-once) {{ $t('guildBank') }}
+ .row.chat-row
+ .col-12
+ h3(v-once) {{ $t('chat') }}
+
+ textarea(placeholder="$('chatPlaceHolder')")
+ button.btn.btn-secondary.send-chat.float-right(v-once) {{ $t('send') }}
+
+ .hr
+ .hr-middle(v-once) {{ $t('today') }}
+
+ .row
+ .col-md-2
+ img.icon(src="~assets/chat/like.svg")
+ .col-md-10
+ .card(v-for="msg in guild.chat", :key="msg.id")
+ .card-block
+ h3.leader Character name
+ span 2 hours ago
+ .clearfix
+ strong.float-left {{msg.user}}
+ .float-right {{msg.timestamp}}
+ .text {{msg.text}}
+ hr
+ span.action(v-once)
+ img.icon(src="~assets/chat/like.svg")
+ | {{$t('like')}}
+ span.action(v-once)
+ img.icon(src="~assets/chat/copy.svg")
+ | {{$t('copyAsTodo')}}
+ span.action(v-once)
+ img.icon(src="~assets/chat/report.svg")
+ | {{$t('report')}}
+ span.action(v-once)
+ img.icon(src="~assets/chat/delete.svg")
+ | {{$t('delete')}}
+ span.action.float-right
+ img.icon(src="~assets/chat/liked.svg")
+ | +3
+
+ .col-md-4.sidebar
+ .guild-background.row
+ .col-6
+ p Image here
+ .col-6
+ members-modal(:group='guild')
+ br
+ button.btn.btn-primary(v-once) {{$t('joinGuild')}}
+ br
+ button.btn.float-left(:class="[isMember ? 'btn-danger' : 'btn-success']") {{ isMember ? $t('leave') : $t('join') }}
+ br
+ button.btn.btn-primary(v-once) {{$t('inviteToGuild')}}
+ br
+ button.btn.btn-primary(v-once) {{$t('messageGuildLeader')}}
+ br
+ button.btn.btn-primary(v-once) {{$t('donateGems')}}
+ br
+ button.btn.btn-primary(b-btn, @click="updateGuild", v-once) {{ $t('updateGuild') }}
+ div
+ h3(v-once) {{ $t('description') }}
+ p(v-once) {{ guild.description }}
+ p Life hacks are tricks, shortcuts, or methods that help increase productivity, efficiency, health, and so on. Generally, they get you to a better state of life. Life hacking is the process of utilizing and implementing these secrets. And, in this guild, we want to help everyone discover these improved ways of doing things.
+ div
+ h3(v-once) {{$t('guildInformation')}}
+ h4 Welcome
+ p Below are some resources that some members might find useful. Consider checking them out before posting any questions, as they just might help answer some of them! Feel free to share your life hacks in the guild chat, or ask any questions that you might have. Please peruse at your leisure, and remember: this guild is meant to help guide you in the right direction. Only you will know what works best for you.
+ div
+ h3 Challenges
+ .card
+ h4 Challenge
+ .row
+ .col-8
+ p Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla scelerisque ultrices libero.
+ .col-4
+ .row
+ .col-md-12
+ span Tag
+ span 100
+
+
+
+
+
diff --git a/website/client/components/guilds/index.vue b/website/client/components/guilds/index.vue
new file mode 100644
index 0000000000..60d233a2ea
--- /dev/null
+++ b/website/client/components/guilds/index.vue
@@ -0,0 +1,26 @@
+
+.row
+ secondary-menu.col-12
+ router-link.nav-link(:to="{name: 'tavern'}", exact, :class="{'active': $route.name === 'tavern'}") {{ $t('tavern') }}
+ router-link.nav-link(:to="{name: 'myGuilds'}", :class="{'active': $route.name === 'myGuilds'}") {{ $t('myGuilds') }}
+ router-link.nav-link(:to="{name: 'guildsDiscovery'}", :class="{'active': $route.name === 'guildsDiscovery'}") {{ $t('guildsDiscovery') }}
+
+ .col-12
+ router-view
+
+ group-form-modal
+
+
+
+
diff --git a/website/client/components/guilds/membersModal.vue b/website/client/components/guilds/membersModal.vue
new file mode 100644
index 0000000000..efe2d9206e
--- /dev/null
+++ b/website/client/components/guilds/membersModal.vue
@@ -0,0 +1,107 @@
+
+div
+ button.btn.btn-primary(b-btn, @click="$root.$emit('show::modal','members-modal')") {{ $t('viewMembers') }}
+
+ b-modal#members-modal(:title="$t('createGuild')")
+ ul(v-for='member in members', :key='member')
+ li(@click='clickMember') {{member}}
+ button(@click='removeMember(member)', v-once) {{$t('remove')}}
+ button(@click='quickReply(member)', v-once) {{$t('message')}}
+ button(@click='addManager(member)', v-once) {{$t('addManager')}}
+ button(@click='removeManager(member)', v-once) {{$t('addManager')}}
+
+ b-modal#remove-member(:title="$t('confirmRemoveMember')")
+ button(@click='confirmRemoveMember(member)', v-once) {{$t('remove')}}
+
+ b-modal#private-message(:title="$t('confirmRemoveMember')")
+ button(@click='confirmRemoveMember(member)', v-once) {{$t('remove')}}
+
+
+
diff --git a/website/client/components/guilds/myGuilds.vue b/website/client/components/guilds/myGuilds.vue
new file mode 100644
index 0000000000..ca8d12e222
--- /dev/null
+++ b/website/client/components/guilds/myGuilds.vue
@@ -0,0 +1,117 @@
+
+.row
+ sidebar(v-on:search="updateSearch", v-on:filter="updateFilters")
+
+ .col-10.no-guilds.standard-page(v-if='filteredGuilds.length === 0')
+ .no-guilds-wrapper
+ img(src='~assets/guilds/grey-badge.svg')
+ h2 {{$t('noGuildsTitle')}}
+ p {{$t('noGuildsParagraph1')}}
+ p {{$t('noGuildsParagraph2')}}
+ span(v-if='loading') {{ $t('loading') }}
+
+ .col-10.standard-page(v-if='filteredGuilds.length > 0')
+ .row
+ .col-md-12
+ h1.page-header.float-left(v-once) {{ $t('myGuilds') }}
+ .float-right
+ span.dropdown-label {{ $t('sortBy') }}
+ b-dropdown(:text="$t('sort')", right=true)
+ b-dropdown-item(v-for='sortOption in sortOptions', @click='sort(sortOption.value)') {{sortOption.text}}
+ .row
+ .col-md-12
+ public-guild-item(v-for="guild in filteredGuilds", :key='guild._id', :guild="guild", :display-gem-bank='true')
+
+
+
+
+
diff --git a/website/client/components/guilds/publicGuildItem.vue b/website/client/components/guilds/publicGuildItem.vue
new file mode 100644
index 0000000000..9924a04b6b
--- /dev/null
+++ b/website/client/components/guilds/publicGuildItem.vue
@@ -0,0 +1,144 @@
+
+.card
+ .card-block
+ .row
+ .col-md-2
+ img.icon.shield(src="~assets/guilds/gold-guild-badge.svg")
+ .member-count {{guild.memberCount}}
+ .col-md-10
+ .row
+ .col-md-8
+ router-link(:to="{ name: 'guild', params: { guildId: guild._id } }")
+ h3 {{ guild.name }}
+ p {{ guild.description }}
+ .col-md-2.cta-container
+ button.btn.btn-danger(v-if='isMember && displayLeave' @click='leave()', v-once) {{ $t('leave') }}
+ button.btn.btn-success(v-if='!isMember' @click='join()', v-once) {{ $t('join') }}
+ div.item-with-icon(v-if='displayGemBank')
+ img(src="~assets/guilds/green-gem.svg")
+ span.count {{ guild.balance }}
+ div.guild-bank(v-if='displayGemBank', v-once) {{$t('guildBank')}}
+ .row
+ .col-md-12
+ .category-label(v-for="category in guild.categories")
+ | {{category}}
+ span.recommend-text Suggested because you’re new to Habitica.
+
+
+
+
+
diff --git a/website/client/components/guilds/sidebar.vue b/website/client/components/guilds/sidebar.vue
new file mode 100644
index 0000000000..d19cfd6a81
--- /dev/null
+++ b/website/client/components/guilds/sidebar.vue
@@ -0,0 +1,152 @@
+
+.col-2.standard-sidebar
+ .form-group
+ input.form-control.search(type="text", :placeholder="$t('search')", v-model='searchTerm')
+
+ form
+ h3(v-once) {{ $t('filter') }}
+ .form-group
+ h5 Category
+ .form-check(
+ v-for="group in categoryOptions",
+ :key="group.key",
+ )
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", :value='group.key' v-model="categoryFilters")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t(group.label) }}
+ .form-group
+ h5 Role
+ .form-check(
+ v-for="group in roleOptions",
+ :key="group.key",
+ )
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", :value='group.key' v-model="roleFilters")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t(group.label) }}
+ .form-group
+ h5 Guild Size
+ .form-check(
+ v-for="group in guildSizeOptions",
+ :key="group.key",
+ )
+ label.custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", :value='group.key' v-model="guildSizeFilters")
+ span.custom-control-indicator
+ span.custom-control-description(v-once) {{ $t(group.label) }}
+
+
+
diff --git a/website/client/components/social/tavern.vue b/website/client/components/guilds/tavern.vue
similarity index 98%
rename from website/client/components/social/tavern.vue
rename to website/client/components/guilds/tavern.vue
index 4720a5edb2..3b0b7a872d 100644
--- a/website/client/components/social/tavern.vue
+++ b/website/client/components/guilds/tavern.vue
@@ -1,8 +1,6 @@
.row
- h1.page-header.col-12 Tavern
-// TODO Example code based on Semantic UI .ui.grid
- .four.wide.column
+ .col-md-4
h2.ui.dividing.header SideMenu
.ui.card
@@ -153,7 +151,7 @@
ul
li Challenge 1
- .twelve.wide.column
+ .col-md-8
h2.ui.dividing.header Tavern Chat
.ui.comments
@@ -172,7 +170,6 @@
span.date {{message.date}}
.text
| {{message.message}}
-
diff --git a/website/client/components/social/guilds/discovery/publicGuildItem.vue b/website/client/components/social/guilds/discovery/publicGuildItem.vue
deleted file mode 100644
index 3888316f94..0000000000
--- a/website/client/components/social/guilds/discovery/publicGuildItem.vue
+++ /dev/null
@@ -1,31 +0,0 @@
-
-.card
- .card-block
- .clearfix
- router-link.float-left(:to="{ name: 'guild', params: { guildId: guild._id } }")
- h3 {{ guild.name }}
- button.btn.float-right(:class="[isMember ? 'btn-danger' : 'btn-success']") {{ isMember ? $t('leave') : $t('join') }}
- p {{ guild.description }}
-
-
-
-
-
\ No newline at end of file
diff --git a/website/client/components/social/guilds/guild.vue b/website/client/components/social/guilds/guild.vue
deleted file mode 100644
index 7e8ca49c40..0000000000
--- a/website/client/components/social/guilds/guild.vue
+++ /dev/null
@@ -1,68 +0,0 @@
-
-// TODO this is necessary until we have a way to wait for data to be loaded from the server
-.row(v-if="guild")
- .clearfix.col-12
- .float-left
- h1.page-header {{guild.name}}
- strong.float-left {{$t('groupLeader')}}
- span.float-left : {{guild.leader.profile.name}}
- .float-right
- .clearfix
- h3.float-left
- span.badge.badge-default {{guild.memberCount}}
- | {{$t('members')}}
- button.btn.float-left(:class="[isMember ? 'btn-danger' : 'btn-success']") {{ isMember ? $t('leave') : $t('join') }}
- .col-5
- h4(v-once) {{ $t('description') }}
- p {{ guild.description }}
- .col-7
- h4(v-once) {{ $t('chat') }}
- .card(v-for="msg in guild.chat", :key="msg.id")
- .card-block
- .clearfix
- strong.float-left {{msg.user}}
- .float-right {{msg.timestamp}}
- .text {{msg.text}}
-
-
-
-
diff --git a/website/client/components/ui/toggleSwitch.vue b/website/client/components/ui/toggleSwitch.vue
index 7cd14c3639..d1eda4074b 100644
--- a/website/client/components/ui/toggleSwitch.vue
+++ b/website/client/components/ui/toggleSwitch.vue
@@ -3,8 +3,8 @@
.float-left.toggle-switch-description {{ label }}
.toggle-switch.float-left
input.toggle-switch-checkbox(
- type='checkbox', :id="id",
- @change="$emit('change', $event.target.checked)",
+ type='checkbox', :id="id",
+ @change="$emit('change', $event.target.checked)",
:checked="checked",
)
label.toggle-switch-label(:for="id")
@@ -20,7 +20,7 @@
}
.toggle-switch {
- position: relative;
+ position: relative;
width: 40px;
user-select: none;
margin-left: 9px;
@@ -36,8 +36,8 @@
}
.toggle-switch-label {
- display: block;
- overflow: hidden;
+ display: block;
+ overflow: hidden;
cursor: pointer;
border-radius: 100px;
margin-bottom: 0px;
@@ -45,17 +45,17 @@
}
.toggle-switch-inner {
- display: block;
- width: 200%;
+ display: block;
+ width: 200%;
margin-left: -100%;
transition: margin 0.3s ease-in 0s;
}
.toggle-switch-inner:before, .toggle-switch-inner:after {
- display: block;
- float: left;
- width: 50%;
- height: 16px;
+ display: block;
+ float: left;
+ width: 50%;
+ height: 16px;
padding: 0;
}
@@ -74,18 +74,18 @@
.toggle-switch-switch {
box-shadow: 0 1px 2px 0 rgba($black, 0.32);
- display: block;
- width: 20px;
+ display: block;
+ width: 20px;
margin: -2px;
margin-top: 1px;
height: 20px;
background: $white;
- position: absolute;
- top: 0;
+ position: absolute;
+ top: 0;
bottom: 0;
right: 22px;
border-radius: 100px;
- transition: all 0.3s ease-in 0s;
+ transition: all 0.3s ease-in 0s;
}
.toggle-switch-checkbox:checked + .toggle-switch-label .toggle-switch-inner {
@@ -93,7 +93,7 @@
}
.toggle-switch-checkbox:checked + .toggle-switch-label .toggle-switch-switch {
- right: 0px;
+ right: 0px;
}
@@ -116,4 +116,4 @@ export default {
},
},
};
-
\ No newline at end of file
+
diff --git a/website/client/components/userTasks.vue b/website/client/components/userTasks.vue
index 077f2675d7..3a46db218e 100644
--- a/website/client/components/userTasks.vue
+++ b/website/client/components/userTasks.vue
@@ -129,7 +129,7 @@
h4 Heading 4
.col-6.p-4
p Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vehicula, purus sit amet sodales pharetra, ipsum ipsum mollis orci, id pharetra velit diam et dui. Sed placerat ipsum eget pharetra rutrum. Ut vitae rutrum lacus, eu imperdiet velit. Pellentesque eu velit cursus, scelerisque dui quis, dapibus magna. Vestibulum molestie sed sapien et ultricies. Nam porta ipsum leo, non congue magna vestibulum a. Etiam dictum felis sit amet augue varius tincidunt. Sed eget urna auctor, convallis felis in, pretium justo. Curabitur aliquet, ligula id tincidunt ullamcorper, orci lorem pharetra neque, in ornare arcu magna accumsan arcu. Maecenas dignissim lorem sed eros accumsan scelerisque.
- p.small-text Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vehicula, purus sit amet sodales pharetra, ipsum ipsum mollis orci, id pharetra velit diam et dui.
+ p.small-text Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vehicula, purus sit amet sodales pharetra, ipsum ipsum mollis orci, id pharetra velit diam et dui.
.row
.col(v-for="taskType in tasksTypes")
h3 {{taskType}}s
@@ -160,4 +160,4 @@ export default {
...mapState({tasks: 'tasks.data'}),
},
};
-
\ No newline at end of file
+
diff --git a/website/client/mixins/groupsUtilities.js b/website/client/mixins/groupsUtilities.js
index eaca7f348c..e3266597d8 100644
--- a/website/client/mixins/groupsUtilities.js
+++ b/website/client/mixins/groupsUtilities.js
@@ -1,3 +1,5 @@
+import intersection from 'lodash/intersection';
+
export default {
methods: {
isMemberOfGroup (user, group) {
@@ -16,5 +18,36 @@ export default {
return false;
},
+ isLeaderOfGroup (user, group) {
+ return user._id === group.leader._id;
+ },
+ filterGuild (group, filters, search, user) {
+ let passedSearch = true;
+ let hasCategories = true;
+ let isMember = true;
+ let isLeader = true;
+
+ if (search) {
+ passedSearch = group.name.toLowerCase().indexOf(search.toLowerCase()) >= 0;
+ }
+
+ if (filters.categories && filters.categories.length > 0) {
+ let intersectingCats = intersection(filters.categories, group.categories);
+ hasCategories = intersectingCats.length > 0;
+ }
+
+ let filteringRole = filters.roles && filters.roles.length > 0;
+ if (filteringRole && filters.roles.indexOf('member')) {
+ isMember = this.isMemberOfGroup(user, group);
+ }
+
+ if (filteringRole && filters.roles.indexOf('guild_leader')) {
+ isLeader = this.isLeaderOfGroup(user, group);
+ }
+
+ // @TODO: Tier filters
+
+ return passedSearch && hasCategories && isMember && isLeader;
+ },
},
-};
\ No newline at end of file
+};
diff --git a/website/client/router.js b/website/client/router.js
index e067329f25..6329cf5775 100644
--- a/website/client/router.js
+++ b/website/client/router.js
@@ -17,11 +17,15 @@ import StablePage from './components/inventory/stable';
// Social
import SocialContainer from './components/social/index';
-import TavernPage from './components/social/tavern';
import InboxPage from './components/social/inbox/index';
import InboxConversationPage from './components/social/inbox/conversationPage';
-import GuildsDiscoveryPage from './components/social/guilds/discovery/index';
-import GuildPage from './components/social/guilds/guild';
+
+// Guilds
+import GuildIndex from './components/guilds/index';
+import TavernPage from './components/guilds/tavern';
+import MyGuilds from './components/guilds/myGuilds';
+import GuildsDiscoveryPage from './components/guilds/discovery';
+import GuildPage from './components/guilds/guild';
Vue.use(VueRouter);
@@ -46,11 +50,33 @@ export default new VueRouter({
],
},
{ name: 'market', path: '/market', component: Page },
+ {
+ path: '/guilds',
+ component: GuildIndex,
+ children: [
+ { name: 'tavern', path: 'tavern', component: TavernPage },
+ {
+ name: 'myGuilds',
+ path: 'myGuilds',
+ component: MyGuilds,
+ },
+ {
+ name: 'guildsDiscovery',
+ path: 'discovery',
+ component: GuildsDiscoveryPage,
+ },
+ {
+ name: 'guild',
+ path: 'guild/:guildId',
+ component: GuildPage,
+ props: true,
+ },
+ ],
+ },
{
path: '/social',
component: SocialContainer,
children: [
- { name: 'tavern', path: 'tavern', component: TavernPage },
{
path: 'inbox',
component: EmptyView,
@@ -69,23 +95,6 @@ export default new VueRouter({
},
{ name: 'challenges', path: 'challenges', component: Page },
{ name: 'party', path: 'party', component: Page },
- {
- path: 'guilds',
- component: EmptyView,
- children: [
- {
- name: 'guildsDiscovery',
- path: 'discovery',
- component: GuildsDiscoveryPage,
- },
- {
- name: 'guild',
- path: 'guild/:guildId',
- component: GuildPage,
- props: true,
- },
- ],
- },
],
},
{
diff --git a/website/client/store/actions/guilds.js b/website/client/store/actions/guilds.js
new file mode 100644
index 0000000000..47e088a0a6
--- /dev/null
+++ b/website/client/store/actions/guilds.js
@@ -0,0 +1,162 @@
+import axios from 'axios';
+import omit from 'lodash/omit';
+import findIndex from 'lodash/findIndex';
+
+export async function getPublicGuilds (store, payload) {
+ let response = await axios.get('/api/v3/groups', {
+ params: {
+ type: 'publicGuilds',
+ paginate: true,
+ page: payload.page,
+ },
+ });
+
+ return response.data.data;
+}
+
+export async function getMyGuilds (store) {
+ let response = await axios.get('/api/v3/groups', {
+ params: {
+ type: 'privateGuilds',
+ },
+ });
+
+ let guilds = response.data.data;
+ store.state.myGuilds = guilds;
+
+ return response.data.data;
+}
+
+export async function getGroup (store, payload) {
+ let response = await axios.get(`/api/v3/groups/${payload.groupId}`);
+
+ // @TODO: should we store the active group for modifying?
+ // let guilds = response.data.data;
+ // store.state.myGuilds = guilds;
+
+ // @TODO: Populate wiht members, challenges, and invites
+
+ return response.data.data;
+}
+
+
+export async function join (store, payload) {
+ let response = await axios.post(`/api/v3/groups/${payload.guildId}/join`);
+
+ // @TODO: abstract for parties as well
+ store.state.user.data.guilds.push(payload.guildId);
+ if (payload.type === 'myGuilds') {
+ store.state.myGuilds.push(response.data.data);
+ }
+
+ return response.data.data;
+}
+
+export async function leave (store, payload) {
+ // @TODO: is the dafault for keepChallenges 'remain-in-challenges'
+ let data = {
+ keep: payload.keep,
+ keepChallenges: payload.keepChallenges,
+ };
+ let response = await axios.post(`/api/v3/groups/${payload.guildId}/leave`, data);
+
+ // @TODO: update for party
+ let index = store.state.user.data.guilds.indexOf(payload.guildId);
+ store.state.user.data.guilds.splice(index, 1);
+ if (payload.type === 'myGuilds') {
+ let guildIndex = findIndex(store.state.myGuilds, (guild) => {
+ return guild._id === payload.guildId;
+ });
+ store.state.myGuilds.splice(guildIndex, 1);
+ }
+
+ return response.data.data;
+}
+
+export async function create (store, payload) {
+ let response = await axios.post('/api/v3/groups/', payload.group);
+ let newGroup = response.data.data;
+
+ // @TODO: Add party
+ if (newGroup.privacy === 'public') {
+ store.state.publicGuilds.push(newGroup);
+ } else if (newGroup.privacy === 'private') {
+ store.state.myGuilds.push(newGroup);
+ }
+
+ return newGroup;
+}
+
+export async function update (store, payload) {
+ // Remove populated fields
+ let groupDetailsToSend = omit(payload.group, ['chat', 'challenges', 'members', 'invites']);
+ if (groupDetailsToSend.leader && groupDetailsToSend.leader._id) groupDetailsToSend.leader = groupDetailsToSend.leader._id;
+
+ let response = await axios.put(`/api/v3/groups/${payload.group.id}`, {
+ data: groupDetailsToSend,
+ });
+
+ let updatedGroup = response.data.data;
+
+ // @TODO: Replace old group
+ // store.state.publicGuilds.push(newGroup);
+
+ return updatedGroup;
+}
+
+export async function rejectInvite (store, payload) {
+ let response = await axios.post(`/api/v3/groups/${payload.groupId}/reject-invite`);
+
+ // @TODO: refresh or add guild
+
+ return response;
+}
+
+export async function removeMember (store, payload) {
+ let response = await axios.post(`/api/v3/groups/${payload.groupId}/removeMember/${payload.memberId}`, {
+ message: payload.message,
+ });
+
+ // @TODO: find guild and remove member
+
+ return response;
+}
+
+export async function invite (store, payload) {
+ let response = await axios.post(`/api/v3/groups/${payload.groupId}/invite`, {
+ uuids: payload.invitationDetails.uuids,
+ emails: payload.invitationDetails.emails,
+ });
+
+ // @TODO: find guild and add invites
+
+ return response;
+}
+
+export async function inviteToQuest (store, payload) {
+ let response = await axios.post(`/api/v3/groups/${payload.groupId}/quests/invite/${payload.key}`);
+
+ // @TODO: Any updates?
+
+ return response;
+}
+
+export async function addManager (store, payload) {
+ let response = await axios.post(`/api/v3/groups/${payload.groupId}/add-manager/`, {
+ managerId: payload.memberId,
+ });
+
+ // @TODO: Add managers to group or does the component handle?
+
+ return response;
+}
+
+export async function removeManager (store, payload) {
+ let response = await axios.post(`/api/v3/groups/${payload.groupId}/remove-manager/`, {
+ managerId: payload.memberId,
+ });
+
+ // @TODO: Add managers to group or does the component handle?
+
+ return response;
+}
diff --git a/website/client/store/actions/index.js b/website/client/store/actions/index.js
index 1db750d83e..a2cc40aa6d 100644
--- a/website/client/store/actions/index.js
+++ b/website/client/store/actions/index.js
@@ -3,6 +3,7 @@ import { flattenAndNamespace } from 'client/libs/store/helpers/internals';
import * as common from './common';
import * as user from './user';
import * as tasks from './tasks';
+import * as guilds from './guilds';
// Actions should be named as 'actionName' and can be accessed as 'namespace:actionName'
// Example: fetch in user.js -> 'user:fetch'
@@ -11,6 +12,7 @@ const actions = flattenAndNamespace({
common,
user,
tasks,
+ guilds,
});
-export default actions;
\ No newline at end of file
+export default actions;
diff --git a/website/client/store/getters/index.js b/website/client/store/getters/index.js
index 7a89a81187..b987e4015b 100644
--- a/website/client/store/getters/index.js
+++ b/website/client/store/getters/index.js
@@ -10,4 +10,4 @@ const getters = flattenAndNamespace({
tasks,
});
-export default getters;
\ No newline at end of file
+export default getters;
diff --git a/website/client/store/index.js b/website/client/store/index.js
index 561ad5c7e3..69eea5c3ad 100644
--- a/website/client/store/index.js
+++ b/website/client/store/index.js
@@ -17,6 +17,9 @@ export default function () {
title: 'Habitica',
user: asyncResourceFactory(),
tasks: asyncResourceFactory(), // user tasks
+ publicGuilds: [],
+ myGuilds: [],
+ editingGroup: {},
// content data, frozen to prevent Vue from modifying it since it's static and never changes
// TODO apply freezing to the entire codebase (the server) and not only to the client side?
// NOTE this takes about 10-15ms on a fast computer
@@ -24,4 +27,4 @@ export default function () {
constants: deepFreeze(constants),
},
});
-}
\ No newline at end of file
+}
diff --git a/website/common/locales/en/character.json b/website/common/locales/en/character.json
index 8d770afb32..80c8cce4af 100644
--- a/website/common/locales/en/character.json
+++ b/website/common/locales/en/character.json
@@ -170,6 +170,5 @@
"hideQuickAllocation": "Hide stat allocation",
"quickAllocationLevelPopover": "Each level earns you one point to assign to an attribute of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options found in User -> Stats.",
"invalidAttribute": "\"<%= attr %>\" is not a valid attribute.",
- "notEnoughAttrPoints": "You don't have enough attribute points.",
- "gearNotOwned": "You do not own this item."
+ "notEnoughAttrPoints": "You don't have enough attribute points."
}
diff --git a/website/common/locales/en/newClient.json b/website/common/locales/en/newClient.json
index e7e54abd6c..f996f262ed 100644
--- a/website/common/locales/en/newClient.json
+++ b/website/common/locales/en/newClient.json
@@ -1,13 +1,64 @@
{
"costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
"autoEquipPopoverText": "Select this option to automatically equip gear as soon as you purchase it.",
- "showAllGearItems": "Show All <%= items %> <%= type %> Gear Items",
- "showLessGearItems": "Show Less <%= type %> Gear Items",
- "noGearItemsOfType": "You don't own any pieces of <%= type %>.",
"costumeDisabled": "You have disabled your costume.",
+ "newGuildPlaceHolder": "Enter your name",
+ "guildMembers": "Guild Members",
+ "guildBank": "Guild Bank",
+ "chatPlaceHolder": "Type your message to Guild members here",
+ "today": "Today",
+ "like": "Like",
+ "copyAsTodo": "Copy as To-Do",
+ "report": "Report",
+ "joinGuild": "Join Guild",
+ "inviteToGuild": "Invite to Guild",
+ "messageGuildLeader": "Message Guild Leader",
+ "donateGems": "Donate Gems",
+ "guildInformation": "Guild Information",
+ "updateGuild": "Update Guild",
+ "viewMembers": "View Members",
"items": "Items",
"sortBy": "Sort By",
"groupBy2": "Group By",
"quantity": "Quantity",
- "AZ": "A-Z"
+ "AZ": "A-Z",
+ "sort": "Sort",
+ "memberCount": "Member Count",
+ "recentActivity": "Recent Activity",
+ "gearNotOwned": "You do not own this item.",
+ "showAllGearItems": "Show All <%= items %> <%= type %> Gear Items",
+ "showLessGearItems": "Show Less <%= type %> Gear Items",
+ "noGearItemsOfType": "You don't own any pieces of <%= type %>.",
+ "myGuilds": "My Guilds",
+ "guildsDiscovery": "Discover Guilds",
+ "habiticaOfficial": "Habitica Official",
+ "animals": "Animals",
+ "artDesign": "Art & Design",
+ "booksWriting": "Books & Writing",
+ "comicsHobbies": "Comics & Hobbies",
+ "diyCrafts": "DIY & Crafts",
+ "education": "Education",
+ "foodCooking": "Food & Cooking",
+ "healthFitness": "Health & Fitness",
+ "music": "Music",
+ "relationship": "Relationships",
+ "scienceTech": "Science & Technology",
+ "guildLeader": "Guild Leader",
+ "member": "Member",
+ "goldTier": "Gold Tier",
+ "silverTier": "Silver Tier",
+ "bronzeTier": "Bronze Tier",
+ "privacySettings": "Privacy Settings",
+ "onlyLeaderCreatesChallenges": "Only the Guild Leader can create Guild Challenges",
+ "guildLeaderCantBeMessaged": "Guild Leader can not be messaged directly",
+ "privateGuild": "Private Guild",
+ "allowGuildInvationsFromNonMembers": "Allow Guild invitations from non-members",
+ "charactersRemaining": "characters remaining",
+ "guildDescriptionPlaceHolder": "Write a short description advertising your Guild to other Habiticans. What is the main purpose of your Guild and why should people join it? Try to include useful keywords in the description so that Habiticans can easily find it when they search!",
+ "guildGemCostInfo": "A Gem cost promotes high quality Guilds and is transferred into your Guild's bank.",
+ "categories": "Categories",
+ "noGuildsTitle": "You aren’t a member of any Guilds.",
+ "noGuildsParagraph1": "Guilds are social groups created by other players that can offer you support, accountability, and encouraging chat.",
+ "noGuildsParagraph2": "Click the Discover tab to see recommended Guilds based on your interests, browse Habitica’s public Guilds, or create your own Guild.",
+ "privateDescription": "A private Guild will not be displayed in Habitica’s Guild directory. New members can be added by invitation only."
}