From 2ca009064422f2e0a279bd306f2a17adb923a7bb Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Fri, 23 Jul 2021 16:52:09 +0900 Subject: [PATCH 01/10] chore: yarn.lock --- back/yarn.lock | 58 ++++----- front/yarn.lock | 320 ++++++++++++++++++++++++------------------------ 2 files changed, 189 insertions(+), 189 deletions(-) diff --git a/back/yarn.lock b/back/yarn.lock index 11fb4fbf..8abd5ee9 100644 --- a/back/yarn.lock +++ b/back/yarn.lock @@ -1184,17 +1184,17 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@carbon/icon-helpers@^10.19.0": - version "10.19.0" - resolved "https://registry.yarnpkg.com/@carbon/icon-helpers/-/icon-helpers-10.19.0.tgz#f6b608b181b4ca4aeeadac72ec11b7cf530b4d1c" - integrity sha512-2eIecDuoEEx+nORHtTBmj5lV/N4Q1kP7XCZUkF15WfXxZHx2RI6KhS4HnMPDoylguhavnRjSIK1gl6oG3Z3wSQ== +"@carbon/icon-helpers@^10.20.0": + version "10.20.0" + resolved "https://registry.yarnpkg.com/@carbon/icon-helpers/-/icon-helpers-10.20.0.tgz#4e6752b984fcbfd5851af5c4dfdab5031bb4aa1d" + integrity sha512-Qe/xHnMDwji541+2ibn90eFI5xWh51SQ6ehmHncagNrPIJb3a+x1DMhQcAMUF6YKwGzSbb5VQfay5wFoxcaf+A== "@carbon/icons-react@^10.14.0": - version "10.35.0" - resolved "https://registry.yarnpkg.com/@carbon/icons-react/-/icons-react-10.35.0.tgz#dd1e7b9bc233d8d69cb293d01c24c456f7a01eb0" - integrity sha512-FkyY648pyqNeg3MlXuwH6Zf+OTOkCoKQym/qdvvfmkNrqDrM1xWZlJNNFTNpy0RBrjJYptmkN2vLSoffUuZDaQ== + version "10.36.0" + resolved "https://registry.yarnpkg.com/@carbon/icons-react/-/icons-react-10.36.0.tgz#a09dc6b4bcda2f43063014af38e112081a2a91fb" + integrity sha512-lWmG8v09XTVKPsGd0kbZgYAwvQ99XB3Szt0y91W3b2zKXiSilyFuSbG9Vd6fwrfaP84QG48MnCFdct0Aww57Xg== dependencies: - "@carbon/icon-helpers" "^10.19.0" + "@carbon/icon-helpers" "^10.20.0" "@carbon/telemetry" "0.0.0-alpha.6" prop-types "^15.7.2" @@ -1632,9 +1632,9 @@ uuid "8.3.2" "@nestjs/config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/config/-/config-1.0.0.tgz#966067195826b9b82b6fc63e990e31af28912185" - integrity sha512-Id5dQsCISMxWu0oPKcEP4ltQ5Z6eY748WHIXNOFc2Q9qehvHVk8iMRMmTIzTJ+eCOB6qKBAdhTI4KuRyRlwAuQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@nestjs/config/-/config-1.0.1.tgz#3d794a8af7fb2cc2b1605a8a293eeae14b2d290d" + integrity sha512-azMl4uYlFIhYsywFxPJT81RxF3Pnn0TZW3EEmr0Wa0Wex8R2xpvBNrCcrOgW3TB1xGMP7eqBrlfsVh5ZP82szg== dependencies: dotenv "10.0.0" dotenv-expand "5.1.0" @@ -2336,9 +2336,9 @@ form-data "^3.0.0" "@types/node@*": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.0.tgz#2c219eaa3b8d1e4d04f4dd6e40bc68c7467d5272" - integrity sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg== + version "16.4.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.1.tgz#9fad171a5b701613ee8a6f4ece3c88b1034b1b03" + integrity sha512-UW7cbLqf/Wu5XH2RKKY1cHwUNLicIDRLMraYKz+HHAerJ0ZffUEk+fMnd8qU2JaS6cAy0r8tsaf7yqHASf/Y0Q== "@types/node@^10.1.0": version "10.17.60" @@ -4290,9 +4290,9 @@ date-fns@2.15.0: integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ== date-fns@^2.0.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.22.1.tgz#1e5af959831ebb1d82992bf67b765052d8f0efc4" - integrity sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg== + version "2.23.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.23.0.tgz#4e886c941659af0cf7b30fafdd1eaa37e88788a9" + integrity sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" @@ -4547,9 +4547,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.723: - version "1.3.784" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.784.tgz#c370be79374b02b7f13e8a8fb0d7a02641161dac" - integrity sha512-JTPxdUibkefeomWNaYs8lI/x/Zb4cOhZWX+d7kpzsNKzUd07pNuo/AcHeNJ/qgEchxM1IAxda9aaGUhKN/poOg== + version "1.3.785" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.785.tgz#79f546c69a6be4f30913aaace361bc746f26df48" + integrity sha512-WmCgAeURsMFiyoJ646eUaJQ7GNfvMRLXo+GamUyKVNEM4MqTAsXyC0f38JEB4N3BtbD0tlAKozGP5E2T9K3YGg== emittery@^0.7.1: version "0.7.2" @@ -6901,9 +6901,9 @@ lines-and-columns@^1.1.6: integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= lint-staged@^11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.0.1.tgz#1b8ae8ed5a52ed87252db95fe008c2618c85f55a" - integrity sha512-RkTA1ulE6jAGFskxpGAwxfVRXjHp7D9gFg/+KMARUWMPiVFP0t28Em2u0gL8sA0w3/ck3TC57F2v2RNeQ5XPnw== + version "11.1.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.0.tgz#a21d67ffe4516e907635adeaf6d6450d8cffb4e4" + integrity sha512-pzwEf+NKbTauAlk7gPPwTfulRXESEPZCSFXYfg20F220UOObebxu5uL5mkr9csQLNOM2Ydfrt3DJXakzAL7aaQ== dependencies: chalk "^4.1.1" cli-truncate "^2.1.0" @@ -6922,9 +6922,9 @@ lint-staged@^11.0.0: stringify-object "^3.3.0" listr2@^3.8.2: - version "3.10.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.10.0.tgz#58105a53ed7fa1430d1b738c6055ef7bb006160f" - integrity sha512-eP40ZHihu70sSmqFNbNy2NL1YwImmlMmPh9WO5sLmPDleurMHt3n+SwEWNu2kzKScexZnkyFtc1VI0z/TGlmpw== + version "3.11.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9" + integrity sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ== dependencies: cli-truncate "^2.1.0" colorette "^1.2.2" @@ -8657,9 +8657,9 @@ regenerate@^1.4.0: integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: version "0.14.5" diff --git a/front/yarn.lock b/front/yarn.lock index 8013d53b..e72381b5 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -70,19 +70,19 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" - integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" + integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== dependencies: "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" + "@babel/generator" "^7.14.8" "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helpers" "^7.14.6" - "@babel/parser" "^7.14.6" + "@babel/helper-module-transforms" "^7.14.8" + "@babel/helpers" "^7.14.8" + "@babel/parser" "^7.14.8" "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -90,12 +90,12 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.12.1", "@babel/generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" - integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== +"@babel/generator@^7.12.1", "@babel/generator@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" + integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.14.8" jsesc "^2.5.1" source-map "^0.5.0" @@ -125,13 +125,13 @@ semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz#f114469b6c06f8b5c59c6c4e74621f5085362542" - integrity sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz#a6f8c3de208b1e5629424a9a63567f56501955fc" + integrity sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ== dependencies: "@babel/helper-annotate-as-pure" "^7.14.5" "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-member-expression-to-functions" "^7.14.7" "@babel/helper-optimise-call-expression" "^7.14.5" "@babel/helper-replace-supers" "^7.14.5" "@babel/helper-split-export-declaration" "^7.14.5" @@ -188,7 +188,7 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-member-expression-to-functions@^7.14.5": +"@babel/helper-member-expression-to-functions@^7.14.5", "@babel/helper-member-expression-to-functions@^7.14.7": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== @@ -202,19 +202,19 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" - integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" + integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== dependencies: "@babel/helper-module-imports" "^7.14.5" "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" + "@babel/helper-simple-access" "^7.14.8" "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.8" "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" "@babel/helper-optimise-call-expression@^7.14.5": version "7.14.5" @@ -247,12 +247,12 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helper-simple-access@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" - integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== +"@babel/helper-simple-access@^7.14.5", "@babel/helper-simple-access@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" + integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.14.8" "@babel/helper-skip-transparent-expression-wrappers@^7.12.1", "@babel/helper-skip-transparent-expression-wrappers@^7.14.5": version "7.14.5" @@ -268,10 +268,10 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-validator-identifier@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== +"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" + integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.14.5": version "7.14.5" @@ -288,14 +288,14 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helpers@^7.12.1", "@babel/helpers@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.6.tgz#5b58306b95f1b47e2a0199434fa8658fa6c21635" - integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== +"@babel/helpers@^7.12.1", "@babel/helpers@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" + integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== dependencies: "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" @@ -306,10 +306,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.7.0": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" - integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8", "@babel/parser@^7.7.0": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" + integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": version "7.14.5" @@ -1039,9 +1039,9 @@ semver "^5.5.0" "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.7.tgz#5c70b22d4c2d893b03d8c886a5c17422502b932a" - integrity sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.8.tgz#254942f5ca80ccabcfbb2a9f524c74bca574005b" + integrity sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg== dependencies: "@babel/compat-data" "^7.14.7" "@babel/helper-compilation-targets" "^7.14.5" @@ -1110,7 +1110,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.14.5" "@babel/plugin-transform-unicode-regex" "^7.14.5" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.5" + "@babel/types" "^7.14.8" babel-plugin-polyfill-corejs2 "^0.2.2" babel-plugin-polyfill-corejs3 "^0.2.2" babel-plugin-polyfill-regenerator "^0.2.2" @@ -1162,9 +1162,9 @@ "@babel/plugin-transform-typescript" "^7.12.1" "@babel/runtime-corejs3@^7.10.2": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz#0ef292bbce40ca00f874c9724ef175a12476465c" - integrity sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.14.8.tgz#68539e0129f13eb1ed9a9aa273d3542b93c88384" + integrity sha512-4dMD5QRBkumn45oweR0SxoNtt15oz3BUBAQ8cIx7HJqZTtE8zjpM0My8aHJHVnyf4XfRg6DNzaE1080WLBiC1w== dependencies: core-js-pure "^3.15.0" regenerator-runtime "^0.13.4" @@ -1177,9 +1177,9 @@ regenerator-runtime "^0.13.4" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" - integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" + integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== dependencies: regenerator-runtime "^0.13.4" @@ -1192,27 +1192,27 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.7.0": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.7.tgz#64007c9774cfdc3abd23b0780bc18a3ce3631753" - integrity sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8", "@babel/traverse@^7.7.0": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" + integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== dependencies: "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" + "@babel/generator" "^7.14.8" "@babel/helper-function-name" "^7.14.5" "@babel/helper-hoist-variables" "^7.14.5" "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.7" - "@babel/types" "^7.14.5" + "@babel/parser" "^7.14.8" + "@babel/types" "^7.14.8" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.14.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" + integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.8" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1886,10 +1886,10 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -2596,7 +2596,7 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": version "7.0.8" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== @@ -2624,9 +2624,9 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node@*", "@types/node@>=6": - version "16.3.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.2.tgz#655432817f83b51ac869c2d51dd8305fb8342e16" - integrity sha512-jJs9ErFLP403I+hMLGnqDRWT0RYKSvArxuBVh2veudHV7ifEC1WAmjJADacZ7mRbA2nWgHtn8xyECMAot0SkAw== + version "16.4.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.1.tgz#9fad171a5b701613ee8a6f4ece3c88b1034b1b03" + integrity sha512-UW7cbLqf/Wu5XH2RKKY1cHwUNLicIDRLMraYKz+HHAerJ0ZffUEk+fMnd8qU2JaS6cAy0r8tsaf7yqHASf/Y0Q== "@types/node@^12.0.0": version "12.20.16" @@ -2746,9 +2746,9 @@ integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/testing-library__jest-dom@^5.9.1": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.0.tgz#98eb7537cb5502bcca7a0d82acf5f245a2e6c322" - integrity sha512-l2P2GO+hFF4Liye+fAajT1qBqvZOiL79YMpEvgGs1xTK7hECxBI8Wz4J7ntACJNiJ9r0vXQqYovroXRLPDja6A== + version "5.14.1" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz#014162a5cee6571819d48e999980694e2f657c3c" + integrity sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw== dependencies: "@types/jest" "*" @@ -2813,27 +2813,27 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^4.27.0", "@typescript-eslint/eslint-plugin@^4.5.0": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.3.tgz#36cdcd9ca6f9e5cb49b9f61b970b1976708d084b" - integrity sha512-jW8sEFu1ZeaV8xzwsfi6Vgtty2jf7/lJmQmDkDruBjYAbx5DA8JtbcMnP0rNPUG+oH5GoQBTSp+9613BzuIpYg== + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.4.tgz#e73c8cabbf3f08dee0e1bda65ed4e622ae8f8921" + integrity sha512-s1oY4RmYDlWMlcV0kKPBaADn46JirZzvvH7c2CtAqxCY96S538JRBAzt83RrfkDheV/+G/vWNK0zek+8TB3Gmw== dependencies: - "@typescript-eslint/experimental-utils" "4.28.3" - "@typescript-eslint/scope-manager" "4.28.3" + "@typescript-eslint/experimental-utils" "4.28.4" + "@typescript-eslint/scope-manager" "4.28.4" debug "^4.3.1" functional-red-black-tree "^1.0.1" regexpp "^3.1.0" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@4.28.3", "@typescript-eslint/experimental-utils@^4.0.1": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.3.tgz#976f8c1191b37105fd06658ed57ddfee4be361ca" - integrity sha512-zZYl9TnrxwEPi3FbyeX0ZnE8Hp7j3OCR+ELoUfbwGHGxWnHg9+OqSmkw2MoCVpZksPCZYpQzC559Ee9pJNHTQw== +"@typescript-eslint/experimental-utils@4.28.4", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.4.tgz#9c70c35ebed087a5c70fb0ecd90979547b7fec96" + integrity sha512-OglKWOQRWTCoqMSy6pm/kpinEIgdcXYceIcH3EKWUl4S8xhFtN34GQRaAvTIZB9DD94rW7d/U7tUg3SYeDFNHA== dependencies: "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.28.3" - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/typescript-estree" "4.28.3" + "@typescript-eslint/scope-manager" "4.28.4" + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/typescript-estree" "4.28.4" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -2849,32 +2849,32 @@ eslint-utils "^2.0.0" "@typescript-eslint/parser@^4.27.0", "@typescript-eslint/parser@^4.5.0": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.3.tgz#95f1d475c08268edffdcb2779993c488b6434b44" - integrity sha512-ZyWEn34bJexn/JNYvLQab0Mo5e+qqQNhknxmc8azgNd4XqspVYR5oHq9O11fLwdZMRcj4by15ghSlIEq+H5ltQ== + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.4.tgz#bc462dc2779afeefdcf49082516afdc3e7b96fab" + integrity sha512-4i0jq3C6n+og7/uCHiE6q5ssw87zVdpUj1k6VlVYMonE3ILdFApEzTWgppSRG4kVNB/5jxnH+gTeKLMNfUelQA== dependencies: - "@typescript-eslint/scope-manager" "4.28.3" - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/typescript-estree" "4.28.3" + "@typescript-eslint/scope-manager" "4.28.4" + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/typescript-estree" "4.28.4" debug "^4.3.1" -"@typescript-eslint/scope-manager@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.3.tgz#c32ad4491b3726db1ba34030b59ea922c214e371" - integrity sha512-/8lMisZ5NGIzGtJB+QizQ5eX4Xd8uxedFfMBXOKuJGP0oaBBVEMbJVddQKDXyyB0bPlmt8i6bHV89KbwOelJiQ== +"@typescript-eslint/scope-manager@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.4.tgz#bdbce9b6a644e34f767bd68bc17bb14353b9fe7f" + integrity sha512-ZJBNs4usViOmlyFMt9X9l+X0WAFcDH7EdSArGqpldXu7aeZxDAuAzHiMAeI+JpSefY2INHrXeqnha39FVqXb8w== dependencies: - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/visitor-keys" "4.28.3" + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/visitor-keys" "4.28.4" "@typescript-eslint/types@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.3.tgz#8fffd436a3bada422c2c1da56060a0566a9506c7" - integrity sha512-kQFaEsQBQVtA9VGVyciyTbIg7S3WoKHNuOp/UF5RG40900KtGqfoiETWD/v0lzRXc+euVE9NXmfer9dLkUJrkA== +"@typescript-eslint/types@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.4.tgz#41acbd79b5816b7c0dd7530a43d97d020d3aeb42" + integrity sha512-3eap4QWxGqkYuEmVebUGULMskR6Cuoc/Wii0oSOddleP4EGx1tjLnZQ0ZP33YRoMDCs5O3j56RBV4g14T4jvww== "@typescript-eslint/typescript-estree@3.10.1": version "3.10.1" @@ -2890,13 +2890,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.3.tgz#253d7088100b2a38aefe3c8dd7bd1f8232ec46fb" - integrity sha512-YAb1JED41kJsqCQt1NcnX5ZdTA93vKFCMP4lQYG6CFxd0VzDJcKttRlMrlG+1qiWAw8+zowmHU1H0OzjWJzR2w== +"@typescript-eslint/typescript-estree@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.4.tgz#252e6863278dc0727244be9e371eb35241c46d00" + integrity sha512-z7d8HK8XvCRyN2SNp+OXC2iZaF+O2BTquGhEYLKLx5k6p0r05ureUtgEfo5f6anLkhCxdHtCf6rPM1p4efHYDQ== dependencies: - "@typescript-eslint/types" "4.28.3" - "@typescript-eslint/visitor-keys" "4.28.3" + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/visitor-keys" "4.28.4" debug "^4.3.1" globby "^11.0.3" is-glob "^4.0.1" @@ -2910,12 +2910,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@4.28.3": - version "4.28.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.3.tgz#26ac91e84b23529968361045829da80a4e5251c4" - integrity sha512-ri1OzcLnk1HH4gORmr1dllxDzzrN6goUIz/P4MHFV0YZJDCADPR3RvYNp0PW2SetKTThar6wlbFTL00hV2Q+fg== +"@typescript-eslint/visitor-keys@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.4.tgz#92dacfefccd6751cbb0a964f06683bfd72d0c4d3" + integrity sha512-NIAXAdbz1XdOuzqkJHjNKXKj8QQ4cv5cxR/g0uQhCYf/6//XrmfpaYsM7PnBcNbfvTDLUkqQ5TPNm1sozDdTWg== dependencies: - "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/types" "4.28.4" eslint-visitor-keys "^2.0.0" "@webassemblyjs/ast@1.9.0": @@ -3204,9 +3204,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.1: - version "8.6.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.1.tgz#ae65764bf1edde8cd861281cda5057852364a295" - integrity sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ== + version "8.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" + integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -4187,9 +4187,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001219: - version "1.0.30001245" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz#45b941bbd833cb0fa53861ff2bae746b3c6ca5d4" - integrity sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA== + version "1.0.30001246" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001246.tgz#fe17d9919f87124d6bb416ef7b325356d69dc76c" + integrity sha512-Tc+ff0Co/nFNbLOrziBXmMVtpt9S2c2Y+Z9Nk9Khj09J+0zR9ejvIW5qkZAErCbOrVODCx/MN+GpB5FNBs5GFA== capture-exit@^2.0.0: version "2.0.0" @@ -4399,7 +4399,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4423,21 +4423,21 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== +color-string@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" + integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" color@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" + color-convert "^1.9.3" + color-string "^1.6.0" colorette@^1.2.1, colorette@^1.2.2: version "1.2.2" @@ -5371,9 +5371,9 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.723: - version "1.3.776" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.776.tgz#33f6e2423b61f1bdaa8d2a103aae78a09764a75f" - integrity sha512-V0w7eFSBoFPpdw4xexjVPZ770UDZIevSwkkj4W97XbE3IsCsTRFpa7/yXGZ88EOQAUEA09JMMsWK0xsw0kRAYw== + version "1.3.785" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.785.tgz#79f546c69a6be4f30913aaace361bc746f26df48" + integrity sha512-WmCgAeURsMFiyoJ646eUaJQ7GNfvMRLXo+GamUyKVNEM4MqTAsXyC0f38JEB4N3BtbD0tlAKozGP5E2T9K3YGg== elliptic@^6.5.3: version "6.5.4" @@ -5603,9 +5603,9 @@ eslint-plugin-eslint-comments@^3.2.0: ignore "^5.0.5" eslint-plugin-flowtype@^5.2.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.8.0.tgz#35b55e4ce559b90efbe913ed33630e391e301481" - integrity sha512-feK1xnUTsMSNTOw9jFw7aVgZl7Ep+ghpta/YEoaV6jbXU6Yso30B7BIj9ObHLzZ5TFJL7D98az080wfykLCrcw== + version "5.8.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.8.1.tgz#6f2c313a6e9ec271a51315ccd09c2432b4d1930e" + integrity sha512-ADe4cYAn1UYVs1P1F9wKDNP2lbm3JtwbFykxJpO129utErjAhRZYQJCIKmhy6Rpx7Q9p8pc3gLVIFXtatXJriQ== dependencies: lodash "^4.17.15" string-natural-compare "^3.0.1" @@ -5632,9 +5632,9 @@ eslint-plugin-import@^2.22.1: tsconfig-paths "^3.9.0" eslint-plugin-jest@^24.1.0: - version "24.3.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz#5f0ca019183c3188c5ad3af8e80b41de6c8e9173" - integrity sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg== + version "24.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.4.0.tgz#fa4b614dbd46a98b652d830377971f097bda9262" + integrity sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg== dependencies: "@typescript-eslint/experimental-utils" "^4.0.1" @@ -5745,12 +5745,12 @@ eslint-webpack-plugin@^2.5.2: schema-utils "^3.0.0" eslint@^7.11.0, eslint@^7.19.0: - version "7.30.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8" - integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg== + version "7.31.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.31.0.tgz#f972b539424bf2604907a970860732c5d99d3aca" + integrity sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA== dependencies: "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" + "@eslint/eslintrc" "^0.4.3" "@humanwhocodes/config-array" "^0.5.0" ajv "^6.10.0" chalk "^4.0.0" @@ -8153,9 +8153,9 @@ lint-staged@^10.5.4: stringify-object "^3.3.0" listr2@^3.2.2: - version "3.10.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.10.0.tgz#58105a53ed7fa1430d1b738c6055ef7bb006160f" - integrity sha512-eP40ZHihu70sSmqFNbNy2NL1YwImmlMmPh9WO5sLmPDleurMHt3n+SwEWNu2kzKScexZnkyFtc1VI0z/TGlmpw== + version "3.11.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9" + integrity sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ== dependencies: cli-truncate "^2.1.0" colorette "^1.2.2" @@ -10129,9 +10129,9 @@ postcss@7.0.36, postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, pos supports-color "^6.1.0" postcss@^8.1.0: - version "8.3.5" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.5.tgz#982216b113412bc20a86289e91eb994952a5b709" - integrity sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA== + version "8.3.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" + integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== dependencies: colorette "^1.2.2" nanoid "^3.1.23" @@ -10739,9 +10739,9 @@ regenerator-runtime@^0.11.0: integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: version "0.14.5" @@ -11151,11 +11151,11 @@ schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: ajv-keywords "^3.5.2" schema-utils@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.0.tgz#95986eb604f66daadeed56e379bfe7a7f963cdb9" - integrity sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w== + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: - "@types/json-schema" "^7.0.7" + "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" From 3e7943e3d8082903eb9b422267e1ec2e98698e53 Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Fri, 23 Jul 2021 19:50:14 +0900 Subject: [PATCH 02/10] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=EB=B0=A9=20?= =?UTF-8?q?=EC=A2=85=EB=A3=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/src/chat-logs/chat-logs.service.ts | 1 + .../Alarm/AlarmChatMessage/index.tsx | 6 ++ .../src/UI/organisms/ChatLogSendBox/index.tsx | 9 ++- front/src/UI/organisms/ChatPanel/index.tsx | 60 +++++++++++-------- front/src/UI/organisms/ChatTableRow/index.tsx | 2 + .../CheckChatPasswordModal/index.tsx | 2 + 6 files changed, 54 insertions(+), 26 deletions(-) diff --git a/back/src/chat-logs/chat-logs.service.ts b/back/src/chat-logs/chat-logs.service.ts index fc8ba225..55c82db7 100644 --- a/back/src/chat-logs/chat-logs.service.ts +++ b/back/src/chat-logs/chat-logs.service.ts @@ -11,6 +11,7 @@ export class ChatLogsService { const chat = await Chat.findOneOrFail({ where: { uuid: createChatLogInput.chatUUID, + isAlive: true, }, }).catch(() => { const error = { uuid: `chat with uuid(${createChatLogInput.chatUUID}) does not exist.` }; diff --git a/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx b/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx index ece04efa..b44f960b 100644 --- a/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx +++ b/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx @@ -62,6 +62,12 @@ const ChatNotification = ({ chatID, message }: IchatNotification) => { {chatID}님이 채팅방을 나가셨습니다. ); + } else if (message === 'destroy') { + return ( + + 채팅이 종료되었습니다. + + ); } else { return [Error: 0000]오류가 발생했습니다. 관리자에게 문의해주세요.; } diff --git a/front/src/UI/organisms/ChatLogSendBox/index.tsx b/front/src/UI/organisms/ChatLogSendBox/index.tsx index 310c7fcb..795dcba4 100644 --- a/front/src/UI/organisms/ChatLogSendBox/index.tsx +++ b/front/src/UI/organisms/ChatLogSendBox/index.tsx @@ -31,8 +31,13 @@ export const ChatLogSendBox = () => { type: 'message', }, }, - }); - inputRef.current.value = ''; + }) + .then(() => { + inputRef.current.value = ''; + }) + .catch((err) => { + return; + }); }; const handleKeyPressInput = (e: ChangeEvent) => { diff --git a/front/src/UI/organisms/ChatPanel/index.tsx b/front/src/UI/organisms/ChatPanel/index.tsx index 9c01edb0..d0b606bb 100644 --- a/front/src/UI/organisms/ChatPanel/index.tsx +++ b/front/src/UI/organisms/ChatPanel/index.tsx @@ -86,33 +86,45 @@ export const ChatPanel = ({ ...props }) => { //채팅방 떠나기 const leaveChat = async (uuid: string, ownerID: string, userID: string[]) => { - let leftChat = {}; // 나간 채팅방 정보가 담김. if (ownerID === loginID) { - leftChat = { - uuid: uuid, - isAlive: false, - }; + await createChatLog({ + variables: { + user: { + userID: currentLoginIDVar(), + chatUUID: uuid, + message: 'destroy', + type: 'notification', + }, + }, + }); + await updateChat({ + variables: { + newChat: { + uuid: uuid, + isAlive: false, + }, + }, + }); } else { - leftChat = { - uuid: uuid, - userID: userID.filter((user) => user !== loginID), - }; - } - await updateChat({ - variables: { - newChat: leftChat, - }, - }); - await createChatLog({ - variables: { - user: { - userID: currentLoginIDVar(), - chatUUID: uuid, - message: 'exit', - type: 'notification', + await updateChat({ + variables: { + newChat: { + uuid: uuid, + userID: userID.filter((user) => user !== loginID), + }, }, - }, - }); + }); + await createChatLog({ + variables: { + user: { + userID: currentLoginIDVar(), + chatUUID: uuid, + message: 'exit', + type: 'notification', + }, + }, + }); + } if (uuid === currentChatVar()) { currentChatVar(EMPTY_CHAT_UUID); } diff --git a/front/src/UI/organisms/ChatTableRow/index.tsx b/front/src/UI/organisms/ChatTableRow/index.tsx index 8c77171c..5a9a95ab 100644 --- a/front/src/UI/organisms/ChatTableRow/index.tsx +++ b/front/src/UI/organisms/ChatTableRow/index.tsx @@ -63,6 +63,8 @@ export const ChatTableRow = ({ ...props }) => { message: 'enter', }, }, + }).catch(() => { + return; }); await refetchChat(); } diff --git a/front/src/UI/organisms/CheckChatPasswordModal/index.tsx b/front/src/UI/organisms/CheckChatPasswordModal/index.tsx index d04ff8cf..07d596c9 100644 --- a/front/src/UI/organisms/CheckChatPasswordModal/index.tsx +++ b/front/src/UI/organisms/CheckChatPasswordModal/index.tsx @@ -51,6 +51,8 @@ export const CheckChatPasswordModal = ({ ...props }) => { message: 'enter', }, }, + }).catch(() => { + return; }); await refetchChat(); } From 450d68a04f4b2b85b3425d57633e2f636c39467e Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Fri, 23 Jul 2021 21:37:40 +0900 Subject: [PATCH 03/10] =?UTF-8?q?feat:=20block=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AlarmChatMessagesBoxQueries.ts | 24 +++++++++++++++++++ .../organisms/AlarmChatMessagesBox/index.tsx | 24 +++++++++++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/front/src/UI/organisms/AlarmChatMessagesBox/AlarmChatMessagesBoxQueries.ts b/front/src/UI/organisms/AlarmChatMessagesBox/AlarmChatMessagesBoxQueries.ts index 50c20b9e..de1b7ab7 100644 --- a/front/src/UI/organisms/AlarmChatMessagesBox/AlarmChatMessagesBoxQueries.ts +++ b/front/src/UI/organisms/AlarmChatMessagesBox/AlarmChatMessagesBoxQueries.ts @@ -11,3 +11,27 @@ export const CHATLOG_SUBSCRIPTION = gql` } } `; +export const GET_CURRENT_USER = gql` + query { + me { + index + userID + nickname + avatar + ladderRating + totalWin + totalLose + modifiedAt + followings { + following { + index + userID + userState + avatar + } + checked + blocked + } + } + } +`; diff --git a/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx b/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx index 07c4ea03..235cf102 100644 --- a/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx +++ b/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx @@ -1,10 +1,13 @@ +import { useQuery } from '@apollo/client'; import React, { useEffect } from 'react'; import { currentLoginIDVar } from '../../../apollo/apolloProvider'; import { AlarmChatMessage } from '../../molecules'; -import { CHATLOG_SUBSCRIPTION } from './AlarmChatMessagesBoxQueries'; +import { CHATLOG_SUBSCRIPTION, GET_CURRENT_USER } from './AlarmChatMessagesBoxQueries'; export const AlarmChatMessagesBox = ({ ...props }) => { const { subscribeToNewMessage, chatLog, chatIndex } = props; + const { loading, error, data } = useQuery(GET_CURRENT_USER); // block ID 조회용 쿼리 + useEffect(() => { const unsubscribe = subscribeToNewMessage({ document: CHATLOG_SUBSCRIPTION, @@ -13,11 +16,28 @@ export const AlarmChatMessagesBox = ({ ...props }) => { unsubscribe(); }; }); + if (loading) { + return <>Loading...; + } + if (error) { + return <>ERROR; + } // 로그인 ID 가져오기 const loginID = currentLoginIDVar(); + + //block ID 필터링 + const blockedIDList = data.me.followings.map((item) => { + if (item.blocked === true) { + return item.following.userID; + } + return null; + }); + const filteredChatLogs = chatLog.filter((item) => { + return !blockedIDList.includes(item.userID); + }); return ( <> - {chatLog.map(({ index, type, userID, message, createdAt }) => { + {filteredChatLogs.map(({ index, type, userID, message, createdAt }) => { const filteredType = type === 'notification' ? type : userID === loginID ? 'ownerMessage' : 'message'; return ( Date: Mon, 26 Jul 2021 15:08:00 +0900 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20mute=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/src/chat-logs/chat-logs.service.ts | 4 ++++ back/src/chats/chats.service.ts | 1 + back/src/chats/dto/update-chat.input.ts | 3 +++ back/src/chats/entities/chat.entity.ts | 4 ++++ front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx | 6 ++++++ front/src/UI/organisms/AlarmChat/AlarmChatQueries.ts | 1 + front/src/UI/organisms/AlarmChat/index.tsx | 2 +- front/src/UI/organisms/ChatLogSendBox/index.tsx | 7 ++++++- 8 files changed, 26 insertions(+), 2 deletions(-) diff --git a/back/src/chat-logs/chat-logs.service.ts b/back/src/chat-logs/chat-logs.service.ts index 55c82db7..3df84ae7 100644 --- a/back/src/chat-logs/chat-logs.service.ts +++ b/back/src/chat-logs/chat-logs.service.ts @@ -25,6 +25,10 @@ export class ChatLogsService { const error = { userID: `user(ID: ${createChatLogInput.userID}) does not exist.` }; throw new HttpException({ message: 'Input data validation failed', error }, HttpStatus.BAD_REQUEST); }); + //음소거 된 유저가 메세지를 보낼 경우 + if (createChatLogInput.type === 'message' && chat.muteID.includes(user.userID)) { + throw new HttpException({ message: 'Input data validation failed' }, HttpStatus.BAD_REQUEST); + } const chatLog = new ChatLog(); chatLog.chatUUID = chat.uuid; chatLog.message = createChatLogInput.message; diff --git a/back/src/chats/chats.service.ts b/back/src/chats/chats.service.ts index b350b658..d0b995ad 100644 --- a/back/src/chats/chats.service.ts +++ b/back/src/chats/chats.service.ts @@ -71,6 +71,7 @@ export class ChatsService { chat.isAlive = updateChatInput.isAlive !== undefined ? updateChatInput.isAlive : chat.isAlive; chat.adminID = updateChatInput.adminID ? updateChatInput.adminID : chat.adminID; chat.userID = updateChatInput.userID ? updateChatInput.userID : chat.userID; + chat.muteID = updateChatInput.muteID ? updateChatInput.muteID : chat.muteID; const validate_error = await validate(chat); if (validate_error.length > 0) { throw new HttpException({ message: 'Input data validation failed' }, HttpStatus.BAD_REQUEST); diff --git a/back/src/chats/dto/update-chat.input.ts b/back/src/chats/dto/update-chat.input.ts index 69ff0b4d..c7681a17 100644 --- a/back/src/chats/dto/update-chat.input.ts +++ b/back/src/chats/dto/update-chat.input.ts @@ -14,4 +14,7 @@ export class UpdateChatInput extends PartialType(CreateChatInput) { @Field((type) => [String], { nullable: true }) userID: string[]; + + @Field((type) => [String], { nullable: true }) + muteID: string[]; } diff --git a/back/src/chats/entities/chat.entity.ts b/back/src/chats/entities/chat.entity.ts index f282e62a..cb91e908 100644 --- a/back/src/chats/entities/chat.entity.ts +++ b/back/src/chats/entities/chat.entity.ts @@ -55,6 +55,10 @@ export class Chat extends BaseEntity { @Column({ type: 'varchar', array: true, nullable: true, default: {} }) userID: string[]; + @Field((type) => [String]) + @Column({ type: 'varchar', array: true, nullable: true, default: {} }) + muteID: string[]; + @Field() @CreateDateColumn() createdAt: Date; diff --git a/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx b/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx index b44f960b..dd3ab234 100644 --- a/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx +++ b/front/src/UI/molecules/Alarm/AlarmChatMessage/index.tsx @@ -50,6 +50,12 @@ const ChatNotification = ({ chatID, message }: IchatNotification) => { {chatID}님이 음소거되었습니다. ); + } else if (message === 'unmute') { + return ( + + {chatID}님의 음소거가 해제되었습니다. + + ); } else if (message === 'enter') { return ( diff --git a/front/src/UI/organisms/AlarmChat/AlarmChatQueries.ts b/front/src/UI/organisms/AlarmChat/AlarmChatQueries.ts index 727ee185..e2eee604 100644 --- a/front/src/UI/organisms/AlarmChat/AlarmChatQueries.ts +++ b/front/src/UI/organisms/AlarmChat/AlarmChatQueries.ts @@ -10,6 +10,7 @@ export const GET_CHAT = gql` ownerID adminID userID + muteID chatLog { index userID diff --git a/front/src/UI/organisms/AlarmChat/index.tsx b/front/src/UI/organisms/AlarmChat/index.tsx index 41c37a9a..caaa08bd 100644 --- a/front/src/UI/organisms/AlarmChat/index.tsx +++ b/front/src/UI/organisms/AlarmChat/index.tsx @@ -135,7 +135,7 @@ export const AlarmChat = () => { chatUUID={data.chat.uuid} /> - + ); diff --git a/front/src/UI/organisms/ChatLogSendBox/index.tsx b/front/src/UI/organisms/ChatLogSendBox/index.tsx index 795dcba4..983df199 100644 --- a/front/src/UI/organisms/ChatLogSendBox/index.tsx +++ b/front/src/UI/organisms/ChatLogSendBox/index.tsx @@ -5,7 +5,8 @@ import React, { useRef } from 'react'; import { currentChatVar, currentLoginIDVar } from '../../../apollo/apolloProvider'; import { CREATE_CHAT_LOG } from './ChatLogSendBoxQueries'; -export const ChatLogSendBox = () => { +export const ChatLogSendBox = ({ ...props }) => { + const { muteIDList } = props; //mutation const [createChatLog] = useMutation(CREATE_CHAT_LOG); const inputRef = useRef(); @@ -22,6 +23,10 @@ export const ChatLogSendBox = () => { if (!['devil', 'holee', 'jwon', 'yechoi', 'yshin'].includes(tempRef.current.value)) { return; } + if (muteIDList.includes(tempRef.current.value)) { + inputRef.current.value = ''; + return; + } await createChatLog({ variables: { user: { From c6f3d409c088c9c23eaaf28a4939ea041fada4fc Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Mon, 26 Jul 2021 17:03:05 +0900 Subject: [PATCH 05/10] =?UTF-8?q?fix:=20chat=20name=20validation=20-=20?= =?UTF-8?q?=EC=B1=84=ED=8C=85=EB=B0=A9=20=EC=9D=B4=EB=A6=84=20=EC=9C=A0?= =?UTF-8?q?=ED=9A=A8=EC=84=B1=20=EA=B2=80=EC=82=AC=20=EC=B6=94=EA=B0=80(ba?= =?UTF-8?q?ck)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/src/chats/chats.service.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/back/src/chats/chats.service.ts b/back/src/chats/chats.service.ts index d0b995ad..655e1cf8 100644 --- a/back/src/chats/chats.service.ts +++ b/back/src/chats/chats.service.ts @@ -6,6 +6,13 @@ import { validate } from 'class-validator'; @Injectable() export class ChatsService { + private checkNameValication(name: string) { + if (name === '' || name.search(/[^a-zA-Z0-9ㄱ-ㅎ가-힣]/g) !== -1) { + const error = { password: `Chat name must be number, english, or korean.` }; + throw new HttpException({ message: 'Input data validation failed', error }, HttpStatus.BAD_REQUEST); + } + } + private checkPasswordValidation(type: string, password: string) { if (type === 'private') { if (password === '' || password === undefined) { @@ -31,6 +38,7 @@ export class ChatsService { chat.type = createChatInput.type; chat.ownerID = createChatInput.ownerID; chat.userID = [createChatInput.ownerID]; + this.checkNameValication(chat.name); this.checkPasswordValidation(createChatInput.type, createChatInput.password); //class-validator From 3d890e17256847acd0f02b910f0bb0c557ab47e0 Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Tue, 27 Jul 2021 16:23:38 +0900 Subject: [PATCH 06/10] =?UTF-8?q?fix:=20=EC=B1=84=ED=8C=85=20=EC=9D=B8?= =?UTF-8?q?=EC=9B=90=EC=B0=BD=20=EC=88=98=EC=A0=95=20-=20owner,=20admin=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=EC=BD=98=EC=9D=B4=20=EC=A0=9C=EB=8C=80?= =?UTF-8?q?=EB=A1=9C=20=ED=91=9C=EC=8B=9C=EB=90=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8D=98=20=EC=A0=90=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx b/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx index 59e7ba71..9de8dc79 100644 --- a/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx +++ b/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx @@ -3,11 +3,11 @@ import { ContextMenu } from 'holee-contextmenu'; import { currentLoginIDVar } from '../../../../apollo/apolloProvider'; -const AlarmChatPerson = ({ outerRef, username, ownerID, adminID }) => { +const AlarmChatPerson = ({ outerRef, username, ownerID, adminID = [] }) => { return (
{username} - {ownerID.includes(username) ? ' 👑' : null} + {ownerID === username ? ' 👑' : null} {adminID.includes(username) ? ' 🏅' : null}
); @@ -19,7 +19,7 @@ export const AlarmChatPeople = ({ adminID, }: { username: string; - ownerID: string[]; + ownerID: string; adminID: string[]; }) => { const outerRef = useRef(null); @@ -95,7 +95,7 @@ export const AlarmChatPeople = ({ )} - + ); } @@ -112,7 +112,7 @@ export const AlarmChatPeople = ({ )} - + ); }; From b88fba59aef0e7cd53d6b69cfb5c121ebe66b4a1 Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Tue, 27 Jul 2021 17:17:33 +0900 Subject: [PATCH 07/10] fix: add muteIDList to chat --- front/src/UI/organisms/AlarmChat/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/UI/organisms/AlarmChat/index.tsx b/front/src/UI/organisms/AlarmChat/index.tsx index c1b7edf9..c3964d61 100644 --- a/front/src/UI/organisms/AlarmChat/index.tsx +++ b/front/src/UI/organisms/AlarmChat/index.tsx @@ -138,7 +138,7 @@ export const AlarmChat = () => { chatUUID={data.chat.uuid} /> - {' '} + ) : ( <> From 8e3bf5ef3646dd691cd674af15029974de4e9cfd Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Wed, 28 Jul 2021 11:45:55 +0900 Subject: [PATCH 08/10] =?UTF-8?q?feat:=20context=20block=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AlarmChatPeople/AlarmChatPeopleQueries.ts | 10 ++++++++++ .../molecules/Alarm/AlarmChatPeople/index.tsx | 15 ++++++++++++-- .../organisms/AlarmChatMessagesBox/index.tsx | 20 +++++++++++-------- 3 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts diff --git a/front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts b/front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts new file mode 100644 index 00000000..d2b173f1 --- /dev/null +++ b/front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts @@ -0,0 +1,10 @@ +import { gql } from '@apollo/client'; + +export const TOGGLE_BLOCK = gql` + mutation toggleBlock($blockInput: BlockInput!) { + toggleBlock(blockInput: $blockInput) { + checked + blocked + } + } +`; diff --git a/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx b/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx index 9de8dc79..71ac6c9a 100644 --- a/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx +++ b/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx @@ -3,6 +3,9 @@ import { ContextMenu } from 'holee-contextmenu'; import { currentLoginIDVar } from '../../../../apollo/apolloProvider'; +import { TOGGLE_BLOCK } from './AlarmChatPeopleQueries'; +import { useMutation } from '@apollo/client'; + const AlarmChatPerson = ({ outerRef, username, ownerID, adminID = [] }) => { return (
@@ -23,9 +26,10 @@ export const AlarmChatPeople = ({ adminID: string[]; }) => { const outerRef = useRef(null); + const [toggleBlock] = useMutation(TOGGLE_BLOCK); const loginID = currentLoginIDVar(); - const menuOnClickHandler = ( + const menuOnClickHandler = async ( e: React.MouseEvent | React.KeyboardEvent, ) => { const eventTarget = e.target as HTMLUListElement; @@ -47,7 +51,14 @@ export const AlarmChatPeople = ({ console.log(eventTarget.dataset.option); break; case 'block': - console.log(eventTarget.dataset.option); + await toggleBlock({ + variables: { + blockInput: { + followerID: loginID, + followingID: username, + }, + }, + }); break; case 'mute': console.log(eventTarget.dataset.option); diff --git a/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx b/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx index 235cf102..fc05cc80 100644 --- a/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx +++ b/front/src/UI/organisms/AlarmChatMessagesBox/index.tsx @@ -6,7 +6,9 @@ import { CHATLOG_SUBSCRIPTION, GET_CURRENT_USER } from './AlarmChatMessagesBoxQu export const AlarmChatMessagesBox = ({ ...props }) => { const { subscribeToNewMessage, chatLog, chatIndex } = props; - const { loading, error, data } = useQuery(GET_CURRENT_USER); // block ID 조회용 쿼리 + const { loading, error, data } = useQuery(GET_CURRENT_USER, { + fetchPolicy: 'network-only', + }); // block ID 조회용 쿼리 useEffect(() => { const unsubscribe = subscribeToNewMessage({ @@ -15,7 +17,7 @@ export const AlarmChatMessagesBox = ({ ...props }) => { return () => { unsubscribe(); }; - }); + }, [subscribeToNewMessage]); if (loading) { return <>Loading...; } @@ -26,12 +28,14 @@ export const AlarmChatMessagesBox = ({ ...props }) => { const loginID = currentLoginIDVar(); //block ID 필터링 - const blockedIDList = data.me.followings.map((item) => { - if (item.blocked === true) { - return item.following.userID; - } - return null; - }); + const blockedIDList = data.me.followings + .map((item) => { + if (item.blocked === true) { + return item.following.userID; + } + return null; + }) + .filter((item) => item !== null); const filteredChatLogs = chatLog.filter((item) => { return !blockedIDList.includes(item.userID); }); From 80b5f639569a6bc6b7201cd2d917f79dc412582a Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Wed, 28 Jul 2021 16:30:37 +0900 Subject: [PATCH 09/10] =?UTF-8?q?feat:=20toggleMute=20-=20toggleMute?= =?UTF-8?q?=EB=A1=9C=20mute=20=EB=98=90=EB=8A=94=20unmute=EB=A5=BC=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/src/chats/chats.resolver.ts | 8 ++++++++ back/src/chats/chats.service.ts | 25 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/back/src/chats/chats.resolver.ts b/back/src/chats/chats.resolver.ts index d7c9ca32..a5370d9e 100644 --- a/back/src/chats/chats.resolver.ts +++ b/back/src/chats/chats.resolver.ts @@ -65,4 +65,12 @@ export class ChatsResolver { ) { return this.chatsService.checkPassword(uuid, password); } + + @Mutation(() => Chat) + toggleMute( + @Args('uuid', { type: () => String }) uuid: string, + @Args('userID', { type: () => String }) userID: string, + ) { + return this.chatsService.toggleMute(uuid, userID); + } } diff --git a/back/src/chats/chats.service.ts b/back/src/chats/chats.service.ts index 655e1cf8..d5afbfc1 100644 --- a/back/src/chats/chats.service.ts +++ b/back/src/chats/chats.service.ts @@ -3,6 +3,7 @@ import { CreateChatInput } from './dto/create-chat.input'; import { UpdateChatInput } from './dto/update-chat.input'; import { Chat } from './entities/chat.entity'; import { validate } from 'class-validator'; +import { User } from 'src/users/entities/user.entity'; @Injectable() export class ChatsService { @@ -147,4 +148,28 @@ export class ChatsService { : false; return isMatchedPassword; } + + //mute, unmute + async toggleMute(uuid: string, userID: string) { + const chat = await Chat.findOneOrFail({ + where: { + uuid: uuid, + }, + }).catch(() => { + const error = { uuid: `chat with uuid(${uuid}) does not exist` }; + throw new HttpException({ message: 'Input data validation failed', error }, HttpStatus.BAD_REQUEST); + }); + const user = await User.findOneOrFail({ + where: { + userID: userID, + }, + }).catch(() => { + const error = { uuid: `userID(${userID}) does not exist` }; + throw new HttpException({ message: 'Input data validation failed', error }, HttpStatus.BAD_REQUEST); + }); + chat.muteID = chat.muteID.includes(user.userID) + ? chat.muteID.filter((item) => item !== user.userID) + : [...chat.muteID, user.userID]; + return await Chat.save(chat); + } } From 881cd4ece7748848b75ad202087a65ab695fe9ed Mon Sep 17 00:00:00 2001 From: yhshin0 Date: Wed, 28 Jul 2021 18:46:58 +0900 Subject: [PATCH 10/10] =?UTF-8?q?feat:=20mute=20-=20front=EC=97=90?= =?UTF-8?q?=EC=84=9C=20mute=20=EB=8F=99=EC=9E=91=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/src/chat-logs/chat-logs.service.ts | 1 + .../AlarmChatPeople/AlarmChatPeopleQueries.ts | 20 +++++++++++ .../molecules/Alarm/AlarmChatPeople/index.tsx | 33 +++++++++++++++---- front/src/UI/organisms/AlarmChat/index.tsx | 3 +- 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/back/src/chat-logs/chat-logs.service.ts b/back/src/chat-logs/chat-logs.service.ts index 3df84ae7..f06deabd 100644 --- a/back/src/chat-logs/chat-logs.service.ts +++ b/back/src/chat-logs/chat-logs.service.ts @@ -26,6 +26,7 @@ export class ChatLogsService { throw new HttpException({ message: 'Input data validation failed', error }, HttpStatus.BAD_REQUEST); }); //음소거 된 유저가 메세지를 보낼 경우 + //TODO: 채팅방 목록에 없는 유저가 채팅을 보낼 때 exception 발생 if (createChatLogInput.type === 'message' && chat.muteID.includes(user.userID)) { throw new HttpException({ message: 'Input data validation failed' }, HttpStatus.BAD_REQUEST); } diff --git a/front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts b/front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts index d2b173f1..5d45d05a 100644 --- a/front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts +++ b/front/src/UI/molecules/Alarm/AlarmChatPeople/AlarmChatPeopleQueries.ts @@ -8,3 +8,23 @@ export const TOGGLE_BLOCK = gql` } } `; + +export const TOGGLE_MUTE = gql` + mutation toggleMute($uuid: String!, $userID: String!) { + toggleMute(uuid: $uuid, userID: $userID) { + index + name + muteID + } + } +`; + +export const CREATE_CHAT_LOG = gql` + mutation createChatLog($chatLog: CreateChatLogInput!) { + createChatLog(createChatLogInput: $chatLog) { + userID + type + message + } + } +`; diff --git a/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx b/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx index 71ac6c9a..24eb3c5a 100644 --- a/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx +++ b/front/src/UI/molecules/Alarm/AlarmChatPeople/index.tsx @@ -1,10 +1,9 @@ import React, { useRef } from 'react'; +import { useMutation, useReactiveVar } from '@apollo/client'; import { ContextMenu } from 'holee-contextmenu'; -import { currentLoginIDVar } from '../../../../apollo/apolloProvider'; - -import { TOGGLE_BLOCK } from './AlarmChatPeopleQueries'; -import { useMutation } from '@apollo/client'; +import { currentChatVar, currentLoginIDVar } from '../../../../apollo/apolloProvider'; +import { CREATE_CHAT_LOG, TOGGLE_BLOCK, TOGGLE_MUTE } from './AlarmChatPeopleQueries'; const AlarmChatPerson = ({ outerRef, username, ownerID, adminID = [] }) => { return ( @@ -27,7 +26,10 @@ export const AlarmChatPeople = ({ }) => { const outerRef = useRef(null); const [toggleBlock] = useMutation(TOGGLE_BLOCK); + const [toggleMute] = useMutation(TOGGLE_MUTE); + const [createChatLog] = useMutation(CREATE_CHAT_LOG); const loginID = currentLoginIDVar(); + const currentChatUUID = useReactiveVar(currentChatVar); const menuOnClickHandler = async ( e: React.MouseEvent | React.KeyboardEvent, @@ -61,7 +63,24 @@ export const AlarmChatPeople = ({ }); break; case 'mute': - console.log(eventTarget.dataset.option); + await toggleMute({ + variables: { + uuid: currentChatUUID, + userID: username, + }, + }).then((res) => { + const message = res.data.toggleMute.muteID.includes(username) ? 'mute' : 'unmute'; + createChatLog({ + variables: { + chatLog: { + chatUUID: currentChatUUID, + userID: username, + type: 'notification', + message: message, + }, + }, + }); + }); break; case 'forced-out': console.log(eventTarget.dataset.option); @@ -82,7 +101,7 @@ export const AlarmChatPeople = ({
  • 핑퐁게임 요청
  • 관리자 임명(해임)
  • 차단(차단 해제)하기
  • -
  • 음소거
  • +
  • 음소거(음소거 해제)하기
  • 강제퇴장
  • )} @@ -101,7 +120,7 @@ export const AlarmChatPeople = ({
  • 친구추가 요청
  • 핑퐁게임 요청
  • 차단(차단 해제)하기
  • -
  • 음소거
  • +
  • 음소거(음소거 해제)하기
  • 강제퇴장
  • )} diff --git a/front/src/UI/organisms/AlarmChat/index.tsx b/front/src/UI/organisms/AlarmChat/index.tsx index c3964d61..6c7cfa51 100644 --- a/front/src/UI/organisms/AlarmChat/index.tsx +++ b/front/src/UI/organisms/AlarmChat/index.tsx @@ -23,7 +23,7 @@ import { EmptyChat } from '../../molecules/EmptyChat'; export const AlarmChat = () => { const [chatRoomState, setChatRoomState] = useState('chat-room'); const currentChat = useReactiveVar(currentChatVar); - const { loading, error, data, subscribeToMore } = useQuery(GET_CHAT, { + const { loading, error, data, subscribeToMore, refetch } = useQuery(GET_CHAT, { variables: { uuid: currentChat, }, @@ -45,6 +45,7 @@ export const AlarmChat = () => { const eventTarget = e.target as HTMLUListElement; if (eventTarget) { setChatRoomState(eventTarget.dataset.option as string); + refetch(); } };