From 4fecf0fff376aafbbec7f54d260a8d75e747f9ec Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Tue, 2 Jan 2018 14:47:19 +0800 Subject: [PATCH 01/21] [webapp-perf] Remove unused package dependencies (#472) * remove unused package dependencies * remove license notice of "match-at", "object-assign", and "velocity-animate" --- NOTICE.txt | 99 ------ package.json | 11 - yarn.lock | 953 +++++++-------------------------------------------- 3 files changed, 129 insertions(+), 934 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 5f8ba3cc2f84..489a9e222bd2 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -754,39 +754,6 @@ THE SOFTWARE. --- -## match-at - -This product contains a modified portion of 'match-at', to correspond to the original string, where it doesn't slice the string by Ben Alpert. - -* HOMEPAGE: - * https://github.com/spicyj/match-at - -* LICENSE: - -The MIT License (MIT) - -Copyright (c) 2015 Ben Alpert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ----- - ## mattermost-redux This product contains a modified portion of `mattermost-redux`. @@ -806,39 +773,6 @@ Unless required by applicable law or agreed to in writing, software distributed --- -## object-assign - -This product contains a modified portion of 'object-assign', a polyfill that doesn't overwrite the native method by Sindre Sorhus. - -* HOMEPAGE: - * https://github.com/sindresorhus/object-assign - -* LICENSE: - -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - ---- - ## pdfjs-dist This product contains a modified portion of 'pdfjs-dist', is a Portable Document Format (PDF) library that is built with HTML5 built by mozilla. @@ -1513,39 +1447,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- -## velocity-animate - -This product contains a modified portion of 'velocity-animate', an animation engine with the same API as jQuery's $.animate() by Julian Shapiro. - -* HOMEPAGE: - * https://github.com/julianshapiro/velocity - -* LICENSE: - -The MIT License - -Copyright (c) 2014 Julian Shapiro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ---- - ## twemoji This product contains a modified portion of 'twemoji', a set of emoticons by Twitter, Inc. diff --git a/package.json b/package.json index 22b406f8bb10..8471f5bda52f 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,7 @@ "localforage": "1.5.3", "localforage-observable": "1.4.0", "marked": "mattermost/marked#802e981ade71149a497cbe79d12b8a3f82f7657e", - "match-at": "0.1.1", "mattermost-redux": "mattermost/mattermost-redux#767db254e463e3ee99be69b7eec870345daedaf8", - "object-assign": "4.1.1", "pdfjs-dist": "2.0.106", "perfect-scrollbar": "0.8.1", "prop-types": "15.6.0", @@ -50,7 +48,6 @@ "reselect": "3.0.1", "superagent": "3.8.1", "twemoji": "2.5.0", - "velocity-animate": "1.5.0", "webrtc-adapter": "6.0.2", "whatwg-fetch": "2.0.3", "xregexp": "3.2.0" @@ -79,7 +76,6 @@ "eslint-plugin-import": "2.7.0", "eslint-plugin-react": "6.10.0", "exports-loader": "0.6.4", - "extract-text-webpack-plugin": "3.0.2", "file-loader": "1.1.5", "html-loader": "0.5.1", "html-webpack-plugin": "2.30.1", @@ -89,22 +85,15 @@ "jest": "21.2.1", "jest-cli": "21.2.1", "jquery-deferred": "0.3.1", - "jsdom": "11.3.0", - "jsdom-global": "3.0.2", "json-loader": "0.5.7", "nightwatch": "0.9.16", "node-sass": "4.6.0", - "raw-loader": "0.5.1", - "react-addons-test-utils": "15.6.2", - "react-test-renderer": "16.1.0", "redux-mock-store": "1.3.0", "redux-persist-node-storage": "1.0.2", "remote-redux-devtools": "0.5.12", - "remote-redux-devtools-on-debugger": "0.8.3", "sass-loader": "6.0.6", "selenium-standalone": "6.11.0", "style-loader": "0.19.0", - "url-loader": "0.6.2", "webpack": "3.8.1", "webpack-node-externals": "1.6.0" }, diff --git a/yarn.lock b/yarn.lock index af9afba53a4e..c2aa5786d356 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,13 +14,6 @@ abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" -accepts@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" - dependencies: - mime-types "~2.1.11" - negotiator "0.6.1" - acorn-dynamic-import@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" @@ -33,12 +26,6 @@ acorn-globals@^3.1.0: dependencies: acorn "^4.0.4" -acorn-globals@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" - dependencies: - acorn "^5.0.0" - acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -61,10 +48,6 @@ acorn@^5.0.0, acorn@^5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" -acorn@^5.1.2: - version "5.2.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" - add-px-to-style@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" @@ -101,8 +84,8 @@ ajv@^5.0.0, ajv@^5.1.5: json-stable-stringify "^1.0.1" ajv@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" + version "5.5.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2" dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" @@ -223,10 +206,6 @@ array-find@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -310,17 +289,11 @@ async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" -async@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.0.0.tgz#d0900ad385af13804540a109c42166e3ae7b2b9d" - dependencies: - lodash "^4.8.0" - async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2, async@^2.1.4, async@^2.1.5, async@^2.4.1: +async@^2.1.2, async@^2.1.4, async@^2.1.5: version "2.5.0" resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" dependencies: @@ -1203,14 +1176,6 @@ base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" -base64id@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" - -base64url@2.0.0, base64url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" - bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" @@ -1297,21 +1262,6 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" -body-parser@^1.15.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" - dependencies: - bytes "2.4.0" - content-type "~1.0.2" - debug "2.6.1" - depd "~1.1.0" - http-errors "~1.6.1" - iconv-lite "0.4.15" - on-finished "~2.3.0" - qs "6.4.0" - raw-body "~2.2.0" - type-is "~1.6.14" - boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -1448,10 +1398,6 @@ buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - buffer-shims@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" @@ -1737,6 +1683,10 @@ clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" +clone@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + clone@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" @@ -1845,7 +1795,7 @@ component-emitter@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe" -component-emitter@1.2.1, component-emitter@^1.2.0: +component-emitter@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1889,30 +1839,14 @@ contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - content-type-parser@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" -content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - convert-source-map@^1.1.1, convert-source-map@^1.4.0, convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - cookiejar@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a" @@ -1942,13 +1876,6 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -cors@^2.7.1: - version "2.8.3" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.3.tgz#4cf78e1d23329a7496b2fc2225b77ca5bb5eb802" - dependencies: - object-assign "^4" - vary "^1" - create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -2174,10 +2101,6 @@ cwebp-bin@^3.1.0: bin-wrapper "^3.0.1" logalot "^2.0.0" -cycle@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" - d@1: version "1.0.0" resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" @@ -2214,18 +2137,6 @@ debug@2.2.0: dependencies: ms "0.7.1" -debug@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" - dependencies: - ms "0.7.2" - -debug@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" - dependencies: - ms "2.0.0" - debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -2359,10 +2270,6 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.0, depd@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" - des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -2370,10 +2277,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -2444,10 +2347,6 @@ domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" -domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.0.tgz#81fe5df81b3f057052cde3a9fa9bf536a85b9ab0" - domhandler@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" @@ -2527,25 +2426,10 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -ecdsa-sig-formatter@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz#4bc926274ec3b5abb5016e7e1d60921ac262b2a1" - dependencies: - base64url "^2.0.0" - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - ejs@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/ejs/-/ejs-0.8.3.tgz#db8aac47ff80a7df82b4c82c126fe8970870626f" -ejs@^2.4.1: - version "2.5.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88" - electron-to-chromium@^1.2.7: version "1.3.8" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.8.tgz#b2c8a2c79bb89fbbfd3724d9555e15095b5f5fb6" @@ -2570,10 +2454,6 @@ emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -2743,10 +2623,6 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -2762,17 +2638,6 @@ escodegen@1.x.x, escodegen@^1.6.1: optionalDependencies: source-map "~0.2.0" -escodegen@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.5.6" - escope@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" @@ -2895,7 +2760,7 @@ esprima-fb@~3001.0001.0000-dev-harmony-fb, esprima-fb@~3001.1.0-dev-harmony-fb: version "3001.1.0-dev-harmony-fb" resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz#b77d37abcd38ea0b77426bb8bc2922ce6b426411" -esprima@3.x.x, esprima@^3.1.1, esprima@^3.1.3, esprima@~3.1.0: +esprima@3.x.x, esprima@^3.1.1, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -2926,10 +2791,6 @@ esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -etag@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" - event-emitter@~0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" @@ -3031,10 +2892,6 @@ expect@^21.2.1: jest-message-util "^21.2.1" jest-regex-util "^21.2.0" -expirymanager@~0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/expirymanager/-/expirymanager-0.9.3.tgz#e5f6b3ba00d8d76cf63311c2b71d7dfc9bde3e4f" - exports-loader@0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886" @@ -3042,39 +2899,6 @@ exports-loader@0.6.4: loader-utils "^1.0.2" source-map "0.5.x" -express@^4.13.3: - version "4.15.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662" - dependencies: - accepts "~1.3.3" - array-flatten "1.1.1" - content-disposition "0.5.2" - content-type "~1.0.2" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.7" - depd "~1.1.0" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - finalhandler "~1.0.3" - fresh "0.5.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.1" - path-to-regexp "0.1.7" - proxy-addr "~1.1.4" - qs "6.4.0" - range-parser "~1.2.0" - send "0.15.3" - serve-static "1.12.3" - setprototypeof "1.0.3" - statuses "~1.3.1" - type-is "~1.6.15" - utils-merge "1.0.0" - vary "~1.1.1" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -3089,29 +2913,12 @@ extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-1.1.1.tgz#12d7b0db850f7ff7e7081baf4005700060c4600b" - dependencies: - extend "^3.0.0" - spawn-sync "^1.0.15" - tmp "^0.0.29" - extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" dependencies: is-extglob "^1.0.0" -extract-text-webpack-plugin@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" - dependencies: - async "^2.4.1" - loader-utils "^1.1.0" - schema-utils "^0.3.0" - webpack-sources "^1.0.1" - extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" @@ -3260,18 +3067,6 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" -finalhandler@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" - dependencies: - debug "2.6.7" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.1" - statuses "~1.3.1" - unpipe "~1.0.0" - find-babel-config@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.1.0.tgz#acc01043a6749fec34429be6b64f542ebb5d6355" @@ -3330,10 +3125,6 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" -fleximap@~0.9.10: - version "0.9.10" - resolved "https://registry.yarnpkg.com/fleximap/-/fleximap-0.9.10.tgz#1aa50ff6a8fea0037cc378e38ddacc091025ac10" - flux@3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/flux/-/flux-3.1.3.tgz#d23bed515a79a22d933ab53ab4ada19d05b2f08a" @@ -3393,21 +3184,6 @@ formidable@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" -forwarded@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" - -fresh@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" - -fs-extra@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - fs-extra@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" @@ -3467,7 +3243,7 @@ function.prototype.name@^1.0.3: function-bind "^1.1.0" is-callable "^1.1.3" -gauge@~2.7.1: +gauge@~2.7.1, gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" dependencies: @@ -3542,10 +3318,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -getport@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/getport/-/getport-0.1.0.tgz#abddf3d5d1e77dd967ccfa2b036a0a1fb26fd7f7" - gifsicle@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-3.0.4.tgz#f45cb5ed10165b665dc929e0e9328b6c821dfa3b" @@ -3639,11 +3411,11 @@ globby@^5.0.0: pinkie-promise "^2.0.0" globule@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" + version "1.2.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" dependencies: glob "~7.1.1" - lodash "~4.16.4" + lodash "~4.17.4" minimatch "~3.0.2" glogg@^1.0.0: @@ -3969,15 +3741,6 @@ htmlparser2@~3.3.0: domutils "1.1" readable-stream "1.0" -http-errors@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" - dependencies: - depd "1.1.0" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - http-proxy-agent@1: version "1.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" @@ -4162,7 +3925,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -4185,25 +3948,6 @@ inobounce@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/inobounce/-/inobounce-0.1.5.tgz#b918a01b415b1a09e0459ab5e870904514f14470" -inquirer@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-1.1.3.tgz#6cd2a93f709fa50779731fd2262c698155cab2fa" - dependencies: - ansi-escapes "^1.1.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - external-editor "^1.0.1" - figures "^1.3.5" - lodash "^4.3.0" - mute-stream "0.0.6" - pinkie-promise "^2.0.0" - run-async "^2.2.0" - rx "^4.1.0" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - inquirer@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" @@ -4272,10 +4016,6 @@ ip@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" -ipaddr.js@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" - is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" @@ -4466,10 +4206,6 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" @@ -4568,10 +4304,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isemail@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-1.2.0.tgz#be03df8cc3e29de4d2c5df6501263f1fa4595e9a" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4907,15 +4639,6 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" -joi@^6.10.1: - version "6.10.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-6.10.1.tgz#4d50c318079122000fe5f16af1ff8e1917b77e06" - dependencies: - hoek "2.x.x" - isemail "1.x.x" - moment "2.x.x" - topo "1.x.x" - jquery-deferred@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/jquery-deferred/-/jquery-deferred-0.3.1.tgz#596eca1caaff54f61b110962b23cafea74c35355" @@ -4925,17 +4648,13 @@ jquery@3.2.1, jquery@>=1.10: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" js-base64@^2.1.8: - version "2.3.2" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" + version "2.4.0" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa" js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" -js-data@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/js-data/-/js-data-2.10.0.tgz#8ddaa1b5e5b81384b29bc4d949bc8cc09be16d84" - js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" @@ -4966,37 +4685,6 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom-global@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsdom-global/-/jsdom-global-3.0.2.tgz#6bd299c13b0c4626b2da2c0393cd4385d606acb9" - -jsdom@11.3.0: - version "11.3.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.3.0.tgz#7b2dfe6227d014084d80f6b3e98fa1e4cef199e7" - dependencies: - abab "^1.0.3" - acorn "^5.1.2" - acorn-globals "^4.0.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - domexception "^1.0.0" - escodegen "^1.9.0" - html-encoding-sniffer "^1.0.1" - nwmatcher "^1.4.1" - parse5 "^3.0.2" - pn "^1.0.0" - request "^2.83.0" - request-promise-native "^1.0.3" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.3" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.1" - whatwg-url "^6.3.0" - xml-name-validator "^2.0.1" - jsdom@^9.12.0: version "9.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" @@ -5059,12 +4747,6 @@ json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -5100,23 +4782,6 @@ jsx-ast-utils@^1.3.4: version "1.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" -jwa@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.5.tgz#a0552ce0220742cd52e153774a32905c30e756e5" - dependencies: - base64url "2.0.0" - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.9" - safe-buffer "^5.0.1" - -jws@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.4.tgz#f9e8b9338e8a847277d6444b1464f61880e050a2" - dependencies: - base64url "^2.0.0" - jwa "^1.1.4" - safe-buffer "^5.0.1" - katex@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/katex/-/katex-0.8.3.tgz#909d99864baf964c3ccae39c4a99a8e0fb9a1bd0" @@ -5369,7 +5034,7 @@ lodash.clone@3.0.3: lodash._bindcallback "^3.0.0" lodash._isiterateecall "^3.0.0" -lodash.clonedeep@4.5.0, lodash.clonedeep@^4.3.2: +lodash.clonedeep@^4.3.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -5461,10 +5126,6 @@ lodash.mergewith@^4.0.0, lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - lodash.pickby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" @@ -5481,10 +5142,6 @@ lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" @@ -5518,14 +5175,10 @@ lodash.unset@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.unset/-/lodash.unset-4.5.2.tgz#370d1d3e85b72a7e1b0cdf2d272121306f23e4ed" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0: +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@~4.16.4: - version "4.16.6" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" - logalot@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" @@ -5606,7 +5259,7 @@ marked@mattermost/marked#802e981ade71149a497cbe79d12b8a3f82f7657e: version "0.3.6" resolved "https://codeload.github.com/mattermost/marked/tar.gz/802e981ade71149a497cbe79d12b8a3f82f7657e" -match-at@0.1.1, match-at@^0.1.0: +match-at@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540" @@ -5637,10 +5290,6 @@ mattermost-redux@mattermost/mattermost-redux#767db254e463e3ee99be69b7eec870345da serialize-error "2.1.0" shallow-equals "1.0.0" -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" @@ -5673,10 +5322,6 @@ meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - merge-stream@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -5687,7 +5332,7 @@ merge@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" -methods@^1.1.1, methods@~1.1.2: +methods@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -5730,16 +5375,12 @@ mime-types@^2.1.12, mime-types@~2.1.17: dependencies: mime-db "~1.30.0" -mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: +mime-types@~2.1.7: version "2.1.15" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" dependencies: mime-db "~1.27.0" -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - mime@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" @@ -5772,10 +5413,6 @@ minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.0.tgz#cdf225e8898f840a258ded44fc91776770afdc93" - minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -5813,7 +5450,7 @@ mocha-nightwatch@3.2.2: mkdirp "0.5.1" supports-color "3.1.2" -moment@2.x.x, moment@~2.18.0: +moment@~2.18.0: version "2.18.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" @@ -5829,11 +5466,7 @@ ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -ms@2.0.0, ms@^2.0.0: +ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5847,14 +5480,14 @@ mute-stream@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" -mute-stream@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" - -nan@^2.3.0, nan@^2.3.2: +nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +nan@^2.3.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5865,12 +5498,6 @@ ncname@1.0.x: dependencies: xml-char-classes "^1.0.0" -ncom@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ncom/-/ncom-1.0.1.tgz#1c5caf25c7821339d6df3788ec15654cf5ce1272" - dependencies: - sc-formatter "~3.0.1" - nearley@^2.7.10: version "2.11.0" resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.0.tgz#5e626c79a6cd2f6ab9e7e5d5805e7668967757ae" @@ -5879,10 +5506,6 @@ nearley@^2.7.10: railroad-diagrams "^1.0.0" randexp "^0.4.2" -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - netmask@~1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" @@ -5926,8 +5549,8 @@ node-fetch@^1.0.1: is-stream "^1.0.1" node-gyp@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.0.tgz#7474f63a3a0501161dda0b6341f022f14c423fa6" + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -6059,10 +5682,6 @@ node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" -node-uuid@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - nomnom@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" @@ -6117,7 +5736,16 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +npmlog@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" dependencies: @@ -6140,7 +5768,7 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -"nwmatcher@>= 1.3.9 < 2.0.0", nwmatcher@^1.4.1: +"nwmatcher@>= 1.3.9 < 2.0.0": version "1.4.1" resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.1.tgz#7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f" @@ -6148,10 +5776,6 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.1.1, object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - object-assign@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" @@ -6160,6 +5784,10 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" +object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" @@ -6201,12 +5829,6 @@ object.values@^1.0.4: function-bind "^1.1.0" has "^1.0.1" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - once@^1.3.0, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -6241,10 +5863,6 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - optipng-bin@^3.0.0: version "3.1.4" resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-3.1.4.tgz#95d34f2c488704f6fd70606bfea0c659f1d95d84" @@ -6286,11 +5904,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-shim@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -6390,16 +6004,12 @@ parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" -parse5@^3.0.1, parse5@^3.0.2: +parse5@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.2.tgz#05eff57f0ef4577fb144a79f8b9a967a6cc44510" dependencies: "@types/node" "^6.0.46" -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -6434,10 +6044,6 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -6521,10 +6127,6 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" -pn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9" - pngquant-bin@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-3.1.1.tgz#d124d98a75a9487f40c1640b4dbfcbb2bd5a1fd1" @@ -6856,13 +6458,6 @@ prop-types@^15.5.10, prop-types@^15.5.8: fbjs "^0.8.9" loose-envify "^1.3.1" -proxy-addr@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.3.0" - proxy-agent@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-2.0.0.tgz#57eb5347aa805d74ec681cb25649dba39c933499" @@ -6902,18 +6497,10 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -punycode@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - q@1.4.1, q@^1.1.2: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" -qs@6.4.0, qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - qs@^6.5.1, qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -6922,6 +6509,10 @@ qs@~6.3.0: version "6.3.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + query-string@^4.1.0, query-string@^4.2.2: version "4.3.4" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" @@ -6975,11 +6566,7 @@ randombytes@^2.0.0, randombytes@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@2, raw-body@~2.2.0: +raw-body@2: version "2.2.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" dependencies: @@ -6987,10 +6574,6 @@ raw-body@2, raw-body@~2.2.0: iconv-lite "0.4.15" unpipe "1.0.0" -raw-loader@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" - rc@^1.1.2, rc@^1.1.7: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" @@ -7007,10 +6590,6 @@ react-addons-pure-render-mixin@15.6.2: fbjs "^0.8.4" object-assign "^4.1.0" -react-addons-test-utils@15.6.2: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz#c12b6efdc2247c10da7b8770d185080a7b047156" - react-bootstrap@0.31.5: version "0.31.5" resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.31.5.tgz#57040fa8b1274e1e074803c21a1b895fdabea05a" @@ -7110,14 +6689,6 @@ react-select@1.0.0-rc.10: prop-types "^15.5.8" react-input-autosize "^2.0.1" -react-test-renderer@16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.1.0.tgz#33a1d3ce896311e0dd1547649b1456ffa7fda415" - dependencies: - fbjs "^0.8.16" - object-assign "^4.1.1" - prop-types "^15.6.0" - react-test-renderer@^16.0.0-0: version "16.1.1" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.1.1.tgz#a05184688d564be799f212449262525d1e350537" @@ -7410,15 +6981,6 @@ relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" -remote-redux-devtools-on-debugger@0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/remote-redux-devtools-on-debugger/-/remote-redux-devtools-on-debugger-0.8.3.tgz#7c3b4675a5d7f109a6333aecbc8336e595ad845b" - dependencies: - chalk "^2.0.1" - minimist "^1.2.0" - remotedev-server "^0.2.4" - semver "^5.4.1" - remote-redux-devtools@0.5.12: version "0.5.12" resolved "https://registry.yarnpkg.com/remote-redux-devtools/-/remote-redux-devtools-0.5.12.tgz#42cb95dfa9e54c1d9671317c5e7bba41e68caec2" @@ -7436,28 +6998,9 @@ remotedev-serialize@^0.1.0: dependencies: jsan "^3.1.0" -remotedev-server@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/remotedev-server/-/remotedev-server-0.2.4.tgz#b019b015132064cd76024cb91eb026801f24cd67" - dependencies: - body-parser "^1.15.0" - chalk "^1.1.3" - cors "^2.7.1" - ejs "^2.4.1" - express "^4.13.3" - getport "^0.1.0" - js-data "^2.9.0" - lodash "^4.15.0" - minimist "^1.2.0" - node-uuid "^1.4.0" - object-assign "^4.0.0" - repeat-string "^1.5.4" - semver "^5.3.0" - socketcluster "^6.7.1" - remotedev-utils@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/remotedev-utils/-/remotedev-utils-0.1.3.tgz#6e3f6611d0f58cecb100fc506dd1009af53dc955" + version "0.1.4" + resolved "https://registry.yarnpkg.com/remotedev-utils/-/remotedev-utils-0.1.4.tgz#643700819a943678073c75eb185e81d96620b348" dependencies: get-params "^0.1.2" jsan "^3.1.5" @@ -7483,7 +7026,7 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2, repeat-string@^1.5.4: +repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -7497,45 +7040,32 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - dependencies: - lodash "^4.13.1" - -request-promise-native@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.3.tgz#9cb2b2f69f137e4acf35116a08a441cbfd0c0134" - dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.0.0" - -request@2, request@^2.79.0, request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" +request@2: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" + aws-sign2 "~0.7.0" + aws4 "^1.6.0" caseless "~0.12.0" combined-stream "~1.0.5" - extend "~3.0.0" + extend "~3.0.1" forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" tunnel-agent "^0.6.0" - uuid "^3.0.0" + uuid "^3.1.0" request@2.79.0: version "2.79.0" @@ -7562,32 +7092,32 @@ request@2.79.0: tunnel-agent "~0.4.1" uuid "^3.0.0" -request@^2.83.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" +request@^2.79.0, request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" + aws-sign2 "~0.6.0" + aws4 "^1.2.1" caseless "~0.12.0" combined-stream "~1.0.5" - extend "~3.0.1" + extend "~3.0.0" forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - hawk "~6.0.2" - http-signature "~1.2.0" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - stringstream "~0.0.5" - tough-cookie "~2.3.3" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" tunnel-agent "^0.6.0" - uuid "^3.1.0" + uuid "^3.0.0" require-directory@^2.1.1: version "2.1.1" @@ -7682,25 +7212,15 @@ run-async@^0.1.0: dependencies: once "^1.3.0" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" -rx@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - -safe-buffer@^5.0.1: +safe-buffer@^5.0.1, safe-buffer@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" -safe-buffer@^5.1.1, safe-buffer@~5.1.0: +safe-buffer@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -7741,89 +7261,26 @@ sax@^1.2.1, sax@~1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" -sc-auth@~4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/sc-auth/-/sc-auth-4.1.2.tgz#6a11289826febe09c552e38468a22c08cef61eb9" - dependencies: - sc-errors "~1.3.3" - sc-jsonwebtoken "~7.4.2" - -sc-broker-cluster@~4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/sc-broker-cluster/-/sc-broker-cluster-4.3.1.tgz#1a68940e5f95bec609afa067a3ea4754635de0e6" - dependencies: - async "2.0.0" - sc-broker "~4.1.1" - sc-channel "~1.1.0" - sc-errors "~1.3.3" - sc-hasher "~1.0.0" - -sc-broker@~4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/sc-broker/-/sc-broker-4.1.1.tgz#b98b012ca2448b42a204931dbb6aae63e0b14584" - dependencies: - expirymanager "~0.9.3" - fleximap "~0.9.10" - ncom "~1.0.1" - sc-errors "~1.3.3" - uuid "3.1.0" - -sc-channel@1.0.x: +sc-channel@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.0.6.tgz#b38bd47a993e78290fbc53467867f6b2a0a08639" dependencies: sc-emitter "1.x.x" -sc-channel@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.1.0.tgz#8058b2bd630df84888cae70dd41414eafa468a81" - dependencies: - component-emitter "1.2.1" - -sc-emitter@1.x.x: +sc-emitter@1.x.x, sc-emitter@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/sc-emitter/-/sc-emitter-1.1.0.tgz#ef119d4222f4c64f887b486964ef11116cdd0e75" dependencies: component-emitter "1.2.0" -sc-errors@1.0.x: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.0.6.tgz#80e77c36348b2c88bbe7ead8dc63be61f34b7103" - dependencies: - cycle "1.0.3" - -sc-errors@~1.3.3: +sc-errors@~1.3.0: version "1.3.3" resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.3.3.tgz#c00bc4c766a970cc8d5937d08cd58e931d7dae05" -sc-formatter@3.0.x, sc-formatter@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.0.tgz#c91b1fe56c260abd5a6a2e6af98c724bc7998a38" - -sc-formatter@~3.0.1: +sc-formatter@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.1.tgz#c8b3fec0eea51b883dbc22ddfeacb46cd0e8db6c" -sc-hasher@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sc-hasher/-/sc-hasher-1.0.0.tgz#bb22ae1f5a295b847c70aff4515536224950ff11" - -sc-jsonwebtoken@~7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/sc-jsonwebtoken/-/sc-jsonwebtoken-7.4.2.tgz#2a9f67d891e5ae83422108520b8368ae8336c749" - dependencies: - joi "^6.10.1" - jws "^3.1.4" - lodash.once "^4.0.0" - ms "^2.0.0" - xtend "^4.0.1" - -sc-simple-broker@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sc-simple-broker/-/sc-simple-broker-2.1.0.tgz#bcdb23884038756455eb2723bdf6f551296c6eed" - dependencies: - sc-channel "~1.1.0" - schema-utils@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" @@ -7883,45 +7340,14 @@ semver@^4.0.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" -semver@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - semver@~5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" -send@0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309" - dependencies: - debug "2.6.7" - depd "~1.1.0" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - fresh "0.5.0" - http-errors "~1.6.1" - mime "1.3.4" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - serialize-error@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" -serve-static@1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2" - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.15.3" - set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -7934,10 +7360,6 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - sha.js@^2.3.6: version "2.4.8" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" @@ -8016,50 +7438,18 @@ sntp@2.x.x: hoek "4.x.x" socketcluster-client@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-5.3.1.tgz#83eb73bf5cfcd559e372035ab032b0df185936aa" + version "5.5.2" + resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-5.5.2.tgz#9d4369e0e722ff7e55e5422c2d44f5afe1aff128" dependencies: base-64 "0.1.0" + clone "2.1.1" linked-list "0.1.0" - lodash.clonedeep "4.5.0" querystring "0.2.0" - sc-channel "1.0.x" - sc-emitter "1.x.x" - sc-errors "1.0.x" - sc-formatter "3.0.x" - ws "1.1.2" - -socketcluster-server@~6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/socketcluster-server/-/socketcluster-server-6.3.0.tgz#7a1fcc8933e53e1654048bc36b36fc3ae12aed6b" - dependencies: - async "2.0.0" - base64id "0.1.0" - component-emitter "1.2.1" - lodash.clonedeep "4.5.0" - sc-auth "~4.1.1" - sc-errors "~1.3.3" + sc-channel "~1.0.6" + sc-emitter "~1.1.0" + sc-errors "~1.3.0" sc-formatter "~3.0.0" - sc-simple-broker "~2.1.0" - uuid "3.1.0" - uws "8.14.0" - ws "3.1.0" - -socketcluster@^6.7.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/socketcluster/-/socketcluster-6.8.0.tgz#41cf838b0ba982eefdd8e8051967b76e39d7ee73" - dependencies: - async "2.0.0" - base64id "0.1.0" - fs-extra "2.0.0" - inquirer "1.1.3" - minimist "1.1.0" - sc-auth "~4.1.1" - sc-broker-cluster "~4.3.0" - sc-errors "~1.3.3" - socketcluster-server "~6.3.0" - uid-number "0.0.5" - uuid "3.1.0" + ws "3.0.0" socks-proxy-agent@2: version "2.1.1" @@ -8114,21 +7504,10 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -source-map@~0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" -spawn-sync@^1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" - dependencies: - concat-stream "^1.4.7" - os-shim "^0.1.2" - spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -8174,20 +7553,12 @@ stat-mode@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - stdout-stream@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" dependencies: readable-stream "^2.0.1" -stealthy-require@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.0.0.tgz#1a8ed8fc19a8b56268f76f5a1a3e3832b0c26200" - stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -8378,7 +7749,11 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" -symbol-observable@^1.0.2, symbol-observable@^1.0.3: +symbol-observable@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32" + +symbol-observable@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" @@ -8513,12 +7888,6 @@ tinycolor2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" -tmp@^0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" - dependencies: - os-tmpdir "~1.0.1" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -8553,12 +7922,6 @@ to-space-case@^1.0.0: dependencies: to-no-case "^1.0.0" -topo@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/topo/-/topo-1.1.0.tgz#e9d751615d1bb87dc865db182fa1ca0a5ef536d5" - dependencies: - hoek "2.x.x" - toposort@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" @@ -8569,18 +7932,12 @@ tough-cookie@^2.3.2, tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" -tough-cookie@^2.3.3, tough-cookie@~2.3.3: +tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" -tr46@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - dependencies: - punycode "^2.1.0" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -8635,13 +7992,6 @@ type-detect@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" -type-is@~1.6.14, type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -8680,21 +8030,13 @@ uglifyjs-webpack-plugin@^0.4.6: uglify-js "^2.8.29" webpack-sources "^1.0.1" -uid-number@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.5.tgz#5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e" - uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - ultron@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864" + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" unc-path-regex@^0.1.0: version "0.1.2" @@ -8748,7 +8090,7 @@ universalify@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -8772,14 +8114,6 @@ urijs@^1.18.4: version "1.18.12" resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.18.12.tgz#f04d91e1fabb29c16fc842f9a14ee8ddc3fda64e" -url-loader@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7" - dependencies: - loader-utils "^1.0.2" - mime "^1.4.1" - schema-utils "^0.3.0" - url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" @@ -8827,21 +8161,13 @@ utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - -uuid@3.1.0, uuid@^3.0.0, uuid@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uws@8.14.0: - version "8.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-8.14.0.tgz#acc1488d13ecb23fe2f942a7eafb06681fa91431" +uuid@^3.0.0, uuid@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" v8flags@^2.1.1: version "2.1.1" @@ -8860,14 +8186,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -vary@^1, vary@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -velocity-animate@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.0.tgz#fc8771d8dfe1136ff02a707e10fbb0957c4b030f" - vendors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" @@ -8973,14 +8291,10 @@ webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" -webidl-conversions@^4.0.0, webidl-conversions@^4.0.1: +webidl-conversions@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - webpack-node-externals@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd" @@ -9043,14 +8357,6 @@ whatwg-url@^4.3.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.3.0.tgz#597ee5488371abe7922c843397ddec1ae94c048d" - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.0" - webidl-conversions "^4.0.1" - whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" @@ -9063,7 +8369,13 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.2.12, which@^1.2.9: +which@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +which@^1.2.12, which@^1.2.9: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: @@ -9140,18 +8452,11 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -ws@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -ws@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.1.0.tgz#8afafecdeab46d572e5397ee880739367aa2f41c" +ws@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.0.0.tgz#98ddb00056c8390cb751e7788788497f99103b6c" dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.0.1" ultron "~1.1.0" xml-char-classes@^1.0.0: @@ -9170,7 +8475,7 @@ xregexp@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-3.2.0.tgz#cb3601987bfe2695b584000c18f1c4a8c322878e" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From 739637fea30011acdf6b9a3aba60fb4b8c45c9e9 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Tue, 2 Jan 2018 07:48:08 +0100 Subject: [PATCH 02/21] [PLT-7972] Ability to reset your own password via System Console Users List (#389) --- actions/admin_actions.jsx | 4 +- .../admin_console/reset_password_modal.jsx | 91 ++++++++++++++++--- i18n/en.json | 2 + sass/routes/_admin-console.scss | 10 ++ 4 files changed, 94 insertions(+), 13 deletions(-) diff --git a/actions/admin_actions.jsx b/actions/admin_actions.jsx index 88e1b07484e7..8046348097b6 100644 --- a/actions/admin_actions.jsx +++ b/actions/admin_actions.jsx @@ -86,8 +86,8 @@ export async function recycleDatabaseConnection(success, error) { } } -export async function adminResetPassword(userId, password, success, error) { - const {data, error: err} = await UserActions.updateUserPassword(userId, '', password)(dispatch, getState); +export async function adminResetPassword(userId, currentPassword, password, success, error) { + const {data, error: err} = await UserActions.updateUserPassword(userId, currentPassword, password)(dispatch, getState); if (data && success) { success(data); } else if (err && error) { diff --git a/components/admin_console/reset_password_modal.jsx b/components/admin_console/reset_password_modal.jsx index 5713187239f1..13079ef17fc0 100644 --- a/components/admin_console/reset_password_modal.jsx +++ b/components/admin_console/reset_password_modal.jsx @@ -7,6 +7,7 @@ import {Modal} from 'react-bootstrap'; import {FormattedMessage} from 'react-intl'; import {adminResetPassword} from 'actions/admin_actions.jsx'; +import UserStore from 'stores/user_store.jsx'; import * as Utils from 'utils/utils.jsx'; @@ -29,35 +30,64 @@ export default class ResetPasswordModal extends React.Component { this.doCancel = this.doCancel.bind(this); this.state = { - serverError: null + serverErrorNewPass: null, + serverErrorCurrentPass: null }; } + componentWillUnmount() { + this.setState({ + serverErrorNewPass: null, + serverErrorCurrentPass: null + }); + } + doSubmit(e) { e.preventDefault(); + let currentPassword = ''; + if (this.refs.currentPassword) { + currentPassword = this.refs.currentPassword.value; + if (currentPassword === '') { + let errorMsg = ''; + errorMsg = ( + + ); + this.setState({serverErrorCurrentPass: errorMsg}); + return; + } + } + const password = this.refs.password.value; const passwordErr = Utils.isValidPassword(password, Utils.getPasswordConfig()); if (passwordErr) { - this.setState({serverError: passwordErr}); + this.setState({serverErrorNewPass: passwordErr}); return; } - this.setState({serverError: null}); + + this.setState({serverErrorNewPass: null}); adminResetPassword( this.props.user.id, + currentPassword, password, () => { this.props.onModalSubmit(this.props.user); }, (err) => { - this.setState({serverError: err.message}); + this.setState({serverErrorCurrentPass: err.message}); } ); } doCancel() { - this.setState({serverError: null}); + this.setState({ + serverErrorNewPass: null, + serverErrorCurrentPass: null + }); this.props.onModalDismissed(); } @@ -68,11 +98,11 @@ export default class ResetPasswordModal extends React.Component { } let urlClass = 'input-group input-group--limit'; - let serverError = null; + let serverErrorNewPass = null; - if (this.state.serverError) { + if (this.state.serverErrorNewPass) { urlClass += ' has-error'; - serverError =

{this.state.serverError}

; + serverErrorNewPass =

{this.state.serverErrorNewPass}

; } let title; @@ -92,6 +122,43 @@ export default class ResetPasswordModal extends React.Component { ); } + const currentUserId = UserStore.getCurrentId(); + let currentPassword = null; + let serverErrorCurrentPass = null; + let newPasswordFocus = true; + if (currentUserId === user.id) { + newPasswordFocus = false; + let urlClassCurrentPass = 'input-group input-group--limit'; + if (this.state.serverErrorCurrentPass) { + urlClassCurrentPass += ' has-error'; + serverErrorCurrentPass =

{this.state.serverErrorCurrentPass}

; + } + currentPassword = ( +
+
+ + + + +
+
+ ); + } + return (
+ {currentPassword}
- {serverError} + {serverErrorNewPass} + {serverErrorCurrentPass}
diff --git a/i18n/en.json b/i18n/en.json index c59c26181672..916648e211df 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -780,9 +780,11 @@ "admin.requestButton.requestSuccess": "Test Successful", "admin.reset_password.cancel": "Cancel", "admin.reset_password.newPassword": "New Password", + "admin.reset_password.curentPassword": "Current Password", "admin.reset_password.reset": "Reset", "admin.reset_password.submit": "Please enter at least {chars} characters.", "admin.reset_password.titleReset": "Reset Password", + "admin.reset_password.missing_current": "Please enter your current password.", "admin.reset_password.titleSwitch": "Switch Account to Email/Password", "admin.saml.assertionConsumerServiceURLDesc": "Enter https:///login/sso/saml. Make sure you use HTTP or HTTPS in your URL depending on your server configuration. This field is also known as the Assertion Consumer Service URL.", "admin.saml.assertionConsumerServiceURLEx": "E.g.: \"https:///login/sso/saml\"", diff --git a/sass/routes/_admin-console.scss b/sass/routes/_admin-console.scss index be0354f00f02..97bab400f196 100644 --- a/sass/routes/_admin-console.scss +++ b/sass/routes/_admin-console.scss @@ -762,3 +762,13 @@ .admin-setting-user__fullname { @include opacity(.5); } + +.password__group-addon { + min-width: 150px; + text-align: left; + +} + +.password__group-addon-space { + margin-bottom: 20px; +} From b9303b51de2c3d7ecf68fbf9a57ba2c7e7b5d571 Mon Sep 17 00:00:00 2001 From: Chris Duarte Date: Mon, 1 Jan 2018 22:50:04 -0800 Subject: [PATCH 03/21] add config option to hide tutorial screens (#325) --- components/channel_view/index.js | 2 +- components/create_post/create_post.jsx | 2 +- components/needs_team/needs_team.jsx | 2 +- components/sidebar.jsx | 2 +- components/sidebar_header.jsx | 2 +- components/sidebar_right_menu/sidebar_right_menu.jsx | 2 +- tests/components/create_post/create_post.test.jsx | 3 ++- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/components/channel_view/index.js b/components/channel_view/index.js index 08eaff409bfd..7845b5a9382a 100644 --- a/components/channel_view/index.js +++ b/components/channel_view/index.js @@ -27,7 +27,7 @@ function mapStateToProps(state, ownProps) { return { channelId, deactivatedChannel: getDeactivatedChannel(state, channelId), - showTutorial: Number(get(state, Preferences.TUTORIAL_STEP, state.entities.users.currentUserId, 999)) <= TutorialSteps.INTRO_SCREENS + showTutorial: Number(get(state, Preferences.TUTORIAL_STEP, state.entities.users.currentUserId, 999)) <= TutorialSteps.INTRO_SCREENS && global.window.mm_config.EnableTutorial === 'true' }; } diff --git a/components/create_post/create_post.jsx b/components/create_post/create_post.jsx index 003d5e2d0960..38fe791aed93 100644 --- a/components/create_post/create_post.jsx +++ b/components/create_post/create_post.jsx @@ -733,7 +733,7 @@ export default class CreatePost extends React.Component { } let tutorialTip = null; - if (parseInt(this.props.showTutorialTip, 10) === TutorialSteps.POST_POPOVER) { + if (parseInt(this.props.showTutorialTip, 10) === TutorialSteps.POST_POPOVER && global.window.mm_config.EnableTutorial === 'true') { tutorialTip = this.createTutorialTip(); } diff --git a/components/needs_team/needs_team.jsx b/components/needs_team/needs_team.jsx index 75b72c37fe39..1f9118ec797a 100644 --- a/components/needs_team/needs_team.jsx +++ b/components/needs_team/needs_team.jsx @@ -105,7 +105,7 @@ export default class NeedsTeam extends React.Component { componentWillMount() { // Go to tutorial if we are first arriving const tutorialStep = PreferenceStore.getInt(Preferences.TUTORIAL_STEP, UserStore.getCurrentId(), 999); - if (tutorialStep <= TutorialSteps.INTRO_SCREENS) { + if (tutorialStep <= TutorialSteps.INTRO_SCREENS && global.window.mm_config.EnableTutorial === 'true') { browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/tutorial'); } } diff --git a/components/sidebar.jsx b/components/sidebar.jsx index 01d8dff309d1..18cf4e824fb5 100644 --- a/components/sidebar.jsx +++ b/components/sidebar.jsx @@ -87,7 +87,7 @@ export default class Sidebar extends React.Component { teamMembers, ...displayableChannels, unreadCounts: JSON.parse(JSON.stringify(ChannelStore.getUnreadCounts())), - showTutorialTip: tutorialStep === TutorialSteps.CHANNEL_POPOVER, + showTutorialTip: tutorialStep === TutorialSteps.CHANNEL_POPOVER && global.window.mm_config.EnableTutorial === 'true', currentTeam: TeamStore.getCurrent(), currentUser: UserStore.getCurrentUser(), townSquare: ChannelStore.getByName(Constants.DEFAULT_CHANNEL), diff --git a/components/sidebar_header.jsx b/components/sidebar_header.jsx index 0cd3eb6eaa79..cea1b1b890d5 100644 --- a/components/sidebar_header.jsx +++ b/components/sidebar_header.jsx @@ -42,7 +42,7 @@ export default class SidebarHeader extends React.Component { return {}; } const tutorialStep = PreferenceStore.getInt(Preferences.TUTORIAL_STEP, this.props.currentUser.id, 999); - const showTutorialTip = tutorialStep === TutorialSteps.MENU_POPOVER && !Utils.isMobile(); + const showTutorialTip = tutorialStep === TutorialSteps.MENU_POPOVER && !Utils.isMobile() && global.window.mm_config.EnableTutorial === 'true'; return {showTutorialTip}; } diff --git a/components/sidebar_right_menu/sidebar_right_menu.jsx b/components/sidebar_right_menu/sidebar_right_menu.jsx index 22b2eaafd528..3bad34558129 100644 --- a/components/sidebar_right_menu/sidebar_right_menu.jsx +++ b/components/sidebar_right_menu/sidebar_right_menu.jsx @@ -103,7 +103,7 @@ export default class SidebarRightMenu extends React.Component { currentUser: UserStore.getCurrentUser(), teamMembers: TeamStore.getMyTeamMembers(), teamListings: TeamStore.getTeamListings(), - showTutorialTip: tutorialStep === TutorialSteps.MENU_POPOVER && Utils.isMobile() + showTutorialTip: tutorialStep === TutorialSteps.MENU_POPOVER && Utils.isMobile() && global.window.mm_config.EnableTutorial === 'true' }; } diff --git a/tests/components/create_post/create_post.test.jsx b/tests/components/create_post/create_post.test.jsx index c93e6d00bd8f..cb3bd5e0d87a 100644 --- a/tests/components/create_post/create_post.test.jsx +++ b/tests/components/create_post/create_post.test.jsx @@ -100,7 +100,8 @@ describe('components/create_post', () => { window.mm_config = { EnableEmojiPicker: 'true', EnableFileAttachments: 'true', - EnableConfirmNotificationsToChannel: 'true' + EnableConfirmNotificationsToChannel: 'true', + EnableTutorial: 'true' }; it('should match snapshot, init', () => { From bf64c648d9a1154580e74959b39f59c777e1a6e1 Mon Sep 17 00:00:00 2001 From: panditsavitags Date: Tue, 2 Jan 2018 13:43:59 +0000 Subject: [PATCH 04/21] Issue 7786 new (#486) * toggle keyboardshortcuts on CTRL+/ [#7751](https://github.com/mattermost/mattermost-server/issues/7751) * Migrate audio_video_preview component to redux, wrote few test cases * fixes as per make check-style * migrated delete_emoji_modal.jsx to pure added the tests and made the changes as per the review comments --- .../emoji/components/delete_emoji_modal.jsx | 11 +++++----- tests/components/delete_emoji_modal.test.jsx | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 tests/components/delete_emoji_modal.test.jsx diff --git a/components/emoji/components/delete_emoji_modal.jsx b/components/emoji/components/delete_emoji_modal.jsx index ea1a169234e1..9aff5e46e143 100644 --- a/components/emoji/components/delete_emoji_modal.jsx +++ b/components/emoji/components/delete_emoji_modal.jsx @@ -5,9 +5,14 @@ import PropTypes from 'prop-types'; import React from 'react'; import {FormattedMessage} from 'react-intl'; -import DeleteModalTrigger from '../../delete_modal_trigger.jsx'; +import DeleteModalTrigger from 'components/delete_modal_trigger.jsx'; export default class DeleteEmoji extends DeleteModalTrigger { + + static propTypes = { + onDelete: PropTypes.func.isRequired + } + get triggerTitle() { return ( { + const instance = new DeleteEmoji(); + test('title should match the of delete emoji title', () => { + const wrapper = mountWithIntl(instance.triggerTitle); + expect(wrapper.html()).toBe('Delete'); + }); + test('modal title should match the of delete emoji modal title', () => { + const wrapper = mountWithIntl(instance.modalTitle); + expect(wrapper.html()).toBe('Delete Custom Emoji'); + }); + test('modal message should match the of delete emoji modal message', () => { + const wrapper = mountWithIntl(instance.modalMessage); + expect(wrapper.html()).toMatch(/This action permanently deletes the custom emoji. Are you sure you want to delete it?/); + }); + test('modal confirmation button should match the of delete emoji modal confirmation button', () => { + const wrapper = mountWithIntl(instance.modalConfirmButton); + expect(wrapper.html()).toBe('Delete'); + }); +}); \ No newline at end of file From 7beeb78e966b3ef42c98a21c4468692ba718481f Mon Sep 17 00:00:00 2001 From: Trevor Borg Date: Tue, 2 Jan 2018 07:44:16 -0600 Subject: [PATCH 05/21] PLT-8215 Channel Switcher also checks member full name, nickname for GM and DM channels (#467) * factors the channel filtering logic out of `formatChannelsAndDispatch` * resolves user profiles for GMs and DMs and includes their current username, nickname, and full name with the channel display name for matching against * replaces usage of `String.prototype.indexOf` with `String.prototype.includes` for readability --- .../suggestion/switch_channel_provider.jsx | 41 ++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/components/suggestion/switch_channel_provider.jsx b/components/suggestion/switch_channel_provider.jsx index 14dafbc827cf..6faac520ffb3 100644 --- a/components/suggestion/switch_channel_provider.jsx +++ b/components/suggestion/switch_channel_provider.jsx @@ -8,7 +8,7 @@ import {Preferences} from 'mattermost-redux/constants'; import {getChannelsInCurrentTeam, getGroupChannels, getMyChannelMemberships} from 'mattermost-redux/selectors/entities/channels'; import {getBool} from 'mattermost-redux/selectors/entities/preferences'; import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams'; -import {getCurrentUserId, searchProfiles} from 'mattermost-redux/selectors/entities/users'; +import {getCurrentUserId, searchProfiles, getUserIdsInChannels, getUser} from 'mattermost-redux/selectors/entities/users'; import AppDispatcher from 'dispatcher/app_dispatcher.jsx'; import store from 'stores/redux_store.jsx'; @@ -118,6 +118,36 @@ function quickSwitchSorter(wrappedA, wrappedB) { return 1; } +function makeChannelSearchFilter(channelPrefix) { + const channelPrefixLower = channelPrefix.toLowerCase(); + const curState = getState(); + const usersInChannels = getUserIdsInChannels(curState); + const userSearchStrings = {}; + + return (channel) => { + let searchString = channel.display_name; + + if (channel.type === Constants.GM_CHANNEL || channel.type === Constants.DM_CHANNEL) { + for (const userId of usersInChannels[channel.id]) { + let userString = userSearchStrings[userId]; + + if (!userString) { + const user = getUser(curState, userId); + if (!user) { + continue; + } + const {nickname, username} = user; + userString = `${nickname}${username}${Utils.getFullName(user)}`; + userSearchStrings[userId] = userString; + } + searchString += userString; + } + } + + return searchString.toLowerCase().includes(channelPrefixLower); + }; +} + export default class SwitchChannelProvider extends Provider { handlePretextChanged(suggestionId, channelPrefix) { if (channelPrefix) { @@ -176,6 +206,7 @@ export default class SwitchChannelProvider extends Provider { formatChannelsAndDispatch(channelPrefix, suggestionId, allChannels, users, skipNotInChannel = false) { const channels = []; + const members = getMyChannelMemberships(getState()); if (this.shouldCancelDispatch(channelPrefix)) { @@ -186,6 +217,8 @@ export default class SwitchChannelProvider extends Provider { const completedChannels = {}; + const channelFilter = makeChannelSearchFilter(channelPrefix); + for (const id of Object.keys(allChannels)) { const channel = allChannels[id]; @@ -193,9 +226,7 @@ export default class SwitchChannelProvider extends Provider { continue; } - const member = members[channel.id]; - - if (channel.display_name.toLowerCase().indexOf(channelPrefix.toLowerCase()) !== -1) { + if (channelFilter(channel)) { const newChannel = Object.assign({}, channel); const wrappedChannel = {channel: newChannel, name: newChannel.name, deactivated: false}; if (newChannel.type === Constants.GM_CHANNEL) { @@ -210,7 +241,7 @@ export default class SwitchChannelProvider extends Provider { continue; } } - } else if (member) { + } else if (members[channel.id]) { wrappedChannel.type = Constants.MENTION_CHANNELS; } else { wrappedChannel.type = Constants.MENTION_MORE_CHANNELS; From b4caafb971c4db30aea96b42e231b451c3cab8f6 Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Tue, 2 Jan 2018 22:50:46 +0800 Subject: [PATCH 06/21] fix currentYear snapshots test failure and small fix to components test (#524) --- .../edit_channel_header_modal.test.jsx.snap | 12 ++++----- .../edit_channel_purpose_modal.test.jsx.snap | 14 +++++------ .../edit_post_modal.test.jsx.snap | 10 ++++---- .../file_info_preview.test.jsx.snap | 2 +- .../rename_channel_modal.test.jsx.snap | 2 +- .../search_results_item.test.jsx.snap | 6 ++--- tests/components/about_build_modal.test.jsx | 14 +++++++++++ .../__snapshots__/dot_menu.test.jsx.snap | 8 +++--- .../__snapshots__/dot_menu_edit.test.jsx.snap | 6 ++--- .../dot_menu_empty.test.jsx.snap | 6 ++--- .../__snapshots__/dot_menu_flag.test.jsx.snap | 6 ++--- .../__snapshots__/dot_menu_item.test.jsx.snap | 12 ++++----- .../dot_menu_mobile.test.jsx.snap | 2 +- tests/components/dot_menu/dot_menu.test.jsx | 2 +- .../dot_menu/dot_menu_edit.test.jsx | 2 +- .../dot_menu/dot_menu_empty.test.jsx | 2 +- .../dot_menu/dot_menu_flag.test.jsx | 2 +- .../dot_menu/dot_menu_item.test.jsx | 2 +- .../dot_menu/dot_menu_mobile.test.jsx | 2 +- .../edit_channel_header_modal.test.jsx | 2 +- .../edit_channel_purpose_modal.test.jsx | 2 +- tests/components/edit_post_modal.test.jsx | 2 +- tests/components/file_info_preview.test.jsx | 2 +- .../header_footer_template.test.jsx | 17 +++++++++++++ .../integrations/edit_command.test.jsx | 25 +++++++++++-------- .../components/rename_channel_modal.test.jsx | 2 +- tests/components/search_results_item.test.jsx | 2 +- 27 files changed, 101 insertions(+), 65 deletions(-) diff --git a/tests/components/__snapshots__/edit_channel_header_modal.test.jsx.snap b/tests/components/__snapshots__/edit_channel_header_modal.test.jsx.snap index dc1532dc5d98..53ecd59f059f 100644 --- a/tests/components/__snapshots__/edit_channel_header_modal.test.jsx.snap +++ b/tests/components/__snapshots__/edit_channel_header_modal.test.jsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`components/edit_channel_header_modal/edit_channel_header_modal edit dirrect message channel 1`] = ` +exports[`components/EditChannelHeaderModal edit dirrect message channel 1`] = ` `; -exports[`components/edit_channel_header_modal/edit_channel_header_modal error with intl message 1`] = ` +exports[`components/EditChannelHeaderModal error with intl message 1`] = ` `; -exports[`components/edit_channel_header_modal/edit_channel_header_modal error without intl message 1`] = ` +exports[`components/EditChannelHeaderModal error without intl message 1`] = ` `; -exports[`components/edit_channel_header_modal/edit_channel_header_modal hide error message on new request 1`] = ` +exports[`components/EditChannelHeaderModal hide error message on new request 1`] = ` `; -exports[`components/edit_channel_header_modal/edit_channel_header_modal should match snapshot, init 1`] = ` +exports[`components/EditChannelHeaderModal should match snapshot, init 1`] = ` `; -exports[`components/edit_channel_header_modal/edit_channel_header_modal submitted 1`] = ` +exports[`components/EditChannelHeaderModal submitted 1`] = ` `; -exports[`comoponents/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx match with modal error 1`] = ` +exports[`comoponents/EditChannelPurposeModal match with modal error 1`] = ` `; -exports[`comoponents/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx match with modal error with fake id 1`] = ` +exports[`comoponents/EditChannelPurposeModal match with modal error with fake id 1`] = ` `; -exports[`comoponents/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx should match for private channel 1`] = ` +exports[`comoponents/EditChannelPurposeModal should match for private channel 1`] = ` `; -exports[`comoponents/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx should match on init 1`] = ` +exports[`comoponents/EditChannelPurposeModal should match on init 1`] = ` `; -exports[`comoponents/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx should match submitted 1`] = ` +exports[`comoponents/EditChannelPurposeModal should match submitted 1`] = ` `; -exports[`comoponents/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx should match with display name 1`] = ` +exports[`comoponents/EditChannelPurposeModal should match with display name 1`] = ` `; -exports[`comoponents/edit_post_modal/edit_post_modal.jsx should match without editingPost 1`] = ` +exports[`comoponents/EditPostModal should match without editingPost 1`] = ` `; -exports[`comoponents/edit_post_modal/edit_post_modal.jsx should match without emoji picker 1`] = ` +exports[`comoponents/EditPostModal should match without emoji picker 1`] = ` `; -exports[`comoponents/edit_post_modal/edit_post_modal.jsx should show emojis on emojis click 1`] = ` +exports[`comoponents/EditPostModal should show emojis on emojis click 1`] = ` `; -exports[`comoponents/edit_post_modal/edit_post_modal.jsx should show errors when it is set in the state 1`] = ` +exports[`comoponents/EditPostModal should show errors when it is set in the state 1`] = ` diff --git a/tests/components/__snapshots__/rename_channel_modal.test.jsx.snap b/tests/components/__snapshots__/rename_channel_modal.test.jsx.snap index 7b4afd760045..b9cb02968949 100644 --- a/tests/components/__snapshots__/rename_channel_modal.test.jsx.snap +++ b/tests/components/__snapshots__/rename_channel_modal.test.jsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`components/rename_channel_modal/rename_channel_modal.jsx should match snapshot 1`] = ` +exports[`components/RenameChannelModal should match snapshot 1`] = ` @@ -207,7 +207,7 @@ exports[`components/search_results_item should match snapshot for DM 1`] = ` `; -exports[`components/search_results_item should match snapshot for channel 1`] = ` +exports[`components/SearchResultsItem should match snapshot for channel 1`] = `
@@ -383,7 +383,7 @@ exports[`components/search_results_item should match snapshot for channel 1`] =
`; -exports[`components/search_results_item should match snapshot for deleted message with attachments by bot 1`] = ` +exports[`components/SearchResultsItem should match snapshot for deleted message with attachments by bot 1`] = `
diff --git a/tests/components/about_build_modal.test.jsx b/tests/components/about_build_modal.test.jsx index 7b6af8812193..650042e14787 100644 --- a/tests/components/about_build_modal.test.jsx +++ b/tests/components/about_build_modal.test.jsx @@ -10,15 +10,29 @@ import {mountWithIntl} from 'tests/helpers/intl-test-helper.jsx'; import AboutBuildModal from 'components/about_build_modal/about_build_modal.jsx'; describe('components/AboutBuildModal', () => { + const RealDate = Date; + + function mockDate(date) { + global.Date = class extends RealDate { + constructor() { + super(); + return new RealDate(date); + } + }; + } + let config = null; let license = null; afterEach(() => { + global.Date = RealDate; config = null; license = null; }); beforeEach(() => { + mockDate('2017-01-01'); + config = { BuildEnterpriseReady: 'true', Version: '3.6.0', diff --git a/tests/components/dot_menu/__snapshots__/dot_menu.test.jsx.snap b/tests/components/dot_menu/__snapshots__/dot_menu.test.jsx.snap index 153121cb8c49..c04c1385a445 100644 --- a/tests/components/dot_menu/__snapshots__/dot_menu.test.jsx.snap +++ b/tests/components/dot_menu/__snapshots__/dot_menu.test.jsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`components/integrations/DotMenu should match snapshot, canDelete 1`] = ` +exports[`components/dot_menu/DotMenu should match snapshot, canDelete 1`] = `
`; -exports[`components/integrations/DotMenu should match snapshot, on Center 1`] = ` +exports[`components/dot_menu/DotMenu should match snapshot, on Center 1`] = `
`; -exports[`components/integrations/DotMenu should match snapshot, on Center 2`] = ` +exports[`components/dot_menu/DotMenu should match snapshot, on Center 2`] = `
`; -exports[`components/integrations/DotMenu should match snapshot, on Center 3`] = ` +exports[`components/dot_menu/DotMenu should match snapshot, on Center 3`] = `
`; -exports[`components/integrations/DotMenuEdit should match snapshot, on RHS 1`] = ` +exports[`components/dot_menu/DotMenuEdit should match snapshot, on RHS 1`] = `
  • `; -exports[`components/integrations/DotMenuEdit should match snapshot, on RHS_ROOT 1`] = ` +exports[`components/dot_menu/DotMenuEdit should match snapshot, on RHS_ROOT 1`] = `
  • `; -exports[`components/integrations/DotMenuFlag should match snapshot, unflagged on Center 1`] = ` +exports[`components/dot_menu/DotMenuFlag should match snapshot, unflagged on Center 1`] = `
  • `; -exports[`components/integrations/DotMenuItem should match snapshot, on Pin - pinned 1`] = ` +exports[`components/dot_menu/DotMenuItem should match snapshot, on Pin - pinned 1`] = `
  • `; -exports[`components/integrations/DotMenuItem should match snapshot, on Pin - unpinned 1`] = ` +exports[`components/dot_menu/DotMenuItem should match snapshot, on Pin - unpinned 1`] = `
  • `; -exports[`components/integrations/DotMenuItem should match snapshot, on RHS_ROOT 1`] = ` +exports[`components/dot_menu/DotMenuItem should match snapshot, on RHS_ROOT 1`] = `
  • `; -exports[`components/integrations/DotMenuItem should match snapshot, on Reply 1`] = ` +exports[`components/dot_menu/DotMenuItem should match snapshot, on Reply 1`] = `
  • { }; }); -describe('components/integrations/DotMenu', () => { +describe('components/dot_menu/DotMenu', () => { global.window.mm_license = {}; beforeEach(() => { diff --git a/tests/components/dot_menu/dot_menu_edit.test.jsx b/tests/components/dot_menu/dot_menu_edit.test.jsx index 91ecddf0a7ab..6649c707c530 100644 --- a/tests/components/dot_menu/dot_menu_edit.test.jsx +++ b/tests/components/dot_menu/dot_menu_edit.test.jsx @@ -8,7 +8,7 @@ import Constants from 'utils/constants.jsx'; import DotMenuEdit from 'components/dot_menu/dot_menu_edit.jsx'; -describe('components/integrations/DotMenuEdit', () => { +describe('components/dot_menu/DotMenuEdit', () => { const baseProps = { idCount: -1, idPrefix: Constants.CENTER, diff --git a/tests/components/dot_menu/dot_menu_empty.test.jsx b/tests/components/dot_menu/dot_menu_empty.test.jsx index f3cd8fa72947..03a69f65e429 100644 --- a/tests/components/dot_menu/dot_menu_empty.test.jsx +++ b/tests/components/dot_menu/dot_menu_empty.test.jsx @@ -22,7 +22,7 @@ jest.mock('utils/post_utils', () => { }; }); -describe('components/integrations/DotMenu returning empty ("")', () => { +describe('components/dot_menu/DotMenu returning empty ("")', () => { global.window.mm_license = {}; beforeEach(() => { diff --git a/tests/components/dot_menu/dot_menu_flag.test.jsx b/tests/components/dot_menu/dot_menu_flag.test.jsx index 9c9dc603a320..0f6e630c7d77 100644 --- a/tests/components/dot_menu/dot_menu_flag.test.jsx +++ b/tests/components/dot_menu/dot_menu_flag.test.jsx @@ -8,7 +8,7 @@ import Constants from 'utils/constants.jsx'; import DotMenuFlag from 'components/dot_menu/dot_menu_flag.jsx'; -describe('components/integrations/DotMenuFlag', () => { +describe('components/dot_menu/DotMenuFlag', () => { const baseProps = { idCount: -1, idPrefix: Constants.CENTER, diff --git a/tests/components/dot_menu/dot_menu_item.test.jsx b/tests/components/dot_menu/dot_menu_item.test.jsx index d1c0878e6304..23c88174750b 100644 --- a/tests/components/dot_menu/dot_menu_item.test.jsx +++ b/tests/components/dot_menu/dot_menu_item.test.jsx @@ -17,7 +17,7 @@ jest.mock('actions/global_actions.jsx', () => { }; }); -describe('components/integrations/DotMenuItem', () => { +describe('components/dot_menu/DotMenuItem', () => { test('should match snapshot, on Reply', () => { const props = { idPrefix: 'idPrefixDotMenuReply', diff --git a/tests/components/dot_menu/dot_menu_mobile.test.jsx b/tests/components/dot_menu/dot_menu_mobile.test.jsx index 8ee087a85fcf..13348eb139ac 100644 --- a/tests/components/dot_menu/dot_menu_mobile.test.jsx +++ b/tests/components/dot_menu/dot_menu_mobile.test.jsx @@ -22,7 +22,7 @@ jest.mock('utils/post_utils', () => { }; }); -describe('components/integrations/DotMenu on mobile view', () => { +describe('components/dot_menu/DotMenu on mobile view', () => { global.window.mm_license = {}; beforeEach(() => { diff --git a/tests/components/edit_channel_header_modal.test.jsx b/tests/components/edit_channel_header_modal.test.jsx index 75d8b823ac84..e10e817cbf2f 100644 --- a/tests/components/edit_channel_header_modal.test.jsx +++ b/tests/components/edit_channel_header_modal.test.jsx @@ -18,7 +18,7 @@ jest.mock('react-dom', () => ({ }) })); -describe('components/edit_channel_header_modal/edit_channel_header_modal', () => { +describe('components/EditChannelHeaderModal', () => { const channel = { id: 'fake-id', header: 'Fake Channel' diff --git a/tests/components/edit_channel_purpose_modal.test.jsx b/tests/components/edit_channel_purpose_modal.test.jsx index a81fe4074e0f..9091e80e60a7 100644 --- a/tests/components/edit_channel_purpose_modal.test.jsx +++ b/tests/components/edit_channel_purpose_modal.test.jsx @@ -5,7 +5,7 @@ import {shallow} from 'enzyme'; import EditChannelPurposeModal from 'components/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx'; import Constants from 'utils/constants.jsx'; -describe('comoponents/edit_channel_purpose_modal/edit_channel_purpose_modal.jsx', () => { +describe('comoponents/EditChannelPurposeModal', () => { const channel = { id: 'fake-id', purpose: 'purpose' diff --git a/tests/components/edit_post_modal.test.jsx b/tests/components/edit_post_modal.test.jsx index 9b49f14aa5c4..6d9cdc19642d 100644 --- a/tests/components/edit_post_modal.test.jsx +++ b/tests/components/edit_post_modal.test.jsx @@ -53,7 +53,7 @@ function createEditPost({ctrlSend, config, license, editingPost, actions} = {}) ); } -describe('comoponents/edit_post_modal/edit_post_modal.jsx', () => { +describe('comoponents/EditPostModal', () => { it('should match with default config', () => { const wrapper = shallow(createEditPost()); expect(wrapper).toMatchSnapshot(); diff --git a/tests/components/file_info_preview.test.jsx b/tests/components/file_info_preview.test.jsx index 6110285eed8b..c82c166fad0d 100644 --- a/tests/components/file_info_preview.test.jsx +++ b/tests/components/file_info_preview.test.jsx @@ -7,7 +7,7 @@ import {shallow} from 'enzyme'; import FileInfoPreview from 'components/file_info_preview.jsx'; -describe('components/file_info_preview.jsx', () => { +describe('components/FileInfoPreview', () => { const requiredProps = { fileUrl: 'https://pre-release.mattermost.com/api/v4/files/rqir81f7a7ft8m6j6ej7g1txuo', fileInfo: {name: 'Test Image', size: 100, extension: 'jpg'} diff --git a/tests/components/header_footer_template.test.jsx b/tests/components/header_footer_template.test.jsx index 0e5abefddafc..50c7de5bcd11 100644 --- a/tests/components/header_footer_template.test.jsx +++ b/tests/components/header_footer_template.test.jsx @@ -8,13 +8,30 @@ import {shallow} from 'enzyme'; import NotLoggedIn from 'components/header_footer_template/header_footer_template.jsx'; describe('components/HeaderFooterTemplate', () => { + const RealDate = Date; + + function mockDate(date) { + global.Date = class extends RealDate { + constructor() { + super(); + return new RealDate(date); + } + }; + } + beforeEach(() => { + mockDate('2017-01-01'); + const elm = document.createElement('div'); elm.setAttribute('id', 'root'); document.body.appendChild(elm); document.body.classList.remove('sticky'); }); + afterEach(() => { + global.Date = RealDate; + }); + test('should match snapshot without children', () => { const wrapper = shallow( diff --git a/tests/components/integrations/edit_command.test.jsx b/tests/components/integrations/edit_command.test.jsx index eae14f7c1282..db72dcf12cd4 100644 --- a/tests/components/integrations/edit_command.test.jsx +++ b/tests/components/integrations/edit_command.test.jsx @@ -4,18 +4,17 @@ import React from 'react'; import {shallow} from 'enzyme'; -import {shallowWithIntl} from 'tests/helpers/intl-test-helper'; - import EditCommand from 'components/integrations/components/edit_command/edit_command.jsx'; describe('components/integrations/EditCommand', () => { - const getCustomTeamCommands = jest.genMockFunction().mockImplementation( + const getCustomTeamCommands = jest.fn( () => { return new Promise((resolve) => { process.nextTick(() => resolve()); }); } ); + const commands = { r5tpgt4iepf45jt768jz84djic: { id: 'r5tpgt4iepf45jt768jz84djic', @@ -52,7 +51,7 @@ describe('components/integrations/EditCommand', () => { commands, editCommandRequest, actions: { - getCustomTeamCommands: jest.fn(), + getCustomTeamCommands, editCommand: jest.fn() } }; @@ -63,18 +62,20 @@ describe('components/integrations/EditCommand', () => { global.window.mm_config.EnableCommands = 'true'; }); - beforeEach(() => { + afterEach(() => { global.window.mm_config = {}; }); test('should match snapshot', () => { - const props = {...baseProps, getCustomTeamCommands}; - const wrapper = shallowWithIntl( - + const wrapper = shallow( + ); wrapper.setState({originalCommand: commands.r5tpgt4iepf45jt768jz84djic}); expect(wrapper).toMatchSnapshot(); + + expect(baseProps.actions.getCustomTeamCommands).toHaveBeenCalled(); + expect(baseProps.actions.getCustomTeamCommands).toHaveBeenCalledWith(team.id); }); test('should match snapshot, loading', () => { @@ -87,13 +88,17 @@ describe('components/integrations/EditCommand', () => { test('should match snapshot when EnableCommands is false', () => { global.window.mm_config.EnableCommands = 'false'; - const props = {...baseProps, getCustomTeamCommands}; + const actions = { + getCustomTeamCommands: jest.fn(), + editCommand: jest.fn() + }; + const props = {...baseProps, actions}; const wrapper = shallow( ); expect(wrapper).toMatchSnapshot(); - expect(props.actions.getCustomTeamCommands).not.toHaveBeenCalledWith(); + expect(actions.getCustomTeamCommands).not.toHaveBeenCalled(); }); test('should have match state when handleConfirmModal is called', () => { diff --git a/tests/components/rename_channel_modal.test.jsx b/tests/components/rename_channel_modal.test.jsx index 9769501bf74d..48447be1b06c 100644 --- a/tests/components/rename_channel_modal.test.jsx +++ b/tests/components/rename_channel_modal.test.jsx @@ -8,7 +8,7 @@ import {shallowWithIntl} from 'tests/helpers/intl-test-helper'; import RenameChannelModal from 'components/rename_channel_modal/rename_channel_modal.jsx'; -describe('components/rename_channel_modal/rename_channel_modal.jsx', () => { +describe('components/RenameChannelModal', () => { global.window.mm_config = {}; const channel = { id: 'fake-id', diff --git a/tests/components/search_results_item.test.jsx b/tests/components/search_results_item.test.jsx index b85fa223cb89..3218308118a8 100644 --- a/tests/components/search_results_item.test.jsx +++ b/tests/components/search_results_item.test.jsx @@ -29,7 +29,7 @@ jest.mock('utils/post_utils.jsx', () => ({ isEdited: jest.fn().mockReturnValue(true) })); -describe('components/search_results_item', () => { +describe('components/SearchResultsItem', () => { let mockFunc; let user; let post; From 055cb54fcf15237f7c24bc6f99cd208bd43bae7a Mon Sep 17 00:00:00 2001 From: Adrian Carolli Date: Tue, 2 Jan 2018 12:44:05 -0500 Subject: [PATCH 07/21] Fix timezone issue with mockDate (#528) --- tests/components/about_build_modal.test.jsx | 2 +- tests/components/header_footer_template.test.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/components/about_build_modal.test.jsx b/tests/components/about_build_modal.test.jsx index 650042e14787..513dc7ffcee4 100644 --- a/tests/components/about_build_modal.test.jsx +++ b/tests/components/about_build_modal.test.jsx @@ -31,7 +31,7 @@ describe('components/AboutBuildModal', () => { }); beforeEach(() => { - mockDate('2017-01-01'); + mockDate('2017-06-01'); config = { BuildEnterpriseReady: 'true', diff --git a/tests/components/header_footer_template.test.jsx b/tests/components/header_footer_template.test.jsx index 50c7de5bcd11..7b045acc8a9a 100644 --- a/tests/components/header_footer_template.test.jsx +++ b/tests/components/header_footer_template.test.jsx @@ -20,7 +20,7 @@ describe('components/HeaderFooterTemplate', () => { } beforeEach(() => { - mockDate('2017-01-01'); + mockDate('2017-06-01'); const elm = document.createElement('div'); elm.setAttribute('id', 'root'); From 7320c27df3fc7a58268433d9acfb715a4408c56f Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Wed, 3 Jan 2018 02:41:24 +0800 Subject: [PATCH 08/21] [PLT-8396] Add loading spinner to MFA sign in button (#509) * add loading spinner to MFA sign in button * update snapshot --- components/login/components/login_mfa.jsx | 81 ++++++++++++------- components/save_button.jsx | 4 +- i18n/en.json | 1 + .../__snapshots__/save_button.test.jsx.snap | 4 +- .../__snapshots__/login_mfa.test.jsx.snap | 47 +++++++++++ tests/components/login/login_mfa.test.jsx | 55 +++++++++++++ 6 files changed, 160 insertions(+), 32 deletions(-) create mode 100644 tests/components/login/__snapshots__/login_mfa.test.jsx.snap create mode 100644 tests/components/login/login_mfa.test.jsx diff --git a/components/login/components/login_mfa.jsx b/components/login/components/login_mfa.jsx index dcc3b245cb67..6fd90b2fcc8f 100644 --- a/components/login/components/login_mfa.jsx +++ b/components/login/components/login_mfa.jsx @@ -5,34 +5,69 @@ import PropTypes from 'prop-types'; import React from 'react'; import {FormattedMessage} from 'react-intl'; -import * as Utils from 'utils/utils.jsx'; +import {localizeMessage} from 'utils/utils.jsx'; + +import SaveButton from 'components/save_button.jsx'; + +export default class LoginMfa extends React.PureComponent { + static propTypes = { + + /* + * User's login ID + */ + loginId: PropTypes.string.isRequired, + + /* + * User's password + */ + password: PropTypes.string.isRequired, + + /* + * Function to call when submitting user credentials + */ + submit: PropTypes.func.isRequired + }; -export default class LoginMfa extends React.Component { constructor(props) { super(props); - this.handleSubmit = this.handleSubmit.bind(this); - this.state = { + saving: false, + token: '', serverError: '' }; } - handleSubmit(e) { + handleChange = (e) => { + e.preventDefault(); + const token = e.target.value.trim().replace(/\s/g, ''); + + if (token !== this.state.token) { + this.setState({ + token + }); + } + } + + handleSubmit = (e) => { e.preventDefault(); const state = {}; - const token = this.refs.token.value.trim().replace(/\s/g, ''); - if (!token) { - state.serverError = Utils.localizeMessage('login_mfa.tokenReq', 'Please enter an MFA token'); + if (!this.state.token) { + state.serverError = localizeMessage('login_mfa.tokenReq', 'Please enter an MFA token'); this.setState(state); return; } state.serverError = ''; + state.saving = true; this.setState(state); - this.props.submit(this.props.loginId, this.props.password, token); + this.props.submit( + this.props.loginId, + this.props.password, + this.state.token + ); } render() { @@ -60,34 +95,24 @@ export default class LoginMfa extends React.Component { type='text' className='form-control' name='token' - ref='token' - placeholder={Utils.localizeMessage('login_mfa.token', 'MFA Token')} + placeholder={localizeMessage('login_mfa.token', 'MFA Token')} spellCheck='false' autoComplete='off' autoFocus={true} + onChange={this.handleChange} />
  • - +
    ); } } -LoginMfa.defaultProps = { -}; - -LoginMfa.propTypes = { - loginId: PropTypes.string.isRequired, - password: PropTypes.string.isRequired, - submit: PropTypes.func.isRequired -}; diff --git a/components/save_button.jsx b/components/save_button.jsx index 51418988fdf4..da0c68c360d7 100644 --- a/components/save_button.jsx +++ b/components/save_button.jsx @@ -27,7 +27,7 @@ export default class SaveButton extends React.PureComponent { if (saving) { contents = ( - + {savingMessage} ); @@ -36,7 +36,7 @@ export default class SaveButton extends React.PureComponent { } let className = 'save-button btn'; - if (!disabled) { + if (!disabled || saving) { className += ' btn-primary'; } diff --git a/i18n/en.json b/i18n/en.json index 916648e211df..1dcfa2034883 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -1868,6 +1868,7 @@ "login.verified": " Email Verified", "login_mfa.enterToken": "To complete the sign in process, please enter a token from your smartphone's authenticator", "login_mfa.submit": "Submit", + "login_mfa.submitting": "Submitting...", "login_mfa.token": "MFA Token", "login_mfa.tokenReq": "Please enter an MFA token", "member_item.makeAdmin": "Make Admin", diff --git a/tests/components/__snapshots__/save_button.test.jsx.snap b/tests/components/__snapshots__/save_button.test.jsx.snap index beebb8fee1d3..945969cb288d 100644 --- a/tests/components/__snapshots__/save_button.test.jsx.snap +++ b/tests/components/__snapshots__/save_button.test.jsx.snap @@ -13,14 +13,14 @@ exports[`components/SaveButton should match snapshot, on defaultMessage 1`] = ` exports[`components/SaveButton should match snapshot, on savingMessage 1`] = `
    - {autocompleteFields} + {autocompleteHint} + {autocompleteDescription}
    this.setState({loading: false}) + () => this.setState({loading: false}) ); } } diff --git a/components/integrations/components/installed_outgoing_webhooks/installed_outgoing_webhooks.jsx b/components/integrations/components/installed_outgoing_webhooks/installed_outgoing_webhooks.jsx index 232e391c6940..c348a22eab82 100644 --- a/components/integrations/components/installed_outgoing_webhooks/installed_outgoing_webhooks.jsx +++ b/components/integrations/components/installed_outgoing_webhooks/installed_outgoing_webhooks.jsx @@ -83,12 +83,12 @@ export default class InstalledOutgoingWebhooks extends React.PureComponent { componentDidMount() { if (window.mm_config.EnableOutgoingWebhooks === 'true') { this.props.actions.getOutgoingHooks( - '', - this.props.teamId, - Constants.Integrations.START_PAGE_NUM, - Constants.Integrations.PAGE_SIZE + '', + this.props.teamId, + Constants.Integrations.START_PAGE_NUM, + Constants.Integrations.PAGE_SIZE ).then( - () => this.setState({loading: false}) + () => this.setState({loading: false}) ); } } diff --git a/components/login/login_controller.jsx b/components/login/login_controller.jsx index 314c982f8471..b1a8543a20c8 100644 --- a/components/login/login_controller.jsx +++ b/components/login/login_controller.jsx @@ -361,11 +361,12 @@ export default class LoginController extends React.Component { errorClass = ' has-error'; } - let loginButton = - (); + /> + ); if (this.state.loading) { loginButton = diff --git a/components/modal_controller/modal_controller.jsx b/components/modal_controller/modal_controller.jsx index 123cbbb7e099..a2492af820e1 100644 --- a/components/modal_controller/modal_controller.jsx +++ b/components/modal_controller/modal_controller.jsx @@ -42,5 +42,4 @@ export default class ModalController extends React.Component {
    ); } - } diff --git a/components/post_view/post_add_channel_member/index.js b/components/post_view/post_add_channel_member/index.js index 0a876f561b28..2d45a4064d2d 100644 --- a/components/post_view/post_add_channel_member/index.js +++ b/components/post_view/post_add_channel_member/index.js @@ -6,7 +6,7 @@ import {connect} from 'react-redux'; import {addChannelMember} from 'mattermost-redux/actions/channels'; import {removePost} from 'mattermost-redux/actions/posts'; -import {getPost} from 'mattermost-redux/selectors/entities/posts' +import {getPost} from 'mattermost-redux/selectors/entities/posts'; import {getChannel, getCurrentChannelId} from 'mattermost-redux/selectors/entities/channels'; import {getCurrentTeam} from 'mattermost-redux/selectors/entities/teams'; @@ -18,7 +18,7 @@ function mapStateToProps(state, ownProps) { return { ...ownProps, team: getCurrentTeam(state), - channel: getChannel(state, currentChannelId), + channel: getChannel(state, currentChannelId) }; } diff --git a/components/post_view/post_attachment_opengraph/index.js b/components/post_view/post_attachment_opengraph/index.js index 2668b376aea9..ec01b4fbeacd 100644 --- a/components/post_view/post_attachment_opengraph/index.js +++ b/components/post_view/post_attachment_opengraph/index.js @@ -14,7 +14,7 @@ function mapStateToProps(state, ownProps) { return { ...ownProps, openGraphData: getOpenGraphMetadataForUrl(state, ownProps.link), - currentUser: getCurrentUser(state), + currentUser: getCurrentUser(state) }; } diff --git a/components/removed_from_channel_modal.jsx b/components/removed_from_channel_modal.jsx index da48f4d0b8eb..40e5756979e5 100644 --- a/components/removed_from_channel_modal.jsx +++ b/components/removed_from_channel_modal.jsx @@ -38,7 +38,8 @@ export default class RemovedFromChannelModal extends React.Component { () => { browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/' + townSquare.name); }, - 1); + 1 + ); this.setState(newState); } diff --git a/components/shortcuts_modal.jsx b/components/shortcuts_modal.jsx index fa9091720448..dc3fd1faed08 100644 --- a/components/shortcuts_modal.jsx +++ b/components/shortcuts_modal.jsx @@ -391,14 +391,14 @@ function renderShortcut(text) { let keys = null; if (shortcut.length > 1) { - keys = shortcut[1].split('|').map((key) => + keys = shortcut[1].split('|').map((key) => ( {key} - ); + )); } return ( diff --git a/components/status_dropdown/status_dropdown.jsx b/components/status_dropdown/status_dropdown.jsx index cce3db20e9a7..fe8d9ba098f8 100644 --- a/components/status_dropdown/status_dropdown.jsx +++ b/components/status_dropdown/status_dropdown.jsx @@ -13,7 +13,6 @@ import BootstrapSpan from 'components/bootstrap_span.jsx'; import StatusIcon from 'components/status_icon.jsx'; export default class StatusDropdown extends React.Component { - static propTypes = { style: PropTypes.object, status: PropTypes.string, diff --git a/components/team_import_tab.jsx b/components/team_import_tab.jsx index 6ffad3c7447e..55856d3bd2a5 100644 --- a/components/team_import_tab.jsx +++ b/components/team_import_tab.jsx @@ -120,7 +120,6 @@ class TeamImportTab extends React.Component { var messageSection; switch (this.state.status) { - case 'ready': messageSection = ''; break; @@ -152,7 +151,7 @@ class TeamImportTab extends React.Component { />

    - ); + ); break; case 'fail': messageSection = ( diff --git a/components/toggle_modal_button_redux/index.js b/components/toggle_modal_button_redux/index.js index 691b2228fd9d..4911db4d036f 100644 --- a/components/toggle_modal_button_redux/index.js +++ b/components/toggle_modal_button_redux/index.js @@ -4,15 +4,9 @@ import {connect} from 'react-redux'; import {bindActionCreators} from 'redux'; -import ModalToggleButtonRedux from './toggle_modal_button_redux.jsx'; - import {openModal} from 'actions/views/modals'; -function mapStateToProps(state, ownProps) { - return { - ...ownProps - }; -} +import ModalToggleButtonRedux from './toggle_modal_button_redux.jsx'; function mapDispatchToProps(dispatch) { return { @@ -22,4 +16,4 @@ function mapDispatchToProps(dispatch) { }; } -export default connect(mapStateToProps, mapDispatchToProps)(ModalToggleButtonRedux); \ No newline at end of file +export default connect(null, mapDispatchToProps)(ModalToggleButtonRedux); diff --git a/components/unread_channel_indicator.jsx b/components/unread_channel_indicator.jsx index 21e24ff41e7b..aa34f2dc008a 100644 --- a/components/unread_channel_indicator.jsx +++ b/components/unread_channel_indicator.jsx @@ -9,37 +9,37 @@ import Constants from 'utils/constants.jsx'; export default class UnreadChannelIndicator extends React.PureComponent { static propTypes = { - /** - * Function to call when the indicator is clicked - */ + /** + * Function to call when the indicator is clicked + */ onClick: PropTypes.func.isRequired, - /** - * Set whether to show the indicator or not - */ + /** + * Set whether to show the indicator or not + */ show: PropTypes.bool, - /** - * The additional CSS class for the indicator - */ + /** + * The additional CSS class for the indicator + */ extraClass: PropTypes.string, - /** - * The content of the indicator - */ + /** + * The content of the indicator + */ content: PropTypes.node, - /** - * The name of the indicator - */ + /** + * The name of the indicator + */ name: PropTypes.string - } + }; static defaultProps = { show: false, extraClass: '', content: '' - } + }; render() { const unreadIcon = Constants.UNREAD_ICON_SVG; diff --git a/components/user_list_row.jsx b/components/user_list_row.jsx index 7da22ad9eb15..c6dfbc26924d 100644 --- a/components/user_list_row.jsx +++ b/components/user_list_row.jsx @@ -14,7 +14,6 @@ import * as Utils from 'utils/utils.jsx'; import ProfilePicture from 'components/profile_picture.jsx'; export default class UserListRow extends React.Component { - static propTypes = { user: PropTypes.object.isRequired, extraInfo: PropTypes.arrayOf(PropTypes.object), diff --git a/components/user_list_row_with_error.jsx b/components/user_list_row_with_error.jsx index c3232145fab1..4ee3e21e4989 100644 --- a/components/user_list_row_with_error.jsx +++ b/components/user_list_row_with_error.jsx @@ -14,7 +14,6 @@ import * as Utils from 'utils/utils.jsx'; import ProfilePicture from 'components/profile_picture.jsx'; export default class UserListRowWithError extends React.Component { - static propTypes = { user: PropTypes.object.isRequired, extraInfo: PropTypes.arrayOf(PropTypes.object), diff --git a/components/user_settings/desktop_notification_settings.jsx b/components/user_settings/desktop_notification_settings.jsx index 10b8d7c67aa3..da0fff837882 100644 --- a/components/user_settings/desktop_notification_settings.jsx +++ b/components/user_settings/desktop_notification_settings.jsx @@ -370,7 +370,7 @@ export default class DesktopNotificationSettings extends React.Component { /> ); } else { - if (Utils.hasSoundOptions() && this.props.sound !== 'false') { //eslint-disable-line no-lonely-if + if (Utils.hasSoundOptions() && this.props.sound !== 'false') { //eslint-disable-line no-lonely-if if (this.props.duration === '0') { //eslint-disable-line no-lonely-if describe = ( a.order - b.order); + }).sort((a, b) => a.order - b.order); languages.forEach((lang) => { options.push( diff --git a/components/user_settings/user_settings_security/user_settings_security.jsx b/components/user_settings/user_settings_security/user_settings_security.jsx index 2d8a34c966e9..12e348a2815f 100644 --- a/components/user_settings/user_settings_security/user_settings_security.jsx +++ b/components/user_settings/user_settings_security/user_settings_security.jsx @@ -1165,19 +1165,21 @@ export default class SecurityTab extends React.Component { /> ); - activeLink = ( { - e.preventDefault(); - this.activateToken(token.id); - }} - > - - ); + activeLink = ( + { + e.preventDefault(); + this.activateToken(token.id); + }} + > + + + ); } tokenList.push( diff --git a/components/webrtc/webrtc_controller.jsx b/components/webrtc/webrtc_controller.jsx index 4febeaf7876a..e01f7bd5fdd7 100644 --- a/components/webrtc/webrtc_controller.jsx +++ b/components/webrtc/webrtc_controller.jsx @@ -167,8 +167,7 @@ export default class WebrtcController extends React.Component { getLocalMedia(constraints, element, callback) { const media = constraints || {audio: true, video: true}; - navigator.mediaDevices.getUserMedia(media). - then((stream) => { + navigator.mediaDevices.getUserMedia(media).then((stream) => { if (element) { element.srcObject = stream; } @@ -176,8 +175,7 @@ export default class WebrtcController extends React.Component { if (callback && typeof callback === 'function') { callback(null, stream); } - }). - catch((error) => { + }).catch((error) => { callback(error); }); } diff --git a/package.json b/package.json index 8471f5bda52f..3537fb9e870f 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "setupTestFrameworkScriptFile": "/tests/setup.js" }, "scripts": { - "check": "eslint --ext \".jsx\" --ignore-pattern node_modules --quiet .", + "check": "eslint --ignore-pattern node_modules --ignore-pattern non_npm_dependencies --ignore-pattern dist --ext .js --ext .jsx . --quiet", "build": "cross-env NODE_ENV=production webpack --display-error-details --verbose --progress", "run": "cross-env NODE_ENV=production webpack --progress --watch", "run-fullmap": "webpack --progress --watch", diff --git a/reducers/views/admin.js b/reducers/views/admin.js index 301b5a87e4b5..756b7b554167 100644 --- a/reducers/views/admin.js +++ b/reducers/views/admin.js @@ -2,6 +2,7 @@ // See License.txt for license information. import {combineReducers} from 'redux'; + import {ActionTypes} from 'utils/constants.jsx'; const initialState = { @@ -16,13 +17,13 @@ function navigationBlock(state = initialState, action) { return {...state, blocked: action.blocked}; case ActionTypes.DEFER_NAVIGATION: return { - ...state, + ...state, onNavigationConfirmed: action.onNavigationConfirmed, showNavigationPrompt: true }; case ActionTypes.CANCEL_NAVIGATION: return { - ...state, + ...state, onNavigationConfirmed: null, showNavigationPrompt: false }; diff --git a/reducers/views/index.js b/reducers/views/index.js index 7af916e8edf6..150d51c50395 100644 --- a/reducers/views/index.js +++ b/reducers/views/index.js @@ -3,7 +3,7 @@ import {combineReducers} from 'redux'; -import admin from './admin' +import admin from './admin'; import channel from './channel'; import rhs from './rhs'; import posts from './posts'; diff --git a/reducers/views/modals.js b/reducers/views/modals.js index 4003f7306fd8..4ad83cf20655 100644 --- a/reducers/views/modals.js +++ b/reducers/views/modals.js @@ -3,28 +3,31 @@ import {combineReducers} from 'redux'; -import {ActionTypes, ModalIdentifiers} from 'utils/constants.jsx'; +import {ActionTypes} from 'utils/constants.jsx'; function modalState(state = {}, action) { - let nextState = {...state}; - switch (action.type) { - case ActionTypes.MODAL_OPEN: - nextState[action.modalId] = { + case ActionTypes.MODAL_OPEN: + return { + ...state, + [action.modalId]: { open: true, dialogProps: action.dialogProps, dialogType: action.dialogType - }; - - return nextState; - case ActionTypes.MODAL_CLOSE: - nextState[action.modalId] = { - open: false - }; + } + }; + case ActionTypes.MODAL_CLOSE: + return { + ...state, + [action.modalId]: { + open: false, + dialogProps: action.dialogProps, + dialogType: action.dialogType + } + }; - return nextState; - default: - return state; + default: + return state; } } diff --git a/routes/route_team.jsx b/routes/route_team.jsx index 4d569ebdbd7b..4fdf9842a87b 100644 --- a/routes/route_team.jsx +++ b/routes/route_team.jsx @@ -92,7 +92,7 @@ function preNeedsTeam(nextState, replace, callback) { wakeUpInterval = setInterval(() => { const currentTime = (new Date()).getTime(); - if (currentTime > (lastTime + WAKEUP_THRESHOLD)) { // ignore small delays + if (currentTime > (lastTime + WAKEUP_THRESHOLD)) { // ignore small delays console.log('computer woke up - fetching latest'); //eslint-disable-line no-console reconnect(false); } @@ -302,9 +302,13 @@ export default { import('components/team_sidebar'), import('components/sidebar.jsx'), import('components/channel_view') - ]).then( - (comarr) => callback(null, {team_sidebar: comarr[0].default, sidebar: comarr[1].default, center: comarr[2].default}) - ); + ]).then((comarr) => { + callback(null, { + team_sidebar: comarr[0].default, + sidebar: comarr[1].default, + center: comarr[2].default + }); + }); } }, { @@ -315,9 +319,13 @@ export default { import('components/team_sidebar'), import('components/sidebar.jsx'), import('components/permalink_view.jsx') - ]).then( - (comarr) => callback(null, {team_sidebar: comarr[0].default, sidebar: comarr[1].default, center: comarr[2].default}) - ); + ]).then((comarr) => { + callback(null, { + team_sidebar: comarr[0].default, + sidebar: comarr[1].default, + center: comarr[2].default + }); + }); } }, { @@ -328,9 +336,13 @@ export default { import('components/team_sidebar'), import('components/sidebar.jsx'), import('components/channel_view') - ]).then( - (comarr) => callback(null, {team_sidebar: comarr[0].default, sidebar: comarr[1].default, center: comarr[2].default}) - ); + ]).then((comarr) => { + callback(null, { + team_sidebar: comarr[0].default, + sidebar: comarr[1].default, + center: comarr[2].default + }); + }); } }, { @@ -340,9 +352,13 @@ export default { import('components/team_sidebar'), import('components/sidebar.jsx'), import('components/tutorial/tutorial_view.jsx') - ]).then( - (comarr) => callback(null, {team_sidebar: comarr[0].default, sidebar: comarr[1].default, center: comarr[2].default}) - ); + ]).then((comarr) => { + callback(null, { + team_sidebar: comarr[0].default, + sidebar: comarr[1].default, + center: comarr[2].default + }); + }); } } ] diff --git a/store/index.js b/store/index.js index 298482318b8d..459ce15c0048 100644 --- a/store/index.js +++ b/store/index.js @@ -1,11 +1,11 @@ // Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. -import {batchActions} from 'redux-batched-actions'; -import {createTransform, persistStore} from 'redux-persist'; +/* eslint-disable max-nested-callbacks */ -import localForage from "localforage"; -import { extendPrototype } from "localforage-observable"; +import localForage from 'localforage'; +import {extendPrototype} from 'localforage-observable'; +import {createTransform, persistStore} from 'redux-persist'; import {General, RequestStatus} from 'mattermost-redux/constants'; import configureServiceStore from 'mattermost-redux/store'; @@ -15,7 +15,8 @@ import {storageRehydrate} from 'actions/storage'; import appReducer from 'reducers'; -import {transformSet} from './utils'; +import {transformSet} from 'store/utils'; + import {detect} from 'utils/network.js'; function getAppReducer() { @@ -73,44 +74,49 @@ export default function configureStore(initialState) { const offlineOptions = { persist: (store, options) => { const localforage = extendPrototype(localForage); - var storage = localforage; - const KEY_PREFIX = "reduxPersist:"; + const storage = localforage; + const KEY_PREFIX = 'reduxPersist:'; + const persistor = persistStore(store, {storage, keyPrefix: KEY_PREFIX, ...options}, () => { store.dispatch({ type: General.STORE_REHYDRATION_COMPLETE, complete: true }); }); + if (localforage === storage) { localforage.ready(() => { localforage.configObservables({ - crossTabNotification: true, + crossTabNotification: true }); - var observable = localforage.newObservable({ + + const observable = localforage.newObservable({ crossTabNotification: true, changeDetection: true }); - var restoredState = {} + + const restoredState = {}; localforage.iterate((value, key) => { - if(key && key.indexOf(KEY_PREFIX+"storage:") === 0){ - const keyspace = key.substr((KEY_PREFIX+"storage:").length); + if (key && key.indexOf(KEY_PREFIX + 'storage:') === 0) { + const keyspace = key.substr((KEY_PREFIX + 'storage:').length); restoredState[keyspace] = value; } }).then(() => { storageRehydrate(restoredState)(store.dispatch, persistor); }); + observable.subscribe({ next: (args) => { - if(args.key && args.key.indexOf(KEY_PREFIX+"storage:") === 0 && args.oldValue === null){ - const keyspace = args.key.substr((KEY_PREFIX+"storage:").length); + if (args.key && args.key.indexOf(KEY_PREFIX + 'storage:') === 0 && args.oldValue === null) { + const keyspace = args.key.substr((KEY_PREFIX + 'storage:').length); var statePartial = {}; statePartial[keyspace] = args.newValue; storageRehydrate(statePartial)(store.dispatch, persistor); } } - }) - }) + }); + }); } let purging = false; @@ -132,7 +138,7 @@ export default function configureStore(initialState) { setTimeout(() => { purging = false; }, 500); - }) + }); } }); @@ -151,22 +157,22 @@ export default function configureStore(initialState) { return Object.keys(collection).forEach((key) => { if (key === 'storage') { Object.keys(collection.storage.storage).forEach((storageKey) => { - callback(collection.storage.storage[storageKey], 'storage:' + storageKey) - }) + callback(collection.storage.storage[storageKey], 'storage:' + storageKey); + }); } else { - callback(collection[key], key) + callback(collection[key], key); } }); }, _stateGetter: (state, key) => { - if (key.indexOf('storage:') == 0) { + if (key.indexOf('storage:') === 0) { state.storage = state.storage || {storage: {}}; return state.storage.storage[key.substr(8)]; } return state[key]; }, _stateSetter: (state, key, value) => { - if (key.indexOf('storage:') == 0) { + if (key.indexOf('storage:') === 0) { state.storage = state.storage || {storage: {}}; state.storage.storage[key.substr(8)] = value; } diff --git a/stores/channel_store.jsx b/stores/channel_store.jsx index 8de3a18c96a8..6ed2719e2885 100644 --- a/stores/channel_store.jsx +++ b/stores/channel_store.jsx @@ -7,7 +7,7 @@ import {batchActions} from 'redux-batched-actions'; import UserStore from 'stores/user_store.jsx'; // eslint-disable-line import/order -import {ChannelTypes, UserTypes} from 'mattermost-redux/action_types'; +import {ChannelTypes} from 'mattermost-redux/action_types'; import * as Selectors from 'mattermost-redux/selectors/entities/channels'; import AppDispatcher from 'dispatcher/app_dispatcher.jsx'; @@ -299,20 +299,13 @@ class ChannelStoreClass extends EventEmitter { return Selectors.getMyChannelMemberships(store.getState()); } - saveMembersInChannel(channelId = this.getCurrentId(), members) { + saveMembersInChannel(channelId, members) { store.dispatch({ type: ChannelTypes.RECEIVED_CHANNEL_MEMBERS, data: Object.values(members) }); } - removeMemberInChannel(channelId = this.getCurrentId(), userId) { - store.dispatch({ - type: UserTypes.RECEIVED_PROFILE_NOT_IN_CHANNEL, - data: {id: channelId, user_id: userId} - }); - } - getMembersInChannel(channelId = this.getCurrentId()) { return Selectors.getChannelMembersInChannels(store.getState())[channelId] || {}; } @@ -547,7 +540,7 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => { ChannelStore.storeMoreChannels(action.channels); break; case ActionTypes.RECEIVED_MEMBERS_IN_CHANNEL: - ChannelStore.saveMembersInChannel(action.channel_id, action.channel_members); + ChannelStore.saveMembersInChannel(action.channel_members); break; case ActionTypes.RECEIVED_CHANNEL_STATS: store.dispatch({ diff --git a/stores/opengraph_store.jsx b/stores/opengraph_store.jsx index eff92819454a..378e8c523e83 100644 --- a/stores/opengraph_store.jsx +++ b/stores/opengraph_store.jsx @@ -16,7 +16,7 @@ const URL_DATA_CHANGE_EVENT = 'url_data_change'; class OpenGraphStoreClass extends EventEmitter { constructor() { super(); - this.ogDataObject = {}; // Format: {: } + this.ogDataObject = {}; // Format: {: } } emitChange() { diff --git a/stores/team_store.jsx b/stores/team_store.jsx index c19b51fb616b..1e02aa07a7a7 100644 --- a/stores/team_store.jsx +++ b/stores/team_store.jsx @@ -283,7 +283,7 @@ class TeamStoreClass extends EventEmitter { return Object.values(Selectors.getTeamMemberships(store.getState())); } - saveMembersInTeam(teamId = this.getCurrentId(), members) { + saveMembersInTeam(members) { store.dispatch({ type: TeamTypes.RECEIVED_MEMBERS_IN_TEAM, data: Object.values(members) @@ -448,7 +448,7 @@ TeamStore.dispatchToken = AppDispatcher.register((payload) => { TeamStore.saveTeamListings(action.teams); break; case ActionTypes.RECEIVED_MEMBERS_IN_TEAM: - TeamStore.saveMembersInTeam(action.team_id, action.team_members); + TeamStore.saveMembersInTeam(action.team_members); break; case ActionTypes.RECEIVED_TEAM_STATS: TeamStore.saveStats(action.team_id, action.stats); diff --git a/tests/components/create_post/create_post.test.jsx b/tests/components/create_post/create_post.test.jsx index cb3bd5e0d87a..bb8acc390fe6 100644 --- a/tests/components/create_post/create_post.test.jsx +++ b/tests/components/create_post/create_post.test.jsx @@ -65,19 +65,19 @@ const actionsProp = { }; function createPost({ - currentChannel = currentChannelProp, - currentTeamId = currentTeamIdProp, - currentUserId = currentUserIdProp, - showTutorialTip = showTutorialTipProp, - currentChannelMembersCount = currentChannelMembersCountProp, - fullWidthTextBox = fullWidthTextBoxProp, - draft = draftProp, - recentPostIdInChannel = recentPostIdInChannelProp, - actions = actionsProp, - ctrlSend = ctrlSendProp, - currentUsersLatestPost = currentUsersLatestPostProp, - commentCountForPost = commentCountForPostProp - } = {}) { + currentChannel = currentChannelProp, + currentTeamId = currentTeamIdProp, + currentUserId = currentUserIdProp, + showTutorialTip = showTutorialTipProp, + currentChannelMembersCount = currentChannelMembersCountProp, + fullWidthTextBox = fullWidthTextBoxProp, + draft = draftProp, + recentPostIdInChannel = recentPostIdInChannelProp, + actions = actionsProp, + ctrlSend = ctrlSendProp, + currentUsersLatestPost = currentUsersLatestPostProp, + commentCountForPost = commentCountForPostProp +} = {}) { return ( { preventDefault: jest.fn(), target: {value: 'new info'} } - ); + ); expect(wrapper.state('purpose')).toBe('new info'); }); diff --git a/tests/components/integrations/__snapshots__/abstract_command.test.jsx.snap b/tests/components/integrations/__snapshots__/abstract_command.test.jsx.snap index bec9783d1b5c..e6c6f3848705 100644 --- a/tests/components/integrations/__snapshots__/abstract_command.test.jsx.snap +++ b/tests/components/integrations/__snapshots__/abstract_command.test.jsx.snap @@ -354,7 +354,6 @@ exports[`components/integrations/AbstractCommand should match snapshot 1`] = `
    @@ -239,10 +237,7 @@ export default class SearchBar extends React.Component { onClick={this.getFlagged} className='style--none' > - + @@ -280,10 +275,9 @@ export default class SearchBar extends React.Component { style={style.searchForm} autoComplete='off' > -