From f30a276d3f240a7881e571d85ab02fadc4f010bc Mon Sep 17 00:00:00 2001 From: Freddie Date: Thu, 28 May 2020 00:01:46 -0400 Subject: [PATCH 1/4] used yarn install again...sorry --- yarn.lock | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 213 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 654e2df..a0067a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,13 @@ dependencies: "@babel/highlight" "^7.8.3" +"@babel/code-frame@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" + integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw== + dependencies: + "@babel/highlight" "^7.10.1" + "@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" @@ -40,6 +47,16 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/generator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.1.tgz#4d14458e539bcb04ffe34124143f5c489f2dbca9" + integrity sha512-AT0YPLQw9DI21tliuJIdplVfLHya6mcGa8ctkv7n4Qv+hYacJrKmNWIteAK1P9iyLikFIAkwqJ7HAOqIDLFfgA== + dependencies: + "@babel/types" "^7.10.1" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/generator@^7.4.0", "@babel/generator@^7.9.0", "@babel/generator@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" @@ -50,6 +67,13 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" + integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" @@ -131,6 +155,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-function-name@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4" + integrity sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" @@ -140,6 +173,13 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.9.5" +"@babel/helper-get-function-arity@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" + integrity sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" @@ -161,6 +201,13 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-module-imports@^7.0.0": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" + integrity sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-module-imports@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" @@ -229,6 +276,13 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-split-export-declaration@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" + integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== + dependencies: + "@babel/types" "^7.10.1" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -236,6 +290,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5" + integrity sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw== + "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" @@ -260,6 +319,15 @@ "@babel/traverse" "^7.9.0" "@babel/types" "^7.9.0" +"@babel/highlight@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.1.tgz#841d098ba613ba1a427a2b383d79e35552c38ae0" + integrity sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg== + dependencies: + "@babel/helper-validator-identifier" "^7.10.1" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" @@ -274,6 +342,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== +"@babel/parser@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.1.tgz#2e142c27ca58aa2c7b119d09269b702c8bbad28c" + integrity sha512-AUTksaz3FqugBkbTZ1i+lDLG5qy8hIzCaAxEtttU6C0BtZZU9pkNZtWSVAht4EW9kl46YBiyTGMp9xTTGqViNg== + "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" @@ -980,6 +1053,15 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/template@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" + integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig== + dependencies: + "@babel/code-frame" "^7.10.1" + "@babel/parser" "^7.10.1" + "@babel/types" "^7.10.1" + "@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" @@ -1004,6 +1086,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.4.5": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" + integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== + dependencies: + "@babel/code-frame" "^7.10.1" + "@babel/generator" "^7.10.1" + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/parser" "^7.10.1" + "@babel/types" "^7.10.1" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" @@ -1013,6 +1110,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.1.tgz#6886724d31c8022160a7db895e6731ca33483921" + integrity sha512-L2yqUOpf3tzlW9GVuipgLEcZxnO+96SzR6fjXMuxxNkIgFJ5+07mHCZ+HkHqaeZu8+3LKnNJJ1bKbjBETQAsrA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.1" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1031,6 +1137,28 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@emotion/is-prop-valid@^0.8.8": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -2082,6 +2210,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@~1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2222,6 +2355,21 @@ babel-plugin-named-asset-import@^0.3.6: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA== +"babel-plugin-styled-components@>= 1": + version "1.10.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz#3494e77914e9989b33cc2d7b3b29527a949d635c" + integrity sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-module-imports" "^7.0.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" @@ -2669,6 +2817,11 @@ camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -2897,6 +3050,16 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +codeclimate-test-reporter@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/codeclimate-test-reporter/-/codeclimate-test-reporter-0.5.1.tgz#2fd517e1a7932b00b0aafffc8d1dfbe91d0443cf" + integrity sha512-XCzmc8dH+R4orK11BCg5pBbXc35abxq9sept4YvUFRkFl9zb9MIVRrCKENe6U1TKAMTgvGJmrYyHn0y2lerpmg== + dependencies: + async "~1.5.2" + commander "2.9.0" + lcov-parse "0.0.10" + request "~2.88.0" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2952,6 +3115,13 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= + dependencies: + graceful-readlink ">= 1.0.0" + commander@^2.11.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3232,6 +3402,11 @@ css-blank-pseudo@^0.1.4: dependencies: postcss "^7.0.5" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -3303,6 +3478,15 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" @@ -4914,6 +5098,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + grid-index@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" @@ -5072,7 +5261,7 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -6481,6 +6670,11 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +lcov-parse@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" + integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= + left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" @@ -9305,7 +9499,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0: +request@^2.87.0, request@^2.88.0, request@~2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -10310,6 +10504,22 @@ style-loader@0.23.1: loader-utils "^1.1.0" schema-utils "^1.0.0" +styled-components@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.1.1.tgz#96dfb02a8025794960863b9e8e365e3b6be5518d" + integrity sha512-1ps8ZAYu2Husx+Vz8D+MvXwEwvMwFv+hqqUwhNlDN5ybg6A+3xyW1ECrAgywhvXapNfXiz79jJyU0x22z0FFTg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.8" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + stylehacks@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" @@ -10331,7 +10541,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== From f028937c6f4d5a04c1615d2d20dae479cb6e9a6d Mon Sep 17 00:00:00 2001 From: Freddie Date: Sun, 21 Jun 2020 22:03:33 -0400 Subject: [PATCH 2/4] stashing changes before pull --- __mocks__/FriendsListMock.js | 40 ++++ .../users/FriendsComp/FriendOnList.test.js | 185 ++++++++++-------- .../users/FriendsComp/FriendsList.js | 6 +- .../users/FriendsComp/FriendsList.test.js | 147 ++++++++++++++ src/redux/actions/userActions.js | 26 ++- src/redux/reducers/userReducer.js | 11 ++ src/redux/types/userTypes.js | 3 + 7 files changed, 326 insertions(+), 92 deletions(-) create mode 100644 __mocks__/FriendsListMock.js create mode 100644 src/components/users/FriendsComp/FriendsList.test.js diff --git a/__mocks__/FriendsListMock.js b/__mocks__/FriendsListMock.js new file mode 100644 index 0000000..034a93a --- /dev/null +++ b/__mocks__/FriendsListMock.js @@ -0,0 +1,40 @@ +import readFileSync from "fs"; +import path from "path"; +import { act } from "@testing-library/react"; + +const friends = [ + { + friend_profile_image: "", + friend_username: "animecody", + friend_bio: "DBZ all day bby", + friends_id: 8, + }, + { + friend_profile_image: "", + friend_username: "JDawg", + friend_bio: "Ask me about my pizza", + friends_id: 9, + }, + { + friend_profile_image: "", + friend_username: "Buddy", + friend_bio: "Pizza without cheese, sauce, and toppings is just bread", + friends_id: 10, + }, +]; + +// const friendos = JSON.parse( +// readFileSync(path.join(__dirname, "res.json")).toString() +// ); + +export const _friends = friends; + +const mock = { + friends: jest.fn(() => { + return { + then: (callback) => act(() => callback([friends])), + }; + }), +}; + +export default mock; diff --git a/src/components/users/FriendsComp/FriendOnList.test.js b/src/components/users/FriendsComp/FriendOnList.test.js index 917d52c..ce375a0 100644 --- a/src/components/users/FriendsComp/FriendOnList.test.js +++ b/src/components/users/FriendsComp/FriendOnList.test.js @@ -1,88 +1,101 @@ -import React from 'react'; -import { render, fireEvent, cleanup, waitFor } from '@testing-library/react'; -import '@testing-library/jest-dom/extend-expect'; -import { findFirstProp } from '../../../utils/reduxTestingFunctions' -import FriendOnList from './FriendOnList'; +import React from "react"; +import { render, fireEvent, cleanup, waitFor } from "@testing-library/react"; +import "@testing-library/jest-dom/extend-expect"; +import { findFirstProp } from "../../../utils/reduxTestingFunctions"; +import FriendOnList from "./FriendOnList"; describe("FriendOnList", () => { - - afterEach(cleanup); - - const friend = { - friend_profile_image: "", - friend_username: "animecody", - friend_bio: "DBZ all day bby", - friends_id: 8 - }; - const deleteUserMessage = `Are you sure you want to remove ${friend.friend_username} from your friends list?`; - const removeFriend = id => { - console.log(`${id} was removed`) - }; - - it('renders text & values from props', () => { - const { getByText, getAllByText } = render(); - - const removeText = findFirstProp("Remove", getByText, getAllByText); - const bioText = findFirstProp("DBZ all day bby", getByText, getAllByText); - const usernameText = findFirstProp("animecody", getByText, getAllByText); - - expect(removeText).toBeInTheDocument(); - expect(bioText).toBeInTheDocument(); - expect(usernameText).toBeInTheDocument(); - }); - - it('remove onClick toggles modalon', async () => { - const { getByText, getAllByText } = render(); - const removeText = findFirstProp("Remove", getByText, getAllByText); - - fireEvent.click(removeText); - - const delMessage = await waitFor(() => getByText(new RegExp(deleteUserMessage, "i"))) - const okButton = getByText(/ok/i); - const cancelButton = getByText(/cancel/i); - - expect(delMessage).toBeVisible(); - expect(okButton).toBeInTheDocument(); - expect(cancelButton).toBeInTheDocument(); - }) - - it('modal cancel button onClick toggles modal off', async () => { - const { getByText, getAllByText } = render(); - const removeText = findFirstProp("Remove", getByText, getAllByText); - - fireEvent.click(removeText); - - const delMessage = await waitFor(() => getByText(new RegExp(deleteUserMessage, "i"))) - const cancelButton = getByText(/cancel/i); - const okButton = getByText(/ok/i); - - expect(delMessage).toBeVisible(); - expect(cancelButton).toBeInTheDocument(); - expect(okButton).toBeInTheDocument(); - - fireEvent.click(cancelButton); - - await waitFor(() => delMessage) - expect(cancelButton).not.toBeInTheDocument(); - expect(okButton).not.toBeInTheDocument(); - }) - - it('modal OK button runs remove function from props', async () => { - const { getByText, getAllByText } = render(); - const removeText = findFirstProp("Remove", getByText, getAllByText); - console.log = jest.fn(); - - fireEvent.click(removeText); - - const delMessage = await waitFor(() => getByText(new RegExp(deleteUserMessage, "i"))) - const cancelButton = getByText(/cancel/i); - const okButton = getByText(/ok/i); - - expect(delMessage).toBeVisible(); - expect(cancelButton).toBeInTheDocument(); - expect(okButton).toBeInTheDocument(); - - fireEvent.click(okButton); - await expect(console.log).toHaveBeenCalledWith("8 was removed") - }) -}) + afterEach(cleanup); + + const friend = { + friend_profile_image: "", + friend_username: "animecody", + friend_bio: "DBZ all day bby", + friends_id: 8, + }; + const deleteUserMessage = `Are you sure you want to remove ${friend.friend_username} from your friends list?`; + const removeFriend = (id) => { + console.log(`${id} was removed`); + }; + + it("renders text & values from props", () => { + const { getByText, getAllByText } = render( + + ); + + const removeText = findFirstProp("Remove", getByText, getAllByText); + const bioText = findFirstProp("DBZ all day bby", getByText, getAllByText); + const usernameText = findFirstProp("animecody", getByText, getAllByText); + + expect(removeText).toBeInTheDocument(); + expect(bioText).toBeInTheDocument(); + expect(usernameText).toBeInTheDocument(); + }); + + it("remove onClick toggles modalon", async () => { + const { getByText, getAllByText } = render( + + ); + const removeText = findFirstProp("Remove", getByText, getAllByText); + + fireEvent.click(removeText); + + const delMessage = await waitFor(() => + getByText(new RegExp(deleteUserMessage, "i")) + ); + const okButton = getByText(/ok/i); + const cancelButton = getByText(/cancel/i); + + expect(delMessage).toBeVisible(); + expect(okButton).toBeInTheDocument(); + expect(cancelButton).toBeInTheDocument(); + }); + + it("modal cancel button onClick toggles modal off", async () => { + const { getByText, getAllByText } = render( + + ); + const removeText = findFirstProp("Remove", getByText, getAllByText); + + fireEvent.click(removeText); + + const delMessage = await waitFor(() => + getByText(new RegExp(deleteUserMessage, "i")) + ); + const cancelButton = getByText(/cancel/i); + const okButton = getByText(/ok/i); + + expect(delMessage).toBeVisible(); + expect(cancelButton).toBeInTheDocument(); + expect(okButton).toBeInTheDocument(); + + fireEvent.click(cancelButton); + + await waitFor(() => delMessage); + expect(cancelButton).not.toBeInTheDocument(); + expect(okButton).not.toBeInTheDocument(); + }); + + it("modal OK button runs remove function from props", async () => { + const { getByText, getAllByText } = render( + + ); + const removeText = findFirstProp("Remove", getByText, getAllByText); + console.log = jest.fn(); + + fireEvent.click(removeText); + + const delMessage = await waitFor(() => + getByText(new RegExp(deleteUserMessage, "i")) + ); + const cancelButton = getByText(/cancel/i); + const okButton = getByText(/ok/i); + + expect(delMessage).toBeVisible(); + expect(cancelButton).toBeInTheDocument(); + expect(okButton).toBeInTheDocument(); + + fireEvent.click(okButton); + await expect(console.log).toHaveBeenCalledWith("8 was removed"); + }); +}); diff --git a/src/components/users/FriendsComp/FriendsList.js b/src/components/users/FriendsComp/FriendsList.js index 6a07e7c..d571d12 100644 --- a/src/components/users/FriendsComp/FriendsList.js +++ b/src/components/users/FriendsComp/FriendsList.js @@ -14,7 +14,7 @@ export default function FriendsList(props) { const [itemLength, setItemLength] = useState(0); const [currentData, setCurrentData] = useState([]); let user = useSelector(({ user }) => user); - user = props.user ? props.user : user + user = props.user ? props.user : user; const dispatch = useDispatch(); const handlePageChange = (pageNumber) => { @@ -59,7 +59,9 @@ export default function FriendsList(props) { return user.friends.length != 0 ? (
-

{user.username}'s Friends

+

+ {user.username}'s Friends +

{currentData.map((friend) => { return ( diff --git a/src/components/users/FriendsComp/FriendsList.test.js b/src/components/users/FriendsComp/FriendsList.test.js new file mode 100644 index 0000000..53a4f31 --- /dev/null +++ b/src/components/users/FriendsComp/FriendsList.test.js @@ -0,0 +1,147 @@ +import React from "react"; +import renderer from "react-test-renderer"; +import configureStore from "redux-mock-store"; +import { Provider } from "react-redux"; +import thunk from "redux-thunk"; +import { + render, + fireEvent, + cleanup, + waitFor, + act, +} from "@testing-library/react"; +import "@testing-library/jest-dom/extend-expect"; +import FriendsList from "./FriendsList"; +import FriendOnList from "./FriendOnList"; + +jest.mock("../../../redux/actions/userActions"); +const mockStore = configureStore(); + +describe("FriendsList", () => { + let store; + let component; + let friendOnListcomponent; + + let friendsArray = [ + { + friend_profile_image: "", + friend_username: "animecody", + friend_bio: "DBZ all day bby", + friends_id: 8, + }, + { + friend_profile_image: "", + friend_username: "JDawg", + friend_bio: "Ask me about my pizza", + friends_id: 9, + }, + { + friend_profile_image: "", + friend_username: "Buddy", + friend_bio: "Pizza without cheese, sauce, and toppings is just bread", + friends_id: 10, + }, + ]; + + beforeEach(() => { + store = mockStore({ + user: { + username: "SteadyFreddie", + friends: [ + { + id: 1, + friend_profile_image: "image", + friend_username: "animecody", + friend_bio: "DBZ all day bby", + friends_id: 8, + }, + { + id: 2, + friend_profile_image: "image", + friend_username: "JDawg", + friends_bio: "Ask me about my pizza", + friend_id: 9, + }, + { + id: 3, + friend_profile_image: "image", + friend_username: "Buddy", + friend_bio: + "Pizza without cheese, sauce, and toppings is just bread", + friends_id: 10, + }, + ], + }, + }); + + store.dispatch = jest.fn(); + console.log(store.dispatch.mock, "mock"); + + component = renderer.create( + + + {/* */} + + ); + }); + // friendOnListcomponent = renderer.create( + // + + // + // ); + // console.log(friendOnListcomponent); + + it("expect length of friends to be 3", async () => { + let children = component.toJSON().children.map((children) => children); + console.log(children); + expect(children.length).toBe(3); + }); + + // const friends = [ + // { + // friend_profile_image: "", + // friend_username: "animecody", + // friend_bio: "DBZ all day bby", + // friends_id: 8, + // }, + // { + // friend_profile_image: "", + // friend_username: "JDawg", + // friend_bio: "Ask me about my pizza", + // friends_id: 9, + // }, + // { + // friend_profile_image: "", + // friend_username: "Buddy", + // friend_bio: "Pizza without cheese, sauce, and toppings is just bread", + // friends_id: 10, + // }, + // ]; + + // const removeFriend = (); + + // it("adds 2 + 2", () => { + // expect(2 + 2).toBe(5); + // }); + + // let newFriends = []; + // const removeFriend = (id) => { + // newFriends = friends.filter((keep) => { + // keep.id != id; + // }); + // }; + + // const deleteFriendModal = `Are you sure you want to remove ${friends[1].friend_username} from your friends list?`; + + // it("test initial friends length", () => { + // expect(friends.length).toBe(3); + // }); + // }); + + // test("Friendslist", async () => { + // const { getByTestId } = render(); + + // const friendsLIST = getByTestId("friendsListTestId"); + // expect(friendsLIST.children.length).toEqual(3); + // }); +}); diff --git a/src/redux/actions/userActions.js b/src/redux/actions/userActions.js index a86b5ec..a038ec1 100644 --- a/src/redux/actions/userActions.js +++ b/src/redux/actions/userActions.js @@ -154,15 +154,17 @@ export const eventsByUser = (id) => (dispatch) => { .then((res) => { const currentDate = new Date().toISOString(); // filter out any declined invites - const filterDeclined = res.data.invitedEvents.filter(event => event.response !== 'declined') + const filterDeclined = res.data.invitedEvents.filter( + (event) => event.response !== "declined" + ); // combine created and invited events and sort by date const events = [...res.data.createdEvents, ...filterDeclined] - .sort((a, b) => new Date(a.start_time) - new Date(b.start_time)) - .filter((date) => date.start_time > currentDate) + .sort((a, b) => new Date(a.start_time) - new Date(b.start_time)) + .filter((date) => date.start_time > currentDate); dispatch({ type: types.USER_EVENT_SUCCESS, - payload: events + payload: events, }); }) .catch((err) => { @@ -268,6 +270,22 @@ export const addUserPromo = (user_id, promo_id) => (dispatch) => { }); }; +export const deleteUserPromo = (user, promo_id) => (dispatch) => { + dispatch({ type: types.DELETE_USER_PROMOS_START, payload: true }); + API.delete(`/savedPromos/${promo_id}`) + .then((res) => { + let newUserPromo = user.savedPromos.filter((keep) => keep.id != promo_id); + dispatch({ + type: types.DELETE_USER_PROMOS_SUCCESS, + payload: newUserPromo, + }); + }) + .catch((err) => { + console.log(err); + dispatch({ type: types.DELETE_USER_PROMOS_FAIL, payload: false }); + }); +}; + export const addUserFriend = (user, friends_id) => (dispatch) => { dispatch({ type: types.ADD_USER_FRIEND_START, payload: true }); API.post(`/friends`, { user_id: user.id, friends_id }) diff --git a/src/redux/reducers/userReducer.js b/src/redux/reducers/userReducer.js index 8471e5f..7cd5759 100644 --- a/src/redux/reducers/userReducer.js +++ b/src/redux/reducers/userReducer.js @@ -23,6 +23,7 @@ export const userReducer = (state = initialState, { type, payload }) => { case types.GET_USER_FRIENDS_START: case types.DELETE_USER_FRIENDS_START: case types.ADD_USER_FRIEND_START: + case types.DELETE_USER_PROMOS_START: return { ...state, isLoading: payload, @@ -159,6 +160,16 @@ export const userReducer = (state = initialState, { type, payload }) => { ...state, bio: payload, }; + case types.DELETE_USER_PROMOS_SUCCESS: + return { + ...state, + savedPromos: payload, + }; + case types.DELETE_USER_PROMOS_FAIL: + return { + ...state, + isLoading: payload, + }; default: return state; } diff --git a/src/redux/types/userTypes.js b/src/redux/types/userTypes.js index 71380ea..5cb53e0 100644 --- a/src/redux/types/userTypes.js +++ b/src/redux/types/userTypes.js @@ -66,3 +66,6 @@ export const ADD_USER_FRIEND_FAIL = "ADD_USER_FRIEND_FAIL"; //USER PROMOS export const GET_USER_PROMOS = "GET_USER_PROMOS"; export const ADD_USER_PROMOS = "ADD_USER_PROMOS"; +export const DELETE_USER_PROMOS_START = "DELETE_USER_PROMOS_START"; +export const DELETE_USER_PROMOS_SUCCESS = "DELETE_USER_PROMOS_SUCCESS"; +export const DELETE_USER_PROMOS_FAIL = "DELETE_USER_PROMOS_FAIL"; From 87aaa249c593c32728552fe75e28d321a8ee2ece Mon Sep 17 00:00:00 2001 From: Freddie Date: Tue, 23 Jun 2020 19:45:59 -0400 Subject: [PATCH 3/4] adding saved promotion deletion --- src/redux/actions/userActions.js | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/src/redux/actions/userActions.js b/src/redux/actions/userActions.js index 93f4826..45d904c 100644 --- a/src/redux/actions/userActions.js +++ b/src/redux/actions/userActions.js @@ -308,29 +308,6 @@ export const deleteUserPromo = (user, promo_id) => (dispatch) => { }); }; -export const addUserFriend = (user, friends_id) => (dispatch) => { - dispatch({ type: types.ADD_USER_FRIEND_START, payload: true }); - API.post(`/friends`, { user_id: user.id, friends_id }) - .then((res) => { - dispatch({ type: types.ADD_USER_FRIEND_SUCCESS, payload: false }); - }) - .then(() => { - // dispatch `getUserFriends` to get updated list of friends - dispatch(getUserFriends(user.id)); - }) - .catch((err) => { - dispatch({ - type: types.ADD_USER_FRIEND_FAIL, - payload: { - isLoading: false, - error: "There was an error adding your friend", - }, - }); - // Errors on actions need to be handeled some other way than - // console.log(err); - }); -}; - // Bio export const updateUserBio = (changes) => (dispatch) => { API.put("/users", { bio: changes }) From 7eac1afdc7db329fc82fc41984912f3348a814c3 Mon Sep 17 00:00:00 2001 From: Freddie Date: Wed, 24 Jun 2020 00:08:36 -0400 Subject: [PATCH 4/4] finishing file, trying to upload --- src/components/users/promotions/UserPromos.js | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/components/users/promotions/UserPromos.js b/src/components/users/promotions/UserPromos.js index 394c22a..df9ee97 100644 --- a/src/components/users/promotions/UserPromos.js +++ b/src/components/users/promotions/UserPromos.js @@ -1,9 +1,11 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import { useSelector, useDispatch } from "react-redux"; -import { Item, Label, Icon } from "semantic-ui-react"; +import { Item, Label, Icon, Button, Confirm } from "semantic-ui-react"; import Moment from "react-moment"; +import "../FriendsComp/FriendsList.css"; import { getUserPromos, + deleteUserPromo, locationByUser, } from "../../../redux/actions/userActions"; @@ -12,16 +14,22 @@ export default function UserPromos() { const savedPromos = useSelector(({ user }) => user.savedPromos); const location = useSelector((state) => state.location); const dispatch = useDispatch(); + const [modalVisibility, setModalVisibility] = useState(false); + + const removeSavedPromo = (id) => { + dispatch(deleteUserPromo(user, id)); + }; useEffect(() => { dispatch(getUserPromos(user.id)); - }, []); + }, [savedPromos.length]); return (

{user.username}'s Saved Promotions

{savedPromos.map((promotion) => { + console.log(promotion); return ( @@ -41,6 +49,32 @@ export default function UserPromos() { + + setModalVisibility(false)} + onConfirm={() => { + removeSavedPromo(promotion.id); + setModalVisibility(false); + }} + /> ); })}