From 6bf9856c1aadefb4e274e78bd31e0b9cea40eeb0 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Mon, 15 Nov 2021 16:58:10 +0800 Subject: [PATCH 001/100] install esbuild --- ui/package.json | 1 + ui/yarn.lock | 108 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/ui/package.json b/ui/package.json index df15a674b2..197bc5b57d 100644 --- a/ui/package.json +++ b/ui/package.json @@ -23,6 +23,7 @@ "dayjs": "^1.9.6", "echarts": "^4.8.0", "echarts-for-react": "^2.0.16", + "esbuild": "^0.13.13", "eventemitter2": "^6.4.4", "history": "^5.0.0", "i18next": "^19.6.3", diff --git a/ui/yarn.lock b/ui/yarn.lock index 0096c9b3fc..a1ceb37c5d 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -7780,6 +7780,114 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +esbuild-android-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.13.tgz#da07b5fb2daf7d83dcd725f7cf58a6758e6e702a" + integrity sha512-T02aneWWguJrF082jZworjU6vm8f4UQ+IH2K3HREtlqoY9voiJUwHLRL6khRlsNLzVglqgqb7a3HfGx7hAADCQ== + +esbuild-darwin-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.13.tgz#e94e9fd3b4b5455a2e675cd084a19a71b6904bbf" + integrity sha512-wkaiGAsN/09X9kDlkxFfbbIgR78SNjMOfUhoel3CqKBDsi9uZhw7HBNHNxTzYUK8X8LAKFpbODgcRB3b/I8gHA== + +esbuild-darwin-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.13.tgz#8c320eafbb3ba2c70d8062128c5b71503e342471" + integrity sha512-b02/nNKGSV85Gw9pUCI5B48AYjk0vFggDeom0S6QMP/cEDtjSh1WVfoIFNAaLA0MHWfue8KBwoGVsN7rBshs4g== + +esbuild-freebsd-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.13.tgz#ce0ca5b8c4c274cfebc9326f9b316834bd9dd151" + integrity sha512-ALgXYNYDzk9YPVk80A+G4vz2D22Gv4j4y25exDBGgqTcwrVQP8rf/rjwUjHoh9apP76oLbUZTmUmvCMuTI1V9A== + +esbuild-freebsd-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.13.tgz#463da17562fdcfdf03b3b94b28497d8d8dcc8f62" + integrity sha512-uFvkCpsZ1yqWQuonw5T1WZ4j59xP/PCvtu6I4pbLejhNo4nwjW6YalqnBvBSORq5/Ifo9S/wsIlVHzkzEwdtlw== + +esbuild-linux-32@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.13.tgz#2035793160da2c4be48a929e5bafb14a31789acc" + integrity sha512-yxR9BBwEPs9acVEwTrEE2JJNHYVuPQC9YGjRfbNqtyfK/vVBQYuw8JaeRFAvFs3pVJdQD0C2BNP4q9d62SCP4w== + +esbuild-linux-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.13.tgz#fbe4802a8168c6d339d0749f977b099449b56f22" + integrity sha512-kzhjlrlJ+6ESRB/n12WTGll94+y+HFeyoWsOrLo/Si0s0f+Vip4b8vlnG0GSiS6JTsWYAtGHReGczFOaETlKIw== + +esbuild-linux-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.13.tgz#f08d98df28d436ed4aad1529615822bb74d4d978" + integrity sha512-KMrEfnVbmmJxT3vfTnPv/AiXpBFbbyExH13BsUGy1HZRPFMi5Gev5gk8kJIZCQSRfNR17aqq8sO5Crm2KpZkng== + +esbuild-linux-arm@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.13.tgz#6f968c3a98b64e30c80b212384192d0cfcb32e7f" + integrity sha512-hXub4pcEds+U1TfvLp1maJ+GHRw7oizvzbGRdUvVDwtITtjq8qpHV5Q5hWNNn6Q+b3b2UxF03JcgnpzCw96nUQ== + +esbuild-linux-mips64le@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.13.tgz#690c78dc4725efe7d06a1431287966fbf7774c7f" + integrity sha512-cJT9O1LYljqnnqlHaS0hdG73t7hHzF3zcN0BPsjvBq+5Ad47VJun+/IG4inPhk8ta0aEDK6LdP+F9299xa483w== + +esbuild-linux-ppc64le@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.13.tgz#7ec9048502de46754567e734aae7aebd2df6df02" + integrity sha512-+rghW8st6/7O6QJqAjVK3eXzKkZqYAw6LgHv7yTMiJ6ASnNvghSeOcIvXFep3W2oaJc35SgSPf21Ugh0o777qQ== + +esbuild-netbsd-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.13.tgz#439bdaefffa03a8fa84324f5d83d636f548a2de3" + integrity sha512-A/B7rwmzPdzF8c3mht5TukbnNwY5qMJqes09ou0RSzA5/jm7Jwl/8z853ofujTFOLhkNHUf002EAgokzSgEMpQ== + +esbuild-openbsd-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.13.tgz#c9958e5291a00a3090c1ec482d6bcdf2d5b5d107" + integrity sha512-szwtuRA4rXKT3BbwoGpsff6G7nGxdKgUbW9LQo6nm0TVCCjDNDC/LXxT994duIW8Tyq04xZzzZSW7x7ttDiw1w== + +esbuild-sunos-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.13.tgz#ac9ead8287379cd2f6d00bd38c5997fda9c1179e" + integrity sha512-ihyds9O48tVOYF48iaHYUK/boU5zRaLOXFS+OOL3ceD39AyHo46HVmsJLc7A2ez0AxNZCxuhu+P9OxfPfycTYQ== + +esbuild-windows-32@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.13.tgz#a3820fc86631ca594cb7b348514b5cc3f058cfd6" + integrity sha512-h2RTYwpG4ldGVJlbmORObmilzL8EECy8BFiF8trWE1ZPHLpECE9//J3Bi+W3eDUuv/TqUbiNpGrq4t/odbayUw== + +esbuild-windows-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.13.tgz#1da748441f228d75dff474ddb7d584b81887323c" + integrity sha512-oMrgjP4CjONvDHe7IZXHrMk3wX5Lof/IwFEIbwbhgbXGBaN2dke9PkViTiXC3zGJSGpMvATXVplEhlInJ0drHA== + +esbuild-windows-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.13.tgz#06dfa52a6b178a5932a9a6e2fdb240c09e6da30c" + integrity sha512-6fsDfTuTvltYB5k+QPah/x7LrI2+OLAJLE3bWLDiZI6E8wXMQU+wLqtEO/U/RvJgVY1loPs5eMpUBpVajczh1A== + +esbuild@^0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.13.tgz#0b5399c20f219f663c8c1048436fb0f59ab17a41" + integrity sha512-Z17A/R6D0b4s3MousytQ/5i7mTCbaF+Ua/yPfoe71vdTv4KBvVAvQ/6ytMngM2DwGJosl8WxaD75NOQl2QF26Q== + optionalDependencies: + esbuild-android-arm64 "0.13.13" + esbuild-darwin-64 "0.13.13" + esbuild-darwin-arm64 "0.13.13" + esbuild-freebsd-64 "0.13.13" + esbuild-freebsd-arm64 "0.13.13" + esbuild-linux-32 "0.13.13" + esbuild-linux-64 "0.13.13" + esbuild-linux-arm "0.13.13" + esbuild-linux-arm64 "0.13.13" + esbuild-linux-mips64le "0.13.13" + esbuild-linux-ppc64le "0.13.13" + esbuild-netbsd-64 "0.13.13" + esbuild-openbsd-64 "0.13.13" + esbuild-sunos-64 "0.13.13" + esbuild-windows-32 "0.13.13" + esbuild-windows-64 "0.13.13" + esbuild-windows-arm64 "0.13.13" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" From c4f049352cb5bfa77ce01b974fa4b61d5891db02 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Mon, 15 Nov 2021 16:59:54 +0800 Subject: [PATCH 002/100] install live-server and chokidar --- ui/package.json | 3 + ui/yarn.lock | 223 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 218 insertions(+), 8 deletions(-) diff --git a/ui/package.json b/ui/package.json index 197bc5b57d..806068af55 100644 --- a/ui/package.json +++ b/ui/package.json @@ -86,6 +86,7 @@ "@storybook/preset-create-react-app": "^3.1.4", "@storybook/react": "^6.0.0-rc.3", "@types/d3": "^5.7.2", + "@types/live-server": "^1.2.1", "@types/lodash": "^4.14.158", "@types/node": "^14.0.27", "@types/react": "^16.9.43", @@ -95,6 +96,7 @@ "babel-plugin-dynamic-import-node": "^2.3.0", "babel-plugin-import": "^1.13.0", "browserslist-useragent-regexp": "^2.1.0", + "chokidar": "^3.5.2", "customize-cra": "^1.0.0", "esm": "^3.2.25", "gulp": "^4.0.2", @@ -104,6 +106,7 @@ "husky": "^4.2.5", "less": "^3.12.2", "less-loader": "^5.0.0", + "live-server": "^1.2.1", "prettier": "2.4.1", "pretty-quick": "^2.0.1", "react-app-rewire-alias": "^0.1.6", diff --git a/ui/yarn.lock b/ui/yarn.lock index a1ceb37c5d..0e3adf3b7b 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -3512,6 +3512,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/live-server@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/live-server/-/live-server-1.2.1.tgz#4d6588e1b888b415ed5fe8480224dcd225bc9eba" + integrity sha512-Yind497JdcZT8L9FF7u73nq44KmamiDitsZJEwrAi/pgBhFHThNvtR+2Z/YGNSMjyUoDBFdvhVSQmod06yd1Ng== + "@types/lodash@^4.14.158": version "4.14.158" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.158.tgz#b38ea8b6fe799acd076d7a8d7ab71c26ef77f785" @@ -4469,6 +4474,26 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apache-crypt@^1.1.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/apache-crypt/-/apache-crypt-1.2.5.tgz#4eb6b6dbaed2041ce5bc2d802f4421f5fdadc25e" + integrity sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg== + dependencies: + unix-crypt-td-js "^1.1.4" + +apache-md5@^1.0.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.7.tgz#dcef1802700cc231d60c5e08fd088f2f9b36375a" + integrity sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw== + app-root-dir@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" @@ -5293,6 +5318,13 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + batch-processor@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" @@ -5310,6 +5342,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bcryptjs@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" + integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= + better-opn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.0.0.tgz#c70d198e51164bdc220306a28a885d9ac7a14c44" @@ -5870,7 +5907,7 @@ check-types@^8.0.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== -chokidar@^2.0.0, chokidar@^2.1.8: +chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -5904,6 +5941,21 @@ chokidar@^3.3.0, chokidar@^3.4.0: optionalDependencies: fsevents "~2.1.2" +chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.1, chownr@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -6169,7 +6221,7 @@ colorette@^1.2.0: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== -colors@^1.1.2: +colors@^1.1.2, colors@latest: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -6278,6 +6330,16 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +connect@^3.6.6: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + consola@^2.10.0: version "2.12.1" resolved "https://registry.yarnpkg.com/consola/-/consola-2.12.1.tgz#88e9311a02cb88a7f6f9488239dd30b6ba99cbb0" @@ -6402,6 +6464,14 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cors@latest: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -7236,6 +7306,11 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -7484,6 +7559,11 @@ duplexer@^0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= +duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -8143,6 +8223,19 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-stream@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + eventemitter2@^6.4.4: version "6.4.4" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" @@ -8418,6 +8511,13 @@ fault@^1.0.0, fault@^1.0.2: dependencies: format "^0.2.0" +faye-websocket@0.11.x: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -8535,7 +8635,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: +finalhandler@1.1.2, finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== @@ -8789,6 +8889,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -8885,6 +8990,11 @@ fsevents@~2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -9004,6 +9114,13 @@ glob-parent@^5.0.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-promise@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" @@ -9580,6 +9697,16 @@ htmlparser2@^4.1.0: domutils "^2.0.0" entities "^2.0.0" +http-auth@3.1.x: + version "3.1.3" + resolved "https://registry.yarnpkg.com/http-auth/-/http-auth-3.1.3.tgz#945cfadd66521eaf8f7c84913d377d7b15f24e31" + integrity sha1-lFz63WZSHq+PfISRPTd9exXyTjE= + dependencies: + apache-crypt "^1.1.2" + apache-md5 "^1.0.6" + bcryptjs "^2.3.0" + uuid "^3.0.0" + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -11320,6 +11447,25 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +live-server@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/live-server/-/live-server-1.2.1.tgz#670630dd409d22fe9c513ab1c1894686c757153e" + integrity sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw== + dependencies: + chokidar "^2.0.4" + colors latest + connect "^3.6.6" + cors latest + event-stream "3.3.4" + faye-websocket "0.11.x" + http-auth "3.1.x" + morgan "^1.9.1" + object-assign latest + opn latest + proxy-middleware latest + send latest + serve-index "^1.9.1" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -11624,6 +11770,11 @@ map-or-similar@^1.5.0: resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" integrity sha1-beJlMXSt+12e3DPGnT6Sobdvrwg= +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -11974,6 +12125,17 @@ moment@^2.24.0, moment@^2.25.3: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +morgan@^1.9.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + dependencies: + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -12309,7 +12471,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@4.x, object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1, object-assign@latest: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -12523,6 +12685,13 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" +opn@latest: + version "6.0.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" + integrity sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ== + dependencies: + is-wsl "^1.1.0" + optimize-css-assets-webpack-plugin@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" @@ -12932,6 +13101,13 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -13926,6 +14102,11 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" +proxy-middleware@latest: + version "0.15.0" + resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" + integrity sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY= + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -15006,6 +15187,13 @@ readdirp@~3.4.0: dependencies: picomatch "^2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -15663,7 +15851,7 @@ semver@^7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -send@0.17.1: +send@0.17.1, send@latest: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== @@ -16082,6 +16270,13 @@ split.js@^1.6.0: resolved "https://registry.yarnpkg.com/split.js/-/split.js-1.6.2.tgz#b8c63aeef2b15d84a003ead09e7def6ad166bb40" integrity sha512-72C7zcQePzlmWqPOKkB2Ro0sUmnWSx+qEWXjLJKk6Qp4jAkFRz1hJgJb+ay6ZQyz/Aw9r8N/PZiCEKbPVpFoDQ== +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -16220,6 +16415,13 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -16754,7 +16956,7 @@ through2@^3.0.1: dependencies: readable-stream "2 || 3" -through@^2.3.6: +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -17185,6 +17387,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +unix-crypt-td-js@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" + integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -17333,7 +17540,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -17375,7 +17582,7 @@ value-or-function@^3.0.0: resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= -vary@~1.1.2: +vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= From e38de030be8086a5ec7311082b712846b85ec6d3 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 10:35:43 +0800 Subject: [PATCH 003/100] init ui-esbuild folder - init by `npx esbuild-create-react-app ui-esbuild` --- ui-esbuild/.editorconfig | 9 + ui-esbuild/.eslintrc.js | 45 + ui-esbuild/.gitignore | 1 + ui-esbuild/.husky/.gitignore | 0 ui-esbuild/.husky/pre-commit | 4 + ui-esbuild/.prettierrc | 12 + ui-esbuild/README.md | 17 + ui-esbuild/builder.js | 46 + ui-esbuild/package.json | 46 + ui-esbuild/public/favicon.ico | Bin 0 -> 3870 bytes ui-esbuild/public/index.css | 2 + ui-esbuild/public/index.css.map | 7 + ui-esbuild/public/index.html | 26 + ui-esbuild/public/index.js | 39 + ui-esbuild/public/index.js.map | 7 + ui-esbuild/public/logo192.png | Bin 0 -> 5347 bytes ui-esbuild/public/logo512.png | Bin 0 -> 9664 bytes ui-esbuild/public/manifest.json | 25 + ui-esbuild/public/robots.txt | 3 + ui-esbuild/src/App.tsx | 6 + ui-esbuild/src/index.tsx | 5 + ui-esbuild/src/style.css | 11 + ui-esbuild/tsconfig.json | 20 + ui-esbuild/yarn.lock | 3397 +++++++++++++++++++++++++++++++ 24 files changed, 3728 insertions(+) create mode 100644 ui-esbuild/.editorconfig create mode 100644 ui-esbuild/.eslintrc.js create mode 100644 ui-esbuild/.gitignore create mode 100644 ui-esbuild/.husky/.gitignore create mode 100644 ui-esbuild/.husky/pre-commit create mode 100644 ui-esbuild/.prettierrc create mode 100644 ui-esbuild/README.md create mode 100644 ui-esbuild/builder.js create mode 100644 ui-esbuild/package.json create mode 100644 ui-esbuild/public/favicon.ico create mode 100644 ui-esbuild/public/index.css create mode 100644 ui-esbuild/public/index.css.map create mode 100644 ui-esbuild/public/index.html create mode 100644 ui-esbuild/public/index.js create mode 100644 ui-esbuild/public/index.js.map create mode 100644 ui-esbuild/public/logo192.png create mode 100644 ui-esbuild/public/logo512.png create mode 100644 ui-esbuild/public/manifest.json create mode 100644 ui-esbuild/public/robots.txt create mode 100644 ui-esbuild/src/App.tsx create mode 100644 ui-esbuild/src/index.tsx create mode 100644 ui-esbuild/src/style.css create mode 100644 ui-esbuild/tsconfig.json create mode 100644 ui-esbuild/yarn.lock diff --git a/ui-esbuild/.editorconfig b/ui-esbuild/.editorconfig new file mode 100644 index 0000000000..53b061a851 --- /dev/null +++ b/ui-esbuild/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/ui-esbuild/.eslintrc.js b/ui-esbuild/.eslintrc.js new file mode 100644 index 0000000000..d115bca924 --- /dev/null +++ b/ui-esbuild/.eslintrc.js @@ -0,0 +1,45 @@ +module.exports = { + env: { + browser: true, + es2021: true + }, + extends: ['plugin:react/recommended', 'plugin:react-hooks/recommended', 'airbnb', 'prettier'], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 12, + sourceType: 'module' + }, + plugins: ['react', '@typescript-eslint'], + rules: { + 'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }], + 'import/extensions': [ + 'error', + 'always', + { + js: 'never', + jsx: 'never', + ts: 'never', + tsx: 'never' + } + ], + 'no-console': 0, + 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], + 'no-use-before-define': 'off', + 'no-unused-vars': 'warn', + 'import/prefer-default-export': 1, + 'no-shadow': 1, + 'prefer-const': 1, + 'prefer-spread': 1, + 'no-unused-expressions': ['error', { allowShortCircuit: true, allowTernary: true }] + }, + settings: { + 'import/resolver': { + node: { + extensions: ['.js', '.jsx', '.ts', '.tsx'] + } + } + } +} diff --git a/ui-esbuild/.gitignore b/ui-esbuild/.gitignore new file mode 100644 index 0000000000..3c3629e647 --- /dev/null +++ b/ui-esbuild/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/ui-esbuild/.husky/.gitignore b/ui-esbuild/.husky/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ui-esbuild/.husky/pre-commit b/ui-esbuild/.husky/pre-commit new file mode 100644 index 0000000000..c70c608e78 --- /dev/null +++ b/ui-esbuild/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install lint-staged \ No newline at end of file diff --git a/ui-esbuild/.prettierrc b/ui-esbuild/.prettierrc new file mode 100644 index 0000000000..ae9e348b49 --- /dev/null +++ b/ui-esbuild/.prettierrc @@ -0,0 +1,12 @@ +{ + "singleQuote": true, + "jsxSingleQuote": true, + "semi": false, + "tabWidth": 2, + "printWidth": 120, + "bracketSpacing": true, + "jsxBracketSameLine": false, + "arrowParens": "always", + "trailingComma": "none", + "endOfLine": "auto" +} diff --git a/ui-esbuild/README.md b/ui-esbuild/README.md new file mode 100644 index 0000000000..135ebd4732 --- /dev/null +++ b/ui-esbuild/README.md @@ -0,0 +1,17 @@ +# esbuild React Typescript Template + +> This is a Typecript template for [esbuild create react app](https://github.com/awran5/esbuild-create-react-app) project. + +## What is inside? + +- [TypeScript](https://www.typescriptlang.org/) +- [esbuild](https://esbuild.github.io/) +- [Eslint](https://eslint.org/) +- [Prettier](https://prettier.io/) +- [Husky](https://github.com/typicode/husky) +- [lint-staged](https://github.com/okonet/lint-staged) +- [live-server](https://github.com/tapio/live-server) + +### License + +MIT © [awran5](https://github.com/awran5/) diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js new file mode 100644 index 0000000000..647807c2b6 --- /dev/null +++ b/ui-esbuild/builder.js @@ -0,0 +1,46 @@ +const { start } = require('live-server') +const { watch } = require('chokidar') +const { build } = require('esbuild') + +/** + * Live Server Params + * @link https://www.npmjs.com/package/live-server#usage-from-node + */ +const serverParams = { + port: 8181, // Set the server port. Defaults to 8080. + root: 'public', // Set root directory that's being served. Defaults to cwd. + open: true // When false, it won't load your browser by default. + // host: "0.0.0.0", // Set the address to bind to. Defaults to 0.0.0.0 or process.env.IP. + // ignore: 'scss,my/templates', // comma-separated string for paths to ignore + // file: "index.html", // When set, serve this file (server root relative) for every 404 (useful for single-page applications) + // wait: 1000, // Waits for all changes, before reloading. Defaults to 0 sec. + // mount: [['/components', './node_modules']], // Mount a directory to a route. + // logLevel: 2, // 0 = errors only, 1 = some, 2 = lots + // middleware: [function(req, res, next) { next(); }] // Takes an array of Connect-compatible middleware that are injected into the server middleware stack +} + +/** + * ESBuild Params + * @link https://esbuild.github.io/api/#build-api + */ +const buildParams = { + color: true, + entryPoints: ['src/index.tsx'], + loader: { '.ts': 'tsx' }, + outdir: 'public', + minify: true, + format: 'cjs', + bundle: true, + sourcemap: true, + logLevel: 'error', + incremental: true +} +;(async () => { + const builder = await build(buildParams) + + watch('src/**/*.{ts,tsx}').on('all', () => { + builder.rebuild() + }) + + start(serverParams) +})() diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json new file mode 100644 index 0000000000..d9f58f31af --- /dev/null +++ b/ui-esbuild/package.json @@ -0,0 +1,46 @@ +{ + "name": "tidb-dashboard-ui", + "version": "0.1.0", + "private": true, + "scripts": { + "pre-commit": "lint-staged", + "lint": "eslint \"src/**/*.{ts,tsx}\" --max-warnings=0", + "start": "node builder.js", + "build": "esbuild src/index.tsx --minify --format=cjs --outdir=public --sourcemap --bundle" + }, + "dependencies": { + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@types/live-server": "^1.2.1", + "@types/node": "^16.9.1", + "@types/react": "^17.0.20", + "@types/react-dom": "^17.0.9", + "@typescript-eslint/eslint-plugin": "^4.31.0", + "@typescript-eslint/parser": "^4.31.0", + "chokidar": "^3.5.2", + "esbuild": "^0.12.26", + "eslint": "^7.32.0", + "eslint-config-airbnb": "^18.2.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.24.2", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-react": "^7.25.1", + "eslint-plugin-react-hooks": "^4.2.0", + "husky": "^7.0.2", + "lint-staged": "^11.1.2", + "live-server": "^1.2.1", + "prettier": "^2.4.0", + "typescript": "^4.4.3" + }, + "lint-staged": { + "*.+(js|jsx)": "eslint --fix", + "*.+(json|css|md)": "prettier --write" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + } +} diff --git a/ui-esbuild/public/favicon.ico b/ui-esbuild/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/ui-esbuild/public/index.css b/ui-esbuild/public/index.css new file mode 100644 index 0000000000..d1cf7328da --- /dev/null +++ b/ui-esbuild/public/index.css @@ -0,0 +1,2 @@ +body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace} +/*# sourceMappingURL=index.css.map */ diff --git a/ui-esbuild/public/index.css.map b/ui-esbuild/public/index.css.map new file mode 100644 index 0000000000..55479eef6d --- /dev/null +++ b/ui-esbuild/public/index.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../src/style.css"], + "sourcesContent": ["body {\r\n margin: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\r\n 'Droid Sans', 'Helvetica Neue', sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\ncode {\r\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\r\n}\r\n"], + "mappings": "AAAA,cAEE,oJAEA,mCACA,kCAGF,KACE", + "names": [] +} diff --git a/ui-esbuild/public/index.html b/ui-esbuild/public/index.html new file mode 100644 index 0000000000..7e299f7135 --- /dev/null +++ b/ui-esbuild/public/index.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + React ESBuild + + + + +
+ + + + \ No newline at end of file diff --git a/ui-esbuild/public/index.js b/ui-esbuild/public/index.js new file mode 100644 index 0000000000..795d5b62e1 --- /dev/null +++ b/ui-esbuild/public/index.js @@ -0,0 +1,39 @@ +var Xa=Object.create;var il=Object.defineProperty;var Ka=Object.getOwnPropertyDescriptor;var Ga=Object.getOwnPropertyNames;var Za=Object.getPrototypeOf,Ja=Object.prototype.hasOwnProperty;var qa=e=>il(e,"__esModule",{value:!0});var Ze=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ba=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ga(t))!Ja.call(e,r)&&r!=="default"&&il(e,r,{get:()=>t[r],enumerable:!(n=Ka(t,r))||n.enumerable});return e},ul=e=>ba(qa(il(e!=null?Xa(Za(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var sl=Ze((ud,Ti)=>{"use strict";var Ni=Object.getOwnPropertySymbols,ef=Object.prototype.hasOwnProperty,tf=Object.prototype.propertyIsEnumerable;function nf(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function rf(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(o){return t[o]});if(r.join("")!=="0123456789")return!1;var l={};return"abcdefghijklmnopqrst".split("").forEach(function(o){l[o]=o}),Object.keys(Object.assign({},l)).join("")==="abcdefghijklmnopqrst"}catch(o){return!1}}Ti.exports=rf()?Object.assign:function(e,t){for(var n,r=nf(e),l,o=1;o{"use strict";var al=sl(),dt=60103,Li=60106;L.Fragment=60107;L.StrictMode=60108;L.Profiler=60114;var Oi=60109,Mi=60110,zi=60112;L.Suspense=60113;var Ri=60115,ji=60116;typeof Symbol=="function"&&Symbol.for&&(re=Symbol.for,dt=re("react.element"),Li=re("react.portal"),L.Fragment=re("react.fragment"),L.StrictMode=re("react.strict_mode"),L.Profiler=re("react.profiler"),Oi=re("react.provider"),Mi=re("react.context"),zi=re("react.forward_ref"),L.Suspense=re("react.suspense"),Ri=re("react.memo"),ji=re("react.lazy"));var re,Ii=typeof Symbol=="function"&&Symbol.iterator;function lf(e){return e===null||typeof e!="object"?null:(e=Ii&&e[Ii]||e["@@iterator"],typeof e=="function"?e:null)}function Qt(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n{"use strict";Qi.exports=Wi()});var Ji=Ze(O=>{"use strict";var mt,Yt,Kn,hl;typeof performance=="object"&&typeof performance.now=="function"?(Yi=performance,O.unstable_now=function(){return Yi.now()}):(vl=Date,Xi=vl.now(),O.unstable_now=function(){return vl.now()-Xi});var Yi,vl,Xi;typeof window=="undefined"||typeof MessageChannel!="function"?(ht=null,yl=null,gl=function(){if(ht!==null)try{var e=O.unstable_now();ht(!0,e),ht=null}catch(t){throw setTimeout(gl,0),t}},mt=function(e){ht!==null?setTimeout(mt,0,e):(ht=e,setTimeout(gl,0))},Yt=function(e,t){yl=setTimeout(e,t)},Kn=function(){clearTimeout(yl)},O.unstable_shouldYield=function(){return!1},hl=O.unstable_forceFrameRate=function(){}):(Ki=window.setTimeout,Gi=window.clearTimeout,typeof console!="undefined"&&(Zi=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof Zi!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),Xt=!1,Kt=null,Gn=-1,wl=5,kl=0,O.unstable_shouldYield=function(){return O.unstable_now()>=kl},hl=function(){},O.unstable_forceFrameRate=function(e){0>e||125>>1,l=e[r];if(l!==void 0&&0qn(i,n))s!==void 0&&0>qn(s,i)?(e[r]=s,e[u]=n,r=u):(e[r]=i,e[o]=n,r=o);else if(s!==void 0&&0>qn(s,n))e[r]=s,e[u]=n,r=u;else break e}}return t}return null}function qn(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}var me=[],Le=[],ff=1,le=null,W=3,bn=!1,Je=!1,Gt=!1;function _l(e){for(var t=ce(Le);t!==null;){if(t.callback===null)Jn(Le);else if(t.startTime<=e)Jn(Le),t.sortIndex=t.expirationTime,El(me,t);else break;t=ce(Le)}}function xl(e){if(Gt=!1,_l(e),!Je)if(ce(me)!==null)Je=!0,mt(Cl);else{var t=ce(Le);t!==null&&Yt(xl,t.startTime-e)}}function Cl(e,t){Je=!1,Gt&&(Gt=!1,Kn()),bn=!0;var n=W;try{for(_l(t),le=ce(me);le!==null&&(!(le.expirationTime>t)||e&&!O.unstable_shouldYield());){var r=le.callback;if(typeof r=="function"){le.callback=null,W=le.priorityLevel;var l=r(le.expirationTime<=t);t=O.unstable_now(),typeof l=="function"?le.callback=l:le===ce(me)&&Jn(me),_l(t)}else Jn(me);le=ce(me)}if(le!==null)var o=!0;else{var i=ce(Le);i!==null&&Yt(xl,i.startTime-t),o=!1}return o}finally{le=null,W=n,bn=!1}}var cf=hl;O.unstable_IdlePriority=5;O.unstable_ImmediatePriority=1;O.unstable_LowPriority=4;O.unstable_NormalPriority=3;O.unstable_Profiling=null;O.unstable_UserBlockingPriority=2;O.unstable_cancelCallback=function(e){e.callback=null};O.unstable_continueExecution=function(){Je||bn||(Je=!0,mt(Cl))};O.unstable_getCurrentPriorityLevel=function(){return W};O.unstable_getFirstCallbackNode=function(){return ce(me)};O.unstable_next=function(e){switch(W){case 1:case 2:case 3:var t=3;break;default:t=W}var n=W;W=t;try{return e()}finally{W=n}};O.unstable_pauseExecution=function(){};O.unstable_requestPaint=cf;O.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=W;W=e;try{return t()}finally{W=n}};O.unstable_scheduleCallback=function(e,t,n){var r=O.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0r?(e.sortIndex=n,El(Le,e),ce(me)===null&&e===ce(Le)&&(Gt?Kn():Gt=!0,Yt(xl,n-r))):(e.sortIndex=l,El(me,e),Je||bn||(Je=!0,mt(Cl))),e};O.unstable_wrapCallback=function(e){var t=W;return function(){var n=W;W=t;try{return e.apply(this,arguments)}finally{W=n}}}});var bi=Ze((cd,qi)=>{"use strict";qi.exports=Ji()});var Va=Ze(fe=>{"use strict";var er=Xn(),j=sl(),B=bi();function v(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nt}return!1}function G(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var A={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){A[e]=new G(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];A[t]=new G(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){A[e]=new G(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){A[e]=new G(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){A[e]=new G(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){A[e]=new G(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){A[e]=new G(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){A[e]=new G(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){A[e]=new G(e,5,!1,e.toLowerCase(),null,!1,!1)});var Pl=/[\-:]([a-z])/g;function Nl(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Pl,Nl);A[t]=new G(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Pl,Nl);A[t]=new G(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Pl,Nl);A[t]=new G(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){A[e]=new G(e,1,!1,e.toLowerCase(),null,!1,!1)});A.xlinkHref=new G("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){A[e]=new G(e,1,!1,e.toLowerCase(),null,!0,!0)});function Tl(e,t,n,r){var l=A.hasOwnProperty(t)?A[t]:null,o=l!==null?l.type===0:r?!1:!(!(2u||l[i]!==o[u])return` +`+l[i].replace(" at new "," at ");while(1<=i&&0<=u);break}}}finally{Ul=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?tn(e):""}function vf(e){switch(e.tag){case 5:return tn(e.type);case 16:return tn("Lazy");case 13:return tn("Suspense");case 19:return tn("SuspenseList");case 0:case 2:case 15:return e=lr(e.type,!1),e;case 11:return e=lr(e.type.render,!1),e;case 22:return e=lr(e.type._render,!1),e;case 1:return e=lr(e.type,!0),e;default:return""}}function yt(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Oe:return"Fragment";case et:return"Portal";case qt:return"Profiler";case Ll:return"StrictMode";case bt:return"Suspense";case nr:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ml:return(e.displayName||"Context")+".Consumer";case Ol:return(e._context.displayName||"Context")+".Provider";case tr:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case rr:return yt(e.type);case Rl:return yt(e._render);case zl:t=e._payload,e=e._init;try{return yt(e(t))}catch(n){}}return null}function Me(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function iu(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yf(e){var t=iu(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n!="undefined"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function or(e){e._valueTracker||(e._valueTracker=yf(e))}function uu(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=iu(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ir(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Vl(e,t){var n=t.checked;return j({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function su(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Me(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function au(e,t){t=t.checked,t!=null&&Tl(e,"checked",t,!1)}function Bl(e,t){au(e,t);var n=Me(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Al(e,t.type,n):t.hasOwnProperty("defaultValue")&&Al(e,t.type,Me(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function fu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Al(e,t,n){(t!=="number"||ir(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function gf(e){var t="";return er.Children.forEach(e,function(n){n!=null&&(t+=n)}),t}function Hl(e,t){return e=j({children:void 0},t),(t=gf(t.children))&&(e.children=t),e}function gt(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l=n.length))throw Error(v(93));n=n[0]}t=n}t==null&&(t=""),n=t}e._wrapperState={initialValue:Me(n)}}function du(e,t){var n=Me(t.value),r=Me(t.defaultValue);n!=null&&(n=""+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),r!=null&&(e.defaultValue=""+r)}function pu(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}var Wl={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function mu(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ql(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?mu(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var ur,hu=function(e){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(t,n,r,l){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,l)})}:e}(function(e,t){if(e.namespaceURI!==Wl.svg||"innerHTML"in e)e.innerHTML=t;else{for(ur=ur||document.createElement("div"),ur.innerHTML=""+t.valueOf().toString()+"",t=ur.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function nn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var rn={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},wf=["Webkit","ms","Moz","O"];Object.keys(rn).forEach(function(e){wf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),rn[t]=rn[e]})});function vu(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||rn.hasOwnProperty(e)&&rn[e]?(""+t).trim():t+"px"}function yu(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=vu(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var kf=j({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Yl(e,t){if(t){if(kf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(v(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(v(60));if(!(typeof t.dangerouslySetInnerHTML=="object"&&"__html"in t.dangerouslySetInnerHTML))throw Error(v(61))}if(t.style!=null&&typeof t.style!="object")throw Error(v(62))}}function Xl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Kl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Gl=null,wt=null,kt=null;function gu(e){if(e=En(e)){if(typeof Gl!="function")throw Error(v(280));var t=e.stateNode;t&&(t=Tr(t),Gl(e.stateNode,e.type,t))}}function wu(e){wt?kt?kt.push(e):kt=[e]:wt=e}function ku(){if(wt){var e=wt,t=kt;if(kt=wt=null,gu(e),t)for(e=0;er?0:1<n;n++)t.push(e);return t}function mr(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,e=e.eventTimes,t=31-Ie(t),e[t]=n}var Ie=Math.clz32?Math.clz32:Df,jf=Math.log,If=Math.LN2;function Df(e){return e===0?32:31-(jf(e)/If|0)|0}var Ff=B.unstable_UserBlockingPriority,Uf=B.unstable_runWithPriority,hr=!0;function Vf(e,t,n,r){tt||Jl();var l=ao,o=tt;tt=!0;try{Su(l,e,t,n,r)}finally{(tt=o)||bl()}}function Bf(e,t,n,r){Uf(Ff,ao.bind(null,e,t,n,r))}function ao(e,t,n,r){if(hr){var l;if((l=(t&4)==0)&&0=hn),Xu=String.fromCharCode(32),Ku=!1;function Gu(e,t){switch(e){case"keyup":return ac.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Zu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Pt=!1;function cc(e,t){switch(e){case"compositionend":return Zu(t);case"keypress":return t.which!==32?null:(Ku=!0,Xu);case"textInput":return e=t.data,e===Xu&&Ku?null:e;default:return null}}function dc(e,t){if(Pt)return e==="compositionend"||!go&&Gu(e,t)?(e=Au(),vr=co=De=null,Pt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ns(n)}}function ls(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ls(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function os(){for(var e=window,t=ir();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch(r){n=!1}if(n)e=t.contentWindow;else break;t=ir(e.document)}return t}function ko(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Ec=Ee&&"documentMode"in document&&11>=document.documentMode,Nt=null,So=null,wn=null,Eo=!1;function is(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Eo||Nt==null||Nt!==ir(r)||(r=Nt,"selectionStart"in r&&ko(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),wn&&gn(wn,r)||(wn=r,r=xr(So,"onSelect"),0zt||(e.current=Lo[zt],Lo[zt]=null,zt--)}function I(e,t){zt++,Lo[zt]=e.current,e.current=t}var Ve={},Q=Ue(Ve),J=Ue(!1),lt=Ve;function Rt(e,t){var n=e.type.contextTypes;if(!n)return Ve;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function q(e){return e=e.childContextTypes,e!=null}function Lr(){R(J),R(Q)}function Ss(e,t,n){if(Q.current!==Ve)throw Error(v(168));I(Q,t),I(J,n)}function Es(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in e))throw Error(v(108,yt(t)||"Unknown",l));return j({},n,r)}function Or(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ve,lt=Q.current,I(Q,e),I(J,J.current),!0}function _s(e,t,n){var r=e.stateNode;if(!r)throw Error(v(169));n?(e=Es(e,t,lt),r.__reactInternalMemoizedMergedChildContext=e,R(J),R(Q),I(Q,e)):R(J),I(J,n)}var Oo=null,ot=null,Cc=B.unstable_runWithPriority,Mo=B.unstable_scheduleCallback,zo=B.unstable_cancelCallback,Pc=B.unstable_shouldYield,xs=B.unstable_requestPaint,Ro=B.unstable_now,Nc=B.unstable_getCurrentPriorityLevel,Mr=B.unstable_ImmediatePriority,Cs=B.unstable_UserBlockingPriority,Ps=B.unstable_NormalPriority,Ns=B.unstable_LowPriority,Ts=B.unstable_IdlePriority,jo={},Tc=xs!==void 0?xs:function(){},_e=null,zr=null,Io=!1,Ls=Ro(),Y=1e4>Ls?Ro:function(){return Ro()-Ls};function jt(){switch(Nc()){case Mr:return 99;case Cs:return 98;case Ps:return 97;case Ns:return 96;case Ts:return 95;default:throw Error(v(332))}}function Os(e){switch(e){case 99:return Mr;case 98:return Cs;case 97:return Ps;case 96:return Ns;case 95:return Ts;default:throw Error(v(332))}}function it(e,t){return e=Os(e),Cc(e,t)}function _n(e,t,n){return e=Os(e),Mo(e,t,n)}function ve(){if(zr!==null){var e=zr;zr=null,zo(e)}Ms()}function Ms(){if(!Io&&_e!==null){Io=!0;var e=0;try{var t=_e;it(99,function(){for(;eP?(T=w,w=null):T=w.sibling;var N=h(c,w,f[P],p);if(N===null){w===null&&(w=T);break}e&&w&&N.alternate===null&&t(c,w),a=o(N,a,P),C===null?m=N:C.sibling=N,C=N,w=T}if(P===f.length)return n(c,w),m;if(w===null){for(;PP?(T=w,w=null):T=w.sibling;var Te=h(c,w,N.value,p);if(Te===null){w===null&&(w=T);break}e&&w&&Te.alternate===null&&t(c,w),a=o(Te,a,P),C===null?m=Te:C.sibling=Te,C=Te,w=T}if(N.done)return n(c,w),m;if(w===null){for(;!N.done;P++,N=f.next())N=x(c,N.value,p),N!==null&&(a=o(N,a,P),C===null?m=N:C.sibling=N,C=N);return m}for(w=r(c,w);!N.done;P++,N=f.next())N=k(w,c,P,N.value,p),N!==null&&(e&&N.alternate!==null&&w.delete(N.key===null?P:N.key),a=o(N,a,P),C===null?m=N:C.sibling=N,C=N);return e&&w.forEach(function(Ya){return t(c,Ya)}),m}return function(c,a,f,p){var m=typeof f=="object"&&f!==null&&f.type===Oe&&f.key===null;m&&(f=f.props.children);var C=typeof f=="object"&&f!==null;if(C)switch(f.$$typeof){case Jt:e:{for(C=f.key,m=a;m!==null;){if(m.key===C){switch(m.tag){case 7:if(f.type===Oe){n(c,m.sibling),a=l(m,f.props.children),a.return=c,c=a;break e}break;default:if(m.elementType===f.type){n(c,m.sibling),a=l(m,f.props),a.ref=Cn(c,m,f),a.return=c,c=a;break e}}n(c,m);break}else t(c,m);m=m.sibling}f.type===Oe?(a=Wt(f.props.children,c.mode,p,f.key),a.return=c,c=a):(p=rl(f.type,f.key,f.props,null,c.mode,p),p.ref=Cn(c,a,f),p.return=c,c=p)}return i(c);case et:e:{for(m=f.key;a!==null;){if(a.key===m)if(a.tag===4&&a.stateNode.containerInfo===f.containerInfo&&a.stateNode.implementation===f.implementation){n(c,a.sibling),a=l(a,f.children||[]),a.return=c,c=a;break e}else{n(c,a);break}else t(c,a);a=a.sibling}a=Ei(f,c.mode,p),a.return=c,c=a}return i(c)}if(typeof f=="string"||typeof f=="number")return f=""+f,a!==null&&a.tag===6?(n(c,a.sibling),a=l(a,f),a.return=c,c=a):(n(c,a),a=Si(f,c.mode,p),a.return=c,c=a),i(c);if(Ur(f))return E(c,a,f,p);if(en(f))return S(c,a,f,p);if(C&&Vr(c,f),typeof f=="undefined"&&!m)switch(c.tag){case 1:case 22:case 0:case 11:case 15:throw Error(v(152,yt(c.type)||"Component"))}return n(c,a)}}var Br=Bs(!0),As=Bs(!1),Pn={},ye=Ue(Pn),Nn=Ue(Pn),Tn=Ue(Pn);function ut(e){if(e===Pn)throw Error(v(174));return e}function Bo(e,t){switch(I(Tn,t),I(Nn,e),I(ye,Pn),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ql(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ql(t,e)}R(ye),I(ye,t)}function Ft(){R(ye),R(Nn),R(Tn)}function Hs(e){ut(Tn.current);var t=ut(ye.current),n=Ql(t,e.type);t!==n&&(I(Nn,e),I(ye,n))}function Ao(e){Nn.current===e&&(R(ye),R(Nn))}var D=Ue(0);function Ar(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&64)!=0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var xe=null,$e=null,ge=!1;function $s(e,t){var n=ae(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,e.lastEffect!==null?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ws(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,!0):!1;case 13:return!1;default:return!1}}function Ho(e){if(ge){var t=$e;if(t){var n=t;if(!Ws(e,t)){if(t=Lt(n.nextSibling),!t||!Ws(e,t)){e.flags=e.flags&-1025|2,ge=!1,xe=e;return}$s(xe,n)}xe=e,$e=Lt(t.firstChild)}else e.flags=e.flags&-1025|2,ge=!1,xe=e}}function Qs(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;xe=e}function Hr(e){if(e!==xe)return!1;if(!ge)return Qs(e),ge=!0,!1;var t=e.type;if(e.tag!==5||t!=="head"&&t!=="body"&&!Po(t,e.memoizedProps))for(t=$e;t;)$s(e,t),t=Lt(t.nextSibling);if(Qs(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(v(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){$e=Lt(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}$e=null}}else $e=xe?Lt(e.stateNode.nextSibling):null;return!0}function $o(){$e=xe=null,ge=!1}var Ut=[];function Wo(){for(var e=0;eo))throw Error(v(301));o+=1,H=X=null,t.updateQueue=null,Ln.current=Rc,e=n(r,l)}while(Mn)}if(Ln.current=Xr,t=X!==null&&X.next!==null,On=0,H=X=F=null,$r=!1,t)throw Error(v(300));return e}function st(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return H===null?F.memoizedState=H=e:H=H.next=e,H}function at(){if(X===null){var e=F.alternate;e=e!==null?e.memoizedState:null}else e=X.next;var t=H===null?F.memoizedState:H.next;if(t!==null)H=t,X=e;else{if(e===null)throw Error(v(310));X=e,e={memoizedState:X.memoizedState,baseState:X.baseState,baseQueue:X.baseQueue,queue:X.queue,next:null},H===null?F.memoizedState=H=e:H=H.next=e}return H}function we(e,t){return typeof t=="function"?t(e):t}function zn(e){var t=at(),n=t.queue;if(n===null)throw Error(v(311));n.lastRenderedReducer=e;var r=X,l=r.baseQueue,o=n.pending;if(o!==null){if(l!==null){var i=l.next;l.next=o.next,o.next=i}r.baseQueue=l=o,n.pending=null}if(l!==null){l=l.next,r=r.baseState;var u=i=o=null,s=l;do{var d=s.lane;if((On&d)===d)u!==null&&(u=u.next={lane:0,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null}),r=s.eagerReducer===e?s.eagerState:e(r,s.action);else{var y={lane:d,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null};u===null?(i=u=y,o=r):u=u.next=y,F.lanes|=d,Dn|=d}s=s.next}while(s!==null&&s!==l);u===null?o=r:u.next=i,oe(r,t.memoizedState)||(pe=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=u,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function Rn(e){var t=at(),n=t.queue;if(n===null)throw Error(v(311));n.lastRenderedReducer=e;var r=n.dispatch,l=n.pending,o=t.memoizedState;if(l!==null){n.pending=null;var i=l=l.next;do o=e(o,i.action),i=i.next;while(i!==l);oe(o,t.memoizedState)||(pe=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Ys(e,t,n){var r=t._getVersion;r=r(t._source);var l=t._workInProgressVersionPrimary;if(l!==null?e=l===r:(e=e.mutableReadLanes,(e=(On&e)===e)&&(t._workInProgressVersionPrimary=r,Ut.push(t))),e)return n(t._source);throw Ut.push(t),Error(v(350))}function Xs(e,t,n,r){var l=Z;if(l===null)throw Error(v(349));var o=t._getVersion,i=o(t._source),u=Ln.current,s=u.useState(function(){return Ys(l,t,n)}),d=s[1],y=s[0];s=H;var x=e.memoizedState,h=x.refs,k=h.getSnapshot,E=x.source;x=x.subscribe;var S=F;return e.memoizedState={refs:h,source:t,subscribe:r},u.useEffect(function(){h.getSnapshot=n,h.setSnapshot=d;var c=o(t._source);if(!oe(i,c)){c=n(t._source),oe(y,c)||(d(c),c=Qe(S),l.mutableReadLanes|=c&l.pendingLanes),c=l.mutableReadLanes,l.entangledLanes|=c;for(var a=l.entanglements,f=c;0n?98:n,function(){e(!0)}),it(97<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Fe]=t,e[Nr]=r,ma(e,t,!1,!1),t.stateNode=e,i=Xl(n,r),n){case"dialog":z("cancel",e),z("close",e),l=r;break;case"iframe":case"object":case"embed":z("load",e),l=r;break;case"video":case"audio":for(l=0;ldi&&(t.flags|=64,o=!0,In(r,!1),t.lanes=33554432)}else{if(!o)if(e=Ar(i),e!==null){if(t.flags|=64,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),In(r,!0),r.tail===null&&r.tailMode==="hidden"&&!i.alternate&&!ge)return t=t.lastEffect=r.lastEffect,t!==null&&(t.nextEffect=null),null}else 2*Y()-r.renderingStartTime>di&&n!==1073741824&&(t.flags|=64,o=!0,In(r,!1),t.lanes=33554432);r.isBackwards?(i.sibling=t.child,t.child=i):(n=r.last,n!==null?n.sibling=i:t.child=i,r.last=i)}return r.tail!==null?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Y(),n.sibling=null,t=D.current,I(D,o?t&1|2:t&1),n):null;case 23:case 24:return gi(),e!==null&&e.memoizedState!==null!=(t.memoizedState!==null)&&r.mode!=="unstable-defer-without-hiding"&&(t.flags|=4),null}throw Error(v(156,t.tag))}function Dc(e){switch(e.tag){case 1:q(e.type)&&Lr();var t=e.flags;return t&4096?(e.flags=t&-4097|64,e):null;case 3:if(Ft(),R(J),R(Q),Wo(),t=e.flags,(t&64)!=0)throw Error(v(285));return e.flags=t&-4097|64,e;case 5:return Ao(e),null;case 13:return R(D),t=e.flags,t&4096?(e.flags=t&-4097|64,e):null;case 19:return R(D),null;case 4:return Ft(),null;case 10:return Fo(e),null;case 23:case 24:return gi(),null;default:return null}}function ni(e,t){try{var n="",r=t;do n+=vf(r),r=r.return;while(r);var l=n}catch(o){l=` +Error generating stack: `+o.message+` +`+o.stack}return{value:e,source:t,stack:l}}function ri(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Fc=typeof WeakMap=="function"?WeakMap:Map;function ya(e,t,n){n=Ae(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Jr||(Jr=!0,pi=r),ri(e,t)},n}function ga(e,t,n){n=Ae(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var l=t.value;n.payload=function(){return ri(e,t),r(l)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(n.callback=function(){typeof r!="function"&&(ke===null?ke=new Set([this]):ke.add(this),ri(e,t));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}var Uc=typeof WeakSet=="function"?WeakSet:Set;function wa(e){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(n){Ke(e,n)}else t.current=null}function Vc(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(t.flags&256&&e!==null){var n=e.memoizedProps,r=e.memoizedState;e=t.stateNode,t=e.getSnapshotBeforeUpdate(t.elementType===t.type?n:de(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:t.flags&256&&No(t.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(v(163))}function Bc(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(t=n.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{if((e.tag&3)==3){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(t=n.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{var l=e;r=l.next,l=l.tag,(l&4)!=0&&(l&1)!=0&&(ja(n,e),Kc(n,e)),e=r}while(e!==t)}return;case 1:e=n.stateNode,n.flags&4&&(t===null?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:de(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),t=n.updateQueue,t!==null&&Is(n,t,e);return;case 3:if(t=n.updateQueue,t!==null){if(e=null,n.child!==null)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}Is(n,t,e)}return;case 5:e=n.stateNode,t===null&&n.flags&4&&vs(n.type,n.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:n.memoizedState===null&&(n=n.alternate,n!==null&&(n=n.memoizedState,n!==null&&(n=n.dehydrated,n!==null&&Ru(n))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(v(163))}function ka(e,t){for(var n=e;;){if(n.tag===5){var r=n.stateNode;if(t)r=r.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var l=n.memoizedProps.style;l=l!=null&&l.hasOwnProperty("display")?l.display:null,r.style.display=vu("display",l)}}else if(n.tag===6)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((n.tag!==23&&n.tag!==24||n.memoizedState===null||n===e)&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function Sa(e,t){if(ot&&typeof ot.onCommitFiberUnmount=="function")try{ot.onCommitFiberUnmount(Oo,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(e=t.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var n=e=e.next;do{var r=n,l=r.destroy;if(r=r.tag,l!==void 0)if((r&4)!=0)ja(t,n);else{r=t;try{l()}catch(o){Ke(r,o)}}n=n.next}while(n!==e)}break;case 1:if(wa(t),e=t.stateNode,typeof e.componentWillUnmount=="function")try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){Ke(t,o)}break;case 5:wa(t);break;case 4:Ca(e,t)}}function Ea(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function _a(e){return e.tag===5||e.tag===3||e.tag===4}function xa(e){e:{for(var t=e.return;t!==null;){if(_a(t))break e;t=t.return}throw Error(v(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:t=t.containerInfo,r=!0;break;case 4:t=t.containerInfo,r=!0;break;default:throw Error(v(161))}n.flags&16&&(nn(t,""),n.flags&=-17);e:t:for(n=e;;){for(;n.sibling===null;){if(n.return===null||_a(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue t;n.child.return=n,n=n.child}if(!(n.flags&2)){n=n.stateNode;break e}}r?li(e,n,t):oi(e,n,t)}function li(e,t,n){var r=e.tag,l=r===5||r===6;if(l)e=l?e.stateNode:e.stateNode.instance,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Cr));else if(r!==4&&(e=e.child,e!==null))for(li(e,t,n),e=e.sibling;e!==null;)li(e,t,n),e=e.sibling}function oi(e,t,n){var r=e.tag,l=r===5||r===6;if(l)e=l?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(oi(e,t,n),e=e.sibling;e!==null;)oi(e,t,n),e=e.sibling}function Ca(e,t){for(var n=t,r=!1,l,o;;){if(!r){r=n.return;e:for(;;){if(r===null)throw Error(v(160));switch(l=r.stateNode,r.tag){case 5:o=!1;break e;case 3:l=l.containerInfo,o=!0;break e;case 4:l=l.containerInfo,o=!0;break e}r=r.return}r=!0}if(n.tag===5||n.tag===6){e:for(var i=e,u=n,s=u;;)if(Sa(i,s),s.child!==null&&s.tag!==4)s.child.return=s,s=s.child;else{if(s===u)break e;for(;s.sibling===null;){if(s.return===null||s.return===u)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}o?(i=l,u=n.stateNode,i.nodeType===8?i.parentNode.removeChild(u):i.removeChild(u)):l.removeChild(n.stateNode)}else if(n.tag===4){if(n.child!==null){l=n.stateNode.containerInfo,o=!0,n.child.return=n,n=n.child;continue}}else if(Sa(e,n),n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return,n.tag===4&&(r=!1)}n.sibling.return=n.return,n=n.sibling}}function ii(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var r=n=n.next;do(r.tag&3)==3&&(e=r.destroy,r.destroy=void 0,e!==void 0&&e()),r=r.next;while(r!==n)}return;case 1:return;case 5:if(n=t.stateNode,n!=null){r=t.memoizedProps;var l=e!==null?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,o!==null){for(n[Nr]=r,e==="input"&&r.type==="radio"&&r.name!=null&&au(n,r),Xl(e,l),t=Xl(e,r),l=0;ll&&(l=i),n&=~o}if(n=l,n=Y()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Hc(n/1960))-n,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}$!==5&&($=2),s=ni(s,u),h=i;do{switch(h.tag){case 3:o=s,h.flags|=4096,t&=-t,h.lanes|=t;var C=ya(h,o,t);js(h,C);break e;case 1:o=s;var w=h.type,P=h.stateNode;if((h.flags&64)==0&&(typeof w.getDerivedStateFromError=="function"||P!==null&&typeof P.componentDidCatch=="function"&&(ke===null||!ke.has(P)))){h.flags|=4096,t&=-t,h.lanes|=t;var T=ga(h,o,t);js(h,T);break e}}h=h.return}while(h!==null)}Ra(n)}catch(N){t=N,V===n&&n!==null&&(V=n=n.return);continue}break}while(1)}function Ma(){var e=Gr.current;return Gr.current=Xr,e===null?Xr:e}function An(e,t){var n=_;_|=16;var r=Ma();Z===e&&K===t||$t(e,t);do try{Wc();break}catch(l){Oa(e,l)}while(1);if(Do(),_=n,Gr.current=r,V!==null)throw Error(v(261));return Z=null,K=0,$}function Wc(){for(;V!==null;)za(V)}function Qc(){for(;V!==null&&!Pc();)za(V)}function za(e){var t=Da(e.alternate,e,ft);e.memoizedProps=e.pendingProps,t===null?Ra(e):V=t,ui.current=null}function Ra(e){var t=e;do{var n=t.alternate;if(e=t.return,(t.flags&2048)==0){if(n=Ic(n,t,ft),n!==null){V=n;return}if(n=t,n.tag!==24&&n.tag!==23||n.memoizedState===null||(ft&1073741824)!=0||(n.mode&4)==0){for(var r=0,l=n.child;l!==null;)r|=l.lanes|l.childLanes,l=l.sibling;n.childLanes=r}e!==null&&(e.flags&2048)==0&&(e.firstEffect===null&&(e.firstEffect=t.firstEffect),t.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1i&&(u=i,i=C,C=u),u=rs(f,C),o=rs(f,i),u&&o&&(m.rangeCount!==1||m.anchorNode!==u.node||m.anchorOffset!==u.offset||m.focusNode!==o.node||m.focusOffset!==o.offset)&&(p=p.createRange(),p.setStart(u.node,u.offset),m.removeAllRanges(),C>i?(m.addRange(p),m.extend(o.node,o.offset)):(p.setEnd(o.node,o.offset),m.addRange(p)))))),p=[],m=f;m=m.parentNode;)m.nodeType===1&&p.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;fY()-ci?$t(e,0):ai|=n),se(e,t)}function Jc(e,t){var n=e.stateNode;n!==null&&n.delete(t),t=0,t===0&&(t=e.mode,(t&2)==0?t=1:(t&4)==0?t=jt()===99?1:2:(Ne===0&&(Ne=Vt),t=xt(62914560&~Ne),t===0&&(t=4194304))),n=ne(),e=tl(e,t),e!==null&&(mr(e,t,n),se(e,n))}var Da;Da=function(e,t,n){var r=t.lanes;if(e!==null)if(e.memoizedProps!==t.pendingProps||J.current)pe=!0;else if((n&r)!=0)pe=(e.flags&16384)!=0;else{switch(pe=!1,t.tag){case 3:ua(t),$o();break;case 5:Hs(t);break;case 1:q(t.type)&&Or(t);break;case 4:Bo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var l=t.type._context;I(Rr,l._currentValue),l._currentValue=r;break;case 13:if(t.memoizedState!==null)return(n&t.child.childLanes)!=0?sa(e,t,n):(I(D,D.current&1),t=Ce(e,t,n),t!==null?t.sibling:null);I(D,D.current&1);break;case 19:if(r=(n&t.childLanes)!=0,(e.flags&64)!=0){if(r)return pa(e,t,n);t.flags|=64}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),I(D,D.current),r)break;return null;case 23:case 24:return t.lanes=0,Jo(e,t,n)}return Ce(e,t,n)}else pe=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,l=Rt(t,Q.current),Dt(t,n),l=Yo(null,t,r,e,l,n),t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,q(r)){var o=!0;Or(t)}else o=!1;t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Uo(t);var i=r.getDerivedStateFromProps;typeof i=="function"&&Dr(t,r,i,e),l.updater=Fr,t.stateNode=l,l._reactInternals=t,Vo(t,r,e,n),t=bo(null,t,r,!0,o,n)}else t.tag=0,ee(null,t,l,n),t=t.child;return t;case 16:l=t.elementType;e:{switch(e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=l._init,l=o(l._payload),t.type=l,o=t.tag=bc(l),e=de(l,e),o){case 0:t=qo(null,t,l,e,n);break e;case 1:t=ia(null,t,l,e,n);break e;case 11:t=na(null,t,l,e,n);break e;case 14:t=ra(null,t,l,de(l.type,e),r,n);break e}throw Error(v(306,l,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:de(r,l),qo(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:de(r,l),ia(e,t,r,l,n);case 3:if(ua(t),r=t.updateQueue,e===null||r===null)throw Error(v(282));if(r=t.pendingProps,l=t.memoizedState,l=l!==null?l.element:null,Rs(e,t),xn(t,r,null,n),r=t.memoizedState.element,r===l)$o(),t=Ce(e,t,n);else{if(l=t.stateNode,(o=l.hydrate)&&($e=Lt(t.stateNode.containerInfo.firstChild),xe=t,o=ge=!0),o){if(e=l.mutableSourceEagerHydrationData,e!=null)for(l=0;l{"use strict";function Ba(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ba)}catch(e){console.error(e)}}Ba(),Aa.exports=Va()});var Wa=ul(Xn()),Qa=ul(Ha());var $a=ul(Xn());function Pi(){return $a.default.createElement("div",null,"Hello World!")}Qa.default.render(Wa.default.createElement(Pi,null),document.getElementById("root")); +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +/** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +//# sourceMappingURL=index.js.map diff --git a/ui-esbuild/public/index.js.map b/ui-esbuild/public/index.js.map new file mode 100644 index 0000000000..f9e4b3d2bd --- /dev/null +++ b/ui-esbuild/public/index.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../node_modules/object-assign/index.js", "../node_modules/react/cjs/react.production.min.js", "../node_modules/react/index.js", "../node_modules/scheduler/cjs/scheduler.production.min.js", "../node_modules/scheduler/index.js", "../node_modules/react-dom/cjs/react-dom.production.min.js", "../node_modules/react-dom/index.js", "../src/index.tsx", "../src/App.tsx"], + "sourcesContent": ["/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n", "/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e, document.getElementById('root'))\r\n", "import React from 'react'\r\nimport './style.css'\r\n\r\nexport default function App() {\r\n return
Hello World!
\r\n}\r\n"], + "mappings": "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", + "names": [] +} diff --git a/ui-esbuild/public/logo192.png b/ui-esbuild/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/ui-esbuild/public/manifest.json b/ui-esbuild/public/manifest.json new file mode 100644 index 0000000000..e36437672e --- /dev/null +++ b/ui-esbuild/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "React esbuild App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/ui-esbuild/public/robots.txt b/ui-esbuild/public/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/ui-esbuild/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx new file mode 100644 index 0000000000..22a05c4233 --- /dev/null +++ b/ui-esbuild/src/App.tsx @@ -0,0 +1,6 @@ +import React from 'react' +import './style.css' + +export default function App() { + return
Hello World!
+} diff --git a/ui-esbuild/src/index.tsx b/ui-esbuild/src/index.tsx new file mode 100644 index 0000000000..b3d051586e --- /dev/null +++ b/ui-esbuild/src/index.tsx @@ -0,0 +1,5 @@ +import React from 'react' +import ReactDOM from 'react-dom' +import App from './App' + +ReactDOM.render(, document.getElementById('root')) diff --git a/ui-esbuild/src/style.css b/ui-esbuild/src/style.css new file mode 100644 index 0000000000..7323ae85c5 --- /dev/null +++ b/ui-esbuild/src/style.css @@ -0,0 +1,11 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', + 'Droid Sans', 'Helvetica Neue', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; +} diff --git a/ui-esbuild/tsconfig.json b/ui-esbuild/tsconfig.json new file mode 100644 index 0000000000..8c9d65ac1b --- /dev/null +++ b/ui-esbuild/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es6", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"] +} diff --git a/ui-esbuild/yarn.lock b/ui-esbuild/yarn.lock new file mode 100644 index 0000000000..8552b8827f --- /dev/null +++ b/ui-esbuild/yarn.lock @@ -0,0 +1,3397 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + dependencies: + "@babel/highlight" "^7.14.5" + +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/runtime-corejs3@^7.10.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1" + integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg== + dependencies: + core-js-pure "^3.16.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" + integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== + dependencies: + regenerator-runtime "^0.13.4" + +"@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" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/json-schema@^7.0.7": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/live-server@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/live-server/-/live-server-1.2.1.tgz#4d6588e1b888b415ed5fe8480224dcd225bc9eba" + integrity sha512-Yind497JdcZT8L9FF7u73nq44KmamiDitsZJEwrAi/pgBhFHThNvtR+2Z/YGNSMjyUoDBFdvhVSQmod06yd1Ng== + +"@types/node@^16.9.1": + version "16.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" + integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/react-dom@^17.0.9": + version "17.0.9" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" + integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^17.0.20": + version "17.0.20" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.20.tgz#a4284b184d47975c71658cd69e759b6bd37c3b8c" + integrity sha512-wWZrPlihslrPpcKyCSlmIlruakxr57/buQN1RjlIeaaTWDLtJkTtRW429MoQJergvVKc4IWBpRhWw7YNh/7GVA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@typescript-eslint/eslint-plugin@^4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz#9c3fa6f44bad789a962426ad951b54695bd3af6b" + integrity sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw== + dependencies: + "@typescript-eslint/experimental-utils" "4.31.0" + "@typescript-eslint/scope-manager" "4.31.0" + 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.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz#0ef1d5d86c334f983a00f310e43c1ce4c14e054d" + integrity sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.31.0" + "@typescript-eslint/types" "4.31.0" + "@typescript-eslint/typescript-estree" "4.31.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.31.0.tgz#87b7cd16b24b9170c77595d8b1363f8047121e05" + integrity sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w== + dependencies: + "@typescript-eslint/scope-manager" "4.31.0" + "@typescript-eslint/types" "4.31.0" + "@typescript-eslint/typescript-estree" "4.31.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz#9be33aed4e9901db753803ba233b70d79a87fc3e" + integrity sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg== + dependencies: + "@typescript-eslint/types" "4.31.0" + "@typescript-eslint/visitor-keys" "4.31.0" + +"@typescript-eslint/types@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.31.0.tgz#9a7c86fcc1620189567dc4e46cad7efa07ee8dce" + integrity sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ== + +"@typescript-eslint/typescript-estree@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz#4da4cb6274a7ef3b21d53f9e7147cc76f278a078" + integrity sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg== + dependencies: + "@typescript-eslint/types" "4.31.0" + "@typescript-eslint/visitor-keys" "4.31.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz#4e87b7761cb4e0e627dc2047021aa693fc76ea2b" + integrity sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w== + dependencies: + "@typescript-eslint/types" "4.31.0" + eslint-visitor-keys "^2.0.0" + +accepts@~1.3.4: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + 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" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apache-crypt@^1.1.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/apache-crypt/-/apache-crypt-1.2.5.tgz#4eb6b6dbaed2041ce5bc2d802f4421f5fdadc25e" + integrity sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg== + dependencies: + unix-crypt-td-js "^1.1.4" + +apache-md5@^1.0.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.7.tgz#dcef1802700cc231d60c5e08fd088f2f9b36375a" + integrity sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +axe-core@^4.0.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325" + integrity sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcryptjs@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" + integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^2.0.4: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + 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== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +colors@latest: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +connect@^3.6.6: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-pure@^3.16.0: + version "3.17.3" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.17.3.tgz#98ea3587188ab7ef4695db6518eeb71aec42604a" + integrity sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@latest: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" + integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== + +damerau-levenshtein@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" + integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.0.0: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456" + integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-string "^1.0.7" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +esbuild@^0.12.26: + version "0.12.26" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.26.tgz#35f2d58ac3fa4629df24aa4d6fd72feb5522e94b" + integrity sha512-YmTkhPKjvTJ+G5e96NyhGf69bP+hzO0DscqaVJTi5GM34uaD4Ecj7omu5lJO+NrxCUBRhy2chONLK1h/2LwoXA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-airbnb-base@^14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-airbnb@^18.2.1: + version "18.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9" + integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== + dependencies: + eslint-config-airbnb-base "^14.2.1" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-prettier@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" + integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534" + integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q== + dependencies: + debug "^3.2.7" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.24.2: + version "2.24.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz#2c8cd2e341f3885918ee27d18479910ade7bb4da" + integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q== + dependencies: + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.6.2" + find-up "^2.0.0" + has "^1.0.3" + is-core-module "^2.6.0" + minimatch "^3.0.4" + object.values "^1.1.4" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" + tsconfig-paths "^3.11.0" + +eslint-plugin-jsx-a11y@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== + dependencies: + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" + +eslint-plugin-react-hooks@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + +eslint-plugin-react@^7.25.1: + version "7.25.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz#9286b7cd9bf917d40309760f403e53016eda8331" + integrity sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug== + dependencies: + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" + doctrine "^2.1.0" + estraverse "^5.2.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.4" + object.fromentries "^2.0.4" + object.values "^1.1.4" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.5" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-stream@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@0.11.x: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" + integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.6.0, globals@^13.9.0: + version "13.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" + integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +http-auth@3.1.x: + version "3.1.3" + resolved "https://registry.yarnpkg.com/http-auth/-/http-auth-3.1.3.tgz#945cfadd66521eaf8f7c84913d377d7b15f24e31" + integrity sha1-lFz63WZSHq+PfISRPTd9exXyTjE= + dependencies: + apache-crypt "^1.1.2" + apache-md5 "^1.0.6" + bcryptjs "^2.3.0" + uuid "^3.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +husky@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.2.tgz#21900da0f30199acca43a46c043c4ad84ae88dff" + integrity sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.2.0, is-core-module@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" + integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" + integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== + dependencies: + chalk "^4.1.1" + cli-truncate "^2.1.0" + commander "^7.2.0" + cosmiconfig "^7.0.0" + debug "^4.3.1" + enquirer "^2.3.6" + execa "^5.0.0" + listr2 "^3.8.2" + log-symbols "^4.1.0" + micromatch "^4.0.4" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "^3.3.0" + +listr2@^3.8.2: + version "3.12.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.0.tgz#755d77fdbc5bd290d7860ced28061ba123088b58" + integrity sha512-DLaOIhIBXxSDGfAuGyQPsQs6XPIJrUE1MaNYBq8aUS3bulSAEl9RMNNuRbfdxonTizL5ztAYvCZKKnP3gFSvYg== + dependencies: + cli-truncate "^2.1.0" + colorette "^1.2.2" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.6.7" + through "^2.3.8" + wrap-ansi "^7.0.0" + +live-server@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/live-server/-/live-server-1.2.1.tgz#670630dd409d22fe9c513ab1c1894686c757153e" + integrity sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw== + dependencies: + chokidar "^2.0.4" + colors latest + connect "^3.6.6" + cors latest + event-stream "3.3.4" + faye-websocket "0.11.x" + http-auth "3.1.x" + morgan "^1.9.1" + object-assign latest + opn latest + proxy-middleware latest + send latest + serve-index "^1.9.1" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mime-db@1.49.0: + version "1.49.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== + +mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.32" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== + dependencies: + mime-db "1.49.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +morgan@^1.9.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + dependencies: + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nan@^2.12.1: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +object-assign@^4, object-assign@^4.1.1, object-assign@latest: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.2, object.entries@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" + integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +opn@latest: + version "6.0.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" + integrity sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ== + dependencies: + is-wsl "^1.1.0" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.0.tgz#85bdfe0f70c3e777cf13a4ffff39713ca6f64cba" + integrity sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-middleware@latest: + version "0.15.0" + resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" + integrity sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.0.2: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.13.4: + 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== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^6.6.7: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.2.1, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@latest: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.10" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" + integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da" + integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@2, through@^2.3.8, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tsconfig-paths@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" + integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" + integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unix-crypt-td-js@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" + integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@^1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== From 95d254ec08952644f9a3cfa57e28822202cc556b Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 12:08:09 +0800 Subject: [PATCH 004/100] test compile css --- ui-esbuild/.gitignore | 1 + ui-esbuild/builder.js | 8 +++- ui-esbuild/public/index.css | 2 - ui-esbuild/public/index.css.map | 7 ---- ui-esbuild/public/index.js | 39 ------------------- ui-esbuild/public/index.js.map | 7 ---- ui-esbuild/src/App.tsx | 9 ++++- .../src/lib/components/HelloCSS/index.tsx | 10 +++++ .../src/lib/components/HelloCSS/style.css | 7 ++++ 9 files changed, 32 insertions(+), 58 deletions(-) delete mode 100644 ui-esbuild/public/index.css delete mode 100644 ui-esbuild/public/index.css.map delete mode 100644 ui-esbuild/public/index.js delete mode 100644 ui-esbuild/public/index.js.map create mode 100644 ui-esbuild/src/lib/components/HelloCSS/index.tsx create mode 100644 ui-esbuild/src/lib/components/HelloCSS/style.css diff --git a/ui-esbuild/.gitignore b/ui-esbuild/.gitignore index 3c3629e647..f06235c460 100644 --- a/ui-esbuild/.gitignore +++ b/ui-esbuild/.gitignore @@ -1 +1,2 @@ node_modules +dist diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index 647807c2b6..4db3d2b6c1 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -1,6 +1,7 @@ const { start } = require('live-server') const { watch } = require('chokidar') const { build } = require('esbuild') +const fs = require('fs') /** * Live Server Params @@ -8,7 +9,7 @@ const { build } = require('esbuild') */ const serverParams = { port: 8181, // Set the server port. Defaults to 8080. - root: 'public', // Set root directory that's being served. Defaults to cwd. + root: 'dist', // Set root directory that's being served. Defaults to cwd. open: true // When false, it won't load your browser by default. // host: "0.0.0.0", // Set the address to bind to. Defaults to 0.0.0.0 or process.env.IP. // ignore: 'scss,my/templates', // comma-separated string for paths to ignore @@ -27,7 +28,7 @@ const buildParams = { color: true, entryPoints: ['src/index.tsx'], loader: { '.ts': 'tsx' }, - outdir: 'public', + outdir: 'dist', minify: true, format: 'cjs', bundle: true, @@ -35,9 +36,12 @@ const buildParams = { logLevel: 'error', incremental: true } + ;(async () => { const builder = await build(buildParams) + fs.copyFileSync('./public/index.html', './dist/index.html') + watch('src/**/*.{ts,tsx}').on('all', () => { builder.rebuild() }) diff --git a/ui-esbuild/public/index.css b/ui-esbuild/public/index.css deleted file mode 100644 index d1cf7328da..0000000000 --- a/ui-esbuild/public/index.css +++ /dev/null @@ -1,2 +0,0 @@ -body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace} -/*# sourceMappingURL=index.css.map */ diff --git a/ui-esbuild/public/index.css.map b/ui-esbuild/public/index.css.map deleted file mode 100644 index 55479eef6d..0000000000 --- a/ui-esbuild/public/index.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../src/style.css"], - "sourcesContent": ["body {\r\n margin: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\r\n 'Droid Sans', 'Helvetica Neue', sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\ncode {\r\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\r\n}\r\n"], - "mappings": "AAAA,cAEE,oJAEA,mCACA,kCAGF,KACE", - "names": [] -} diff --git a/ui-esbuild/public/index.js b/ui-esbuild/public/index.js deleted file mode 100644 index 795d5b62e1..0000000000 --- a/ui-esbuild/public/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var Xa=Object.create;var il=Object.defineProperty;var Ka=Object.getOwnPropertyDescriptor;var Ga=Object.getOwnPropertyNames;var Za=Object.getPrototypeOf,Ja=Object.prototype.hasOwnProperty;var qa=e=>il(e,"__esModule",{value:!0});var Ze=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ba=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ga(t))!Ja.call(e,r)&&r!=="default"&&il(e,r,{get:()=>t[r],enumerable:!(n=Ka(t,r))||n.enumerable});return e},ul=e=>ba(qa(il(e!=null?Xa(Za(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var sl=Ze((ud,Ti)=>{"use strict";var Ni=Object.getOwnPropertySymbols,ef=Object.prototype.hasOwnProperty,tf=Object.prototype.propertyIsEnumerable;function nf(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function rf(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(o){return t[o]});if(r.join("")!=="0123456789")return!1;var l={};return"abcdefghijklmnopqrst".split("").forEach(function(o){l[o]=o}),Object.keys(Object.assign({},l)).join("")==="abcdefghijklmnopqrst"}catch(o){return!1}}Ti.exports=rf()?Object.assign:function(e,t){for(var n,r=nf(e),l,o=1;o{"use strict";var al=sl(),dt=60103,Li=60106;L.Fragment=60107;L.StrictMode=60108;L.Profiler=60114;var Oi=60109,Mi=60110,zi=60112;L.Suspense=60113;var Ri=60115,ji=60116;typeof Symbol=="function"&&Symbol.for&&(re=Symbol.for,dt=re("react.element"),Li=re("react.portal"),L.Fragment=re("react.fragment"),L.StrictMode=re("react.strict_mode"),L.Profiler=re("react.profiler"),Oi=re("react.provider"),Mi=re("react.context"),zi=re("react.forward_ref"),L.Suspense=re("react.suspense"),Ri=re("react.memo"),ji=re("react.lazy"));var re,Ii=typeof Symbol=="function"&&Symbol.iterator;function lf(e){return e===null||typeof e!="object"?null:(e=Ii&&e[Ii]||e["@@iterator"],typeof e=="function"?e:null)}function Qt(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n{"use strict";Qi.exports=Wi()});var Ji=Ze(O=>{"use strict";var mt,Yt,Kn,hl;typeof performance=="object"&&typeof performance.now=="function"?(Yi=performance,O.unstable_now=function(){return Yi.now()}):(vl=Date,Xi=vl.now(),O.unstable_now=function(){return vl.now()-Xi});var Yi,vl,Xi;typeof window=="undefined"||typeof MessageChannel!="function"?(ht=null,yl=null,gl=function(){if(ht!==null)try{var e=O.unstable_now();ht(!0,e),ht=null}catch(t){throw setTimeout(gl,0),t}},mt=function(e){ht!==null?setTimeout(mt,0,e):(ht=e,setTimeout(gl,0))},Yt=function(e,t){yl=setTimeout(e,t)},Kn=function(){clearTimeout(yl)},O.unstable_shouldYield=function(){return!1},hl=O.unstable_forceFrameRate=function(){}):(Ki=window.setTimeout,Gi=window.clearTimeout,typeof console!="undefined"&&(Zi=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof Zi!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),Xt=!1,Kt=null,Gn=-1,wl=5,kl=0,O.unstable_shouldYield=function(){return O.unstable_now()>=kl},hl=function(){},O.unstable_forceFrameRate=function(e){0>e||125>>1,l=e[r];if(l!==void 0&&0qn(i,n))s!==void 0&&0>qn(s,i)?(e[r]=s,e[u]=n,r=u):(e[r]=i,e[o]=n,r=o);else if(s!==void 0&&0>qn(s,n))e[r]=s,e[u]=n,r=u;else break e}}return t}return null}function qn(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}var me=[],Le=[],ff=1,le=null,W=3,bn=!1,Je=!1,Gt=!1;function _l(e){for(var t=ce(Le);t!==null;){if(t.callback===null)Jn(Le);else if(t.startTime<=e)Jn(Le),t.sortIndex=t.expirationTime,El(me,t);else break;t=ce(Le)}}function xl(e){if(Gt=!1,_l(e),!Je)if(ce(me)!==null)Je=!0,mt(Cl);else{var t=ce(Le);t!==null&&Yt(xl,t.startTime-e)}}function Cl(e,t){Je=!1,Gt&&(Gt=!1,Kn()),bn=!0;var n=W;try{for(_l(t),le=ce(me);le!==null&&(!(le.expirationTime>t)||e&&!O.unstable_shouldYield());){var r=le.callback;if(typeof r=="function"){le.callback=null,W=le.priorityLevel;var l=r(le.expirationTime<=t);t=O.unstable_now(),typeof l=="function"?le.callback=l:le===ce(me)&&Jn(me),_l(t)}else Jn(me);le=ce(me)}if(le!==null)var o=!0;else{var i=ce(Le);i!==null&&Yt(xl,i.startTime-t),o=!1}return o}finally{le=null,W=n,bn=!1}}var cf=hl;O.unstable_IdlePriority=5;O.unstable_ImmediatePriority=1;O.unstable_LowPriority=4;O.unstable_NormalPriority=3;O.unstable_Profiling=null;O.unstable_UserBlockingPriority=2;O.unstable_cancelCallback=function(e){e.callback=null};O.unstable_continueExecution=function(){Je||bn||(Je=!0,mt(Cl))};O.unstable_getCurrentPriorityLevel=function(){return W};O.unstable_getFirstCallbackNode=function(){return ce(me)};O.unstable_next=function(e){switch(W){case 1:case 2:case 3:var t=3;break;default:t=W}var n=W;W=t;try{return e()}finally{W=n}};O.unstable_pauseExecution=function(){};O.unstable_requestPaint=cf;O.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=W;W=e;try{return t()}finally{W=n}};O.unstable_scheduleCallback=function(e,t,n){var r=O.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0r?(e.sortIndex=n,El(Le,e),ce(me)===null&&e===ce(Le)&&(Gt?Kn():Gt=!0,Yt(xl,n-r))):(e.sortIndex=l,El(me,e),Je||bn||(Je=!0,mt(Cl))),e};O.unstable_wrapCallback=function(e){var t=W;return function(){var n=W;W=t;try{return e.apply(this,arguments)}finally{W=n}}}});var bi=Ze((cd,qi)=>{"use strict";qi.exports=Ji()});var Va=Ze(fe=>{"use strict";var er=Xn(),j=sl(),B=bi();function v(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nt}return!1}function G(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var A={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){A[e]=new G(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];A[t]=new G(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){A[e]=new G(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){A[e]=new G(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){A[e]=new G(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){A[e]=new G(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){A[e]=new G(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){A[e]=new G(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){A[e]=new G(e,5,!1,e.toLowerCase(),null,!1,!1)});var Pl=/[\-:]([a-z])/g;function Nl(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Pl,Nl);A[t]=new G(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Pl,Nl);A[t]=new G(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Pl,Nl);A[t]=new G(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){A[e]=new G(e,1,!1,e.toLowerCase(),null,!1,!1)});A.xlinkHref=new G("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){A[e]=new G(e,1,!1,e.toLowerCase(),null,!0,!0)});function Tl(e,t,n,r){var l=A.hasOwnProperty(t)?A[t]:null,o=l!==null?l.type===0:r?!1:!(!(2u||l[i]!==o[u])return` -`+l[i].replace(" at new "," at ");while(1<=i&&0<=u);break}}}finally{Ul=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?tn(e):""}function vf(e){switch(e.tag){case 5:return tn(e.type);case 16:return tn("Lazy");case 13:return tn("Suspense");case 19:return tn("SuspenseList");case 0:case 2:case 15:return e=lr(e.type,!1),e;case 11:return e=lr(e.type.render,!1),e;case 22:return e=lr(e.type._render,!1),e;case 1:return e=lr(e.type,!0),e;default:return""}}function yt(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Oe:return"Fragment";case et:return"Portal";case qt:return"Profiler";case Ll:return"StrictMode";case bt:return"Suspense";case nr:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ml:return(e.displayName||"Context")+".Consumer";case Ol:return(e._context.displayName||"Context")+".Provider";case tr:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case rr:return yt(e.type);case Rl:return yt(e._render);case zl:t=e._payload,e=e._init;try{return yt(e(t))}catch(n){}}return null}function Me(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function iu(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yf(e){var t=iu(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n!="undefined"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function or(e){e._valueTracker||(e._valueTracker=yf(e))}function uu(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=iu(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ir(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Vl(e,t){var n=t.checked;return j({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function su(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Me(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function au(e,t){t=t.checked,t!=null&&Tl(e,"checked",t,!1)}function Bl(e,t){au(e,t);var n=Me(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Al(e,t.type,n):t.hasOwnProperty("defaultValue")&&Al(e,t.type,Me(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function fu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Al(e,t,n){(t!=="number"||ir(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function gf(e){var t="";return er.Children.forEach(e,function(n){n!=null&&(t+=n)}),t}function Hl(e,t){return e=j({children:void 0},t),(t=gf(t.children))&&(e.children=t),e}function gt(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l=n.length))throw Error(v(93));n=n[0]}t=n}t==null&&(t=""),n=t}e._wrapperState={initialValue:Me(n)}}function du(e,t){var n=Me(t.value),r=Me(t.defaultValue);n!=null&&(n=""+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),r!=null&&(e.defaultValue=""+r)}function pu(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}var Wl={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function mu(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ql(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?mu(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var ur,hu=function(e){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(t,n,r,l){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,l)})}:e}(function(e,t){if(e.namespaceURI!==Wl.svg||"innerHTML"in e)e.innerHTML=t;else{for(ur=ur||document.createElement("div"),ur.innerHTML=""+t.valueOf().toString()+"",t=ur.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function nn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var rn={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},wf=["Webkit","ms","Moz","O"];Object.keys(rn).forEach(function(e){wf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),rn[t]=rn[e]})});function vu(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||rn.hasOwnProperty(e)&&rn[e]?(""+t).trim():t+"px"}function yu(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=vu(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var kf=j({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Yl(e,t){if(t){if(kf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(v(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(v(60));if(!(typeof t.dangerouslySetInnerHTML=="object"&&"__html"in t.dangerouslySetInnerHTML))throw Error(v(61))}if(t.style!=null&&typeof t.style!="object")throw Error(v(62))}}function Xl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Kl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Gl=null,wt=null,kt=null;function gu(e){if(e=En(e)){if(typeof Gl!="function")throw Error(v(280));var t=e.stateNode;t&&(t=Tr(t),Gl(e.stateNode,e.type,t))}}function wu(e){wt?kt?kt.push(e):kt=[e]:wt=e}function ku(){if(wt){var e=wt,t=kt;if(kt=wt=null,gu(e),t)for(e=0;er?0:1<n;n++)t.push(e);return t}function mr(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,e=e.eventTimes,t=31-Ie(t),e[t]=n}var Ie=Math.clz32?Math.clz32:Df,jf=Math.log,If=Math.LN2;function Df(e){return e===0?32:31-(jf(e)/If|0)|0}var Ff=B.unstable_UserBlockingPriority,Uf=B.unstable_runWithPriority,hr=!0;function Vf(e,t,n,r){tt||Jl();var l=ao,o=tt;tt=!0;try{Su(l,e,t,n,r)}finally{(tt=o)||bl()}}function Bf(e,t,n,r){Uf(Ff,ao.bind(null,e,t,n,r))}function ao(e,t,n,r){if(hr){var l;if((l=(t&4)==0)&&0=hn),Xu=String.fromCharCode(32),Ku=!1;function Gu(e,t){switch(e){case"keyup":return ac.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Zu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Pt=!1;function cc(e,t){switch(e){case"compositionend":return Zu(t);case"keypress":return t.which!==32?null:(Ku=!0,Xu);case"textInput":return e=t.data,e===Xu&&Ku?null:e;default:return null}}function dc(e,t){if(Pt)return e==="compositionend"||!go&&Gu(e,t)?(e=Au(),vr=co=De=null,Pt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ns(n)}}function ls(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ls(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function os(){for(var e=window,t=ir();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch(r){n=!1}if(n)e=t.contentWindow;else break;t=ir(e.document)}return t}function ko(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Ec=Ee&&"documentMode"in document&&11>=document.documentMode,Nt=null,So=null,wn=null,Eo=!1;function is(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Eo||Nt==null||Nt!==ir(r)||(r=Nt,"selectionStart"in r&&ko(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),wn&&gn(wn,r)||(wn=r,r=xr(So,"onSelect"),0zt||(e.current=Lo[zt],Lo[zt]=null,zt--)}function I(e,t){zt++,Lo[zt]=e.current,e.current=t}var Ve={},Q=Ue(Ve),J=Ue(!1),lt=Ve;function Rt(e,t){var n=e.type.contextTypes;if(!n)return Ve;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function q(e){return e=e.childContextTypes,e!=null}function Lr(){R(J),R(Q)}function Ss(e,t,n){if(Q.current!==Ve)throw Error(v(168));I(Q,t),I(J,n)}function Es(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in e))throw Error(v(108,yt(t)||"Unknown",l));return j({},n,r)}function Or(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ve,lt=Q.current,I(Q,e),I(J,J.current),!0}function _s(e,t,n){var r=e.stateNode;if(!r)throw Error(v(169));n?(e=Es(e,t,lt),r.__reactInternalMemoizedMergedChildContext=e,R(J),R(Q),I(Q,e)):R(J),I(J,n)}var Oo=null,ot=null,Cc=B.unstable_runWithPriority,Mo=B.unstable_scheduleCallback,zo=B.unstable_cancelCallback,Pc=B.unstable_shouldYield,xs=B.unstable_requestPaint,Ro=B.unstable_now,Nc=B.unstable_getCurrentPriorityLevel,Mr=B.unstable_ImmediatePriority,Cs=B.unstable_UserBlockingPriority,Ps=B.unstable_NormalPriority,Ns=B.unstable_LowPriority,Ts=B.unstable_IdlePriority,jo={},Tc=xs!==void 0?xs:function(){},_e=null,zr=null,Io=!1,Ls=Ro(),Y=1e4>Ls?Ro:function(){return Ro()-Ls};function jt(){switch(Nc()){case Mr:return 99;case Cs:return 98;case Ps:return 97;case Ns:return 96;case Ts:return 95;default:throw Error(v(332))}}function Os(e){switch(e){case 99:return Mr;case 98:return Cs;case 97:return Ps;case 96:return Ns;case 95:return Ts;default:throw Error(v(332))}}function it(e,t){return e=Os(e),Cc(e,t)}function _n(e,t,n){return e=Os(e),Mo(e,t,n)}function ve(){if(zr!==null){var e=zr;zr=null,zo(e)}Ms()}function Ms(){if(!Io&&_e!==null){Io=!0;var e=0;try{var t=_e;it(99,function(){for(;eP?(T=w,w=null):T=w.sibling;var N=h(c,w,f[P],p);if(N===null){w===null&&(w=T);break}e&&w&&N.alternate===null&&t(c,w),a=o(N,a,P),C===null?m=N:C.sibling=N,C=N,w=T}if(P===f.length)return n(c,w),m;if(w===null){for(;PP?(T=w,w=null):T=w.sibling;var Te=h(c,w,N.value,p);if(Te===null){w===null&&(w=T);break}e&&w&&Te.alternate===null&&t(c,w),a=o(Te,a,P),C===null?m=Te:C.sibling=Te,C=Te,w=T}if(N.done)return n(c,w),m;if(w===null){for(;!N.done;P++,N=f.next())N=x(c,N.value,p),N!==null&&(a=o(N,a,P),C===null?m=N:C.sibling=N,C=N);return m}for(w=r(c,w);!N.done;P++,N=f.next())N=k(w,c,P,N.value,p),N!==null&&(e&&N.alternate!==null&&w.delete(N.key===null?P:N.key),a=o(N,a,P),C===null?m=N:C.sibling=N,C=N);return e&&w.forEach(function(Ya){return t(c,Ya)}),m}return function(c,a,f,p){var m=typeof f=="object"&&f!==null&&f.type===Oe&&f.key===null;m&&(f=f.props.children);var C=typeof f=="object"&&f!==null;if(C)switch(f.$$typeof){case Jt:e:{for(C=f.key,m=a;m!==null;){if(m.key===C){switch(m.tag){case 7:if(f.type===Oe){n(c,m.sibling),a=l(m,f.props.children),a.return=c,c=a;break e}break;default:if(m.elementType===f.type){n(c,m.sibling),a=l(m,f.props),a.ref=Cn(c,m,f),a.return=c,c=a;break e}}n(c,m);break}else t(c,m);m=m.sibling}f.type===Oe?(a=Wt(f.props.children,c.mode,p,f.key),a.return=c,c=a):(p=rl(f.type,f.key,f.props,null,c.mode,p),p.ref=Cn(c,a,f),p.return=c,c=p)}return i(c);case et:e:{for(m=f.key;a!==null;){if(a.key===m)if(a.tag===4&&a.stateNode.containerInfo===f.containerInfo&&a.stateNode.implementation===f.implementation){n(c,a.sibling),a=l(a,f.children||[]),a.return=c,c=a;break e}else{n(c,a);break}else t(c,a);a=a.sibling}a=Ei(f,c.mode,p),a.return=c,c=a}return i(c)}if(typeof f=="string"||typeof f=="number")return f=""+f,a!==null&&a.tag===6?(n(c,a.sibling),a=l(a,f),a.return=c,c=a):(n(c,a),a=Si(f,c.mode,p),a.return=c,c=a),i(c);if(Ur(f))return E(c,a,f,p);if(en(f))return S(c,a,f,p);if(C&&Vr(c,f),typeof f=="undefined"&&!m)switch(c.tag){case 1:case 22:case 0:case 11:case 15:throw Error(v(152,yt(c.type)||"Component"))}return n(c,a)}}var Br=Bs(!0),As=Bs(!1),Pn={},ye=Ue(Pn),Nn=Ue(Pn),Tn=Ue(Pn);function ut(e){if(e===Pn)throw Error(v(174));return e}function Bo(e,t){switch(I(Tn,t),I(Nn,e),I(ye,Pn),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ql(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ql(t,e)}R(ye),I(ye,t)}function Ft(){R(ye),R(Nn),R(Tn)}function Hs(e){ut(Tn.current);var t=ut(ye.current),n=Ql(t,e.type);t!==n&&(I(Nn,e),I(ye,n))}function Ao(e){Nn.current===e&&(R(ye),R(Nn))}var D=Ue(0);function Ar(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&64)!=0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var xe=null,$e=null,ge=!1;function $s(e,t){var n=ae(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,e.lastEffect!==null?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ws(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,!0):!1;case 13:return!1;default:return!1}}function Ho(e){if(ge){var t=$e;if(t){var n=t;if(!Ws(e,t)){if(t=Lt(n.nextSibling),!t||!Ws(e,t)){e.flags=e.flags&-1025|2,ge=!1,xe=e;return}$s(xe,n)}xe=e,$e=Lt(t.firstChild)}else e.flags=e.flags&-1025|2,ge=!1,xe=e}}function Qs(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;xe=e}function Hr(e){if(e!==xe)return!1;if(!ge)return Qs(e),ge=!0,!1;var t=e.type;if(e.tag!==5||t!=="head"&&t!=="body"&&!Po(t,e.memoizedProps))for(t=$e;t;)$s(e,t),t=Lt(t.nextSibling);if(Qs(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(v(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){$e=Lt(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}$e=null}}else $e=xe?Lt(e.stateNode.nextSibling):null;return!0}function $o(){$e=xe=null,ge=!1}var Ut=[];function Wo(){for(var e=0;eo))throw Error(v(301));o+=1,H=X=null,t.updateQueue=null,Ln.current=Rc,e=n(r,l)}while(Mn)}if(Ln.current=Xr,t=X!==null&&X.next!==null,On=0,H=X=F=null,$r=!1,t)throw Error(v(300));return e}function st(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return H===null?F.memoizedState=H=e:H=H.next=e,H}function at(){if(X===null){var e=F.alternate;e=e!==null?e.memoizedState:null}else e=X.next;var t=H===null?F.memoizedState:H.next;if(t!==null)H=t,X=e;else{if(e===null)throw Error(v(310));X=e,e={memoizedState:X.memoizedState,baseState:X.baseState,baseQueue:X.baseQueue,queue:X.queue,next:null},H===null?F.memoizedState=H=e:H=H.next=e}return H}function we(e,t){return typeof t=="function"?t(e):t}function zn(e){var t=at(),n=t.queue;if(n===null)throw Error(v(311));n.lastRenderedReducer=e;var r=X,l=r.baseQueue,o=n.pending;if(o!==null){if(l!==null){var i=l.next;l.next=o.next,o.next=i}r.baseQueue=l=o,n.pending=null}if(l!==null){l=l.next,r=r.baseState;var u=i=o=null,s=l;do{var d=s.lane;if((On&d)===d)u!==null&&(u=u.next={lane:0,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null}),r=s.eagerReducer===e?s.eagerState:e(r,s.action);else{var y={lane:d,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null};u===null?(i=u=y,o=r):u=u.next=y,F.lanes|=d,Dn|=d}s=s.next}while(s!==null&&s!==l);u===null?o=r:u.next=i,oe(r,t.memoizedState)||(pe=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=u,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function Rn(e){var t=at(),n=t.queue;if(n===null)throw Error(v(311));n.lastRenderedReducer=e;var r=n.dispatch,l=n.pending,o=t.memoizedState;if(l!==null){n.pending=null;var i=l=l.next;do o=e(o,i.action),i=i.next;while(i!==l);oe(o,t.memoizedState)||(pe=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function Ys(e,t,n){var r=t._getVersion;r=r(t._source);var l=t._workInProgressVersionPrimary;if(l!==null?e=l===r:(e=e.mutableReadLanes,(e=(On&e)===e)&&(t._workInProgressVersionPrimary=r,Ut.push(t))),e)return n(t._source);throw Ut.push(t),Error(v(350))}function Xs(e,t,n,r){var l=Z;if(l===null)throw Error(v(349));var o=t._getVersion,i=o(t._source),u=Ln.current,s=u.useState(function(){return Ys(l,t,n)}),d=s[1],y=s[0];s=H;var x=e.memoizedState,h=x.refs,k=h.getSnapshot,E=x.source;x=x.subscribe;var S=F;return e.memoizedState={refs:h,source:t,subscribe:r},u.useEffect(function(){h.getSnapshot=n,h.setSnapshot=d;var c=o(t._source);if(!oe(i,c)){c=n(t._source),oe(y,c)||(d(c),c=Qe(S),l.mutableReadLanes|=c&l.pendingLanes),c=l.mutableReadLanes,l.entangledLanes|=c;for(var a=l.entanglements,f=c;0n?98:n,function(){e(!0)}),it(97<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Fe]=t,e[Nr]=r,ma(e,t,!1,!1),t.stateNode=e,i=Xl(n,r),n){case"dialog":z("cancel",e),z("close",e),l=r;break;case"iframe":case"object":case"embed":z("load",e),l=r;break;case"video":case"audio":for(l=0;ldi&&(t.flags|=64,o=!0,In(r,!1),t.lanes=33554432)}else{if(!o)if(e=Ar(i),e!==null){if(t.flags|=64,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),In(r,!0),r.tail===null&&r.tailMode==="hidden"&&!i.alternate&&!ge)return t=t.lastEffect=r.lastEffect,t!==null&&(t.nextEffect=null),null}else 2*Y()-r.renderingStartTime>di&&n!==1073741824&&(t.flags|=64,o=!0,In(r,!1),t.lanes=33554432);r.isBackwards?(i.sibling=t.child,t.child=i):(n=r.last,n!==null?n.sibling=i:t.child=i,r.last=i)}return r.tail!==null?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Y(),n.sibling=null,t=D.current,I(D,o?t&1|2:t&1),n):null;case 23:case 24:return gi(),e!==null&&e.memoizedState!==null!=(t.memoizedState!==null)&&r.mode!=="unstable-defer-without-hiding"&&(t.flags|=4),null}throw Error(v(156,t.tag))}function Dc(e){switch(e.tag){case 1:q(e.type)&&Lr();var t=e.flags;return t&4096?(e.flags=t&-4097|64,e):null;case 3:if(Ft(),R(J),R(Q),Wo(),t=e.flags,(t&64)!=0)throw Error(v(285));return e.flags=t&-4097|64,e;case 5:return Ao(e),null;case 13:return R(D),t=e.flags,t&4096?(e.flags=t&-4097|64,e):null;case 19:return R(D),null;case 4:return Ft(),null;case 10:return Fo(e),null;case 23:case 24:return gi(),null;default:return null}}function ni(e,t){try{var n="",r=t;do n+=vf(r),r=r.return;while(r);var l=n}catch(o){l=` -Error generating stack: `+o.message+` -`+o.stack}return{value:e,source:t,stack:l}}function ri(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Fc=typeof WeakMap=="function"?WeakMap:Map;function ya(e,t,n){n=Ae(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Jr||(Jr=!0,pi=r),ri(e,t)},n}function ga(e,t,n){n=Ae(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var l=t.value;n.payload=function(){return ri(e,t),r(l)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(n.callback=function(){typeof r!="function"&&(ke===null?ke=new Set([this]):ke.add(this),ri(e,t));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}var Uc=typeof WeakSet=="function"?WeakSet:Set;function wa(e){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(n){Ke(e,n)}else t.current=null}function Vc(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(t.flags&256&&e!==null){var n=e.memoizedProps,r=e.memoizedState;e=t.stateNode,t=e.getSnapshotBeforeUpdate(t.elementType===t.type?n:de(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:t.flags&256&&No(t.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(v(163))}function Bc(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(t=n.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{if((e.tag&3)==3){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(t=n.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{var l=e;r=l.next,l=l.tag,(l&4)!=0&&(l&1)!=0&&(ja(n,e),Kc(n,e)),e=r}while(e!==t)}return;case 1:e=n.stateNode,n.flags&4&&(t===null?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:de(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),t=n.updateQueue,t!==null&&Is(n,t,e);return;case 3:if(t=n.updateQueue,t!==null){if(e=null,n.child!==null)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}Is(n,t,e)}return;case 5:e=n.stateNode,t===null&&n.flags&4&&vs(n.type,n.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:n.memoizedState===null&&(n=n.alternate,n!==null&&(n=n.memoizedState,n!==null&&(n=n.dehydrated,n!==null&&Ru(n))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(v(163))}function ka(e,t){for(var n=e;;){if(n.tag===5){var r=n.stateNode;if(t)r=r.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var l=n.memoizedProps.style;l=l!=null&&l.hasOwnProperty("display")?l.display:null,r.style.display=vu("display",l)}}else if(n.tag===6)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((n.tag!==23&&n.tag!==24||n.memoizedState===null||n===e)&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function Sa(e,t){if(ot&&typeof ot.onCommitFiberUnmount=="function")try{ot.onCommitFiberUnmount(Oo,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(e=t.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var n=e=e.next;do{var r=n,l=r.destroy;if(r=r.tag,l!==void 0)if((r&4)!=0)ja(t,n);else{r=t;try{l()}catch(o){Ke(r,o)}}n=n.next}while(n!==e)}break;case 1:if(wa(t),e=t.stateNode,typeof e.componentWillUnmount=="function")try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){Ke(t,o)}break;case 5:wa(t);break;case 4:Ca(e,t)}}function Ea(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function _a(e){return e.tag===5||e.tag===3||e.tag===4}function xa(e){e:{for(var t=e.return;t!==null;){if(_a(t))break e;t=t.return}throw Error(v(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:t=t.containerInfo,r=!0;break;case 4:t=t.containerInfo,r=!0;break;default:throw Error(v(161))}n.flags&16&&(nn(t,""),n.flags&=-17);e:t:for(n=e;;){for(;n.sibling===null;){if(n.return===null||_a(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue t;n.child.return=n,n=n.child}if(!(n.flags&2)){n=n.stateNode;break e}}r?li(e,n,t):oi(e,n,t)}function li(e,t,n){var r=e.tag,l=r===5||r===6;if(l)e=l?e.stateNode:e.stateNode.instance,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Cr));else if(r!==4&&(e=e.child,e!==null))for(li(e,t,n),e=e.sibling;e!==null;)li(e,t,n),e=e.sibling}function oi(e,t,n){var r=e.tag,l=r===5||r===6;if(l)e=l?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(oi(e,t,n),e=e.sibling;e!==null;)oi(e,t,n),e=e.sibling}function Ca(e,t){for(var n=t,r=!1,l,o;;){if(!r){r=n.return;e:for(;;){if(r===null)throw Error(v(160));switch(l=r.stateNode,r.tag){case 5:o=!1;break e;case 3:l=l.containerInfo,o=!0;break e;case 4:l=l.containerInfo,o=!0;break e}r=r.return}r=!0}if(n.tag===5||n.tag===6){e:for(var i=e,u=n,s=u;;)if(Sa(i,s),s.child!==null&&s.tag!==4)s.child.return=s,s=s.child;else{if(s===u)break e;for(;s.sibling===null;){if(s.return===null||s.return===u)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}o?(i=l,u=n.stateNode,i.nodeType===8?i.parentNode.removeChild(u):i.removeChild(u)):l.removeChild(n.stateNode)}else if(n.tag===4){if(n.child!==null){l=n.stateNode.containerInfo,o=!0,n.child.return=n,n=n.child;continue}}else if(Sa(e,n),n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return,n.tag===4&&(r=!1)}n.sibling.return=n.return,n=n.sibling}}function ii(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var r=n=n.next;do(r.tag&3)==3&&(e=r.destroy,r.destroy=void 0,e!==void 0&&e()),r=r.next;while(r!==n)}return;case 1:return;case 5:if(n=t.stateNode,n!=null){r=t.memoizedProps;var l=e!==null?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,o!==null){for(n[Nr]=r,e==="input"&&r.type==="radio"&&r.name!=null&&au(n,r),Xl(e,l),t=Xl(e,r),l=0;ll&&(l=i),n&=~o}if(n=l,n=Y()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Hc(n/1960))-n,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}$!==5&&($=2),s=ni(s,u),h=i;do{switch(h.tag){case 3:o=s,h.flags|=4096,t&=-t,h.lanes|=t;var C=ya(h,o,t);js(h,C);break e;case 1:o=s;var w=h.type,P=h.stateNode;if((h.flags&64)==0&&(typeof w.getDerivedStateFromError=="function"||P!==null&&typeof P.componentDidCatch=="function"&&(ke===null||!ke.has(P)))){h.flags|=4096,t&=-t,h.lanes|=t;var T=ga(h,o,t);js(h,T);break e}}h=h.return}while(h!==null)}Ra(n)}catch(N){t=N,V===n&&n!==null&&(V=n=n.return);continue}break}while(1)}function Ma(){var e=Gr.current;return Gr.current=Xr,e===null?Xr:e}function An(e,t){var n=_;_|=16;var r=Ma();Z===e&&K===t||$t(e,t);do try{Wc();break}catch(l){Oa(e,l)}while(1);if(Do(),_=n,Gr.current=r,V!==null)throw Error(v(261));return Z=null,K=0,$}function Wc(){for(;V!==null;)za(V)}function Qc(){for(;V!==null&&!Pc();)za(V)}function za(e){var t=Da(e.alternate,e,ft);e.memoizedProps=e.pendingProps,t===null?Ra(e):V=t,ui.current=null}function Ra(e){var t=e;do{var n=t.alternate;if(e=t.return,(t.flags&2048)==0){if(n=Ic(n,t,ft),n!==null){V=n;return}if(n=t,n.tag!==24&&n.tag!==23||n.memoizedState===null||(ft&1073741824)!=0||(n.mode&4)==0){for(var r=0,l=n.child;l!==null;)r|=l.lanes|l.childLanes,l=l.sibling;n.childLanes=r}e!==null&&(e.flags&2048)==0&&(e.firstEffect===null&&(e.firstEffect=t.firstEffect),t.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1i&&(u=i,i=C,C=u),u=rs(f,C),o=rs(f,i),u&&o&&(m.rangeCount!==1||m.anchorNode!==u.node||m.anchorOffset!==u.offset||m.focusNode!==o.node||m.focusOffset!==o.offset)&&(p=p.createRange(),p.setStart(u.node,u.offset),m.removeAllRanges(),C>i?(m.addRange(p),m.extend(o.node,o.offset)):(p.setEnd(o.node,o.offset),m.addRange(p)))))),p=[],m=f;m=m.parentNode;)m.nodeType===1&&p.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;fY()-ci?$t(e,0):ai|=n),se(e,t)}function Jc(e,t){var n=e.stateNode;n!==null&&n.delete(t),t=0,t===0&&(t=e.mode,(t&2)==0?t=1:(t&4)==0?t=jt()===99?1:2:(Ne===0&&(Ne=Vt),t=xt(62914560&~Ne),t===0&&(t=4194304))),n=ne(),e=tl(e,t),e!==null&&(mr(e,t,n),se(e,n))}var Da;Da=function(e,t,n){var r=t.lanes;if(e!==null)if(e.memoizedProps!==t.pendingProps||J.current)pe=!0;else if((n&r)!=0)pe=(e.flags&16384)!=0;else{switch(pe=!1,t.tag){case 3:ua(t),$o();break;case 5:Hs(t);break;case 1:q(t.type)&&Or(t);break;case 4:Bo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var l=t.type._context;I(Rr,l._currentValue),l._currentValue=r;break;case 13:if(t.memoizedState!==null)return(n&t.child.childLanes)!=0?sa(e,t,n):(I(D,D.current&1),t=Ce(e,t,n),t!==null?t.sibling:null);I(D,D.current&1);break;case 19:if(r=(n&t.childLanes)!=0,(e.flags&64)!=0){if(r)return pa(e,t,n);t.flags|=64}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),I(D,D.current),r)break;return null;case 23:case 24:return t.lanes=0,Jo(e,t,n)}return Ce(e,t,n)}else pe=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,l=Rt(t,Q.current),Dt(t,n),l=Yo(null,t,r,e,l,n),t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,q(r)){var o=!0;Or(t)}else o=!1;t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Uo(t);var i=r.getDerivedStateFromProps;typeof i=="function"&&Dr(t,r,i,e),l.updater=Fr,t.stateNode=l,l._reactInternals=t,Vo(t,r,e,n),t=bo(null,t,r,!0,o,n)}else t.tag=0,ee(null,t,l,n),t=t.child;return t;case 16:l=t.elementType;e:{switch(e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=l._init,l=o(l._payload),t.type=l,o=t.tag=bc(l),e=de(l,e),o){case 0:t=qo(null,t,l,e,n);break e;case 1:t=ia(null,t,l,e,n);break e;case 11:t=na(null,t,l,e,n);break e;case 14:t=ra(null,t,l,de(l.type,e),r,n);break e}throw Error(v(306,l,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:de(r,l),qo(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:de(r,l),ia(e,t,r,l,n);case 3:if(ua(t),r=t.updateQueue,e===null||r===null)throw Error(v(282));if(r=t.pendingProps,l=t.memoizedState,l=l!==null?l.element:null,Rs(e,t),xn(t,r,null,n),r=t.memoizedState.element,r===l)$o(),t=Ce(e,t,n);else{if(l=t.stateNode,(o=l.hydrate)&&($e=Lt(t.stateNode.containerInfo.firstChild),xe=t,o=ge=!0),o){if(e=l.mutableSourceEagerHydrationData,e!=null)for(l=0;l{"use strict";function Ba(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ba)}catch(e){console.error(e)}}Ba(),Aa.exports=Va()});var Wa=ul(Xn()),Qa=ul(Ha());var $a=ul(Xn());function Pi(){return $a.default.createElement("div",null,"Hello World!")}Qa.default.render(Wa.default.createElement(Pi,null),document.getElementById("root")); -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -/** @license React v0.20.2 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license React v17.0.2 - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license React v17.0.2 - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -//# sourceMappingURL=index.js.map diff --git a/ui-esbuild/public/index.js.map b/ui-esbuild/public/index.js.map deleted file mode 100644 index f9e4b3d2bd..0000000000 --- a/ui-esbuild/public/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../node_modules/object-assign/index.js", "../node_modules/react/cjs/react.production.min.js", "../node_modules/react/index.js", "../node_modules/scheduler/cjs/scheduler.production.min.js", "../node_modules/scheduler/index.js", "../node_modules/react-dom/cjs/react-dom.production.min.js", "../node_modules/react-dom/index.js", "../src/index.tsx", "../src/App.tsx"], - "sourcesContent": ["/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n", "/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e, document.getElementById('root'))\r\n", "import React from 'react'\r\nimport './style.css'\r\n\r\nexport default function App() {\r\n return
Hello World!
\r\n}\r\n"], - "mappings": "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", - "names": [] -} diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index 22a05c4233..c666b5de38 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -1,6 +1,13 @@ import React from 'react' import './style.css' +import HelloCSS from './lib/components/HelloCSS' + export default function App() { - return
Hello World!
+ // return
Hello World!
+ return ( +
+ +
+ ) } diff --git a/ui-esbuild/src/lib/components/HelloCSS/index.tsx b/ui-esbuild/src/lib/components/HelloCSS/index.tsx new file mode 100644 index 0000000000..6ca590db02 --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloCSS/index.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import './style.css' + +export default function HelloCSS() { + return ( +
+

HelloCSS

+
+ ) +} diff --git a/ui-esbuild/src/lib/components/HelloCSS/style.css b/ui-esbuild/src/lib/components/HelloCSS/style.css new file mode 100644 index 0000000000..763022cfad --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloCSS/style.css @@ -0,0 +1,7 @@ +.hello-css-container { + text-align: center; +} + +.hello-css-container h1 { + color: skyblue; +} From 4acb3e9c5cebf9c31e5533148a2c5aa2ffb05bcb Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 12:45:39 +0800 Subject: [PATCH 005/100] compile less --- ui-esbuild/builder.js | 15 +- ui-esbuild/package.json | 2 + ui-esbuild/src/App.tsx | 3 +- .../src/lib/components/HelloLess/index.tsx | 10 + .../src/lib/components/HelloLess/style.less | 6 + ui-esbuild/yarn.lock | 581 +++++++++++++++++- 6 files changed, 592 insertions(+), 25 deletions(-) create mode 100644 ui-esbuild/src/lib/components/HelloLess/index.tsx create mode 100644 ui-esbuild/src/lib/components/HelloLess/style.less diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index 4db3d2b6c1..315b9fd90a 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -2,6 +2,7 @@ const { start } = require('live-server') const { watch } = require('chokidar') const { build } = require('esbuild') const fs = require('fs') +const postCssPlugin = require('esbuild-plugin-postcss2').default /** * Live Server Params @@ -34,13 +35,25 @@ const buildParams = { bundle: true, sourcemap: true, logLevel: 'error', - incremental: true + incremental: true, + plugins: [ + postCssPlugin({ + // lessOptions: { + // javascriptEnabled: true + // } + }) + ] } ;(async () => { const builder = await build(buildParams) + // TODO - refine fs.copyFileSync('./public/index.html', './dist/index.html') + fs.copyFileSync('./public/favicon.ico', './dist/favicon.ico') + fs.copyFileSync('./public/manifest.json', './dist/manifest.json') + fs.copyFileSync('./public/logo192.png', './dist/logo192.png') + fs.copyFileSync('./public/logo512.png', './dist/logo512.png') watch('src/**/*.{ts,tsx}').on('all', () => { builder.rebuild() diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json index d9f58f31af..dfe5f678d6 100644 --- a/ui-esbuild/package.json +++ b/ui-esbuild/package.json @@ -21,6 +21,7 @@ "@typescript-eslint/parser": "^4.31.0", "chokidar": "^3.5.2", "esbuild": "^0.12.26", + "esbuild-plugin-postcss2": "^0.1.0", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", "eslint-config-prettier": "^8.3.0", @@ -29,6 +30,7 @@ "eslint-plugin-react": "^7.25.1", "eslint-plugin-react-hooks": "^4.2.0", "husky": "^7.0.2", + "less": "^4.1.2", "lint-staged": "^11.1.2", "live-server": "^1.2.1", "prettier": "^2.4.0", diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index c666b5de38..7ee035e01c 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -2,12 +2,13 @@ import React from 'react' import './style.css' import HelloCSS from './lib/components/HelloCSS' +import HelloLess from './lib/components/HelloLess' export default function App() { - // return
Hello World!
return (
+
) } diff --git a/ui-esbuild/src/lib/components/HelloLess/index.tsx b/ui-esbuild/src/lib/components/HelloLess/index.tsx new file mode 100644 index 0000000000..7880944a70 --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloLess/index.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import './style.less' + +export default function HelloLess() { + return ( +
+

HelloLess

+
+ ) +} diff --git a/ui-esbuild/src/lib/components/HelloLess/style.less b/ui-esbuild/src/lib/components/HelloLess/style.less new file mode 100644 index 0000000000..83f99babf6 --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloLess/style.less @@ -0,0 +1,6 @@ +.hello-less-container { + text-align: center; + h1 { + color: slateblue; + } +} diff --git a/ui-esbuild/yarn.lock b/ui-esbuild/yarn.lock index 8552b8827f..0cb86f8393 100644 --- a/ui-esbuild/yarn.lock +++ b/ui-esbuild/yarn.lock @@ -410,11 +410,28 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^10.2.5: + version "10.4.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" + integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== + dependencies: + browserslist "^4.17.5" + caniuse-lite "^1.0.30001272" + fraction.js "^4.1.1" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.1.0" + axe-core@^4.0.2: version "4.3.3" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325" @@ -460,6 +477,11 @@ bcryptjs@^2.3.0: resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -508,6 +530,17 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +browserslist@^4.17.5: + version "4.18.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" + integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== + dependencies: + caniuse-lite "^1.0.30001280" + electron-to-chromium "^1.3.896" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -536,6 +569,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001280: + version "1.0.30001280" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz#066a506046ba4be34cde5f74a08db7a396718fb7" + integrity sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA== + chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -553,6 +591,21 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: ansi-styles "^4.1.0" supports-color "^7.1.0" +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chokidar@^2.0.4: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -572,21 +625,6 @@ chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -689,6 +727,13 @@ connect@^3.6.6: parseurl "~1.3.3" utils-merge "1.0.1" +copy-anything@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" + integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== + dependencies: + is-what "^3.12.0" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -732,11 +777,33 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + csstype@^3.0.2: version "3.0.8" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== +cwd@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" + integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= + dependencies: + find-pkg "^0.1.2" + fs-exists-sync "^0.1.0" + damerau-levenshtein@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" @@ -749,7 +816,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.2.7: +debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -763,6 +830,13 @@ debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -848,6 +922,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.3.896: + version "1.3.898" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.898.tgz#0bd4090bf7c7003cb9bd31c4223a9f6aa1aab9dc" + integrity sha512-dxEsaHy9Ter268LO7P8uWomuChbyML4zZk5F9+UZSozFRS7ggC5cQ8fPIM8Pec+6uWGdujuDagQhIbqjohUK2w== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -858,6 +937,11 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -870,6 +954,13 @@ enquirer@^2.3.5, enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -910,11 +1001,31 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +esbuild-plugin-postcss2@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/esbuild-plugin-postcss2/-/esbuild-plugin-postcss2-0.1.0.tgz#0426f0e5b962462cc68b2d3f2ac74b1db04597a8" + integrity sha512-dOmmjmioFfVIqSMuJSBkQkvmgyYqkx2Qq5NAdrTlvKuygKEpz5boJNduOgiyuQ2LVHcbeAUA8wpckYgSgIQG9w== + dependencies: + autoprefixer "^10.2.5" + fs-extra "^9.1.0" + less "^4.x" + postcss "8.x" + postcss-modules "^4.0.0" + resolve-file "^0.3.0" + sass "^1.x" + stylus "^0.x" + tmp "^0.2.1" + esbuild@^0.12.26: version "0.12.26" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.26.tgz#35f2d58ac3fa4629df24aa4d6fd72feb5522e94b" integrity sha512-YmTkhPKjvTJ+G5e96NyhGf69bP+hzO0DscqaVJTi5GM34uaD4Ecj7omu5lJO+NrxCUBRhy2chONLK1h/2LwoXA== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1198,6 +1309,20 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= + dependencies: + os-homedir "^1.0.1" + +expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1309,6 +1434,21 @@ finalhandler@1.1.2: statuses "~1.5.0" unpipe "~1.0.0" +find-file-up@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" + integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= + dependencies: + fs-exists-sync "^0.1.0" + resolve-dir "^0.1.0" + +find-pkg@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" + integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= + dependencies: + find-file-up "^0.1.2" + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1334,6 +1474,11 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +fraction.js@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" + integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -1351,6 +1496,21 @@ from@~0: resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1379,6 +1539,13 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== + dependencies: + loader-utils "^1.1.0" + get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -1438,6 +1605,36 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + globals@^13.6.0, globals@^13.9.0: version "13.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" @@ -1457,7 +1654,7 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -1527,6 +1724,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -1578,6 +1782,23 @@ husky@^7.0.2: resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.2.tgz#21900da0f30199acca43a46c043c4ad84ae88dff" integrity sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg== +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -1588,6 +1809,11 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -1614,7 +1840,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1624,6 +1850,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -1846,6 +2077,16 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-what@^3.12.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -1923,6 +2164,15 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" @@ -1967,6 +2217,30 @@ language-tags@^1.0.5: dependencies: language-subtag-registry "~0.3.2" +lazy-cache@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= + dependencies: + set-getter "^0.1.0" + +less@^4.1.2, less@^4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" + integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^2.5.2" + source-map "~0.6.0" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -2042,6 +2316,15 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +loader-utils@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -2050,6 +2333,11 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -2097,6 +2385,14 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -2163,7 +2459,7 @@ mime-types@~2.1.17, mime-types@~2.1.24: dependencies: mime-db "1.49.0" -mime@1.6.0: +mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -2193,6 +2489,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + morgan@^1.9.1: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -2229,6 +2530,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -2251,11 +2557,25 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +needle@^2.5.2: + version "2.9.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -2278,6 +2598,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -2406,6 +2731,11 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -2457,6 +2787,16 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -2511,6 +2851,11 @@ pause-stream@0.0.11: dependencies: through "~2.3" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -2521,6 +2866,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -2547,6 +2897,70 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-modules@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.2.2.tgz#5e7777c5a8964ea176919d90b2e54ef891321ce5" + integrity sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg== + dependencies: + generic-names "^2.0.1" + icss-replace-symbols "^1.1.0" + lodash.camelcase "^4.3.0" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + string-hash "^1.1.1" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss@8.x: + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^0.6.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -2581,6 +2995,11 @@ proxy-middleware@latest: resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" integrity sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY= +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -2710,6 +3129,27 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve-file@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/resolve-file/-/resolve-file-0.3.0.tgz#11e1fb464566d3a7c500cb7e9481e8f0b00a14ef" + integrity sha1-EeH7RkVm06fFAMt+lIHo8LAKFO8= + dependencies: + cwd "^0.10.0" + expand-tilde "^2.0.2" + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + homedir-polyfill "^1.0.1" + lazy-cache "^2.0.2" + resolve "^1.2.0" + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2720,7 +3160,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.20.0: +resolve@^1.10.0, resolve@^1.2.0, resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -2754,7 +3194,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -2792,6 +3232,23 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.x: + version "1.43.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f" + integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg== + dependencies: + chokidar ">=3.0.0 <4.0.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" @@ -2805,11 +3262,16 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -"semver@2 || 3 || 4 || 5": +"semver@2 || 3 || 4 || 5", semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@^7.2.1, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -2849,6 +3311,13 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" +set-getter@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.1.tgz#a3110e1b461d31a9cfc8c5c9ee2e9737ad447102" + integrity sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw== + dependencies: + to-object-path "^0.3.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -2948,6 +3417,11 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -2959,6 +3433,14 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -2969,6 +3451,16 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -3039,6 +3531,11 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" @@ -3116,6 +3613,20 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +stylus@^0.x: + version "0.55.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" + integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== + dependencies: + css "^3.0.0" + debug "~3.1.0" + glob "^7.1.6" + mkdirp "~1.0.4" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.3.0" + source-map "^0.7.3" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -3152,6 +3663,13 @@ through@2, through@^2.3.8, through@~2.3, through@~2.3.1: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -3204,6 +3722,11 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -3253,6 +3776,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unix-crypt-td-js@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" @@ -3293,7 +3821,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -3351,6 +3879,13 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which@^1.2.12: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" From 7ac21dcaba3a3b1d50e8a0ce4e294fa706cb34b9 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 13:02:59 +0800 Subject: [PATCH 006/100] test build prod --- ui-esbuild/builder-prod.js | 24 ++++++++++++++++++++++++ ui-esbuild/package.json | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 ui-esbuild/builder-prod.js diff --git a/ui-esbuild/builder-prod.js b/ui-esbuild/builder-prod.js new file mode 100644 index 0000000000..0e7219e834 --- /dev/null +++ b/ui-esbuild/builder-prod.js @@ -0,0 +1,24 @@ +const { build } = require('esbuild') +const postCssPlugin = require('esbuild-plugin-postcss2').default + +const buildParams = { + color: true, + entryPoints: ['src/index.tsx'], + loader: { '.ts': 'tsx' }, + outdir: 'dist', + minify: true, + format: 'cjs', + bundle: true, + sourcemap: true, + logLevel: 'error', + incremental: true, + plugins: [ + postCssPlugin({ + // lessOptions: { + // javascriptEnabled: true + // } + }) + ] +} + +build(buildParams).catch(() => process.exit(1)) diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json index dfe5f678d6..61ade97460 100644 --- a/ui-esbuild/package.json +++ b/ui-esbuild/package.json @@ -6,7 +6,8 @@ "pre-commit": "lint-staged", "lint": "eslint \"src/**/*.{ts,tsx}\" --max-warnings=0", "start": "node builder.js", - "build": "esbuild src/index.tsx --minify --format=cjs --outdir=public --sourcemap --bundle" + "build": "esbuild src/index.tsx --minify --format=cjs --outdir=public --sourcemap --bundle", + "prod": "node builder-prod.js" }, "dependencies": { "react": "^17.0.2", From c5e60e572493a05856e7bd2fe2dfa4fe69595521 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 13:08:11 +0800 Subject: [PATCH 007/100] compile module less --- ui-esbuild/src/App.tsx | 2 ++ .../src/lib/components/HelloModuleLess/index.tsx | 10 ++++++++++ .../lib/components/HelloModuleLess/style.module.less | 6 ++++++ ui-esbuild/src/react-app-env.d.ts | 11 +++++++++++ 4 files changed, 29 insertions(+) create mode 100644 ui-esbuild/src/lib/components/HelloModuleLess/index.tsx create mode 100644 ui-esbuild/src/lib/components/HelloModuleLess/style.module.less create mode 100644 ui-esbuild/src/react-app-env.d.ts diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index 7ee035e01c..20ce734a29 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -3,12 +3,14 @@ import './style.css' import HelloCSS from './lib/components/HelloCSS' import HelloLess from './lib/components/HelloLess' +import HelloMLess from './lib/components/HelloModuleLess' export default function App() { return (
+
) } diff --git a/ui-esbuild/src/lib/components/HelloModuleLess/index.tsx b/ui-esbuild/src/lib/components/HelloModuleLess/index.tsx new file mode 100644 index 0000000000..815474ac48 --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloModuleLess/index.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import styles from './style.module.less' + +export default function HelloMLess() { + return ( +
+

Hello Module Less

+
+ ) +} diff --git a/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less b/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less new file mode 100644 index 0000000000..b19d36531a --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less @@ -0,0 +1,6 @@ +.hello-mless-container { + text-align: center; + h1 { + color: blueviolet; + } +} diff --git a/ui-esbuild/src/react-app-env.d.ts b/ui-esbuild/src/react-app-env.d.ts new file mode 100644 index 0000000000..fd6e7f08fc --- /dev/null +++ b/ui-esbuild/src/react-app-env.d.ts @@ -0,0 +1,11 @@ +/// + +declare module '*.module.css' { + const classes: { readonly [key: string]: string } + export default classes +} + +declare module '*.module.less' { + const classes: { readonly [key: string]: string } + export default classes +} From cc6c61573f0d3a3d9b9cecd331990c513f14cffb Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 16:50:44 +0800 Subject: [PATCH 008/100] refine build --- ui-esbuild/builder-prod.js | 2 +- ui-esbuild/builder.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ui-esbuild/builder-prod.js b/ui-esbuild/builder-prod.js index 0e7219e834..c40e7a08ab 100644 --- a/ui-esbuild/builder-prod.js +++ b/ui-esbuild/builder-prod.js @@ -21,4 +21,4 @@ const buildParams = { ] } -build(buildParams).catch(() => process.exit(1)) +build(buildParams).finally(() => process.exit(0)) diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index 315b9fd90a..9b8e69ec5e 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -45,7 +45,7 @@ const buildParams = { ] } -;(async () => { +async function main() { const builder = await build(buildParams) // TODO - refine @@ -60,4 +60,6 @@ const buildParams = { }) start(serverParams) -})() +} + +main() From bc8295e383549e37a6a9e15eb501895e0bfa69fd Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 17:07:36 +0800 Subject: [PATCH 009/100] test less variable --- ui-esbuild/builder.js | 2 +- ui-esbuild/src/lib/components/HelloLess/style.less | 4 ++++ .../src/lib/components/HelloModuleLess/style.module.less | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index 9b8e69ec5e..ddee6880f4 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -55,7 +55,7 @@ async function main() { fs.copyFileSync('./public/logo192.png', './dist/logo192.png') fs.copyFileSync('./public/logo512.png', './dist/logo512.png') - watch('src/**/*.{ts,tsx}').on('all', () => { + watch('src/**/*').on('all', () => { builder.rebuild() }) diff --git a/ui-esbuild/src/lib/components/HelloLess/style.less b/ui-esbuild/src/lib/components/HelloLess/style.less index 83f99babf6..2a7f9772fd 100644 --- a/ui-esbuild/src/lib/components/HelloLess/style.less +++ b/ui-esbuild/src/lib/components/HelloLess/style.less @@ -1,5 +1,9 @@ +@padding-page: 48px; + .hello-less-container { text-align: center; + background-color: oldlace; + padding: @padding-page; h1 { color: slateblue; } diff --git a/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less b/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less index b19d36531a..ee3ac6c2ef 100644 --- a/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less +++ b/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less @@ -1,5 +1,8 @@ +@border-width: 2px; + .hello-mless-container { text-align: center; + border: @border-width solid yellowgreen; h1 { color: blueviolet; } From b53c6054336f952cf0591476eae5ac9443d492ab Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 17:22:12 +0800 Subject: [PATCH 010/100] compile scss --- ui-esbuild/src/App.tsx | 2 ++ ui-esbuild/src/lib/components/HelloSCSS/index.tsx | 10 ++++++++++ ui-esbuild/src/lib/components/HelloSCSS/style.scss | 11 +++++++++++ 3 files changed, 23 insertions(+) create mode 100644 ui-esbuild/src/lib/components/HelloSCSS/index.tsx create mode 100644 ui-esbuild/src/lib/components/HelloSCSS/style.scss diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index 20ce734a29..de6411602b 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -4,6 +4,7 @@ import './style.css' import HelloCSS from './lib/components/HelloCSS' import HelloLess from './lib/components/HelloLess' import HelloMLess from './lib/components/HelloModuleLess' +import HelloSCSS from './lib/components/HelloSCSS' export default function App() { return ( @@ -11,6 +12,7 @@ export default function App() { + ) } diff --git a/ui-esbuild/src/lib/components/HelloSCSS/index.tsx b/ui-esbuild/src/lib/components/HelloSCSS/index.tsx new file mode 100644 index 0000000000..151b0c5350 --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloSCSS/index.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import './style.scss' + +export default function HelloSCSS() { + return ( +
+

HelloSCSS

+
+ ) +} diff --git a/ui-esbuild/src/lib/components/HelloSCSS/style.scss b/ui-esbuild/src/lib/components/HelloSCSS/style.scss new file mode 100644 index 0000000000..b791397e55 --- /dev/null +++ b/ui-esbuild/src/lib/components/HelloSCSS/style.scss @@ -0,0 +1,11 @@ +$base-color: #c6538c; +$border-dark: rgba($base-color, 0.88); + +.hello-scss-container { + text-align: center; + background-color: cornsilk; + border: 1px solid $border-dark; + h1 { + color: cadetblue; + } +} From 56238439aad13af187666944587699c500c9471b Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 17:25:04 +0800 Subject: [PATCH 011/100] rename --- ui-esbuild/src/App.tsx | 8 ++++---- .../{components => test-components}/HelloCSS/index.tsx | 0 .../{components => test-components}/HelloCSS/style.css | 0 .../{components => test-components}/HelloLess/index.tsx | 0 .../{components => test-components}/HelloLess/style.less | 0 .../HelloModuleLess/index.tsx | 0 .../HelloModuleLess/style.module.less | 0 .../{components => test-components}/HelloSCSS/index.tsx | 0 .../{components => test-components}/HelloSCSS/style.scss | 0 9 files changed, 4 insertions(+), 4 deletions(-) rename ui-esbuild/src/lib/{components => test-components}/HelloCSS/index.tsx (100%) rename ui-esbuild/src/lib/{components => test-components}/HelloCSS/style.css (100%) rename ui-esbuild/src/lib/{components => test-components}/HelloLess/index.tsx (100%) rename ui-esbuild/src/lib/{components => test-components}/HelloLess/style.less (100%) rename ui-esbuild/src/lib/{components => test-components}/HelloModuleLess/index.tsx (100%) rename ui-esbuild/src/lib/{components => test-components}/HelloModuleLess/style.module.less (100%) rename ui-esbuild/src/lib/{components => test-components}/HelloSCSS/index.tsx (100%) rename ui-esbuild/src/lib/{components => test-components}/HelloSCSS/style.scss (100%) diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index de6411602b..f462539788 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -1,10 +1,10 @@ import React from 'react' import './style.css' -import HelloCSS from './lib/components/HelloCSS' -import HelloLess from './lib/components/HelloLess' -import HelloMLess from './lib/components/HelloModuleLess' -import HelloSCSS from './lib/components/HelloSCSS' +import HelloCSS from './lib/test-components/HelloCSS' +import HelloLess from './lib/test-components/HelloLess' +import HelloMLess from './lib/test-components/HelloModuleLess' +import HelloSCSS from './lib/test-components/HelloSCSS' export default function App() { return ( diff --git a/ui-esbuild/src/lib/components/HelloCSS/index.tsx b/ui-esbuild/src/lib/test-components/HelloCSS/index.tsx similarity index 100% rename from ui-esbuild/src/lib/components/HelloCSS/index.tsx rename to ui-esbuild/src/lib/test-components/HelloCSS/index.tsx diff --git a/ui-esbuild/src/lib/components/HelloCSS/style.css b/ui-esbuild/src/lib/test-components/HelloCSS/style.css similarity index 100% rename from ui-esbuild/src/lib/components/HelloCSS/style.css rename to ui-esbuild/src/lib/test-components/HelloCSS/style.css diff --git a/ui-esbuild/src/lib/components/HelloLess/index.tsx b/ui-esbuild/src/lib/test-components/HelloLess/index.tsx similarity index 100% rename from ui-esbuild/src/lib/components/HelloLess/index.tsx rename to ui-esbuild/src/lib/test-components/HelloLess/index.tsx diff --git a/ui-esbuild/src/lib/components/HelloLess/style.less b/ui-esbuild/src/lib/test-components/HelloLess/style.less similarity index 100% rename from ui-esbuild/src/lib/components/HelloLess/style.less rename to ui-esbuild/src/lib/test-components/HelloLess/style.less diff --git a/ui-esbuild/src/lib/components/HelloModuleLess/index.tsx b/ui-esbuild/src/lib/test-components/HelloModuleLess/index.tsx similarity index 100% rename from ui-esbuild/src/lib/components/HelloModuleLess/index.tsx rename to ui-esbuild/src/lib/test-components/HelloModuleLess/index.tsx diff --git a/ui-esbuild/src/lib/components/HelloModuleLess/style.module.less b/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less similarity index 100% rename from ui-esbuild/src/lib/components/HelloModuleLess/style.module.less rename to ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less diff --git a/ui-esbuild/src/lib/components/HelloSCSS/index.tsx b/ui-esbuild/src/lib/test-components/HelloSCSS/index.tsx similarity index 100% rename from ui-esbuild/src/lib/components/HelloSCSS/index.tsx rename to ui-esbuild/src/lib/test-components/HelloSCSS/index.tsx diff --git a/ui-esbuild/src/lib/components/HelloSCSS/style.scss b/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss similarity index 100% rename from ui-esbuild/src/lib/components/HelloSCSS/style.scss rename to ui-esbuild/src/lib/test-components/HelloSCSS/style.scss From 2f148fcd001e6647efce5bf487eb2a17b57a4820 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Tue, 16 Nov 2021 18:25:42 +0800 Subject: [PATCH 012/100] compile antd --- ui-esbuild/builder-prod.js | 6 +- ui-esbuild/builder.js | 30 +- ui-esbuild/package.json | 1 + ui-esbuild/src/App.tsx | 4 +- .../lib/test-components/HelloAntD/index.tsx | 15 + .../HelloAntD/style.module.less | 4 + ui-esbuild/src/{style.css => style.less} | 2 + ui-esbuild/yarn.lock | 534 +++++++++++++++++- 8 files changed, 587 insertions(+), 9 deletions(-) create mode 100644 ui-esbuild/src/lib/test-components/HelloAntD/index.tsx create mode 100644 ui-esbuild/src/lib/test-components/HelloAntD/style.module.less rename ui-esbuild/src/{style.css => style.less} (91%) diff --git a/ui-esbuild/builder-prod.js b/ui-esbuild/builder-prod.js index c40e7a08ab..5657bc0728 100644 --- a/ui-esbuild/builder-prod.js +++ b/ui-esbuild/builder-prod.js @@ -14,9 +14,9 @@ const buildParams = { incremental: true, plugins: [ postCssPlugin({ - // lessOptions: { - // javascriptEnabled: true - // } + lessOptions: { + javascriptEnabled: true + } }) ] } diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index ddee6880f4..b36dc14801 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -21,6 +21,27 @@ const serverParams = { // middleware: [function(req, res, next) { next(); }] // Takes an array of Connect-compatible middleware that are injected into the server middleware stack } +const lessModifyVars = { + // '@primary-color': '#4394fc', + '@primary-color': '#1DA57A', + '@body-background': '#fff', + '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', + '@tooltip-max-width': '500px' +} +const lessGlobalVars = { + '@padding-page': '48px', + '@gray-1': '#fff', + '@gray-2': '#fafafa', + '@gray-3': '#f5f5f5', + '@gray-4': '#f0f0f0', + '@gray-5': '#d9d9d9', + '@gray-6': '#bfbfbf', + '@gray-7': '#8c8c8c', + '@gray-8': '#595959', + '@gray-9': '#262626', + '@gray-10': '#000' +} + /** * ESBuild Params * @link https://esbuild.github.io/api/#build-api @@ -38,9 +59,12 @@ const buildParams = { incremental: true, plugins: [ postCssPlugin({ - // lessOptions: { - // javascriptEnabled: true - // } + lessOptions: { + // modifyVars: { '@primary-color': '#1DA57A' }, + modifyVars: lessModifyVars, + globalVars: lessGlobalVars, + javascriptEnabled: true + } }) ] } diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json index 61ade97460..6bfc473a7e 100644 --- a/ui-esbuild/package.json +++ b/ui-esbuild/package.json @@ -10,6 +10,7 @@ "prod": "node builder-prod.js" }, "dependencies": { + "antd": "^4.16.13", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index f462539788..607fdfee61 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -1,10 +1,11 @@ import React from 'react' -import './style.css' +import './style.less' import HelloCSS from './lib/test-components/HelloCSS' import HelloLess from './lib/test-components/HelloLess' import HelloMLess from './lib/test-components/HelloModuleLess' import HelloSCSS from './lib/test-components/HelloSCSS' +import HelloAntD from './lib/test-components/HelloAntD' export default function App() { return ( @@ -13,6 +14,7 @@ export default function App() { + ) } diff --git a/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx new file mode 100644 index 0000000000..8bee62a703 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx @@ -0,0 +1,15 @@ +import React from 'react' +import styles from './style.module.less' + +import { Button, Switch, Space } from 'antd' + +export default function HelloAntD() { + return ( +
+ + + + +
+ ) +} diff --git a/ui-esbuild/src/lib/test-components/HelloAntD/style.module.less b/ui-esbuild/src/lib/test-components/HelloAntD/style.module.less new file mode 100644 index 0000000000..36828b7854 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloAntD/style.module.less @@ -0,0 +1,4 @@ +.hello-antd-container { + text-align: center; + padding: 8px; +} diff --git a/ui-esbuild/src/style.css b/ui-esbuild/src/style.less similarity index 91% rename from ui-esbuild/src/style.css rename to ui-esbuild/src/style.less index 7323ae85c5..80148faf0d 100644 --- a/ui-esbuild/src/style.css +++ b/ui-esbuild/src/style.less @@ -1,3 +1,5 @@ +@import 'antd/dist/antd.less'; + body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', diff --git a/ui-esbuild/yarn.lock b/ui-esbuild/yarn.lock index 0cb86f8393..d9b25d9c34 100644 --- a/ui-esbuild/yarn.lock +++ b/ui-esbuild/yarn.lock @@ -2,6 +2,40 @@ # yarn lockfile v1 +"@ant-design/colors@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/icons-svg@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz#8630da8eb4471a4aabdaed7d1ff6a97dcb2cf05a" + integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== + +"@ant-design/icons@^4.6.3": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.7.0.tgz#8c3cbe0a556ba92af5dc7d1e70c0b25b5179af0f" + integrity sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-util "^5.9.4" + +"@ant-design/react-slick@~0.28.1": + version "0.28.4" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.28.4.tgz#8b296b87ad7c7ae877f2a527b81b7eebd9dd29a9" + integrity sha512-j9eAHTn7GxbXUFNknJoHS2ceAsqrQi2j8XykjZE1IXCD8kJF+t28EvhBLniDpbOsBk/3kjalnhriTfZcjBHNqg== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.21" + resize-observer-polyfill "^1.5.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -38,6 +72,13 @@ core-js-pure "^3.16.0" regenerator-runtime "^0.13.4" +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" + integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" @@ -45,6 +86,11 @@ dependencies: regenerator-runtime "^0.13.4" +"@ctrl/tinycolor@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz#c3c5ae543c897caa9c2a68630bed355be5f9990f" + integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -292,6 +338,53 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +antd@^4.16.13: + version "4.16.13" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.16.13.tgz#e9b9b4a590db28747aae1cab98981649a35880af" + integrity sha512-EMPD3fzKe7oayx9keD/GA1oKatcx7j5CGlkJj5eLS0/eEDDEkxVj3DFmKOPuHYt4BK7ltTzMFS+quSTmqUXPiw== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons" "^4.6.3" + "@ant-design/react-slick" "~0.28.1" + "@babel/runtime" "^7.12.5" + array-tree-filter "^2.1.0" + classnames "^2.2.6" + copy-to-clipboard "^3.2.0" + lodash "^4.17.21" + moment "^2.25.3" + rc-cascader "~1.4.0" + rc-checkbox "~2.3.0" + rc-collapse "~3.1.0" + rc-dialog "~8.6.0" + rc-drawer "~4.3.0" + rc-dropdown "~3.2.0" + rc-field-form "~1.20.0" + rc-image "~5.2.5" + rc-input-number "~7.1.0" + rc-mentions "~1.6.1" + rc-menu "~9.0.12" + rc-motion "^2.4.0" + rc-notification "~4.5.7" + rc-pagination "~3.1.9" + rc-picker "~2.5.10" + rc-progress "~3.1.0" + rc-rate "~2.9.0" + rc-resize-observer "^1.0.0" + rc-select "~12.1.6" + rc-slider "~9.7.1" + rc-steps "~4.1.0" + rc-switch "~3.2.0" + rc-table "~7.15.1" + rc-tabs "~11.10.0" + rc-textarea "~0.3.0" + rc-tooltip "~5.1.1" + rc-tree "~4.2.1" + rc-tree-select "~4.3.0" + rc-trigger "^5.2.10" + rc-upload "~4.3.0" + rc-util "^5.13.1" + scroll-into-view-if-needed "^2.2.25" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -361,6 +454,11 @@ array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: get-intrinsic "^1.1.1" is-string "^1.0.5" +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -410,6 +508,11 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +async-validator@^3.0.3: + version "3.5.2" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500" + integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" @@ -635,6 +738,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -707,6 +815,11 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -739,6 +852,13 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-to-clipboard@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" + integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== + dependencies: + toggle-selection "^1.0.6" + core-js-pure@^3.16.0: version "3.17.3" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.17.3.tgz#98ea3587188ab7ef4695db6518eeb71aec42604a" @@ -809,6 +929,16 @@ damerau-levenshtein@^1.0.6: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== +date-fns@2.x: + version "2.25.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.25.0.tgz#8c5c8f1d958be3809a9a03f4b742eba894fc5680" + integrity sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w== + +dayjs@1.x: + version "1.10.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" + integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -912,6 +1042,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-align@^1.7.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.2.tgz#0f8164ebd0c9c21b0c790310493cd855892acd4b" + integrity sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg== + duplexer@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -2157,6 +2292,13 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= + dependencies: + string-convert "^0.2.0" + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -2353,6 +2495,11 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -2371,7 +2518,7 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -2494,6 +2641,11 @@ mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +moment@^2.24.0, moment@^2.25.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + morgan@^1.9.1: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -3015,6 +3167,350 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +rc-align@^4.0.0: + version "4.0.11" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.11.tgz#8198c62db266bc1b8ef05e56c13275bf72628a5e" + integrity sha512-n9mQfIYQbbNTbefyQnRHZPWuTEwG1rY4a9yKlIWHSTbgwI+XUMGRYd0uJ5pE2UbrNX0WvnMBA1zJ3Lrecpra/A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + dom-align "^1.7.0" + lodash "^4.17.21" + rc-util "^5.3.0" + resize-observer-polyfill "^1.5.1" + +rc-cascader@~1.4.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.3.tgz#d91b0dcf8157b60ebe9ec3e58b4db054d5299464" + integrity sha512-Q4l9Mv8aaISJ+giVnM9IaXxDeMqHUGLvi4F+LksS6pHlaKlN4awop/L+IMjIXpL+ug/ojaCyv/ixcVopJYYCVA== + dependencies: + "@babel/runtime" "^7.12.5" + array-tree-filter "^2.1.0" + rc-trigger "^5.0.4" + rc-util "^5.0.1" + warning "^4.0.1" + +rc-checkbox@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.2.tgz#f91b3678c7edb2baa8121c9483c664fa6f0aefc1" + integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-collapse@~3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.1.2.tgz#76028a811b845d03d9460ccc409c7ea8ad09db14" + integrity sha512-HujcKq7mghk/gVKeI6EjzTbb8e19XUZpakrYazu1MblEZ3Hu3WBMSN4A3QmvbF6n1g7x6lUlZvsHZ5shABWYOQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.2.1" + shallowequal "^1.1.0" + +rc-dialog@~8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.6.0.tgz#3b228dac085de5eed8c6237f31162104687442e7" + integrity sha512-GSbkfqjqxpZC5/zc+8H332+q5l/DKUhpQr0vdX2uDsxo5K0PhvaMEVjyoJUTkZ3+JstEADQji1PVLVb/2bJeOQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.6.1" + +rc-drawer@~4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.3.1.tgz#356333a7af01b777abd685c96c2ce62efb44f3f3" + integrity sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.7.0" + +rc-dropdown@^3.2.0, rc-dropdown@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090" + integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-trigger "^5.0.4" + +rc-field-form@~1.20.0: + version "1.20.1" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.20.1.tgz#d1c51888107cf075b42704b7b575bef84c359291" + integrity sha512-f64KEZop7zSlrG4ef/PLlH12SLn6iHDQ3sTG+RfKBM45hikwV1i8qMf53xoX12NvXXWg1VwchggX/FSso4bWaA== + dependencies: + "@babel/runtime" "^7.8.4" + async-validator "^3.0.3" + rc-util "^5.8.0" + +rc-image@~5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-5.2.5.tgz#44e6ffc842626827960e7ab72e1c0d6f3a8ce440" + integrity sha512-qUfZjYIODxO0c8a8P5GeuclYXZjzW4hV/5hyo27XqSFo1DmTCs2HkVeQObkcIk5kNsJtgsj1KoPThVsSc/PXOw== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-dialog "~8.6.0" + rc-util "^5.0.6" + +rc-input-number@~7.1.0: + version "7.1.4" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-7.1.4.tgz#9d7410c91ff8dc6384d0233c20df278982989f9a" + integrity sha512-EG4iqkqyqzLRu/Dq+fw2od7nlgvXLEatE+J6uhi3HXE1qlM3C7L6a7o/hL9Ly9nimkES2IeQoj3Qda3I0izj3Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.9.8" + +rc-mentions@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.6.1.tgz#46035027d64aa33ef840ba0fbd411871e34617ae" + integrity sha512-LDzGI8jJVGnkhpTZxZuYBhMz3avcZZqPGejikchh97xPni/g4ht714Flh7DVvuzHQ+BoKHhIjobHnw1rcP8erg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-menu "^9.0.0" + rc-textarea "^0.3.0" + rc-trigger "^5.0.4" + rc-util "^5.0.1" + +rc-menu@^9.0.0, rc-menu@~9.0.12: + version "9.0.14" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.0.14.tgz#289bda4a2f6c5ebb3248e2e305d52cf0c73cb9d5" + integrity sha512-CIox5mZeLDAi32SlHrV7UeSjv7tmJJhwRyxQtZCKt351w3q59XlL4WMFOmtT9gwIfP9h0XoxdBZUMe/xzkp78A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.2.0" + rc-trigger "^5.1.2" + rc-util "^5.12.0" + shallowequal "^1.1.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0, rc-motion@^2.4.3: + version "2.4.4" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.4.tgz#e995d5fa24fc93065c24f714857cf2677d655bb0" + integrity sha512-ms7n1+/TZQBS0Ydd2Q5P4+wJTSOrhIrwNxLXCZpR7Fa3/oac7Yi803HDALc2hLAKaCTQtw9LmQeB58zcwOsqlQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.2.1" + +rc-notification@~4.5.7: + version "4.5.7" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.7.tgz#265e6e6a0c1a0fac63d6abd4d832eb8ff31522f1" + integrity sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.2.0" + rc-util "^5.0.1" + +rc-overflow@^1.0.0, rc-overflow@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.2.2.tgz#95b0222016c0cdbdc0db85f569c262e7706a5f22" + integrity sha512-X5kj9LDU1ue5wHkqvCprJWLKC+ZLs3p4He/oxjZ1Q4NKaqKBaYf5OdSzRSgh3WH8kSdrfU8LjvlbWnHgJOEkNQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.5.1" + +rc-pagination@~3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.11.tgz#ad6b0659c4966df494bb488630417c15261c4648" + integrity sha512-i0pUAVnhkpkvi2gunvHzSa97gj3m/m/pEC8K0mq9RqXnd3LrPipgViaca0WZtetfsew6lpV9ndnD4JGU208U1w== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-picker@~2.5.10: + version "2.5.19" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.19.tgz#73d07546fac3992f0bfabf2789654acada39e46f" + integrity sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + date-fns "2.x" + dayjs "1.x" + moment "^2.24.0" + rc-trigger "^5.0.4" + rc-util "^5.4.0" + shallowequal "^1.1.0" + +rc-progress@~3.1.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.4.tgz#66040d0fae7d8ced2b38588378eccb2864bad615" + integrity sha512-XBAif08eunHssGeIdxMXOmRQRULdHaDdIFENQ578CMb4dyewahmmfJRyab+hw4KH4XssEzzYOkAInTLS7JJG+Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + +rc-rate@~2.9.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.9.1.tgz#e43cb95c4eb90a2c1e0b16ec6614d8c43530a731" + integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.0.1.tgz#ccd0986543ff1bf49f8a581e8ac4bb714ed24dcd" + integrity sha512-OxO2mJI9e8610CAWBFfm52SPvWib0eNKjaSsRbbKHmLaJIxw944P+D61DlLJ/w2vuOjGNcalJu8VdqyNm/XCRg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.0" + resize-observer-polyfill "^1.5.1" + +rc-select@^12.0.0, rc-select@~12.1.6: + version "12.1.13" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-12.1.13.tgz#c33560ccb9339d30695b52458f55efc35af35273" + integrity sha512-cPI+aesP6dgCAaey4t4upDbEukJe+XN0DK6oO/6flcCX5o28o7KNZD7JAiVtC/6fCwqwI/kSs7S/43dvHmBl+A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.0.0" + rc-trigger "^5.0.4" + rc-util "^5.9.8" + rc-virtual-list "^3.2.0" + +rc-slider@~9.7.1: + version "9.7.4" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.4.tgz#430c860723bf6445ebf53517b550417a2f25eed1" + integrity sha512-pjLKLiDKiaL7/pNywfIBD+lDo5TtVo05KuIBSWEIoqu6FHh6IMWvthCiaODuYaVs3RLeF2nXOP5AjkD2Lt2Rwg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-tooltip "^5.0.1" + rc-util "^5.0.0" + shallowequal "^1.1.0" + +rc-steps@~4.1.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.4.tgz#0ba82db202d59ca52d0693dc9880dd145b19dc23" + integrity sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w== + dependencies: + "@babel/runtime" "^7.10.2" + classnames "^2.2.3" + rc-util "^5.0.1" + +rc-switch@~3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-3.2.2.tgz#d001f77f12664d52595b4f6fb425dd9e66fba8e8" + integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.1" + +rc-table@~7.15.1: + version "7.15.2" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.15.2.tgz#f6ab73b2cfb1c76f3cf9682c855561423c6b5b22" + integrity sha512-TAs7kCpIZwc2mtvD8CMrXSM6TqJDUsy0rUEV1YgRru33T8bjtAtc+9xW/KC1VWROJlHSpU0R0kXjFs9h/6+IzQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-resize-observer "^1.0.0" + rc-util "^5.13.0" + shallowequal "^1.1.0" + +rc-tabs@~11.10.0: + version "11.10.3" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.10.3.tgz#171c33b340b5a83ababe53034c569b0422046781" + integrity sha512-rPxsci+76/nnJowNOBO3LTi4eL6trG49cR9yPc4XbuyHXhCHUujN5F4+jFl7trISy+yVN6gCZ/wiTtVnkcR/UA== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "^3.2.0" + rc-menu "^9.0.0" + rc-resize-observer "^1.0.0" + rc-util "^5.5.0" + +rc-textarea@^0.3.0, rc-textarea@~0.3.0: + version "0.3.5" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.5.tgz#07ed445dddb94e5ae6764676923a49bddad9b2ec" + integrity sha512-qa+k5vDn9ct65qr+SgD2KwJ9Xz6P84lG2z+TDht/RBr71WnM/K61PqHUAcUyU6YqTJD26IXgjPuuhZR7HMw7eA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.7.0" + +rc-tooltip@^5.0.1, rc-tooltip@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.1.1.tgz#94178ed162d0252bc4993b725f5dc2ac0fccf154" + integrity sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA== + dependencies: + "@babel/runtime" "^7.11.2" + rc-trigger "^5.0.0" + +rc-tree-select@~4.3.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.3.3.tgz#28eba4d8a8dc8c0f9b61d83ce465842a6915eca4" + integrity sha512-0tilOHLJA6p+TNg4kD559XnDX3PTEYuoSF7m7ryzFLAYvdEEPtjn0QZc5z6L0sMKBiBlj8a2kf0auw8XyHU3lA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-select "^12.0.0" + rc-tree "^4.0.0" + rc-util "^5.0.5" + +rc-tree@^4.0.0, rc-tree@~4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-4.2.2.tgz#4429187cbbfbecbe989714a607e3de8b3ab7763f" + integrity sha512-V1hkJt092VrOVjNyfj5IYbZKRMHxWihZarvA5hPL/eqm7o2+0SNkeidFYm7LVVBrAKBpOpa0l8xt04uiqOd+6w== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.0.0" + rc-virtual-list "^3.0.1" + +rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10: + version "5.2.10" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.2.10.tgz#8a0057a940b1b9027eaa33beec8a6ecd85cce2b1" + integrity sha512-FkUf4H9BOFDaIwu42fvRycXMAvkttph9AlbCZXssZDVzz2L+QZ0ERvfB/4nX3ZFPh1Zd+uVGr1DEDeXxq4J1TA== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-align "^4.0.0" + rc-motion "^2.0.0" + rc-util "^5.5.0" + +rc-upload@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.3.2.tgz#3b56c8bdf7b25eab357e65453e032b7b10c6f3cc" + integrity sha512-v0HdwC/19xKAn1OYZ4hTMUSqSs/IA0n1v4p/cioSSnKubHrdpcCXC45N+TFMSOZtBlf4+xMNCFo3KDih31lAMg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.2.0" + +rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.13.0, rc-util@^5.13.1, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: + version "5.15.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.15.0.tgz#3527bd6c5806cf04476e17a0c7bf094fc8ea4666" + integrity sha512-8RI8sjOCXD3FhD3dzQNBQetpGol6BBd3sHQ/8jSGk9NPT0CH3JGtBfPODnASyE7AdDpCFQMOmgcp9CBs3S/1hg== + dependencies: + "@babel/runtime" "^7.12.5" + react-is "^16.12.0" + shallowequal "^1.1.0" + +rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.2.tgz#1078327aa7230b5e456d679ed2ce99f3c036ebd1" + integrity sha512-OyVrrPvvFcHvV0ssz5EDZ+7Rf5qLat/+mmujjchNw5FfbJWNDwkpQ99EcVE6+FtNRmX9wFa1LGNpZLUTvp/4GQ== + dependencies: + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.0.7" + react-dom@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" @@ -3024,7 +3520,7 @@ react-dom@^17.0.2: object-assign "^4.1.1" scheduler "^0.20.2" -react-is@^16.8.1: +react-is@^16.12.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -3129,6 +3625,11 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + resolve-dir@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" @@ -3257,6 +3758,13 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +scroll-into-view-if-needed@^2.2.25: + version "2.2.28" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz#5a15b2f58a52642c88c8eca584644e01703d645a" + integrity sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w== + dependencies: + compute-scroll-into-view "^1.0.17" + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -3338,6 +3846,11 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3531,6 +4044,11 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= + string-hash@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" @@ -3702,6 +4220,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= + toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -3854,6 +4377,13 @@ vary@^1: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +warning@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" From c3ac7c582e1e8264afed1158f18cc092a968e43d Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 07:54:13 +0800 Subject: [PATCH 013/100] compile fluentui --- ui-esbuild/builder-prod.js | 23 +++ ui-esbuild/builder.js | 4 +- ui-esbuild/package.json | 1 + ui-esbuild/src/App.tsx | 2 + .../lib/test-components/HelloAntD/index.tsx | 4 +- .../test-components/HelloFluentUI/index.tsx | 12 ++ .../HelloFluentUI/style.module.less | 4 + ui-esbuild/yarn.lock | 146 +++++++++++++++++- 8 files changed, 191 insertions(+), 5 deletions(-) create mode 100644 ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx create mode 100644 ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less diff --git a/ui-esbuild/builder-prod.js b/ui-esbuild/builder-prod.js index 5657bc0728..2510c8bfa3 100644 --- a/ui-esbuild/builder-prod.js +++ b/ui-esbuild/builder-prod.js @@ -1,6 +1,27 @@ const { build } = require('esbuild') const postCssPlugin = require('esbuild-plugin-postcss2').default +const lessModifyVars = { + // '@primary-color': '#4394fc', + '@primary-color': '#1DA57A', + '@body-background': '#fff', + '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', + '@tooltip-max-width': '500px' +} +const lessGlobalVars = { + '@padding-page': '48px', + '@gray-1': '#fff', + '@gray-2': '#fafafa', + '@gray-3': '#f5f5f5', + '@gray-4': '#f0f0f0', + '@gray-5': '#d9d9d9', + '@gray-6': '#bfbfbf', + '@gray-7': '#8c8c8c', + '@gray-8': '#595959', + '@gray-9': '#262626', + '@gray-10': '#000' +} + const buildParams = { color: true, entryPoints: ['src/index.tsx'], @@ -15,6 +36,8 @@ const buildParams = { plugins: [ postCssPlugin({ lessOptions: { + modifyVars: lessModifyVars, + globalVars: lessGlobalVars, javascriptEnabled: true } }) diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index b36dc14801..f3be1f405f 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -2,7 +2,7 @@ const { start } = require('live-server') const { watch } = require('chokidar') const { build } = require('esbuild') const fs = require('fs') -const postCssPlugin = require('esbuild-plugin-postcss2').default +const postCssPlugin = require('esbuild-plugin-postcss2') /** * Live Server Params @@ -58,7 +58,7 @@ const buildParams = { logLevel: 'error', incremental: true, plugins: [ - postCssPlugin({ + postCssPlugin.default({ lessOptions: { // modifyVars: { '@primary-color': '#1DA57A' }, modifyVars: lessModifyVars, diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json index 6bfc473a7e..886754320f 100644 --- a/ui-esbuild/package.json +++ b/ui-esbuild/package.json @@ -10,6 +10,7 @@ "prod": "node builder-prod.js" }, "dependencies": { + "@fluentui/react": "^8.42.1", "antd": "^4.16.13", "react": "^17.0.2", "react-dom": "^17.0.2" diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index 607fdfee61..6748c4d5bf 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -6,6 +6,7 @@ import HelloLess from './lib/test-components/HelloLess' import HelloMLess from './lib/test-components/HelloModuleLess' import HelloSCSS from './lib/test-components/HelloSCSS' import HelloAntD from './lib/test-components/HelloAntD' +import HelloFluentUI from './lib/test-components/HelloFluentUI' export default function App() { return ( @@ -15,6 +16,7 @@ export default function App() { + ) } diff --git a/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx index 8bee62a703..21acefbbb8 100644 --- a/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx @@ -1,8 +1,8 @@ import React from 'react' -import styles from './style.module.less' - import { Button, Switch, Space } from 'antd' +import styles from './style.module.less' + export default function HelloAntD() { return (
diff --git a/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx b/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx new file mode 100644 index 0000000000..2665dff6ef --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { PrimaryButton } from '@fluentui/react' + +import styles from './style.module.less' + +export default function HelloFluentUI() { + return ( +
+ Hello Fluent UI +
+ ) +} diff --git a/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less b/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less new file mode 100644 index 0000000000..3a6694b3e7 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less @@ -0,0 +1,4 @@ +.hello-fluent-ui-container { + text-align: center; + padding: 8px; +} diff --git a/ui-esbuild/yarn.lock b/ui-esbuild/yarn.lock index d9b25d9c34..fd96ecf487 100644 --- a/ui-esbuild/yarn.lock +++ b/ui-esbuild/yarn.lock @@ -106,6 +106,145 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@fluentui/date-time-utilities@^8.2.2": + version "8.2.2" + resolved "https://registry.yarnpkg.com/@fluentui/date-time-utilities/-/date-time-utilities-8.2.2.tgz#535d5bb6ee7ccfa8cc774c790e31d3d5d4edbad6" + integrity sha512-djHrX/38ty+F93qLQjzmRzPzK598CW9g/RPhQH6GyrFBLPSWM1swYKB5TP6E7FrIf+fT4pVqrNUSYZhgi2rrOQ== + dependencies: + "@fluentui/set-version" "^8.1.4" + tslib "^2.1.0" + +"@fluentui/dom-utilities@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@fluentui/dom-utilities/-/dom-utilities-2.1.4.tgz#a8eeaf906cc19f547ae40c662d2776cb2540ea11" + integrity sha512-+gsAnEjgoKB37o+tsMdSLtgqZ9z2PzpvnHx/2IqhRWjQQd7Xc7MbQsbZaQ5qfkioFHLnWGc/+WORpqKPy/sWrg== + dependencies: + "@fluentui/set-version" "^8.1.4" + tslib "^2.1.0" + +"@fluentui/font-icons-mdl2@^8.1.17": + version "8.1.17" + resolved "https://registry.yarnpkg.com/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.1.17.tgz#abc386788749214e3805726ea9b850bdcb8586e5" + integrity sha512-/w5aRIjsPCCMUUjkx+A0ba6OAMh6JqK5txTFSZCWGNXqwUZEkI7JNj3fCsCAQpEXVKD19XisESgllpZfOTpyKw== + dependencies: + "@fluentui/set-version" "^8.1.4" + "@fluentui/style-utilities" "^8.4.2" + tslib "^2.1.0" + +"@fluentui/foundation-legacy@^8.1.16": + version "8.1.16" + resolved "https://registry.yarnpkg.com/@fluentui/foundation-legacy/-/foundation-legacy-8.1.16.tgz#a17fc79c53ba486c05ba351d14ed7bc768214e52" + integrity sha512-u4A/w2XAxdjSrSWRP52HLQvGMoj4GI96eYYyRBRRHMNfEUO3uU9WUFb//VgaiApzV+GDNUJS4o1cXIWewPDiXQ== + dependencies: + "@fluentui/merge-styles" "^8.2.1" + "@fluentui/set-version" "^8.1.4" + "@fluentui/style-utilities" "^8.4.2" + "@fluentui/utilities" "^8.3.6" + tslib "^2.1.0" + +"@fluentui/keyboard-key@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@fluentui/keyboard-key/-/keyboard-key-0.3.4.tgz#27c95ea9d43d91cc9c64c318feb10986250584cd" + integrity sha512-pVY2m3IC5+LLmMzsaPApX9eKTzpOzdgQwrR3FNTE6mGx3N/+QWYM7fdF+T1ldZQt87dCRSeQnmAo5kqjtxeA/w== + dependencies: + tslib "^2.1.0" + +"@fluentui/merge-styles@^8.2.1": + version "8.2.1" + resolved "https://registry.yarnpkg.com/@fluentui/merge-styles/-/merge-styles-8.2.1.tgz#2deaa0cc10ece12d3e01f28e678fdc0ce3f861af" + integrity sha512-PwFndIWHNpwNF3On1Y/Kn73ycXJrZNrIG7ZV/G+C6g+ebVP0I87Mgx3kt8I+/hZxQJ0vjrFVslXiNMOFOfLaSQ== + dependencies: + "@fluentui/set-version" "^8.1.4" + tslib "^2.1.0" + +"@fluentui/react-focus@^8.3.8": + version "8.3.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-focus/-/react-focus-8.3.8.tgz#9a8fe74ccc2d799d23e4f517cc94b34954c94b6c" + integrity sha512-mm4PUlzs6i4Op5V3+6R2wI0gxSQSrOsTj2HEZhCxvF9RdVKXUUSzhm23+mV6n+gQR1n3scxNxKzIbM3cOk073A== + dependencies: + "@fluentui/keyboard-key" "^0.3.4" + "@fluentui/merge-styles" "^8.2.1" + "@fluentui/set-version" "^8.1.4" + "@fluentui/style-utilities" "^8.4.2" + "@fluentui/utilities" "^8.3.6" + tslib "^2.1.0" + +"@fluentui/react-hooks@^8.3.6": + version "8.3.6" + resolved "https://registry.yarnpkg.com/@fluentui/react-hooks/-/react-hooks-8.3.6.tgz#c16e9027446ce86880ebbc2e54a3f87cd9d3eda4" + integrity sha512-LVzm3fHZyx8d9IPdfEX7DV5/6jick/21oPqhlnXjxZqYWUUx5hbo6qefuMrft/hBRA/oPc2yiMvri5E7q08/Hg== + dependencies: + "@fluentui/react-window-provider" "^2.1.4" + "@fluentui/set-version" "^8.1.4" + "@fluentui/utilities" "^8.3.6" + tslib "^2.1.0" + +"@fluentui/react-window-provider@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@fluentui/react-window-provider/-/react-window-provider-2.1.4.tgz#2e8368fd85f9e10062c726b060b146ffc1f916b3" + integrity sha512-RztmJ7ol2eMDr3NCs2OcAA1cQjZdPPUEa4aurgh4Aq+JM/BiY0aK6S4SeFtVD7F8Q7PBOz/xwOG4HlnSMQtlsg== + dependencies: + "@fluentui/set-version" "^8.1.4" + tslib "^2.1.0" + +"@fluentui/react@^8.42.1": + version "8.42.1" + resolved "https://registry.yarnpkg.com/@fluentui/react/-/react-8.42.1.tgz#3457aa77c635595b67fc574a5328541d6bb44a91" + integrity sha512-kFvYEuOGZguuunIlIUQjxThu4XRe42Cnou5Cb50HI0K2YV3frxuWHxE8Ld/v/M1C6a7C3rYlYgLy1NXvrTzsfQ== + dependencies: + "@fluentui/date-time-utilities" "^8.2.2" + "@fluentui/font-icons-mdl2" "^8.1.17" + "@fluentui/foundation-legacy" "^8.1.16" + "@fluentui/merge-styles" "^8.2.1" + "@fluentui/react-focus" "^8.3.8" + "@fluentui/react-hooks" "^8.3.6" + "@fluentui/react-window-provider" "^2.1.4" + "@fluentui/set-version" "^8.1.4" + "@fluentui/style-utilities" "^8.4.2" + "@fluentui/theme" "^2.4.3" + "@fluentui/utilities" "^8.3.6" + "@microsoft/load-themed-styles" "^1.10.26" + tslib "^2.1.0" + +"@fluentui/set-version@^8.1.4": + version "8.1.4" + resolved "https://registry.yarnpkg.com/@fluentui/set-version/-/set-version-8.1.4.tgz#89fa88223f421981427dfd5372d46210045354e8" + integrity sha512-2otMyJ+s+W+hjBD4BKjwYKKinJUDeIKYKz93qKrrJS0i3fKfftNroy9dHFlIblZ7n747L334plLi3bzQO1bnvA== + dependencies: + tslib "^2.1.0" + +"@fluentui/style-utilities@^8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@fluentui/style-utilities/-/style-utilities-8.4.2.tgz#6f5e4f2785722927f32a340c88dd3c7b92fe3342" + integrity sha512-RwZo+IzzgQzdzxh0Zv5uEaUZKlNpR80ct7Y/8SiSyYOP4Q7vVqIg8kCj8l/V4IOMTocjqH4sYbVxJ8pCJ4G9Vw== + dependencies: + "@fluentui/merge-styles" "^8.2.1" + "@fluentui/set-version" "^8.1.4" + "@fluentui/theme" "^2.4.3" + "@fluentui/utilities" "^8.3.6" + "@microsoft/load-themed-styles" "^1.10.26" + tslib "^2.1.0" + +"@fluentui/theme@^2.4.3": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@fluentui/theme/-/theme-2.4.3.tgz#e8b195c87dd7b2efab1544292ac84d975843e20a" + integrity sha512-+BeZxF7UbZlKgL34GCC8TqIhd/RC+hgvTjyi51CdQrdJmHLMVklW+BcrTtOS9XguQEkvVMRjW28RzXMehpIkOw== + dependencies: + "@fluentui/merge-styles" "^8.2.1" + "@fluentui/set-version" "^8.1.4" + "@fluentui/utilities" "^8.3.6" + tslib "^2.1.0" + +"@fluentui/utilities@^8.3.6": + version "8.3.6" + resolved "https://registry.yarnpkg.com/@fluentui/utilities/-/utilities-8.3.6.tgz#1cf33ffa1943e1514781f35867c870c7248d6d9d" + integrity sha512-ubB1/g3ppJ/MCbQHYwldpKP6EfE8ScwL8wMlnWFoSMo9E7FzlfoeOOPLzmT7fGptTnXzFDQtP4SR4Y/YQXVPGg== + dependencies: + "@fluentui/dom-utilities" "^2.1.4" + "@fluentui/merge-styles" "^8.2.1" + "@fluentui/set-version" "^8.1.4" + tslib "^2.1.0" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -120,6 +259,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@microsoft/load-themed-styles@^1.10.26": + version "1.10.230" + resolved "https://registry.yarnpkg.com/@microsoft/load-themed-styles/-/load-themed-styles-1.10.230.tgz#669d77b011e3e54038635dab5460572f549f3463" + integrity sha512-EMc7AqUZxRnZTpnPasItHN5DXV/EdJ19wHyOls69PF089Ny9pUxZEbAPROOuR6I1m8WvNRJrlagLJgG9Yq0Y2w== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -4245,7 +4389,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.3.0: +tslib@^2.1.0, tslib@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== From 238ec5790aba53ad9c32778a62498d799d0665e9 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 09:04:03 +0800 Subject: [PATCH 014/100] wip --- ui-esbuild/README.md | 23 ++++++++----------- .../lib/test-components/HelloLess/style.less | 4 ++-- .../HelloModuleLess/style.module.less | 4 ++-- .../lib/test-components/HelloSCSS/style.scss | 6 ++--- 4 files changed, 17 insertions(+), 20 deletions(-) diff --git a/ui-esbuild/README.md b/ui-esbuild/README.md index 135ebd4732..1271c7b5c0 100644 --- a/ui-esbuild/README.md +++ b/ui-esbuild/README.md @@ -1,17 +1,14 @@ -# esbuild React Typescript Template +To compile the fluentui, we need to modify the esbuild-plugin-postcss2 code. -> This is a Typecript template for [esbuild create react app](https://github.com/awran5/esbuild-create-react-app) project. +Insert the following code into `ui-esbuild/node_modules/esbuild-plugin-postcss2/dist/index.js` line 79. -## What is inside? +```diff -- [TypeScript](https://www.typescriptlang.org/) -- [esbuild](https://esbuild.github.io/) -- [Eslint](https://eslint.org/) -- [Prettier](https://prettier.io/) -- [Husky](https://github.com/typicode/husky) -- [lint-staged](https://github.com/okonet/lint-staged) -- [live-server](https://github.com/tapio/live-server) + if (!sourceFullPath) + sourceFullPath = import_path.default.resolve(args.resolveDir, args.path); ++ if (import_fs_extra.existsSync(sourceFullPath+'.js')) { ++ return ++ } +``` -### License - -MIT © [awran5](https://github.com/awran5/) +Will figure out a better solution. diff --git a/ui-esbuild/src/lib/test-components/HelloLess/style.less b/ui-esbuild/src/lib/test-components/HelloLess/style.less index 2a7f9772fd..63008fd734 100644 --- a/ui-esbuild/src/lib/test-components/HelloLess/style.less +++ b/ui-esbuild/src/lib/test-components/HelloLess/style.less @@ -1,9 +1,9 @@ -@padding-page: 48px; +@test-padding-page: 48px; .hello-less-container { text-align: center; background-color: oldlace; - padding: @padding-page; + padding: @test-padding-page; h1 { color: slateblue; } diff --git a/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less b/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less index ee3ac6c2ef..e9e25f027b 100644 --- a/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less +++ b/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less @@ -1,8 +1,8 @@ -@border-width: 2px; +@test-border-width: 2px; .hello-mless-container { text-align: center; - border: @border-width solid yellowgreen; + border: @test-border-width solid yellowgreen; h1 { color: blueviolet; } diff --git a/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss b/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss index b791397e55..92a30f0215 100644 --- a/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss +++ b/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss @@ -1,10 +1,10 @@ -$base-color: #c6538c; -$border-dark: rgba($base-color, 0.88); +$test-base-color: #c6538c; +$test-border-dark: rgba($test-base-color, 0.88); .hello-scss-container { text-align: center; background-color: cornsilk; - border: 1px solid $border-dark; + border: 1px solid $test-border-dark; h1 { color: cadetblue; } From 7b4f2a1ddd20f75675c815c45a14c6d7d24665e1 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 10:28:03 +0800 Subject: [PATCH 015/100] wip --- ui-esbuild/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui-esbuild/README.md b/ui-esbuild/README.md index 1271c7b5c0..85b688324c 100644 --- a/ui-esbuild/README.md +++ b/ui-esbuild/README.md @@ -1,9 +1,8 @@ To compile the fluentui, we need to modify the esbuild-plugin-postcss2 code. -Insert the following code into `ui-esbuild/node_modules/esbuild-plugin-postcss2/dist/index.js` line 79. +Insert the following code into `ui-esbuild/node_modules/esbuild-plugin-postcss2/dist/index.js` line 70. ```diff - if (!sourceFullPath) sourceFullPath = import_path.default.resolve(args.resolveDir, args.path); + if (import_fs_extra.existsSync(sourceFullPath+'.js')) { From eced827ab0614b783bd37d0b942c9fcf4a6239b1 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 10:39:50 +0800 Subject: [PATCH 016/100] test DatePicker --- ui-esbuild/src/lib/test-components/HelloAntD/index.tsx | 3 ++- ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx index 21acefbbb8..1ed8bdc9c2 100644 --- a/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { Button, Switch, Space } from 'antd' +import { Button, Switch, Space, DatePicker } from 'antd' import styles from './style.module.less' @@ -9,6 +9,7 @@ export default function HelloAntD() { +
) diff --git a/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx b/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx index 2665dff6ef..797e398fa0 100644 --- a/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { PrimaryButton } from '@fluentui/react' +import { PrimaryButton, DatePicker } from '@fluentui/react' import styles from './style.module.less' @@ -7,6 +7,7 @@ export default function HelloFluentUI() { return (
Hello Fluent UI +
) } From e8863c441b4c6482d6d1980d55ae83faf30f809c Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 10:55:56 +0800 Subject: [PATCH 017/100] compile @ant-design/icons --- ui-esbuild/package.json | 1 + ui-esbuild/src/App.tsx | 2 ++ .../lib/test-components/HelloAntDIcons/index.tsx | 15 +++++++++++++++ .../HelloAntDIcons/style.module.less | 6 ++++++ ui-esbuild/yarn.lock | 2 +- 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx create mode 100644 ui-esbuild/src/lib/test-components/HelloAntDIcons/style.module.less diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json index 886754320f..b73e9ff12f 100644 --- a/ui-esbuild/package.json +++ b/ui-esbuild/package.json @@ -10,6 +10,7 @@ "prod": "node builder-prod.js" }, "dependencies": { + "@ant-design/icons": "^4.7.0", "@fluentui/react": "^8.42.1", "antd": "^4.16.13", "react": "^17.0.2", diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index 6748c4d5bf..e52ab94f52 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -7,6 +7,7 @@ import HelloMLess from './lib/test-components/HelloModuleLess' import HelloSCSS from './lib/test-components/HelloSCSS' import HelloAntD from './lib/test-components/HelloAntD' import HelloFluentUI from './lib/test-components/HelloFluentUI' +import HelloAntDIcons from './lib/test-components/HelloAntDIcons' export default function App() { return ( @@ -17,6 +18,7 @@ export default function App() { + ) } diff --git a/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx b/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx new file mode 100644 index 0000000000..e0f16f4177 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx @@ -0,0 +1,15 @@ +import React from 'react' + +import { AreaChartOutlined, PieChartOutlined, BarChartOutlined } from '@ant-design/icons' + +import styles from './style.module.less' + +export default function HelloAntDIcons() { + return ( +
+ + + +
+ ) +} diff --git a/ui-esbuild/src/lib/test-components/HelloAntDIcons/style.module.less b/ui-esbuild/src/lib/test-components/HelloAntDIcons/style.module.less new file mode 100644 index 0000000000..62a4d29259 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloAntDIcons/style.module.less @@ -0,0 +1,6 @@ +.hello-antd-icons-container { + text-align: center; + padding: 8px; + font-size: 48px; + color: cornflowerblue; +} diff --git a/ui-esbuild/yarn.lock b/ui-esbuild/yarn.lock index fd96ecf487..f99694f488 100644 --- a/ui-esbuild/yarn.lock +++ b/ui-esbuild/yarn.lock @@ -14,7 +14,7 @@ resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz#8630da8eb4471a4aabdaed7d1ff6a97dcb2cf05a" integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== -"@ant-design/icons@^4.6.3": +"@ant-design/icons@^4.6.3", "@ant-design/icons@^4.7.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.7.0.tgz#8c3cbe0a556ba92af5dc7d1e70c0b25b5179af0f" integrity sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g== From d3808eee0e005881fc2b15fedb6a80604062ed88 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 12:29:58 +0800 Subject: [PATCH 018/100] compile svg --- ui-esbuild/builder-prod.js | 3 +++ ui-esbuild/builder.js | 3 +++ ui-esbuild/src/App.tsx | 2 ++ .../src/lib/test-components/HelloSVG/index.tsx | 13 +++++++++++++ .../src/lib/test-components/HelloSVG/logo.svg | 1 + .../lib/test-components/HelloSVG/style.module.less | 6 ++++++ 6 files changed, 28 insertions(+) create mode 100644 ui-esbuild/src/lib/test-components/HelloSVG/index.tsx create mode 100644 ui-esbuild/src/lib/test-components/HelloSVG/logo.svg create mode 100644 ui-esbuild/src/lib/test-components/HelloSVG/style.module.less diff --git a/ui-esbuild/builder-prod.js b/ui-esbuild/builder-prod.js index 2510c8bfa3..8df5a00f81 100644 --- a/ui-esbuild/builder-prod.js +++ b/ui-esbuild/builder-prod.js @@ -33,6 +33,9 @@ const buildParams = { sourcemap: true, logLevel: 'error', incremental: true, + loader: { + '.svg': 'dataurl' + }, plugins: [ postCssPlugin({ lessOptions: { diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index f3be1f405f..374600ac18 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -57,6 +57,9 @@ const buildParams = { sourcemap: true, logLevel: 'error', incremental: true, + loader: { + '.svg': 'dataurl' + }, plugins: [ postCssPlugin.default({ lessOptions: { diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index e52ab94f52..a3d14b70bf 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -8,6 +8,7 @@ import HelloSCSS from './lib/test-components/HelloSCSS' import HelloAntD from './lib/test-components/HelloAntD' import HelloFluentUI from './lib/test-components/HelloFluentUI' import HelloAntDIcons from './lib/test-components/HelloAntDIcons' +import HelloSVG from './lib/test-components/HelloSVG' export default function App() { return ( @@ -19,6 +20,7 @@ export default function App() { + ) } diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx b/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx new file mode 100644 index 0000000000..7f433fc28e --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx @@ -0,0 +1,13 @@ +import React from 'react' + +import logo from './logo.svg' + +import styles from './style.module.less' + +export default function HelloSVG() { + return ( +
+ logo +
+ ) +} diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/logo.svg b/ui-esbuild/src/lib/test-components/HelloSVG/logo.svg new file mode 100644 index 0000000000..9dfc1c058c --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloSVG/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less b/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less new file mode 100644 index 0000000000..eb7090c53d --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less @@ -0,0 +1,6 @@ +.hello-svg-container { + text-align: center; + padding: 8px; + font-size: 48px; + color: cornflowerblue; +} From 450bb8935b3820a84e9bab2d6bdedf41480ee8b2 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 12:43:03 +0800 Subject: [PATCH 019/100] refine --- ui-esbuild/src/lib/test-components/HelloAntD/index.tsx | 2 +- ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx | 2 +- .../src/lib/test-components/HelloFluentUI/style.module.less | 4 +++- .../src/lib/test-components/HelloSVG/style.module.less | 6 +++--- ui-esbuild/src/react-app-env.d.ts | 5 +++++ 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx index 1ed8bdc9c2..80eca4f9cb 100644 --- a/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloAntD/index.tsx @@ -8,7 +8,7 @@ export default function HelloAntD() {
- +
diff --git a/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx b/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx index 797e398fa0..f7dcc33c62 100644 --- a/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx @@ -7,7 +7,7 @@ export default function HelloFluentUI() { return (
Hello Fluent UI - +
) } diff --git a/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less b/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less index 3a6694b3e7..5d7f215b37 100644 --- a/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less +++ b/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less @@ -1,4 +1,6 @@ .hello-fluent-ui-container { - text-align: center; padding: 8px; + display: flex; + justify-content: center; + gap: 16px; } diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less b/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less index eb7090c53d..d8803e75a5 100644 --- a/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less +++ b/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less @@ -1,6 +1,6 @@ .hello-svg-container { - text-align: center; - padding: 8px; - font-size: 48px; + height: 100px; + width: 100px; + margin: 0 auto; color: cornflowerblue; } diff --git a/ui-esbuild/src/react-app-env.d.ts b/ui-esbuild/src/react-app-env.d.ts index fd6e7f08fc..f051f68161 100644 --- a/ui-esbuild/src/react-app-env.d.ts +++ b/ui-esbuild/src/react-app-env.d.ts @@ -9,3 +9,8 @@ declare module '*.module.less' { const classes: { readonly [key: string]: string } export default classes } + +declare module '*.svg' { + const content: any + export default content +} From 40f6167202f8e6887c93f4867b7a4005d6563689 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 12:58:14 +0800 Subject: [PATCH 020/100] unify builder.js --- ui-esbuild/builder-prod.js | 50 -------------------------------------- ui-esbuild/builder.js | 41 +++++++++++++++++++++---------- ui-esbuild/package.json | 4 +-- 3 files changed, 30 insertions(+), 65 deletions(-) delete mode 100644 ui-esbuild/builder-prod.js diff --git a/ui-esbuild/builder-prod.js b/ui-esbuild/builder-prod.js deleted file mode 100644 index 8df5a00f81..0000000000 --- a/ui-esbuild/builder-prod.js +++ /dev/null @@ -1,50 +0,0 @@ -const { build } = require('esbuild') -const postCssPlugin = require('esbuild-plugin-postcss2').default - -const lessModifyVars = { - // '@primary-color': '#4394fc', - '@primary-color': '#1DA57A', - '@body-background': '#fff', - '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', - '@tooltip-max-width': '500px' -} -const lessGlobalVars = { - '@padding-page': '48px', - '@gray-1': '#fff', - '@gray-2': '#fafafa', - '@gray-3': '#f5f5f5', - '@gray-4': '#f0f0f0', - '@gray-5': '#d9d9d9', - '@gray-6': '#bfbfbf', - '@gray-7': '#8c8c8c', - '@gray-8': '#595959', - '@gray-9': '#262626', - '@gray-10': '#000' -} - -const buildParams = { - color: true, - entryPoints: ['src/index.tsx'], - loader: { '.ts': 'tsx' }, - outdir: 'dist', - minify: true, - format: 'cjs', - bundle: true, - sourcemap: true, - logLevel: 'error', - incremental: true, - loader: { - '.svg': 'dataurl' - }, - plugins: [ - postCssPlugin({ - lessOptions: { - modifyVars: lessModifyVars, - globalVars: lessGlobalVars, - javascriptEnabled: true - } - }) - ] -} - -build(buildParams).finally(() => process.exit(0)) diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index 374600ac18..68591c3688 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -1,9 +1,20 @@ +const fs = require('fs') const { start } = require('live-server') const { watch } = require('chokidar') const { build } = require('esbuild') -const fs = require('fs') const postCssPlugin = require('esbuild-plugin-postcss2') +const argv = (key) => { + // Return true if the key exists and a value is defined + if (process.argv.includes(`--${key}`)) return true + + const value = process.argv.find((element) => element.startsWith(`--${key}=`)) + // Return null if the key does not exist and a value is not defined + if (!value) return null + return value.replace(`--${key}=`, '') +} +const isDev = argv('dev') === true + /** * Live Server Params * @link https://www.npmjs.com/package/live-server#usage-from-node @@ -51,7 +62,7 @@ const buildParams = { entryPoints: ['src/index.tsx'], loader: { '.ts': 'tsx' }, outdir: 'dist', - minify: true, + minify: !isDev, format: 'cjs', bundle: true, sourcemap: true, @@ -73,20 +84,24 @@ const buildParams = { } async function main() { - const builder = await build(buildParams) - // TODO - refine - fs.copyFileSync('./public/index.html', './dist/index.html') - fs.copyFileSync('./public/favicon.ico', './dist/favicon.ico') - fs.copyFileSync('./public/manifest.json', './dist/manifest.json') - fs.copyFileSync('./public/logo192.png', './dist/logo192.png') - fs.copyFileSync('./public/logo512.png', './dist/logo512.png') + fs.copyFile('./public/index.html', './dist/index.html', () => {}) + fs.copyFile('./public/favicon.ico', './dist/favicon.ico', () => {}) + fs.copyFile('./public/manifest.json', './dist/manifest.json', () => {}) + fs.copyFile('./public/logo192.png', './dist/logo192.png', () => {}) + fs.copyFile('./public/logo512.png', './dist/logo512.png', () => {}) - watch('src/**/*').on('all', () => { - builder.rebuild() - }) + if (isDev) { + const builder = await build(buildParams) + + watch('src/**/*').on('all', () => { + builder.rebuild() + }) - start(serverParams) + start(serverParams) + } else { + build(buildParams).finally(() => process.exit(0)) + } } main() diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json index b73e9ff12f..765c99dd45 100644 --- a/ui-esbuild/package.json +++ b/ui-esbuild/package.json @@ -5,9 +5,9 @@ "scripts": { "pre-commit": "lint-staged", "lint": "eslint \"src/**/*.{ts,tsx}\" --max-warnings=0", - "start": "node builder.js", + "start": "node builder.js --dev", "build": "esbuild src/index.tsx --minify --format=cjs --outdir=public --sourcemap --bundle", - "prod": "node builder-prod.js" + "prod": "node builder.js" }, "dependencies": { "@ant-design/icons": "^4.7.0", From 3fef299efbb7bd7d1ac2abc79f74429a5563a1c6 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 14:40:39 +0800 Subject: [PATCH 021/100] compile yaml --- ui-esbuild/builder.js | 4 +++- ui-esbuild/package.json | 1 + ui-esbuild/src/App.tsx | 2 ++ .../test-components/HelloAntDIcons/index.tsx | 1 + .../lib/test-components/HelloSVG/index.tsx | 1 + .../HelloSVG/style.module.less | 1 + .../lib/test-components/HelloYAML/index.tsx | 13 ++++++++++++ .../HelloYAML/style.module.less | 6 ++++++ .../lib/test-components/HelloYAML/test.yaml | 2 ++ ui-esbuild/src/react-app-env.d.ts | 8 ++++++++ ui-esbuild/yarn.lock | 20 +++++++++++++++++++ 11 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 ui-esbuild/src/lib/test-components/HelloYAML/index.tsx create mode 100644 ui-esbuild/src/lib/test-components/HelloYAML/style.module.less create mode 100755 ui-esbuild/src/lib/test-components/HelloYAML/test.yaml diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index 68591c3688..51851c9b7d 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -3,6 +3,7 @@ const { start } = require('live-server') const { watch } = require('chokidar') const { build } = require('esbuild') const postCssPlugin = require('esbuild-plugin-postcss2') +const { yamlPlugin } = require('esbuild-plugin-yaml') const argv = (key) => { // Return true if the key exists and a value is defined @@ -79,7 +80,8 @@ const buildParams = { globalVars: lessGlobalVars, javascriptEnabled: true } - }) + }), + yamlPlugin() ] } diff --git a/ui-esbuild/package.json b/ui-esbuild/package.json index 765c99dd45..eb75ff6a51 100644 --- a/ui-esbuild/package.json +++ b/ui-esbuild/package.json @@ -26,6 +26,7 @@ "chokidar": "^3.5.2", "esbuild": "^0.12.26", "esbuild-plugin-postcss2": "^0.1.0", + "esbuild-plugin-yaml": "^0.0.1", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", "eslint-config-prettier": "^8.3.0", diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index a3d14b70bf..18a3d90e63 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -9,6 +9,7 @@ import HelloAntD from './lib/test-components/HelloAntD' import HelloFluentUI from './lib/test-components/HelloFluentUI' import HelloAntDIcons from './lib/test-components/HelloAntDIcons' import HelloSVG from './lib/test-components/HelloSVG' +import HelloYAML from './lib/test-components/HelloYAML' export default function App() { return ( @@ -21,6 +22,7 @@ export default function App() { + ) } diff --git a/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx b/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx index e0f16f4177..27cf39c306 100644 --- a/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx @@ -7,6 +7,7 @@ import styles from './style.module.less' export default function HelloAntDIcons() { return (
+ Hello AntDIcons:  diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx b/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx index 7f433fc28e..1ed61edea4 100644 --- a/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx @@ -7,6 +7,7 @@ import styles from './style.module.less' export default function HelloSVG() { return (
+ Hello SVG logo
) diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less b/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less index d8803e75a5..759b3cabfa 100644 --- a/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less +++ b/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less @@ -2,5 +2,6 @@ height: 100px; width: 100px; margin: 0 auto; + text-align: center; color: cornflowerblue; } diff --git a/ui-esbuild/src/lib/test-components/HelloYAML/index.tsx b/ui-esbuild/src/lib/test-components/HelloYAML/index.tsx new file mode 100644 index 0000000000..166a3ff4a4 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloYAML/index.tsx @@ -0,0 +1,13 @@ +import React from 'react' + +import yaml from './test.yaml' + +import styles from './style.module.less' + +export default function HelloYAML() { + return ( +
+ {yaml.hello.greeting} +
+ ) +} diff --git a/ui-esbuild/src/lib/test-components/HelloYAML/style.module.less b/ui-esbuild/src/lib/test-components/HelloYAML/style.module.less new file mode 100644 index 0000000000..75a2d76da4 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloYAML/style.module.less @@ -0,0 +1,6 @@ +.hello-yaml-container { + color: cornflowerblue; + text-align: center; + font-size: 32px; + font-weight: 600; +} diff --git a/ui-esbuild/src/lib/test-components/HelloYAML/test.yaml b/ui-esbuild/src/lib/test-components/HelloYAML/test.yaml new file mode 100755 index 0000000000..498adb7121 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloYAML/test.yaml @@ -0,0 +1,2 @@ +hello: + greeting: Hello YAML diff --git a/ui-esbuild/src/react-app-env.d.ts b/ui-esbuild/src/react-app-env.d.ts index f051f68161..30325b55e7 100644 --- a/ui-esbuild/src/react-app-env.d.ts +++ b/ui-esbuild/src/react-app-env.d.ts @@ -14,3 +14,11 @@ declare module '*.svg' { const content: any export default content } + +// .yaml and .yml declarations +declare module '*.yaml' { + const content: { + [key: string]: any + } + export default content +} diff --git a/ui-esbuild/yarn.lock b/ui-esbuild/yarn.lock index f99694f488..6f4bd35ecb 100644 --- a/ui-esbuild/yarn.lock +++ b/ui-esbuild/yarn.lock @@ -564,6 +564,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -1295,6 +1300,14 @@ esbuild-plugin-postcss2@^0.1.0: stylus "^0.x" tmp "^0.2.1" +esbuild-plugin-yaml@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/esbuild-plugin-yaml/-/esbuild-plugin-yaml-0.0.1.tgz#660b9ddab78f4c3f488284762d6c01b6738615fb" + integrity sha512-s3jqOeeCd+dUuUsuBqLRgN2SeQjPF2ppIglvV3B//txgQpTDThGvxu6sqiOUOJ0NOzegitmpWCXoCONdRbUS7w== + dependencies: + fs-extra "^9.1.0" + js-yaml "^4.0.0" + esbuild@^0.12.26: version "0.12.26" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.26.tgz#35f2d58ac3fa4629df24aa4d6fd72feb5522e94b" @@ -2411,6 +2424,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" From cb9c4e80669b1bce638745f885a03697c2b9d6e5 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 14:49:09 +0800 Subject: [PATCH 022/100] hack postcss2 --- ui-esbuild/builder.js | 2 + ui-esbuild/postcss2-index.js | 185 +++++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 ui-esbuild/postcss2-index.js diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index 51851c9b7d..bba5a63c74 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -1,4 +1,6 @@ const fs = require('fs') +fs.copyFileSync('./postcss2-index.js', './node_modules/esbuild-plugin-postcss2/dist/index.js') + const { start } = require('live-server') const { watch } = require('chokidar') const { build } = require('esbuild') diff --git a/ui-esbuild/postcss2-index.js b/ui-esbuild/postcss2-index.js new file mode 100644 index 0000000000..aeb8c19bce --- /dev/null +++ b/ui-esbuild/postcss2-index.js @@ -0,0 +1,185 @@ +var __create = Object.create +var __defProp = Object.defineProperty +var __getProtoOf = Object.getPrototypeOf +var __hasOwnProp = Object.prototype.hasOwnProperty +var __getOwnPropNames = Object.getOwnPropertyNames +var __getOwnPropDesc = Object.getOwnPropertyDescriptor +var __markAsModule = (target) => __defProp(target, '__esModule', { value: true }) +var __export = (target, all) => { + for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }) +} +var __exportStar = (target, module2, desc) => { + if ((module2 && typeof module2 === 'object') || typeof module2 === 'function') { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== 'default') + __defProp(target, key, { + get: () => module2[key], + enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable + }) + } + return target +} +var __toModule = (module2) => { + return __exportStar( + __markAsModule( + __defProp( + module2 != null ? __create(__getProtoOf(module2)) : {}, + 'default', + module2 && module2.__esModule && 'default' in module2 + ? { get: () => module2.default, enumerable: true } + : { value: module2, enumerable: true } + ) + ), + module2 + ) +} +__markAsModule(exports) +__export(exports, { + default: () => src_default +}) +var import_fs_extra = __toModule(require('fs-extra')) +var import_util = __toModule(require('util')) +var import_path = __toModule(require('path')) +var import_tmp = __toModule(require('tmp')) +var import_postcss2 = __toModule(require('postcss')) +var import_postcss_modules = __toModule(require('postcss-modules')) +var import_less = __toModule(require('less')) +var import_stylus = __toModule(require('stylus')) +var import_resolve_file = __toModule(require('resolve-file')) +const postCSSPlugin = ({ + plugins = [], + modules = true, + rootDir = process.cwd(), + sassOptions = {}, + lessOptions = {}, + stylusOptions = {} +}) => ({ + name: 'postcss2', + setup(build) { + const tmpDirPath = import_tmp.default.dirSync().name, + modulesMap = [] + const modulesPlugin = (0, import_postcss_modules.default)({ + generateScopedName: '[name]__[local]___[hash:base64:5]', + ...(typeof modules !== 'boolean' ? modules : {}), + getJSON(filepath, json, outpath) { + const mapIndex = modulesMap.findIndex((m) => m.path === filepath) + if (mapIndex !== -1) { + modulesMap[mapIndex].map = json + } else { + modulesMap.push({ + path: filepath, + map: json + }) + } + if (typeof modules !== 'boolean' && typeof modules.getJSON === 'function') + return modules.getJSON(filepath, json, outpath) + } + }) + build.onResolve({ filter: /.\.(css|sass|scss|less|styl)$/ }, async (args) => { + if (args.namespace !== 'file' && args.namespace !== '') return + let sourceFullPath = (0, import_resolve_file.default)(args.path) + if (!sourceFullPath) sourceFullPath = import_path.default.resolve(args.resolveDir, args.path) + const exist = await import_fs_extra.exists(sourceFullPath + '.js') + if (exist) { + return + } + const sourceExt = import_path.default.extname(sourceFullPath) + const sourceBaseName = import_path.default.basename(sourceFullPath, sourceExt) + const isModule = sourceBaseName.match(/\.module$/) + const sourceDir = import_path.default.dirname(sourceFullPath) + let tmpFilePath + if (args.kind === 'entry-point') { + const sourceRelDir = import_path.default.relative( + import_path.default.dirname(rootDir), + import_path.default.dirname(sourceFullPath) + ) + tmpFilePath = import_path.default.resolve(tmpDirPath, sourceRelDir, `${sourceBaseName}.css`) + await (0, import_fs_extra.ensureDir)(import_path.default.dirname(tmpFilePath)) + } else { + const uniqueTmpDir = import_path.default.resolve(tmpDirPath, uniqueId()) + tmpFilePath = import_path.default.resolve(uniqueTmpDir, `${sourceBaseName}.css`) + } + await (0, import_fs_extra.ensureDir)(import_path.default.dirname(tmpFilePath)) + const fileContent = await (0, import_fs_extra.readFile)(sourceFullPath) + let css = sourceExt === '.css' ? fileContent : '' + if (sourceExt === '.sass' || sourceExt === '.scss') + css = (await renderSass({ ...sassOptions, file: sourceFullPath })).css.toString() + if (sourceExt === '.styl') + css = await renderStylus(new import_util.TextDecoder().decode(fileContent), { + ...stylusOptions, + filename: sourceFullPath + }) + if (sourceExt === '.less') + css = ( + await import_less.default.render(new import_util.TextDecoder().decode(fileContent), { + ...lessOptions, + filename: sourceFullPath, + rootpath: import_path.default.dirname(args.path) + }) + ).css + const result = await (0, import_postcss2.default)(isModule ? [modulesPlugin, ...plugins] : plugins).process(css, { + from: sourceFullPath, + to: tmpFilePath + }) + await (0, import_fs_extra.writeFile)(tmpFilePath, result.css) + return { + namespace: isModule ? 'postcss-module' : 'file', + path: tmpFilePath, + watchFiles: getFilesRecursive(sourceDir), + pluginData: { + originalPath: sourceFullPath + } + } + }) + build.onLoad({ filter: /.*/, namespace: 'postcss-module' }, async (args) => { + const mod = modulesMap.find(({ path: path2 }) => path2 === args?.pluginData?.originalPath), + resolveDir = import_path.default.dirname(args.path) + return { + resolveDir, + contents: `import ${JSON.stringify(args.path)}; +export default ${JSON.stringify(mod && mod.map ? mod.map : {})};` + } + }) + } +}) +function renderSass(options) { + return new Promise((resolve, reject) => { + getSassImpl().render(options, (e, res) => { + if (e) reject(e) + else resolve(res) + }) + }) +} +function renderStylus(str, options) { + return new Promise((resolve, reject) => { + import_stylus.default.render(str, options, (e, res) => { + if (e) reject(e) + else resolve(res) + }) + }) +} +function getSassImpl() { + let impl = 'sass' + try { + require.resolve('sass') + } catch { + try { + require.resolve('node-sass') + impl = 'node-sass' + } catch { + throw new Error('Please install "sass" or "node-sass" package') + } + } + return require(impl) +} +function getFilesRecursive(directory) { + return (0, import_fs_extra.readdirSync)(directory).reduce((files, file) => { + const name = import_path.default.join(directory, file) + return (0, import_fs_extra.statSync)(name).isDirectory() ? [...files, ...getFilesRecursive(name)] : [...files, name] + }, []) +} +let idCounter = 0 +function uniqueId() { + return Date.now().toString(16) + (idCounter++).toString(16) +} +var src_default = postCSSPlugin From c61ed0da8cc0324c35d4417657e77cdfb1808f51 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 15:27:29 +0800 Subject: [PATCH 023/100] test alias paths --- ui-esbuild/src/App.tsx | 23 ++++++++++++--------- ui-esbuild/src/lib/test-components/index.ts | 9 ++++++++ ui-esbuild/tsconfig.json | 6 +++++- 3 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 ui-esbuild/src/lib/test-components/index.ts diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index 18a3d90e63..e1d65bed17 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -1,15 +1,18 @@ import React from 'react' -import './style.less' -import HelloCSS from './lib/test-components/HelloCSS' -import HelloLess from './lib/test-components/HelloLess' -import HelloMLess from './lib/test-components/HelloModuleLess' -import HelloSCSS from './lib/test-components/HelloSCSS' -import HelloAntD from './lib/test-components/HelloAntD' -import HelloFluentUI from './lib/test-components/HelloFluentUI' -import HelloAntDIcons from './lib/test-components/HelloAntDIcons' -import HelloSVG from './lib/test-components/HelloSVG' -import HelloYAML from './lib/test-components/HelloYAML' +import { + HelloCSS, + HelloLess, + HelloMLess, + HelloSCSS, + HelloAntD, + HelloFluentUI, + HelloAntDIcons, + HelloSVG, + HelloYAML +} from '@lib/test-components' + +import './style.less' export default function App() { return ( diff --git a/ui-esbuild/src/lib/test-components/index.ts b/ui-esbuild/src/lib/test-components/index.ts new file mode 100644 index 0000000000..a84a0f8fb5 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/index.ts @@ -0,0 +1,9 @@ +export { default as HelloCSS } from './HelloCSS' +export { default as HelloLess } from './HelloLess' +export { default as HelloMLess } from './HelloModuleLess' +export { default as HelloSCSS } from './HelloSCSS' +export { default as HelloAntD } from './HelloAntD' +export { default as HelloFluentUI } from './HelloFluentUI' +export { default as HelloAntDIcons } from './HelloAntDIcons' +export { default as HelloSVG } from './HelloSVG' +export { default as HelloYAML } from './HelloYAML' diff --git a/ui-esbuild/tsconfig.json b/ui-esbuild/tsconfig.json index 8c9d65ac1b..48fe915331 100644 --- a/ui-esbuild/tsconfig.json +++ b/ui-esbuild/tsconfig.json @@ -14,7 +14,11 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "baseUrl": "src", + "paths": { + "@lib/*": ["lib/*"] + } }, "include": ["src"] } From 588fd61fedd67eac7a8318cf7351d93c69242dd5 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 17:21:32 +0800 Subject: [PATCH 024/100] compile basic dynamic import --- ui-esbuild/builder.js | 17 +++++++++++------ ui-esbuild/public/index.html | 2 +- ui-esbuild/src/App.tsx | 4 +++- .../HelloDynamicImport/index.tsx | 18 ++++++++++++++++++ .../test-components/HelloDynamicImport/say.ts | 11 +++++++++++ .../HelloDynamicImport/style.module.less | 5 +++++ ui-esbuild/src/lib/test-components/index.ts | 1 + 7 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx create mode 100644 ui-esbuild/src/lib/test-components/HelloDynamicImport/say.ts create mode 100644 ui-esbuild/src/lib/test-components/HelloDynamicImport/style.module.less diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index bba5a63c74..d59d5ceaa5 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -66,11 +66,12 @@ const buildParams = { loader: { '.ts': 'tsx' }, outdir: 'dist', minify: !isDev, - format: 'cjs', + format: 'esm', bundle: true, sourcemap: true, logLevel: 'error', incremental: true, + splitting: true, loader: { '.svg': 'dataurl' }, @@ -89,11 +90,15 @@ const buildParams = { async function main() { // TODO - refine - fs.copyFile('./public/index.html', './dist/index.html', () => {}) - fs.copyFile('./public/favicon.ico', './dist/favicon.ico', () => {}) - fs.copyFile('./public/manifest.json', './dist/manifest.json', () => {}) - fs.copyFile('./public/logo192.png', './dist/logo192.png', () => {}) - fs.copyFile('./public/logo512.png', './dist/logo512.png', () => {}) + + fs.rmSync('./dist', { force: true, recursive: true }) + fs.mkdirSync('./dist') + + fs.copyFileSync('./public/index.html', './dist/index.html') + fs.copyFileSync('./public/favicon.ico', './dist/favicon.ico') + fs.copyFileSync('./public/manifest.json', './dist/manifest.json') + fs.copyFileSync('./public/logo192.png', './dist/logo192.png') + fs.copyFileSync('./public/logo512.png', './dist/logo512.png') if (isDev) { const builder = await build(buildParams) diff --git a/ui-esbuild/public/index.html b/ui-esbuild/public/index.html index 7e299f7135..64a176e6e8 100644 --- a/ui-esbuild/public/index.html +++ b/ui-esbuild/public/index.html @@ -20,7 +20,7 @@
- + \ No newline at end of file diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index e1d65bed17..96042dbfe9 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -9,7 +9,8 @@ import { HelloFluentUI, HelloAntDIcons, HelloSVG, - HelloYAML + HelloYAML, + HelloDynamicImport } from '@lib/test-components' import './style.less' @@ -26,6 +27,7 @@ export default function App() { +
) } diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx b/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx new file mode 100644 index 0000000000..0fcb89c718 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx @@ -0,0 +1,18 @@ +import React from 'react' + +import styles from './style.module.less' + +export default function HelloDynamicImport() { + async function btnClick() { + let say = await import('./say') // no need suffix + say.hi() // Hello! + say.bye() // Bye! + say.default() // Module loaded (export default)! + } + + return ( +
+ +
+ ) +} diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/say.ts b/ui-esbuild/src/lib/test-components/HelloDynamicImport/say.ts new file mode 100644 index 0000000000..d7f4369321 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloDynamicImport/say.ts @@ -0,0 +1,11 @@ +export function hi() { + alert(`Hello`) +} + +export function bye() { + alert(`Bye`) +} + +export default function () { + alert('Module loaded (export default)!') +} diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/style.module.less b/ui-esbuild/src/lib/test-components/HelloDynamicImport/style.module.less new file mode 100644 index 0000000000..0e0678f085 --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloDynamicImport/style.module.less @@ -0,0 +1,5 @@ +.hello-di-container { + color: cornflowerblue; + text-align: center; + font-weight: 600; +} diff --git a/ui-esbuild/src/lib/test-components/index.ts b/ui-esbuild/src/lib/test-components/index.ts index a84a0f8fb5..9e8f9eae83 100644 --- a/ui-esbuild/src/lib/test-components/index.ts +++ b/ui-esbuild/src/lib/test-components/index.ts @@ -7,3 +7,4 @@ export { default as HelloFluentUI } from './HelloFluentUI' export { default as HelloAntDIcons } from './HelloAntDIcons' export { default as HelloSVG } from './HelloSVG' export { default as HelloYAML } from './HelloYAML' +export { default as HelloDynamicImport } from './HelloDynamicImport' From fd9d8d9e5f9f041b83fcff698ed840005cc67f7f Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 17:34:11 +0800 Subject: [PATCH 025/100] compile lazy load component --- .../test-components/HelloDynamicImport/LazyComponent.tsx | 9 +++++++++ .../src/lib/test-components/HelloDynamicImport/index.tsx | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 ui-esbuild/src/lib/test-components/HelloDynamicImport/LazyComponent.tsx diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/LazyComponent.tsx b/ui-esbuild/src/lib/test-components/HelloDynamicImport/LazyComponent.tsx new file mode 100644 index 0000000000..044c0769ec --- /dev/null +++ b/ui-esbuild/src/lib/test-components/HelloDynamicImport/LazyComponent.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +export default function LazyComponent() { + return ( +
+ +
+ ) +} diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx b/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx index 0fcb89c718..2da63391c0 100644 --- a/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx +++ b/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx @@ -1,4 +1,6 @@ -import React from 'react' +import React, { Suspense } from 'react' + +const LazyComp = React.lazy(() => import('./LazyComponent')) import styles from './style.module.less' @@ -13,6 +15,9 @@ export default function HelloDynamicImport() { return (
+ Loading...
}> + + ) } From 2f4416108bdece3023465ea2622ab7f5d6faeea6 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 18:31:54 +0800 Subject: [PATCH 026/100] improve dev build speed --- ui-esbuild/builder.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/ui-esbuild/builder.js b/ui-esbuild/builder.js index d59d5ceaa5..879678cbe9 100644 --- a/ui-esbuild/builder.js +++ b/ui-esbuild/builder.js @@ -25,11 +25,11 @@ const isDev = argv('dev') === true const serverParams = { port: 8181, // Set the server port. Defaults to 8080. root: 'dist', // Set root directory that's being served. Defaults to cwd. - open: true // When false, it won't load your browser by default. + open: false // When false, it won't load your browser by default. // host: "0.0.0.0", // Set the address to bind to. Defaults to 0.0.0.0 or process.env.IP. // ignore: 'scss,my/templates', // comma-separated string for paths to ignore // file: "index.html", // When set, serve this file (server root relative) for every 404 (useful for single-page applications) - // wait: 1000, // Waits for all changes, before reloading. Defaults to 0 sec. + // wait: 1000 // Waits for all changes, before reloading. Defaults to 0 sec. // mount: [['/components', './node_modules']], // Mount a directory to a route. // logLevel: 2, // 0 = errors only, 1 = some, 2 = lots // middleware: [function(req, res, next) { next(); }] // Takes an array of Connect-compatible middleware that are injected into the server middleware stack @@ -90,10 +90,8 @@ const buildParams = { async function main() { // TODO - refine - fs.rmSync('./dist', { force: true, recursive: true }) fs.mkdirSync('./dist') - fs.copyFileSync('./public/index.html', './dist/index.html') fs.copyFileSync('./public/favicon.ico', './dist/favicon.ico') fs.copyFileSync('./public/manifest.json', './dist/manifest.json') @@ -103,11 +101,11 @@ async function main() { if (isDev) { const builder = await build(buildParams) - watch('src/**/*').on('all', () => { + start(serverParams) + + watch('src/**/*', { ignoreInitial: true }).on('all', () => { builder.rebuild() }) - - start(serverParams) } else { build(buildParams).finally(() => process.exit(0)) } From 6536f8b509f5b3b97967318b580b9d4f0c4a725d Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Wed, 17 Nov 2021 18:37:14 +0800 Subject: [PATCH 027/100] update readme --- ui-esbuild/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ui-esbuild/README.md b/ui-esbuild/README.md index 85b688324c..722bdabd1d 100644 --- a/ui-esbuild/README.md +++ b/ui-esbuild/README.md @@ -1,6 +1,6 @@ -To compile the fluentui, we need to modify the esbuild-plugin-postcss2 code. +To compile with the fluentui, we need to modify the esbuild-plugin-postcss2 code. -Insert the following code into `ui-esbuild/node_modules/esbuild-plugin-postcss2/dist/index.js` line 70. +Insert the following code into `ui-esbuild/node_modules/esbuild-plugin-postcss2/dist/index.js`. ```diff if (!sourceFullPath) @@ -10,4 +10,6 @@ Insert the following code into `ui-esbuild/node_modules/esbuild-plugin-postcss2/ + } ``` +(The builder.js has helped do this work.) + Will figure out a better solution. From 9b64accbe7d90107898716d45253db5d243f3e7d Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Thu, 18 Nov 2021 10:38:56 +0800 Subject: [PATCH 028/100] refine --- ui-esbuild/src/App.tsx | 26 ++------------------------ ui-esbuild/src/HelloApp.tsx | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 24 deletions(-) create mode 100644 ui-esbuild/src/HelloApp.tsx diff --git a/ui-esbuild/src/App.tsx b/ui-esbuild/src/App.tsx index 96042dbfe9..00a983ccc2 100644 --- a/ui-esbuild/src/App.tsx +++ b/ui-esbuild/src/App.tsx @@ -1,33 +1,11 @@ import React from 'react' -import { - HelloCSS, - HelloLess, - HelloMLess, - HelloSCSS, - HelloAntD, - HelloFluentUI, - HelloAntDIcons, - HelloSVG, - HelloYAML, - HelloDynamicImport -} from '@lib/test-components' - -import './style.less' +import HelloApp from 'HelloApp' export default function App() { return (
- - - - - - - - - - +
) } diff --git a/ui-esbuild/src/HelloApp.tsx b/ui-esbuild/src/HelloApp.tsx new file mode 100644 index 0000000000..938a879087 --- /dev/null +++ b/ui-esbuild/src/HelloApp.tsx @@ -0,0 +1,33 @@ +import React from 'react' + +import { + HelloCSS, + HelloLess, + HelloMLess, + HelloSCSS, + HelloAntD, + HelloFluentUI, + HelloAntDIcons, + HelloSVG, + HelloYAML, + HelloDynamicImport +} from '@lib/test-components' + +import './style.less' + +export default function HelloApp() { + return ( +
+ + + + + + + + + + +
+ ) +} From e71fb8765a7c7d0749dcfe23c5663ebb32f002df Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Thu, 18 Nov 2021 20:58:45 +0800 Subject: [PATCH 029/100] backup original ui folder --- ui-ori/.env.development | 7 + ui-ori/.env.production | 8 + ui-ori/.gitignore | 26 + ui-ori/.openapi_config.yaml | 3 + ui-ori/.prettierignore | 4 + ui-ori/.prettierrc | 5 + ui-ori/.storybook/main.js | 42 + ui-ori/.storybook/preview.js | 22 + ui-ori/config-overrides.js | 208 + ui-ori/dashboardApp/index.ts | 182 + .../layout/main/Sider/Banner.module.less | 45 + .../dashboardApp/layout/main/Sider/Banner.tsx | 106 + .../layout/main/Sider/index.module.less | 61 + .../dashboardApp/layout/main/Sider/index.tsx | 201 + .../layout/main/Sider/logo-icon-light.svg | 1 + .../layout/main/index.module.less | 29 + ui-ori/dashboardApp/layout/main/index.tsx | 112 + .../layout/signin/index.module.less | 168 + ui-ori/dashboardApp/layout/signin/index.tsx | 519 + ui-ori/dashboardApp/layout/signin/landing.svg | 1 + ui-ori/dashboardApp/layout/signin/logo.svg | 1 + .../dashboardApp/layout/translations/en.yaml | 36 + .../dashboardApp/layout/translations/zh.yaml | 37 + ui-ori/dashboardApp/nprogress.less | 69 + .../components/DiagnosisReport.tsx | 99 + .../components/DiagnosisTable.tsx | 110 + ui-ori/diagnoseReportApp/index.css | 36 + ui-ori/diagnoseReportApp/index.tsx | 31 + ui-ori/diagnoseReportApp/react-app-env.d.ts | 6 + ui-ori/diagnoseReportApp/translations/en.yaml | 303 + ui-ori/diagnoseReportApp/translations/zh.yaml | 304 + ui-ori/diagnoseReportApp/types.ts | 17 + ui-ori/gulpfile.esm.js | 87 + ui-ori/lib/.gitignore | 1 + ui-ori/lib/antd.global.less | 512 + ui-ori/lib/antd.less | 12 + ui-ori/lib/antd.override.less | 28 + .../apps/ClusterInfo/components/DiskTable.tsx | 212 + .../apps/ClusterInfo/components/HostTable.tsx | 213 + .../ClusterInfo/components/InstanceTable.tsx | 195 + .../components/Statistics.module.less | 8 + .../ClusterInfo/components/Statistics.tsx | 102 + .../ClusterInfo/components/StoreLocation.tsx | 32 + .../StoreLocationTree/index.module.less | 33 + .../StoreLocationTree/index.stories.tsx | 240 + .../components/StoreLocationTree/index.tsx | 587 + ui-ori/lib/apps/ClusterInfo/index.meta.ts | 9 + ui-ori/lib/apps/ClusterInfo/index.tsx | 23 + .../apps/ClusterInfo/pages/List.module.less | 15 + ui-ori/lib/apps/ClusterInfo/pages/List.tsx | 74 + ui-ori/lib/apps/ClusterInfo/status/status.ts | 5 + .../lib/apps/ClusterInfo/translations/en.yaml | 54 + .../lib/apps/ClusterInfo/translations/zh.yaml | 54 + .../lib/apps/Configuration/InlineEditor.tsx | 140 + ui-ori/lib/apps/Configuration/index.meta.ts | 9 + ui-ori/lib/apps/Configuration/index.tsx | 228 + .../apps/Configuration/translations/en.yaml | 8 + .../apps/Configuration/translations/zh.yaml | 8 + .../apps/ContinuousProfiling/index.meta.ts | 10 + ui-ori/lib/apps/ContinuousProfiling/index.tsx | 25 + .../pages/ConProfSettingForm.tsx | 214 + .../apps/ContinuousProfiling/pages/Detail.tsx | 153 + .../pages/List.module.less | 20 + .../apps/ContinuousProfiling/pages/List.tsx | 229 + .../apps/ContinuousProfiling/pages/index.ts | 4 + .../ContinuousProfiling/translations/en.yaml | 64 + .../ContinuousProfiling/translations/zh.yaml | 66 + ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx | 163 + .../apps/DebugAPI/apilist/ApiList.module.less | 17 + ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx | 208 + ui-ori/lib/apps/DebugAPI/apilist/index.ts | 3 + .../apps/DebugAPI/apilist/widgets/Bool.tsx | 27 + .../DebugAPI/apilist/widgets/Constant.tsx | 20 + .../DebugAPI/apilist/widgets/Database.tsx | 55 + .../apps/DebugAPI/apilist/widgets/Enum.tsx | 23 + .../apps/DebugAPI/apilist/widgets/Host.tsx | 37 + .../lib/apps/DebugAPI/apilist/widgets/Int.tsx | 17 + .../DebugAPI/apilist/widgets/StoresState.tsx | 30 + .../apps/DebugAPI/apilist/widgets/Table.tsx | 64 + .../apps/DebugAPI/apilist/widgets/TableID.tsx | 64 + .../apps/DebugAPI/apilist/widgets/Tags.tsx | 19 + .../apps/DebugAPI/apilist/widgets/Text.tsx | 16 + .../apps/DebugAPI/apilist/widgets/index.tsx | 98 + .../apilist/widgets/useLimitSelection.ts | 24 + ui-ori/lib/apps/DebugAPI/index.meta.ts | 9 + ui-ori/lib/apps/DebugAPI/index.tsx | 12 + ui-ori/lib/apps/DebugAPI/translations/en.yaml | 82 + ui-ori/lib/apps/DebugAPI/translations/zh.yaml | 26 + .../Diagnose/components/DiagnosisTable.tsx | 201 + ui-ori/lib/apps/Diagnose/index.meta.ts | 9 + ui-ori/lib/apps/Diagnose/index.tsx | 17 + .../apps/Diagnose/pages/DiagnoseGenerator.tsx | 148 + ui-ori/lib/apps/Diagnose/pages/index.ts | 3 + ui-ori/lib/apps/Diagnose/translations/en.yaml | 23 + ui-ori/lib/apps/Diagnose/translations/zh.yaml | 23 + .../lib/apps/Diagnose/utils/tableColumns.tsx | 126 + .../lib/apps/InstanceProfiling/index.meta.ts | 9 + ui-ori/lib/apps/InstanceProfiling/index.tsx | 25 + .../apps/InstanceProfiling/pages/Detail.tsx | 187 + .../InstanceProfiling/pages/List.module.less | 14 + .../lib/apps/InstanceProfiling/pages/List.tsx | 252 + .../lib/apps/InstanceProfiling/pages/index.ts | 4 + .../InstanceProfiling/translations/en.yaml | 42 + .../InstanceProfiling/translations/zh.yaml | 42 + .../utils/combineTargetStats.ts | 18 + .../lib/apps/InstanceProfiling/utils/index.ts | 1 + ui-ori/lib/apps/KeyViz/components/KeyViz.less | 160 + ui-ori/lib/apps/KeyViz/components/KeyViz.tsx | 277 + .../KeyViz/components/KeyVizSettingForm.tsx | 207 + .../apps/KeyViz/components/KeyVizToolbar.tsx | 301 + .../lib/apps/KeyViz/heatmap/axis/histogram.ts | 109 + ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts | 82 + .../apps/KeyViz/heatmap/axis/label-axis.ts | 138 + ui-ori/lib/apps/KeyViz/heatmap/buffer.ts | 33 + ui-ori/lib/apps/KeyViz/heatmap/chart.ts | 837 + ui-ori/lib/apps/KeyViz/heatmap/color.ts | 62 + ui-ori/lib/apps/KeyViz/heatmap/index.tsx | 57 + ui-ori/lib/apps/KeyViz/heatmap/legend.ts | 86 + ui-ori/lib/apps/KeyViz/heatmap/types.ts | 18 + ui-ori/lib/apps/KeyViz/heatmap/utils.ts | 74 + ui-ori/lib/apps/KeyViz/index.meta.ts | 9 + ui-ori/lib/apps/KeyViz/index.tsx | 11 + ui-ori/lib/apps/KeyViz/translations/en.yaml | 39 + ui-ori/lib/apps/KeyViz/translations/zh.yaml | 39 + ui-ori/lib/apps/KeyViz/utils/api.ts | 31 + ui-ori/lib/apps/KeyViz/utils/index.ts | 1 + .../apps/Overview/components/Instances.tsx | 115 + .../apps/Overview/components/MonitorAlert.tsx | 102 + .../Overview/components/RecentSlowQueries.tsx | 43 + .../Overview/components/RecentStatements.tsx | 52 + .../Overview/components/Styles.module.less | 3 + ui-ori/lib/apps/Overview/index.meta.ts | 10 + ui-ori/lib/apps/Overview/index.tsx | 79 + ui-ori/lib/apps/Overview/translations/en.yaml | 19 + ui-ori/lib/apps/Overview/translations/zh.yaml | 19 + .../lib/apps/QueryEditor/Editor.module.less | 10 + ui-ori/lib/apps/QueryEditor/Editor.tsx | 36 + .../apps/QueryEditor/ResultTable.module.less | 7 + ui-ori/lib/apps/QueryEditor/ResultTable.tsx | 64 + .../QueryEditor/editorThemes/oneHalfDark.js | 118 + .../QueryEditor/editorThemes/oneHalfLight.js | 102 + ui-ori/lib/apps/QueryEditor/index.meta.ts | 9 + ui-ori/lib/apps/QueryEditor/index.module.less | 40 + ui-ori/lib/apps/QueryEditor/index.tsx | 107 + .../lib/apps/QueryEditor/translations/en.yaml | 2 + .../lib/apps/QueryEditor/translations/zh.yaml | 2 + .../lib/apps/SearchLogs/components/Icon.tsx | 18 + ui-ori/lib/apps/SearchLogs/components/Log.tsx | 32 + .../SearchLogs/components/SearchHeader.tsx | 190 + .../SearchLogs/components/SearchProgress.tsx | 242 + .../SearchLogs/components/SearchResult.tsx | 157 + .../SearchLogs/components/Styles.module.less | 25 + .../lib/apps/SearchLogs/components/index.ts | 5 + ui-ori/lib/apps/SearchLogs/index.meta.ts | 9 + ui-ori/lib/apps/SearchLogs/index.tsx | 26 + .../lib/apps/SearchLogs/pages/LogSearch.tsx | 25 + .../apps/SearchLogs/pages/LogSearchDetail.tsx | 89 + .../SearchLogs/pages/LogSearchHistory.tsx | 227 + ui-ori/lib/apps/SearchLogs/pages/index.ts | 5 + .../lib/apps/SearchLogs/translations/en.yaml | 49 + .../lib/apps/SearchLogs/translations/zh.yaml | 49 + ui-ori/lib/apps/SearchLogs/utils/index.ts | 34 + .../SlowQuery/components/SlowQueriesTable.tsx | 60 + ui-ori/lib/apps/SlowQuery/components/index.ts | 3 + ui-ori/lib/apps/SlowQuery/index.meta.ts | 9 + ui-ori/lib/apps/SlowQuery/index.tsx | 28 + .../SlowQuery/pages/Detail/DetailTabBasic.tsx | 30 + .../SlowQuery/pages/Detail/DetailTabCopr.tsx | 51 + .../SlowQuery/pages/Detail/DetailTabTime.tsx | 119 + .../SlowQuery/pages/Detail/DetailTabTxn.tsx | 28 + .../SlowQuery/pages/Detail/DetailTabs.tsx | 88 + .../lib/apps/SlowQuery/pages/Detail/index.tsx | 178 + .../SlowQuery/pages/List/List.module.less | 15 + .../lib/apps/SlowQuery/pages/List/index.tsx | 188 + ui-ori/lib/apps/SlowQuery/pages/index.ts | 4 + .../lib/apps/SlowQuery/translations/en.yaml | 133 + .../lib/apps/SlowQuery/translations/zh.yaml | 136 + .../lib/apps/SlowQuery/utils/tableColumns.tsx | 126 + .../apps/SlowQuery/utils/useSchemaColumns.ts | 23 + .../utils/useSlowQueryTableController.ts | 277 + .../Statement/components/StatementsTable.tsx | 92 + ui-ori/lib/apps/Statement/components/index.ts | 3 + ui-ori/lib/apps/Statement/index.meta.ts | 9 + ui-ori/lib/apps/Statement/index.tsx | 29 + .../Statement/pages/Detail/PlanDetail.tsx | 182 + .../pages/Detail/PlanDetailTabBasic.tsx | 65 + .../pages/Detail/PlanDetailTabCopr.tsx | 80 + .../pages/Detail/PlanDetailTabTime.tsx | 69 + .../pages/Detail/PlanDetailTabTxn.tsx | 48 + .../Statement/pages/Detail/PlanDetailTabs.tsx | 100 + .../Statement/pages/Detail/SlowQueryTab.tsx | 33 + .../lib/apps/Statement/pages/Detail/index.tsx | 208 + .../Statement/pages/List/List.module.less | 15 + .../pages/List/StatementSettingForm.tsx | 211 + .../pages/List/TimeRangeSelector.module.less | 46 + .../pages/List/TimeRangeSelector.tsx | 272 + .../lib/apps/Statement/pages/List/index.tsx | 258 + ui-ori/lib/apps/Statement/pages/index.ts | 4 + .../lib/apps/Statement/translations/en.yaml | 160 + .../lib/apps/Statement/translations/zh.yaml | 168 + .../lib/apps/Statement/utils/tableColumns.tsx | 310 + .../apps/Statement/utils/useSchemaColumns.ts | 23 + .../utils/useStatementTableController.ts | 317 + .../lib/apps/Statement/utils/useStatements.ts | 76 + .../SystemReport/components/ReportHistory.tsx | 120 + ui-ori/lib/apps/SystemReport/index.meta.ts | 9 + ui-ori/lib/apps/SystemReport/index.tsx | 25 + .../SystemReport/pages/ReportGenerator.tsx | 151 + .../apps/SystemReport/pages/ReportStatus.tsx | 87 + ui-ori/lib/apps/SystemReport/pages/index.ts | 4 + .../apps/SystemReport/translations/en.yaml | 28 + .../apps/SystemReport/translations/zh.yaml | 28 + ui-ori/lib/apps/UserProfile/Form.Language.tsx | 33 + .../apps/UserProfile/Form.PrometheusAddr.tsx | 142 + ui-ori/lib/apps/UserProfile/Form.SSO.tsx | 319 + ui-ori/lib/apps/UserProfile/Form.Session.tsx | 221 + ui-ori/lib/apps/UserProfile/Form.Version.tsx | 66 + ui-ori/lib/apps/UserProfile/constants.tsx | 1 + ui-ori/lib/apps/UserProfile/index.meta.ts | 9 + ui-ori/lib/apps/UserProfile/index.tsx | 36 + .../lib/apps/UserProfile/translations/en.yaml | 78 + .../lib/apps/UserProfile/translations/zh.yaml | 76 + ui-ori/lib/client/api/.gitignore | 3 + .../lib/client/api/.openapi-generator-ignore | 2 + ui-ori/lib/client/baseUrl.ts | 20 + ui-ori/lib/client/index.tsx | 143 + ui-ori/lib/client/translations/en.yaml | 28 + ui-ori/lib/client/translations/zh.yaml | 28 + .../AnimatedSkeleton/index.module.less | 19 + .../lib/components/AnimatedSkeleton/index.tsx | 53 + ui-ori/lib/components/AppearAnimate/index.tsx | 33 + ui-ori/lib/components/Bar/Bar.module.less | 67 + ui-ori/lib/components/Bar/Bar.tsx | 112 + ui-ori/lib/components/Bar/index.tsx | 3 + .../components/BaseSelect/index.module.less | 102 + .../components/BaseSelect/index.stories.tsx | 33 + ui-ori/lib/components/BaseSelect/index.tsx | 264 + ui-ori/lib/components/Blink/index.module.less | 17 + ui-ori/lib/components/Blink/index.tsx | 29 + ui-ori/lib/components/Card/index.module.less | 73 + ui-ori/lib/components/Card/index.tsx | 61 + .../lib/components/CardTable/GroupHeader.tsx | 115 + .../components/CardTable/index.module.less | 61 + ui-ori/lib/components/CardTable/index.tsx | 267 + .../lib/components/CardTabs/index.module.less | 9 + ui-ori/lib/components/CardTabs/index.tsx | 57 + .../ColumnsSelector/index.module.less | 14 + .../lib/components/ColumnsSelector/index.tsx | 153 + .../lib/components/CopyLink/index.module.less | 5 + ui-ori/lib/components/CopyLink/index.tsx | 77 + ui-ori/lib/components/DatePicker/index.tsx | 8 + ui-ori/lib/components/DateTime/Calendar.tsx | 72 + ui-ori/lib/components/DateTime/Long.tsx | 24 + .../lib/components/DateTime/calendarPlugin.ts | 68 + ui-ori/lib/components/DateTime/index.tsx | 8 + .../components/Descriptions/index.module.less | 52 + ui-ori/lib/components/Descriptions/index.tsx | 67 + ui-ori/lib/components/ErrorBar/index.tsx | 39 + ui-ori/lib/components/Expand/index.tsx | 53 + ui-ori/lib/components/Head/index.module.less | 44 + ui-ori/lib/components/Head/index.tsx | 40 + ui-ori/lib/components/HighlightSQL/index.tsx | 56 + .../components/InstanceSelect/DropOverlay.tsx | 67 + .../TableWithFilter.module.less | 13 + .../InstanceSelect/TableWithFilter.tsx | 113 + .../InstanceSelect/ValueDisplay.tsx | 81 + .../InstanceSelect/index.stories.tsx | 39 + .../lib/components/InstanceSelect/index.tsx | 265 + .../components/InstanceStatusBadge/index.tsx | 90 + .../lib/components/LanguageDropdown/index.tsx | 30 + .../components/MetricChart/index.stories.tsx | 45 + ui-ori/lib/components/MetricChart/index.tsx | 304 + .../components/MultiSelect/DropOverlay.tsx | 63 + ui-ori/lib/components/MultiSelect/Plain.tsx | 19 + .../components/MultiSelect/index.stories.tsx | 41 + ui-ori/lib/components/MultiSelect/index.tsx | 166 + .../components/ParamsPageWrapper/index.tsx | 14 + .../Pre/JetBrainsMonoNL-Regular.woff | Bin 0 -> 51624 bytes ui-ori/lib/components/Pre/index.module.less | 34 + ui-ori/lib/components/Pre/index.tsx | 23 + ui-ori/lib/components/Root/index.tsx | 37 + ui-ori/lib/components/TextWithInfo/index.tsx | 74 + .../lib/components/TextWrap/index.module.less | 20 + ui-ori/lib/components/TextWrap/index.tsx | 27 + .../TimeRangeSelector/index.module.less | 41 + .../components/TimeRangeSelector/index.tsx | 190 + .../lib/components/Toolbar/index.module.less | 18 + ui-ori/lib/components/Toolbar/index.tsx | 33 + .../lib/components/ValueWithTooltip/index.tsx | 58 + ui-ori/lib/components/index.ts | 58 + ui-ori/lib/utils/appOptions.ts | 27 + ui-ori/lib/utils/auth.ts | 41 + ui-ori/lib/utils/authSSO.ts | 78 + ui-ori/lib/utils/i18n.ts | 65 + ui-ori/lib/utils/instanceTable.ts | 133 + ui-ori/lib/utils/openLink.ts | 22 + ui-ori/lib/utils/publicPathPrefix.ts | 9 + ui-ori/lib/utils/query.ts | 31 + ui-ori/lib/utils/registry.ts | 94 + ui-ori/lib/utils/routing.ts | 35 + ui-ori/lib/utils/selectionWithFilter.ts | 291 + ui-ori/lib/utils/sentryHelpers.ts | 109 + .../utils/sqlFormatter/TiDBSQLFormatter.ts | 371 + ui-ori/lib/utils/sqlFormatter/index.ts | 7 + ui-ori/lib/utils/store.ts | 58 + ui-ori/lib/utils/tableColumnFactory.tsx | 335 + ui-ori/lib/utils/tableColumns.tsx | 173 + ui-ori/lib/utils/useCache.ts | 69 + ui-ori/lib/utils/useCacheItemIndex.ts | 16 + ui-ori/lib/utils/useClientRequest.ts | 288 + ui-ori/lib/utils/useLocalStorageState.ts | 14 + ui-ori/lib/utils/useOrderState.ts | 45 + ui-ori/lib/utils/useQueryParams.ts | 19 + ui-ori/lib/utils/wdyr.ts | 7 + ui-ori/package.json | 123 + ui-ori/public/compat.js | 64 + ui-ori/public/diagnoseReport.html | 21 + ui-ori/public/favicon.ico | Bin 0 -> 15406 bytes ui-ori/public/index.html | 101 + ui-ori/public/robots.txt | 2 + ui-ori/src/index.ts | 4 + ui-ori/src/publicPath.ts | 2 + ui-ori/src/react-app-env.d.ts | 11 + ui-ori/src/sentry.ts | 24 + ui-ori/src/setupProxy.js | 30 + ui-ori/tests/config-portal-test.html | 58 + ui-ori/tests/e2e/_config.ts | 4 + ui-ori/tests/e2e/_preset.js | 4 + ui-ori/tests/e2e/_setup.js | 1 + ui-ori/tests/e2e/search_log.test.ts | 39 + ui-ori/tests/e2e/sign_in.test.ts | 28 + ui-ori/tests/e2e/utils/sign_in.ts | 11 + ui-ori/tests/jest-puppeteer.config.js | 5 + ui-ori/tests/jest.config.js | 4 + ui-ori/tests/package.json | 20 + ui-ori/tests/tsconfig.json | 5 + ui-ori/tests/yarn.lock | 4101 ++++ ui-ori/tsconfig.json | 32 + ui-ori/tsconfig.paths.json | 10 + ui-ori/yarn.lock | 18440 ++++++++++++++++ 340 files changed, 48853 insertions(+) create mode 100644 ui-ori/.env.development create mode 100644 ui-ori/.env.production create mode 100644 ui-ori/.gitignore create mode 100644 ui-ori/.openapi_config.yaml create mode 100644 ui-ori/.prettierignore create mode 100644 ui-ori/.prettierrc create mode 100644 ui-ori/.storybook/main.js create mode 100644 ui-ori/.storybook/preview.js create mode 100755 ui-ori/config-overrides.js create mode 100755 ui-ori/dashboardApp/index.ts create mode 100644 ui-ori/dashboardApp/layout/main/Sider/Banner.module.less create mode 100644 ui-ori/dashboardApp/layout/main/Sider/Banner.tsx create mode 100644 ui-ori/dashboardApp/layout/main/Sider/index.module.less create mode 100644 ui-ori/dashboardApp/layout/main/Sider/index.tsx create mode 100644 ui-ori/dashboardApp/layout/main/Sider/logo-icon-light.svg create mode 100644 ui-ori/dashboardApp/layout/main/index.module.less create mode 100644 ui-ori/dashboardApp/layout/main/index.tsx create mode 100644 ui-ori/dashboardApp/layout/signin/index.module.less create mode 100755 ui-ori/dashboardApp/layout/signin/index.tsx create mode 100644 ui-ori/dashboardApp/layout/signin/landing.svg create mode 100644 ui-ori/dashboardApp/layout/signin/logo.svg create mode 100755 ui-ori/dashboardApp/layout/translations/en.yaml create mode 100755 ui-ori/dashboardApp/layout/translations/zh.yaml create mode 100644 ui-ori/dashboardApp/nprogress.less create mode 100644 ui-ori/diagnoseReportApp/components/DiagnosisReport.tsx create mode 100644 ui-ori/diagnoseReportApp/components/DiagnosisTable.tsx create mode 100644 ui-ori/diagnoseReportApp/index.css create mode 100644 ui-ori/diagnoseReportApp/index.tsx create mode 100644 ui-ori/diagnoseReportApp/react-app-env.d.ts create mode 100644 ui-ori/diagnoseReportApp/translations/en.yaml create mode 100644 ui-ori/diagnoseReportApp/translations/zh.yaml create mode 100644 ui-ori/diagnoseReportApp/types.ts create mode 100644 ui-ori/gulpfile.esm.js create mode 100644 ui-ori/lib/.gitignore create mode 100644 ui-ori/lib/antd.global.less create mode 100644 ui-ori/lib/antd.less create mode 100644 ui-ori/lib/antd.override.less create mode 100644 ui-ori/lib/apps/ClusterInfo/components/DiskTable.tsx create mode 100644 ui-ori/lib/apps/ClusterInfo/components/HostTable.tsx create mode 100644 ui-ori/lib/apps/ClusterInfo/components/InstanceTable.tsx create mode 100644 ui-ori/lib/apps/ClusterInfo/components/Statistics.module.less create mode 100644 ui-ori/lib/apps/ClusterInfo/components/Statistics.tsx create mode 100755 ui-ori/lib/apps/ClusterInfo/components/StoreLocation.tsx create mode 100755 ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less create mode 100755 ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.stories.tsx create mode 100755 ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.tsx create mode 100644 ui-ori/lib/apps/ClusterInfo/index.meta.ts create mode 100644 ui-ori/lib/apps/ClusterInfo/index.tsx create mode 100644 ui-ori/lib/apps/ClusterInfo/pages/List.module.less create mode 100644 ui-ori/lib/apps/ClusterInfo/pages/List.tsx create mode 100644 ui-ori/lib/apps/ClusterInfo/status/status.ts create mode 100644 ui-ori/lib/apps/ClusterInfo/translations/en.yaml create mode 100644 ui-ori/lib/apps/ClusterInfo/translations/zh.yaml create mode 100644 ui-ori/lib/apps/Configuration/InlineEditor.tsx create mode 100644 ui-ori/lib/apps/Configuration/index.meta.ts create mode 100644 ui-ori/lib/apps/Configuration/index.tsx create mode 100644 ui-ori/lib/apps/Configuration/translations/en.yaml create mode 100644 ui-ori/lib/apps/Configuration/translations/zh.yaml create mode 100644 ui-ori/lib/apps/ContinuousProfiling/index.meta.ts create mode 100644 ui-ori/lib/apps/ContinuousProfiling/index.tsx create mode 100755 ui-ori/lib/apps/ContinuousProfiling/pages/ConProfSettingForm.tsx create mode 100644 ui-ori/lib/apps/ContinuousProfiling/pages/Detail.tsx create mode 100644 ui-ori/lib/apps/ContinuousProfiling/pages/List.module.less create mode 100644 ui-ori/lib/apps/ContinuousProfiling/pages/List.tsx create mode 100644 ui-ori/lib/apps/ContinuousProfiling/pages/index.ts create mode 100644 ui-ori/lib/apps/ContinuousProfiling/translations/en.yaml create mode 100644 ui-ori/lib/apps/ContinuousProfiling/translations/zh.yaml create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/ApiList.module.less create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/index.ts create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Bool.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Constant.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Database.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Enum.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Host.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Int.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/StoresState.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Table.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/TableID.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Tags.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/Text.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/index.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/apilist/widgets/useLimitSelection.ts create mode 100644 ui-ori/lib/apps/DebugAPI/index.meta.ts create mode 100644 ui-ori/lib/apps/DebugAPI/index.tsx create mode 100644 ui-ori/lib/apps/DebugAPI/translations/en.yaml create mode 100644 ui-ori/lib/apps/DebugAPI/translations/zh.yaml create mode 100644 ui-ori/lib/apps/Diagnose/components/DiagnosisTable.tsx create mode 100644 ui-ori/lib/apps/Diagnose/index.meta.ts create mode 100644 ui-ori/lib/apps/Diagnose/index.tsx create mode 100644 ui-ori/lib/apps/Diagnose/pages/DiagnoseGenerator.tsx create mode 100644 ui-ori/lib/apps/Diagnose/pages/index.ts create mode 100644 ui-ori/lib/apps/Diagnose/translations/en.yaml create mode 100644 ui-ori/lib/apps/Diagnose/translations/zh.yaml create mode 100644 ui-ori/lib/apps/Diagnose/utils/tableColumns.tsx create mode 100644 ui-ori/lib/apps/InstanceProfiling/index.meta.ts create mode 100644 ui-ori/lib/apps/InstanceProfiling/index.tsx create mode 100644 ui-ori/lib/apps/InstanceProfiling/pages/Detail.tsx create mode 100644 ui-ori/lib/apps/InstanceProfiling/pages/List.module.less create mode 100644 ui-ori/lib/apps/InstanceProfiling/pages/List.tsx create mode 100644 ui-ori/lib/apps/InstanceProfiling/pages/index.ts create mode 100644 ui-ori/lib/apps/InstanceProfiling/translations/en.yaml create mode 100644 ui-ori/lib/apps/InstanceProfiling/translations/zh.yaml create mode 100644 ui-ori/lib/apps/InstanceProfiling/utils/combineTargetStats.ts create mode 100644 ui-ori/lib/apps/InstanceProfiling/utils/index.ts create mode 100644 ui-ori/lib/apps/KeyViz/components/KeyViz.less create mode 100644 ui-ori/lib/apps/KeyViz/components/KeyViz.tsx create mode 100644 ui-ori/lib/apps/KeyViz/components/KeyVizSettingForm.tsx create mode 100644 ui-ori/lib/apps/KeyViz/components/KeyVizToolbar.tsx create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/axis/histogram.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/axis/label-axis.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/buffer.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/chart.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/color.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/index.tsx create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/legend.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/types.ts create mode 100644 ui-ori/lib/apps/KeyViz/heatmap/utils.ts create mode 100644 ui-ori/lib/apps/KeyViz/index.meta.ts create mode 100644 ui-ori/lib/apps/KeyViz/index.tsx create mode 100644 ui-ori/lib/apps/KeyViz/translations/en.yaml create mode 100644 ui-ori/lib/apps/KeyViz/translations/zh.yaml create mode 100644 ui-ori/lib/apps/KeyViz/utils/api.ts create mode 100644 ui-ori/lib/apps/KeyViz/utils/index.ts create mode 100644 ui-ori/lib/apps/Overview/components/Instances.tsx create mode 100644 ui-ori/lib/apps/Overview/components/MonitorAlert.tsx create mode 100644 ui-ori/lib/apps/Overview/components/RecentSlowQueries.tsx create mode 100644 ui-ori/lib/apps/Overview/components/RecentStatements.tsx create mode 100644 ui-ori/lib/apps/Overview/components/Styles.module.less create mode 100644 ui-ori/lib/apps/Overview/index.meta.ts create mode 100644 ui-ori/lib/apps/Overview/index.tsx create mode 100644 ui-ori/lib/apps/Overview/translations/en.yaml create mode 100644 ui-ori/lib/apps/Overview/translations/zh.yaml create mode 100644 ui-ori/lib/apps/QueryEditor/Editor.module.less create mode 100644 ui-ori/lib/apps/QueryEditor/Editor.tsx create mode 100644 ui-ori/lib/apps/QueryEditor/ResultTable.module.less create mode 100644 ui-ori/lib/apps/QueryEditor/ResultTable.tsx create mode 100644 ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfDark.js create mode 100644 ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfLight.js create mode 100644 ui-ori/lib/apps/QueryEditor/index.meta.ts create mode 100644 ui-ori/lib/apps/QueryEditor/index.module.less create mode 100644 ui-ori/lib/apps/QueryEditor/index.tsx create mode 100644 ui-ori/lib/apps/QueryEditor/translations/en.yaml create mode 100644 ui-ori/lib/apps/QueryEditor/translations/zh.yaml create mode 100644 ui-ori/lib/apps/SearchLogs/components/Icon.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/components/Log.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/components/SearchHeader.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/components/SearchProgress.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/components/SearchResult.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/components/Styles.module.less create mode 100644 ui-ori/lib/apps/SearchLogs/components/index.ts create mode 100644 ui-ori/lib/apps/SearchLogs/index.meta.ts create mode 100644 ui-ori/lib/apps/SearchLogs/index.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/pages/LogSearch.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/pages/LogSearchDetail.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/pages/LogSearchHistory.tsx create mode 100644 ui-ori/lib/apps/SearchLogs/pages/index.ts create mode 100644 ui-ori/lib/apps/SearchLogs/translations/en.yaml create mode 100644 ui-ori/lib/apps/SearchLogs/translations/zh.yaml create mode 100644 ui-ori/lib/apps/SearchLogs/utils/index.ts create mode 100644 ui-ori/lib/apps/SlowQuery/components/SlowQueriesTable.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/components/index.ts create mode 100644 ui-ori/lib/apps/SlowQuery/index.meta.ts create mode 100644 ui-ori/lib/apps/SlowQuery/index.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabBasic.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTime.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTxn.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabs.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/Detail/index.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/List/List.module.less create mode 100644 ui-ori/lib/apps/SlowQuery/pages/List/index.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/pages/index.ts create mode 100644 ui-ori/lib/apps/SlowQuery/translations/en.yaml create mode 100644 ui-ori/lib/apps/SlowQuery/translations/zh.yaml create mode 100644 ui-ori/lib/apps/SlowQuery/utils/tableColumns.tsx create mode 100644 ui-ori/lib/apps/SlowQuery/utils/useSchemaColumns.ts create mode 100644 ui-ori/lib/apps/SlowQuery/utils/useSlowQueryTableController.ts create mode 100644 ui-ori/lib/apps/Statement/components/StatementsTable.tsx create mode 100644 ui-ori/lib/apps/Statement/components/index.ts create mode 100644 ui-ori/lib/apps/Statement/index.meta.ts create mode 100644 ui-ori/lib/apps/Statement/index.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/PlanDetail.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabBasic.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTime.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTxn.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabs.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/SlowQueryTab.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/Detail/index.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/List/List.module.less create mode 100755 ui-ori/lib/apps/Statement/pages/List/StatementSettingForm.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.module.less create mode 100644 ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/List/index.tsx create mode 100644 ui-ori/lib/apps/Statement/pages/index.ts create mode 100755 ui-ori/lib/apps/Statement/translations/en.yaml create mode 100755 ui-ori/lib/apps/Statement/translations/zh.yaml create mode 100644 ui-ori/lib/apps/Statement/utils/tableColumns.tsx create mode 100644 ui-ori/lib/apps/Statement/utils/useSchemaColumns.ts create mode 100644 ui-ori/lib/apps/Statement/utils/useStatementTableController.ts create mode 100644 ui-ori/lib/apps/Statement/utils/useStatements.ts create mode 100644 ui-ori/lib/apps/SystemReport/components/ReportHistory.tsx create mode 100644 ui-ori/lib/apps/SystemReport/index.meta.ts create mode 100644 ui-ori/lib/apps/SystemReport/index.tsx create mode 100644 ui-ori/lib/apps/SystemReport/pages/ReportGenerator.tsx create mode 100644 ui-ori/lib/apps/SystemReport/pages/ReportStatus.tsx create mode 100644 ui-ori/lib/apps/SystemReport/pages/index.ts create mode 100644 ui-ori/lib/apps/SystemReport/translations/en.yaml create mode 100644 ui-ori/lib/apps/SystemReport/translations/zh.yaml create mode 100644 ui-ori/lib/apps/UserProfile/Form.Language.tsx create mode 100644 ui-ori/lib/apps/UserProfile/Form.PrometheusAddr.tsx create mode 100755 ui-ori/lib/apps/UserProfile/Form.SSO.tsx create mode 100644 ui-ori/lib/apps/UserProfile/Form.Session.tsx create mode 100644 ui-ori/lib/apps/UserProfile/Form.Version.tsx create mode 100644 ui-ori/lib/apps/UserProfile/constants.tsx create mode 100644 ui-ori/lib/apps/UserProfile/index.meta.ts create mode 100644 ui-ori/lib/apps/UserProfile/index.tsx create mode 100755 ui-ori/lib/apps/UserProfile/translations/en.yaml create mode 100755 ui-ori/lib/apps/UserProfile/translations/zh.yaml create mode 100644 ui-ori/lib/client/api/.gitignore create mode 100644 ui-ori/lib/client/api/.openapi-generator-ignore create mode 100644 ui-ori/lib/client/baseUrl.ts create mode 100755 ui-ori/lib/client/index.tsx create mode 100755 ui-ori/lib/client/translations/en.yaml create mode 100755 ui-ori/lib/client/translations/zh.yaml create mode 100644 ui-ori/lib/components/AnimatedSkeleton/index.module.less create mode 100644 ui-ori/lib/components/AnimatedSkeleton/index.tsx create mode 100644 ui-ori/lib/components/AppearAnimate/index.tsx create mode 100644 ui-ori/lib/components/Bar/Bar.module.less create mode 100644 ui-ori/lib/components/Bar/Bar.tsx create mode 100644 ui-ori/lib/components/Bar/index.tsx create mode 100644 ui-ori/lib/components/BaseSelect/index.module.less create mode 100644 ui-ori/lib/components/BaseSelect/index.stories.tsx create mode 100644 ui-ori/lib/components/BaseSelect/index.tsx create mode 100644 ui-ori/lib/components/Blink/index.module.less create mode 100644 ui-ori/lib/components/Blink/index.tsx create mode 100644 ui-ori/lib/components/Card/index.module.less create mode 100644 ui-ori/lib/components/Card/index.tsx create mode 100644 ui-ori/lib/components/CardTable/GroupHeader.tsx create mode 100644 ui-ori/lib/components/CardTable/index.module.less create mode 100644 ui-ori/lib/components/CardTable/index.tsx create mode 100644 ui-ori/lib/components/CardTabs/index.module.less create mode 100644 ui-ori/lib/components/CardTabs/index.tsx create mode 100644 ui-ori/lib/components/ColumnsSelector/index.module.less create mode 100644 ui-ori/lib/components/ColumnsSelector/index.tsx create mode 100644 ui-ori/lib/components/CopyLink/index.module.less create mode 100644 ui-ori/lib/components/CopyLink/index.tsx create mode 100644 ui-ori/lib/components/DatePicker/index.tsx create mode 100644 ui-ori/lib/components/DateTime/Calendar.tsx create mode 100644 ui-ori/lib/components/DateTime/Long.tsx create mode 100644 ui-ori/lib/components/DateTime/calendarPlugin.ts create mode 100644 ui-ori/lib/components/DateTime/index.tsx create mode 100644 ui-ori/lib/components/Descriptions/index.module.less create mode 100644 ui-ori/lib/components/Descriptions/index.tsx create mode 100644 ui-ori/lib/components/ErrorBar/index.tsx create mode 100644 ui-ori/lib/components/Expand/index.tsx create mode 100644 ui-ori/lib/components/Head/index.module.less create mode 100644 ui-ori/lib/components/Head/index.tsx create mode 100644 ui-ori/lib/components/HighlightSQL/index.tsx create mode 100644 ui-ori/lib/components/InstanceSelect/DropOverlay.tsx create mode 100644 ui-ori/lib/components/InstanceSelect/TableWithFilter.module.less create mode 100644 ui-ori/lib/components/InstanceSelect/TableWithFilter.tsx create mode 100644 ui-ori/lib/components/InstanceSelect/ValueDisplay.tsx create mode 100644 ui-ori/lib/components/InstanceSelect/index.stories.tsx create mode 100644 ui-ori/lib/components/InstanceSelect/index.tsx create mode 100644 ui-ori/lib/components/InstanceStatusBadge/index.tsx create mode 100644 ui-ori/lib/components/LanguageDropdown/index.tsx create mode 100644 ui-ori/lib/components/MetricChart/index.stories.tsx create mode 100644 ui-ori/lib/components/MetricChart/index.tsx create mode 100644 ui-ori/lib/components/MultiSelect/DropOverlay.tsx create mode 100644 ui-ori/lib/components/MultiSelect/Plain.tsx create mode 100644 ui-ori/lib/components/MultiSelect/index.stories.tsx create mode 100644 ui-ori/lib/components/MultiSelect/index.tsx create mode 100644 ui-ori/lib/components/ParamsPageWrapper/index.tsx create mode 100644 ui-ori/lib/components/Pre/JetBrainsMonoNL-Regular.woff create mode 100644 ui-ori/lib/components/Pre/index.module.less create mode 100644 ui-ori/lib/components/Pre/index.tsx create mode 100644 ui-ori/lib/components/Root/index.tsx create mode 100644 ui-ori/lib/components/TextWithInfo/index.tsx create mode 100644 ui-ori/lib/components/TextWrap/index.module.less create mode 100644 ui-ori/lib/components/TextWrap/index.tsx create mode 100644 ui-ori/lib/components/TimeRangeSelector/index.module.less create mode 100644 ui-ori/lib/components/TimeRangeSelector/index.tsx create mode 100644 ui-ori/lib/components/Toolbar/index.module.less create mode 100644 ui-ori/lib/components/Toolbar/index.tsx create mode 100644 ui-ori/lib/components/ValueWithTooltip/index.tsx create mode 100644 ui-ori/lib/components/index.ts create mode 100644 ui-ori/lib/utils/appOptions.ts create mode 100644 ui-ori/lib/utils/auth.ts create mode 100644 ui-ori/lib/utils/authSSO.ts create mode 100755 ui-ori/lib/utils/i18n.ts create mode 100644 ui-ori/lib/utils/instanceTable.ts create mode 100644 ui-ori/lib/utils/openLink.ts create mode 100644 ui-ori/lib/utils/publicPathPrefix.ts create mode 100644 ui-ori/lib/utils/query.ts create mode 100644 ui-ori/lib/utils/registry.ts create mode 100644 ui-ori/lib/utils/routing.ts create mode 100644 ui-ori/lib/utils/selectionWithFilter.ts create mode 100644 ui-ori/lib/utils/sentryHelpers.ts create mode 100644 ui-ori/lib/utils/sqlFormatter/TiDBSQLFormatter.ts create mode 100644 ui-ori/lib/utils/sqlFormatter/index.ts create mode 100644 ui-ori/lib/utils/store.ts create mode 100644 ui-ori/lib/utils/tableColumnFactory.tsx create mode 100644 ui-ori/lib/utils/tableColumns.tsx create mode 100644 ui-ori/lib/utils/useCache.ts create mode 100644 ui-ori/lib/utils/useCacheItemIndex.ts create mode 100644 ui-ori/lib/utils/useClientRequest.ts create mode 100644 ui-ori/lib/utils/useLocalStorageState.ts create mode 100644 ui-ori/lib/utils/useOrderState.ts create mode 100644 ui-ori/lib/utils/useQueryParams.ts create mode 100644 ui-ori/lib/utils/wdyr.ts create mode 100644 ui-ori/package.json create mode 100644 ui-ori/public/compat.js create mode 100644 ui-ori/public/diagnoseReport.html create mode 100755 ui-ori/public/favicon.ico create mode 100644 ui-ori/public/index.html create mode 100644 ui-ori/public/robots.txt create mode 100644 ui-ori/src/index.ts create mode 100644 ui-ori/src/publicPath.ts create mode 100644 ui-ori/src/react-app-env.d.ts create mode 100644 ui-ori/src/sentry.ts create mode 100644 ui-ori/src/setupProxy.js create mode 100755 ui-ori/tests/config-portal-test.html create mode 100644 ui-ori/tests/e2e/_config.ts create mode 100644 ui-ori/tests/e2e/_preset.js create mode 100644 ui-ori/tests/e2e/_setup.js create mode 100644 ui-ori/tests/e2e/search_log.test.ts create mode 100644 ui-ori/tests/e2e/sign_in.test.ts create mode 100644 ui-ori/tests/e2e/utils/sign_in.ts create mode 100644 ui-ori/tests/jest-puppeteer.config.js create mode 100644 ui-ori/tests/jest.config.js create mode 100644 ui-ori/tests/package.json create mode 100644 ui-ori/tests/tsconfig.json create mode 100644 ui-ori/tests/yarn.lock create mode 100644 ui-ori/tsconfig.json create mode 100644 ui-ori/tsconfig.paths.json create mode 100644 ui-ori/yarn.lock diff --git a/ui-ori/.env.development b/ui-ori/.env.development new file mode 100644 index 0000000000..4ee3e58b3b --- /dev/null +++ b/ui-ori/.env.development @@ -0,0 +1,7 @@ +PORT=3001 +REACT_APP_VERSION=$npm_package_version +REACT_APP_NAME=$npm_package_name +REACT_APP_SENTRY_DSN=https://10930d3b0a8d427cad2147d6d845be56@o226447.ingest.sentry.io/5721090 +REACT_APP_SENTRY_ENABLED=false +# REACT_APP_RELEASE_VERSION is set in config-overrides.js +REACT_APP_RELEASE_VERSION=unknown diff --git a/ui-ori/.env.production b/ui-ori/.env.production new file mode 100644 index 0000000000..958d4fd2b2 --- /dev/null +++ b/ui-ori/.env.production @@ -0,0 +1,8 @@ +INLINE_RUNTIME_CHUNK=false +PUBLIC_URL=__PUBLIC_PATH_PREFIX__/ +REACT_APP_VERSION=$npm_package_version +REACT_APP_NAME=$npm_package_name +REACT_APP_SENTRY_DSN=https://10930d3b0a8d427cad2147d6d845be56@o226447.ingest.sentry.io/5721090 +REACT_APP_SENTRY_ENABLED=true +# REACT_APP_RELEASE_VERSION is set in config-overrides.js +REACT_APP_RELEASE_VERSION=unknown diff --git a/ui-ori/.gitignore b/ui-ori/.gitignore new file mode 100644 index 0000000000..617f997255 --- /dev/null +++ b/ui-ori/.gitignore @@ -0,0 +1,26 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules +.pnp +.pnp.js + +# testing +coverage + +# production +build/ +dist/ +.rpt2_cache + +# misc +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/ui-ori/.openapi_config.yaml b/ui-ori/.openapi_config.yaml new file mode 100644 index 0000000000..5bc4e8292c --- /dev/null +++ b/ui-ori/.openapi_config.yaml @@ -0,0 +1,3 @@ +enumPropertyNaming: original +modelPropertyNaming: original +supportsES6: true diff --git a/ui-ori/.prettierignore b/ui-ori/.prettierignore new file mode 100644 index 0000000000..a14d95455d --- /dev/null +++ b/ui-ori/.prettierignore @@ -0,0 +1,4 @@ +build/ +public/ +lib/client/api/*.ts +tsconfig.json diff --git a/ui-ori/.prettierrc b/ui-ori/.prettierrc new file mode 100644 index 0000000000..9d313aa4a5 --- /dev/null +++ b/ui-ori/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "trailingComma": "es5", + "singleQuote": true +} diff --git a/ui-ori/.storybook/main.js b/ui-ori/.storybook/main.js new file mode 100644 index 0000000000..e92052f8cd --- /dev/null +++ b/ui-ori/.storybook/main.js @@ -0,0 +1,42 @@ +const path = require('path') + +function includeMorePaths(config) { + // find rule to handle *.tsx files + for (const rule of config.module.rules) { + for (const subRule of rule.oneOf || []) { + // /\.(js|mjs|jsx|ts|tsx)$/ + if (subRule.test instanceof RegExp && subRule.test.test('.tsx')) { + subRule.include.push(path.resolve(__dirname, '../lib')) + // although we don't care about the components inside diagnoseReportApp + // but it can't pass compile if we don't add it to the rule.include + subRule.include.push(path.resolve(__dirname, '../diagnoseReportApp')) + break + } + } + } + + return config +} + +// ref: https://harrietryder.co.uk/blog/storybook-with-typscript-customize-cra/ +const custom = require('../config-overrides') + +module.exports = { + stories: [ + '../lib/components/**/*.stories.@(ts|tsx|js|jsx)', + '../lib/apps/**/*.stories.@(ts|tsx|js|jsx)', + ], + addons: [ + '@storybook/preset-create-react-app', + '@storybook/addon-actions', + '@storybook/addon-links', + ], + webpackFinal: (storybookConfig) => { + const customConfig = custom(storybookConfig) + const newConfigs = { + ...storybookConfig, + module: { ...storybookConfig.module, rules: customConfig.module.rules }, + } + return includeMorePaths(newConfigs) + }, +} diff --git a/ui-ori/.storybook/preview.js b/ui-ori/.storybook/preview.js new file mode 100644 index 0000000000..472fca8790 --- /dev/null +++ b/ui-ori/.storybook/preview.js @@ -0,0 +1,22 @@ +import React, { useEffect } from 'react' +import { addDecorator } from '@storybook/react' +import { Root } from '@lib/components' +import client from '@lib/client' +import * as auth from '@lib/utils/auth' + +function StoryRoot({ children }) { + useEffect(() => { + client + .getInstance() + .userLogin({ + username: 'root', + password: '', + type: 0, + }) + .then((r) => auth.setAuthToken(r.data.token)) + }, []) + + return {children} +} + +addDecorator((storyFn) => {storyFn()}) diff --git a/ui-ori/config-overrides.js b/ui-ori/config-overrides.js new file mode 100755 index 0000000000..c5c366a7a2 --- /dev/null +++ b/ui-ori/config-overrides.js @@ -0,0 +1,208 @@ +const path = require('path') +const fs = require('fs') +const os = require('os') +const { + override, + fixBabelImports, + addLessLoader, + addWebpackPlugin, + addDecoratorsLegacy, + addBundleVisualizer, + getBabelLoader, +} = require('customize-cra') +const addYaml = require('react-app-rewire-yaml') +const { alias, configPaths } = require('react-app-rewire-alias') +const webpack = require('webpack') +const WebpackBar = require('webpackbar') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const rewireHtmlWebpackPlugin = require('react-app-rewire-html-webpack-plugin') + +function injectDistroToHTML(config, env) { + const distroInfo = Object.entries(require('./lib/distribution.json')).reduce( + (prev, [k, v]) => { + return { + ...prev, + [`distro_${k}`]: v, + } + }, + {} + ) + return rewireHtmlWebpackPlugin(config, env, distroInfo) +} + +function isBuildAsDevServer() { + return process.env.NODE_ENV !== 'production' +} + +const enableEslintIgnore = () => (config) => { + const eslintRule = config.module.rules.filter( + (r) => + r.use && r.use.some((u) => u.options && u.options.useEslintrc !== void 0) + )[0] + const options = eslintRule.use[0].options + options.ignore = true + options.ignorePattern = 'lib/client/api/*.ts' + options.baseConfig.rules = { + 'jsx-a11y/anchor-is-valid': 'off', + } + return config +} + +const disableMinimize = () => (config) => { + config.optimization.minimize = false + config.optimization.splitChunks = false + config.devtool = false + getBabelLoader(config).options.compact = false + return config +} + +const disableMinimizeByEnv = () => (config) => { + if (process.env.NO_MINIMIZE) { + disableMinimize()(config) + } + return config +} + +const addAlias = () => (config) => { + alias({ + ...configPaths('tsconfig.paths.json'), + })(config) + return config +} + +const addExtraEntries = () => (config) => { + const e = require('react-app-rewire-multiple-entry')([ + { + entry: 'diagnoseReportApp', + template: 'public/diagnoseReport.html', + outPath: '/diagnoseReport.html', + }, + ]) + e.addMultiEntry(config) + return config +} + +// See https://github.com/ant-design/ant-design/issues/14895 +const ignoreMiniCssExtractOrder = () => (config) => { + for (let i = 0; i < config.plugins.length; i++) { + const p = config.plugins[i] + if (!!p.constructor && p.constructor.name === 'MiniCssExtractPlugin') { + const miniCssExtractOptions = { ...p.options, ignoreOrder: true } + config.plugins[i] = new MiniCssExtractPlugin(miniCssExtractOptions) + break + } + } + return config +} + +const addWebpackBundleSize = () => (config) => { + if (isBuildAsDevServer()) { + return config + } + addBundleVisualizer({ + openAnalyzer: false, + })(config) + return config +} + +const supportDynamicPublicPathPrefix = () => (config) => { + if (!isBuildAsDevServer()) { + // Rewrite to use relative path for `url()` in CSS. + for (const rule of config.module.rules) { + for (const subRule of rule.oneOf || []) { + for (const use of subRule.use || []) { + if (use.loader === MiniCssExtractPlugin.loader) { + use.options.publicPath = '../../' + } + } + } + } + } + return config +} + +const overrideProcessEnv = (value) => (config) => { + const plugin = config.plugins.find( + (plugin) => plugin.constructor.name === 'DefinePlugin' + ) + const processEnv = plugin.definitions['process.env'] || {} + + plugin.definitions['process.env'] = { + ...processEnv, + ...value, + } + + return config +} + +const getInternalVersion = () => { + // react-app-rewired does not support async override config method right now, + // subscribe: https://github.com/timarney/react-app-rewired/pull/543 + const version = fs + .readFileSync('../release-version', 'utf8') + .split(os.EOL) + .map((l) => l.trim()) + .filter((l) => !l.startsWith('#') && l !== '')[0] + + if (version === '') { + throw new Error( + `invalid release version, please check the release-version @tidb-dashboard/root` + ) + } + + return version +} + +module.exports = override( + fixBabelImports('import', { + libraryName: 'antd', + libraryDirectory: 'es', + style: true, + }), + ignoreMiniCssExtractOrder(), + addLessLoader({ + javascriptEnabled: true, + modifyVars: { + '@primary-color': '#3351ff', + '@body-background': '#fff', + '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', + '@tooltip-max-width': '500px', + }, + globalVars: { + '@padding-page': '48px', + '@gray-1': '#fff', + '@gray-2': '#fafafa', + '@gray-3': '#f5f5f5', + '@gray-4': '#f0f0f0', + '@gray-5': '#d9d9d9', + '@gray-6': '#bfbfbf', + '@gray-7': '#8c8c8c', + '@gray-8': '#595959', + '@gray-9': '#262626', + '@gray-10': '#000', + }, + modules: { + localIdentName: '[local]--[hash:base64:5]', + }, + }), + addAlias(), + addDecoratorsLegacy(), + enableEslintIgnore(), + addYaml, + addWebpackBundleSize(), + addWebpackPlugin(new WebpackBar()), + addWebpackPlugin( + new webpack.NormalModuleReplacementPlugin( + /antd\/es\/style\/index\.less/, + path.resolve(__dirname, 'lib/antd.less') + ) + ), + disableMinimizeByEnv(), + addExtraEntries(), + supportDynamicPublicPathPrefix(), + overrideProcessEnv({ + REACT_APP_RELEASE_VERSION: JSON.stringify(getInternalVersion()), + REACT_APP_DISTRO_BUILD_TAG: process.env.DISTRO_BUILD_TAG, + }), + injectDistroToHTML +) diff --git a/ui-ori/dashboardApp/index.ts b/ui-ori/dashboardApp/index.ts new file mode 100755 index 0000000000..a0c5d00d53 --- /dev/null +++ b/ui-ori/dashboardApp/index.ts @@ -0,0 +1,182 @@ +import '@lib/utils/wdyr' + +import * as singleSpa from 'single-spa' +import i18next from 'i18next' +import { Modal } from 'antd' +import NProgress from 'nprogress' +import './nprogress.less' + +import AppRegistry from '@lib/utils/registry' +import * as routing from '@lib/utils/routing' +import * as auth from '@lib/utils/auth' +import * as i18n from '@lib/utils/i18n' +import { saveAppOptions, loadAppOptions } from '@lib/utils/appOptions' +import { + initSentryRoutingInstrument, + applySentryTracingInterceptor, +} from '@lib/utils/sentryHelpers' +import client, { InfoInfoResponse } from '@lib/client' + +import LayoutMain from '@dashboard/layout/main' +import LayoutSignIn from '@dashboard/layout/signin' + +import AppUserProfile from '@lib/apps/UserProfile/index.meta' +import AppOverview from '@lib/apps/Overview/index.meta' +import AppClusterInfo from '@lib/apps/ClusterInfo/index.meta' +import AppKeyViz from '@lib/apps/KeyViz/index.meta' +import AppStatement from '@lib/apps/Statement/index.meta' +import AppSystemReport from '@lib/apps/SystemReport/index.meta' +import AppSlowQuery from '@lib/apps/SlowQuery/index.meta' +import AppDiagnose from '@lib/apps/Diagnose/index.meta' +import AppSearchLogs from '@lib/apps/SearchLogs/index.meta' +import AppInstanceProfiling from '@lib/apps/InstanceProfiling/index.meta' +import AppContinuousProfiling from '@lib/apps/ContinuousProfiling/index.meta' +import AppQueryEditor from '@lib/apps/QueryEditor/index.meta' +import AppConfiguration from '@lib/apps/Configuration/index.meta' +import AppDebugAPI from '@lib/apps/DebugAPI/index.meta' +import { handleSSOCallback, isSSOCallback } from '@lib/utils/authSSO' +import { mustLoadAppInfo, reloadWhoAmI } from '@lib/utils/store' +// import __APP_NAME__ from '@lib/apps/__APP_NAME__/index.meta' +// NOTE: Don't remove above comment line, it is a placeholder for code generator + +function removeSpinner() { + const spinner = document.getElementById('dashboard_page_spinner') + if (spinner) { + spinner.remove() + } +} + +async function webPageStart() { + const options = loadAppOptions() + if (options.lang) { + i18next.changeLanguage(options.lang) + } + i18n.addTranslations( + require.context('@dashboard/layout/translations/', false, /\.yaml$/) + ) + + let info: InfoInfoResponse + + try { + info = await mustLoadAppInfo() + } catch (e) { + Modal.error({ + title: `Failed to connect to server`, + content: '' + e, + okText: 'Reload', + onOk: () => window.location.reload(), + }) + removeSpinner() + return + } + + if (info?.enable_telemetry) { + initSentryRoutingInstrument() + const instance = client.getAxiosInstance() + applySentryTracingInterceptor(instance) + } + + const registry = new AppRegistry(options) + + NProgress.configure({ + showSpinner: false, + }) + window.addEventListener('single-spa:before-routing-event', () => { + NProgress.set(0.2) + }) + window.addEventListener('single-spa:routing-event', () => { + NProgress.done(true) + }) + + singleSpa.registerApplication( + 'layout', + AppRegistry.newReactSpaApp(() => LayoutMain, 'root'), + () => { + return !routing.isSignInPage() + }, + { registry } + ) + + singleSpa.registerApplication( + 'signin', + AppRegistry.newReactSpaApp(() => LayoutSignIn, 'root'), + () => { + return routing.isSignInPage() + }, + { registry } + ) + + registry + .register(AppUserProfile) + .register(AppOverview) + .register(AppClusterInfo) + .register(AppKeyViz) + .register(AppStatement) + .register(AppSystemReport) + .register(AppSlowQuery) + .register(AppDiagnose) + .register(AppSearchLogs) + .register(AppInstanceProfiling) + .register(AppContinuousProfiling) + .register(AppQueryEditor) + .register(AppConfiguration) + .register(AppDebugAPI) + // .register(__APP_NAME__) + // NOTE: Don't remove above comment line, it is a placeholder for code generator + + try { + await reloadWhoAmI() + + if (routing.isLocationMatch('/')) { + singleSpa.navigateToUrl('#' + registry.getDefaultRouter()) + } + } catch (e) { + // If there are auth errors, redirection will happen any way. So we continue. + } + + window.addEventListener('single-spa:app-change', () => { + if (!routing.isSignInPage()) { + if (!auth.getAuthTokenAsBearer()) { + singleSpa.navigateToUrl('#' + routing.signInRoute) + } + } + }) + + window.addEventListener('single-spa:first-mount', () => { + removeSpinner() + }) + + singleSpa.start() +} + +async function main() { + if (routing.isPortalPage()) { + // the portal page is only used to receive options + function handlePortalEvent(event) { + const { type, token, lang, hideNav, redirectPath } = event.data + // the event type must be "DASHBOARD_PORTAL_EVENT" + if (type !== 'DASHBOARD_PORTAL_EVENT') { + return + } + + auth.setAuthToken(token) + saveAppOptions({ hideNav, lang }) + window.location.hash = `#${redirectPath}` + window.location.reload() + + window.removeEventListener('message', handlePortalEvent) + } + + window.addEventListener('message', handlePortalEvent) + return + } + + if (isSSOCallback()) { + await handleSSOCallback() + return + } + + await webPageStart() +} + +main() diff --git a/ui-ori/dashboardApp/layout/main/Sider/Banner.module.less b/ui-ori/dashboardApp/layout/main/Sider/Banner.module.less new file mode 100644 index 0000000000..766dad10e4 --- /dev/null +++ b/ui-ori/dashboardApp/layout/main/Sider/Banner.module.less @@ -0,0 +1,45 @@ +@import '~antd/es/style/themes/default.less'; + +.banner { + background: @primary-color; + color: #fff; + cursor: pointer; + overflow: hidden; + user-select: none; + position: relative; + margin-bottom: 20px; + flex-shrink: 0; +} + +.bannerLeft { + padding: 20px 16px 20px 24px; +} + +.bannerRight { + position: absolute; + top: 0; + height: 100%; + transition: background-color 0.2s @ease-out; + display: flex; +} + +.banner:hover .bannerRight { + background: lighten(@primary-color, 5%); +} + +.bannerLogo { + margin: 5px 0; +} + +.bannerContent { + margin-left: 15px; +} + +.bannerTitle { + font-size: 1rem; +} + +.bannerVersion { + font-size: 0.8rem; + opacity: 0.7; +} diff --git a/ui-ori/dashboardApp/layout/main/Sider/Banner.tsx b/ui-ori/dashboardApp/layout/main/Sider/Banner.tsx new file mode 100644 index 0000000000..37edf1b06b --- /dev/null +++ b/ui-ori/dashboardApp/layout/main/Sider/Banner.tsx @@ -0,0 +1,106 @@ +import React, { useMemo, useRef } from 'react' +import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons' +import { useSize } from 'ahooks' +import Flexbox from '@g07cha/flexbox-react' +import { useSpring, animated } from 'react-spring' +import { InfoInfoResponse } from '@lib/client' +import { useTranslation } from 'react-i18next' +import { TFunction } from 'i18next' + +import { ReactComponent as Logo } from './logo-icon-light.svg' +import styles from './Banner.module.less' +import { store } from '@lib/utils/store' + +const toggleWidth = 40 +const toggleHeight = 50 + +function parseVersion(i: InfoInfoResponse, t: TFunction) { + if (!i.version) { + return null + } + if (i.version.standalone !== 'No') { + // For Standalone == Yes / Unknown, display internal version + if (i.version.internal_version === 'nightly') { + let vPrefix = i.version.internal_version + if (i.version.build_git_hash) { + vPrefix += `-${i.version.build_git_hash.substr(0, 8)}` + } + // e.g. nightly-xxxxxxxx + return vPrefix + } + if (i.version.internal_version) { + // e.g. v2020.07.01.1 + return `v${i.version.internal_version}` + } + return null + } + + if (i.version.pd_version) { + // e.g. PD v4.0.1 + return `${t('distro.pd')} ${i.version.pd_version}` + } +} + +export default function ToggleBanner({ + fullWidth, + collapsedWidth, + collapsed, + onToggle, +}) { + const { t } = useTranslation() + const bannerRef = useRef(null) + const bannerSize = useSize(bannerRef) + const transBanner = useSpring({ + opacity: collapsed ? 0 : 1, + height: collapsed ? toggleHeight : bannerSize.height || 0, + }) + const transButton = useSpring({ + left: collapsed ? 0 : fullWidth - toggleWidth, + width: collapsed ? collapsedWidth : toggleWidth, + }) + + const appInfo = store.useState((s) => s.appInfo) + + const version = useMemo(() => { + if (appInfo) { + return parseVersion(appInfo, t) + } + return null + }, [appInfo, t]) + + return ( +
+ +
+ +
+ +
+
+
+ {t('distro.tidb')} Dashboard +
+
+ {version || 'Version unknown'} +
+
+
+
+
+ + {collapsed ? ( + + ) : ( + + )} + +
+ ) +} diff --git a/ui-ori/dashboardApp/layout/main/Sider/index.module.less b/ui-ori/dashboardApp/layout/main/Sider/index.module.less new file mode 100644 index 0000000000..67dbe8cd8b --- /dev/null +++ b/ui-ori/dashboardApp/layout/main/Sider/index.module.less @@ -0,0 +1,61 @@ +@import '~antd/es/style/themes/default.less'; + +@sider-background: #f7f7fa; + +.sider { + position: fixed; + left: 0; + top: 0; + height: 100%; + z-index: 1; + background: linear-gradient(@sider-background, #ebeffa); + overflow-x: hidden; + overflow-y: auto; + transition: none; + user-select: none; + + :global { + .ant-layout-sider-children { + display: flex; + flex-direction: column; + padding-bottom: 20px; + } + + .ant-menu { + border-right: 0; + background: none; + } + + .ant-menu-submenu-selected { + color: #000; + } + + .ant-menu-item { + &::after { + left: 0; + right: auto; + border-width: 5px; + } + + &:hover { + background: rgba(darken(@sider-background, 30%), 0.15); + } + + > a { + color: #666; + + &:hover { + color: @primary-color; + } + } + + &.ant-menu-item-selected { + background: rgba(darken(@sider-background, 30%), 0.15); + + > a { + color: #000; + } + } + } + } +} diff --git a/ui-ori/dashboardApp/layout/main/Sider/index.tsx b/ui-ori/dashboardApp/layout/main/Sider/index.tsx new file mode 100644 index 0000000000..e24f22c9f3 --- /dev/null +++ b/ui-ori/dashboardApp/layout/main/Sider/index.tsx @@ -0,0 +1,201 @@ +import React, { useState, useMemo } from 'react' +import { ExperimentOutlined, BugOutlined, AimOutlined } from '@ant-design/icons' +import { Layout, Menu } from 'antd' +import { Link } from 'react-router-dom' +import { useEventListener } from 'ahooks' +import { useTranslation } from 'react-i18next' +import { useSpring, animated } from 'react-spring' +import Banner from './Banner' +import styles from './index.module.less' +import { store, useIsFeatureSupport } from '@lib/utils/store' + +function useAppMenuItem(registry, appId, title?: string, hideIcon?: boolean) { + const { t } = useTranslation() + const app = registry.apps[appId] + if (!app) { + return null + } + return ( + + + {!hideIcon && app.icon ? : null} + {title ? title : t(`${appId}.nav_title`, appId)} + + + ) +} + +function useActiveAppId(registry) { + const [appId, set] = useState('') + useEventListener('single-spa:routing-event', () => { + const activeApp = registry.getActiveApp() + if (activeApp) { + set(activeApp.id) + } + }) + return appId +} + +function Sider({ + registry, + fullWidth, + defaultCollapsed, + collapsed, + collapsedWidth, + onToggle, + animationDelay, +}) { + const { t } = useTranslation() + const activeAppId = useActiveAppId(registry) + + const whoAmI = store.useState((s) => s.whoAmI) + const appInfo = store.useState((s) => s.appInfo) + const supportConprof = useIsFeatureSupport('conprof') + + const instanceProfilingMenuItem = useAppMenuItem( + registry, + 'instance_profiling', + '', + true + ) + const conprofMenuItem = useAppMenuItem( + registry, + 'continuous_profiling', + '', + true + ) + const profilingSubMenuItems = [instanceProfilingMenuItem] + if (supportConprof) { + profilingSubMenuItems.push(conprofMenuItem) + } + + const profilingSubMenu = ( + + + {t('profiling.nav_title')} + + } + > + {profilingSubMenuItems} + + ) + + const debugSubMenuItems = [ + profilingSubMenu, + useAppMenuItem(registry, 'debug_api'), + ] + + const debugSubMenu = ( + + + {t('nav.sider.debug')} + + } + > + {debugSubMenuItems} + + ) + + const experimentalSubMenuItems = [ + useAppMenuItem(registry, 'query_editor'), + useAppMenuItem(registry, 'configuration'), + ] + const experimentalSubMenu = ( + + + {t('nav.sider.experimental')} + + } + > + {experimentalSubMenuItems} + + ) + + const menuItems = [ + useAppMenuItem(registry, 'overview'), + useAppMenuItem(registry, 'cluster_info'), + useAppMenuItem(registry, 'statement'), + useAppMenuItem(registry, 'slow_query'), + useAppMenuItem(registry, 'keyviz'), + useAppMenuItem(registry, 'system_report'), + useAppMenuItem(registry, 'diagnose'), + useAppMenuItem(registry, 'search_logs'), + // useAppMenuItem(registry, '__APP_NAME__'), + // NOTE: Don't remove above comment line, it is a placeholder for code generator + debugSubMenu, + ] + + if (appInfo?.enable_experimental) { + menuItems.push(experimentalSubMenu) + } + + let displayName = whoAmI?.display_name || '...' + + const extraMenuItems = [ + useAppMenuItem(registry, 'dashboard_settings'), + useAppMenuItem(registry, 'user_profile', displayName), + ] + + const transSider = useSpring({ + width: collapsed ? collapsedWidth : fullWidth, + }) + + const defaultOpenKeys = useMemo(() => { + if (defaultCollapsed) { + return [] + } else { + return ['debug', 'experimental', 'profiling'] + } + }, [defaultCollapsed]) + + return ( + + + + + {menuItems} + + + {extraMenuItems} + + + + ) +} + +export default Sider diff --git a/ui-ori/dashboardApp/layout/main/Sider/logo-icon-light.svg b/ui-ori/dashboardApp/layout/main/Sider/logo-icon-light.svg new file mode 100644 index 0000000000..3bf12df107 --- /dev/null +++ b/ui-ori/dashboardApp/layout/main/Sider/logo-icon-light.svg @@ -0,0 +1 @@ + diff --git a/ui-ori/dashboardApp/layout/main/index.module.less b/ui-ori/dashboardApp/layout/main/index.module.less new file mode 100644 index 0000000000..4c050027a6 --- /dev/null +++ b/ui-ori/dashboardApp/layout/main/index.module.less @@ -0,0 +1,29 @@ +@import '~antd/es/style/themes/default.less'; + +.container { + height: 100vh; +} + +.content { + position: relative; + z-index: 3; + background: #fff; + min-height: 100vh; + + &:before, + &:after { + // Handle margin collapse + content: ' '; + display: table; + } +} + +.contentBack { + position: fixed; + z-index: 2; + background: #fff; + top: 0; + height: 100%; + right: 0; + box-shadow: 0 0 30px rgba(#000, 0.15); +} diff --git a/ui-ori/dashboardApp/layout/main/index.tsx b/ui-ori/dashboardApp/layout/main/index.tsx new file mode 100644 index 0000000000..1bb57c86d3 --- /dev/null +++ b/ui-ori/dashboardApp/layout/main/index.tsx @@ -0,0 +1,112 @@ +import React, { useState, useCallback, useEffect } from 'react' +import { Root } from '@lib/components' +import { HashRouter as Router } from 'react-router-dom' +import { useSpring, animated } from 'react-spring' + +import { useLocalStorageState } from '@lib/utils/useLocalStorageState' + +import Sider from './Sider' +import styles from './index.module.less' + +const siderWidth = 260 +const siderCollapsedWidth = 80 +const collapsedContentOffset = siderCollapsedWidth - siderWidth +const contentOffsetTrigger = collapsedContentOffset * 0.99 + +function triggerResizeEvent() { + const event = document.createEvent('HTMLEvents') + event.initEvent('resize', true, false) + window.dispatchEvent(event) +} + +const useContentLeftOffset = (collapsed) => { + const [offset, setOffset] = useState(siderWidth) + const onAnimationStart = useCallback(() => { + if (!collapsed) { + setOffset(siderWidth) + } + }, [collapsed]) + const onAnimationFrame = useCallback( + ({ x }) => { + if (collapsed && x < contentOffsetTrigger) { + setOffset(siderCollapsedWidth) + } + }, + [collapsed] + ) + useEffect(triggerResizeEvent, [offset]) + return { + contentLeftOffset: offset, + onAnimationStart, + onAnimationFrame, + } +} + +export default function App({ registry }) { + const [collapsed, setCollapsed] = useLocalStorageState( + 'layout.sider.collapsed', + false + ) + const [defaultCollapsed] = useState(collapsed) + const { contentLeftOffset, onAnimationStart, onAnimationFrame } = + useContentLeftOffset(collapsed) + const transContentBack = useSpring({ + x: collapsed ? collapsedContentOffset : 0, + onStart: onAnimationStart, + onFrame: onAnimationFrame, + }) + const transContainer = useSpring({ + opacity: 1, + from: { opacity: 0 }, + delay: 100, + }) + + const handleToggle = useCallback(() => { + setCollapsed((c) => !c) + }, [setCollapsed]) + + const { appOptions } = registry + + return ( + + + + {!appOptions.hideNav && ( + <> + + `translate3d(${x}px, 0, 0)` + ), + }} + > + + )} +
+
+
+
+
+
+ ) +} diff --git a/ui-ori/dashboardApp/layout/signin/index.module.less b/ui-ori/dashboardApp/layout/signin/index.module.less new file mode 100644 index 0000000000..a58bd5b744 --- /dev/null +++ b/ui-ori/dashboardApp/layout/signin/index.module.less @@ -0,0 +1,168 @@ +@import '~antd/es/style/themes/default.less'; +@import '~antd/es/button/style/mixin.less'; + +@content-width: 400px; + +.container { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: row; + align-items: stretch; +} + +.contantContainer { + min-width: @content-width; + width: 38%; + background: #fff; + position: relative; +} + +.dialogContainer { + height: 100%; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 30px 65px; + overflow-y: auto; +} + +.dialog { + max-width: 300px; + width: 100%; + margin: auto; +} + +.landing { + flex-grow: 1; + background-image: url(./landing.svg); + background-size: cover; + background-position: center left; +} + +.logo { + height: 40px; + margin-bottom: 80px; +} + +.signInButton { + margin-top: 10px; + margin-bottom: 20px; + font-size: 0.9rem; +} + +.extraLink { + font-size: 0.8rem; + margin: 15px 0; + a { + color: @gray-7; + &:hover { + color: @gray-7; + } + } + + &.clickable { + a:hover { + color: @link-hover-color; + } + } +} + +.alternativeFormLayer { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: #fff; + z-index: 2; +} + +.alternativeCloseButton { + font-size: 1rem; + border: 0; + background: #fff; + color: @text-color; + cursor: pointer; + padding: @padding-xss; + padding-right: 0; + + &:hover, + &:active, + &:focus { + color: @link-hover-color; + outline: 0; + } +} + +.alternativeButton { + .btn; + .btn-default; + + height: auto; + width: 100%; + color: @text-color; + + margin-bottom: @padding-sm; + text-align: left; + padding: @padding-md; + padding-right: 50px + @padding-md; + position: relative; + word-wrap: normal; + white-space: normal; + line-height: 1; + + &:hover, + &:active, + &:focus { + color: @text-color; + } + + .title { + color: @heading-color; + margin-bottom: @padding-sm; + } + + .icon { + font-size: 1.3rem; + position: absolute; + right: 0; + width: 50px; + text-align: center; + opacity: 0; + transform: translateX(-5px); + transition: opacity 0.2s linear, transform 0.2s linear; + color: @gray-6; + + // For vertical align + top: 50%; + margin-top: -20px; + line-height: 40px; + } + + &:hover, + &:active, + &:focus { + .icon { + opacity: 1; + transform: none; + } + } +} + +.container :global { + .formAnimation { + animation: 0.2s @ease-out-circ 0.5s antZoomBigIn; + animation-fill-mode: both; + animation-iteration-count: 1; + } + .landingAnimation { + animation: 0.5s linear 0 antFadeIn; + animation-fill-mode: both; + animation-iteration-count: 1; + } +} diff --git a/ui-ori/dashboardApp/layout/signin/index.tsx b/ui-ori/dashboardApp/layout/signin/index.tsx new file mode 100755 index 0000000000..3b88d0c4d6 --- /dev/null +++ b/ui-ori/dashboardApp/layout/signin/index.tsx @@ -0,0 +1,519 @@ +import CSSMotion from 'rc-animate/es/CSSMotion' +import cx from 'classnames' +import * as singleSpa from 'single-spa' +import React, { + useState, + useEffect, + useRef, + useCallback, + useMemo, + ReactNode, +} from 'react' +import { + DownOutlined, + GlobalOutlined, + LockOutlined, + UserOutlined, + KeyOutlined, + ArrowRightOutlined, + CloseOutlined, +} from '@ant-design/icons' +import { Form, Input, Button, message, Typography, Modal } from 'antd' +import { useTranslation } from 'react-i18next' +import { useMount } from 'react-use' +import Flexbox from '@g07cha/flexbox-react' +import { usePersistFn } from 'ahooks' + +import client, { ErrorStrategy, UserAuthenticateForm } from '@lib/client' +import { getAuthURL } from '@lib/utils/authSSO' +import { AuthTypes } from '@lib/utils/auth' +import { isDistro } from '@lib/utils/i18n' +import * as auth from '@lib/utils/auth' +import { Root, AppearAnimate, LanguageDropdown } from '@lib/components' + +import styles from './index.module.less' +import { ReactComponent as Logo } from './logo.svg' +import { useIsFeatureSupport } from '@lib/utils/store' + +enum DisplayFormType { + uninitialized, + tidbCredential, + shareCode, + sso, +} + +function AlternativeAuthLink({ onClick }) { + const { t } = useTranslation() + return ( +
+ ) +} + +function LanguageDrop() { + return ( + + ) +} + +interface IAlternativeFormButtonProps + extends React.ButtonHTMLAttributes { + title: string + description: string + className?: string +} + +function AlternativeFormButton({ + title, + description, + className, + ...restProps +}: IAlternativeFormButtonProps) { + return ( + + ) +} + +function AlternativeAuthForm({ + className, + onClose, + onSwitchForm, + supportedAuthTypes, + ...restProps +}) { + const { t } = useTranslation() + + return ( +
+
+
+
+ +

+ +
{t('signin.form.alternative.title')}
+ +
+

+
+ + onSwitchForm(DisplayFormType.tidbCredential)} + /> + + + onSwitchForm(DisplayFormType.shareCode)} + /> + + {Boolean(supportedAuthTypes.indexOf(AuthTypes.SSO) > -1) && ( + + onSwitchForm(DisplayFormType.sso)} + /> + + )} + + +
+
+
+ ) +} + +function useSignInSubmit( + successRoute, + fnLoginForm: (form) => UserAuthenticateForm, + onSuccess: (form) => void, + onFailure: () => void +) { + const { t } = useTranslation() + const [loading, setLoading] = useState(false) + const [error, setError] = useState(null) + + const clearErrorMsg = useCallback(() => { + setError(null) + }, []) + + const handleSubmit = usePersistFn(async (form) => { + try { + clearErrorMsg() + setLoading(true) + const r = await client.getInstance().userLogin(fnLoginForm(form), { + errorStrategy: ErrorStrategy.Custom, + }) + auth.setAuthToken(r.data.token) + message.success(t('signin.message.success')) + singleSpa.navigateToUrl(successRoute) + onSuccess(form) + } catch (e) { + if (!e.handled) { + const errMsg = t('signin.message.error', { msg: e.message }) + if ( + isDistro || + e.errCode !== 'error.api.user.insufficient_privileges' + ) { + setError(errMsg) + } else { + // only add help link for TiDB distro when meeting insufficient_privileges error + const errComp = ( + <> + {errMsg} + + {t('signin.message.access_doc')} + + + ) + setError(errComp) + } + onFailure() + } + } finally { + setLoading(false) + } + }) + + return { handleSubmit, loading, errorMsg: error, clearErrorMsg } +} + +const LAST_LOGIN_USERNAME_KEY = 'dashboard_last_login_username' + +function TiDBSignInForm({ successRoute, onClickAlternative }) { + const supportNonRootLogin = useIsFeatureSupport('nonRootLogin') + const { t } = useTranslation() + + const [refForm] = Form.useForm() + const refPassword = useRef(null) + + const { handleSubmit, loading, errorMsg, clearErrorMsg } = useSignInSubmit( + successRoute, + (form) => ({ + username: form.username, + password: form.password, + type: AuthTypes.SQLUser, + }), + (form) => { + localStorage.setItem(LAST_LOGIN_USERNAME_KEY, form.username) + }, + () => { + refForm.setFieldsValue({ password: '' }) + setTimeout(() => { + refPassword.current?.focus() + }, 0) + } + ) + + useMount(() => { + refPassword?.current?.focus() + }) + + const lastLoginUsername = useMemo(() => { + return localStorage.getItem(LAST_LOGIN_USERNAME_KEY) || 'root' + }, []) + + return ( +
+
+
+ + +

{t('signin.form.tidb_auth.title')}

+
+ + } + disabled={!supportNonRootLogin} + /> + + + } + type="password" + disabled={loading} + onInput={clearErrorMsg} + ref={refPassword} + data-e2e="signin_password_input" + /> + + + + + + + +
+
+ ) +} + +function CodeSignInForm({ successRoute, onClickAlternative }) { + const { t } = useTranslation() + + const [refForm] = Form.useForm() + const refPassword = useRef(null) + + const { handleSubmit, loading, errorMsg, clearErrorMsg } = useSignInSubmit( + successRoute, + (form) => ({ + password: form.code, + type: AuthTypes.SharingCode, + }), + () => {}, + () => { + refForm.setFieldsValue({ code: '' }) + setTimeout(() => { + refPassword.current?.focus() + }, 0) + } + ) + + useMount(() => { + refPassword?.current?.focus() + }) + + return ( +
+
+
+ + +

{t('signin.form.code_auth.title')}

+
+ + } + type="password" + onInput={clearErrorMsg} + disabled={loading} + ref={refPassword} + allowClear + /> + + + + + + + +
+
+ ) +} + +function SSOSignInForm({ successRoute, onClickAlternative }) { + const { t } = useTranslation() + const [isLoading, setIsLoading] = useState(false) + + const handleSignIn = useCallback(async () => { + setIsLoading(true) + try { + const url = await getAuthURL() + window.location.href = url + // Do not hide loading status when url is resolved, since we are now jumping + } catch (e) { + setIsLoading(false) + } + }, []) + + return ( +
+
+
+ + + + + + + +
+
+ ) +} + +function App({ registry }) { + const successRoute = useMemo( + () => `#${registry.getDefaultRouter()}`, + [registry] + ) + const [alternativeVisible, setAlternativeVisible] = useState(false) + const [formType, setFormType] = useState(DisplayFormType.uninitialized) + const [supportedAuthTypes, setSupportedAuthTypes] = useState>([ + 0, + ]) + + const handleClickAlternative = useCallback(() => { + setAlternativeVisible(true) + }, []) + + const handleAlternativeClose = useCallback(() => { + setAlternativeVisible(false) + }, []) + + const handleSwitchForm = useCallback((k: DisplayFormType) => { + setFormType(k) + setAlternativeVisible(false) + }, []) + + useEffect(() => { + async function run() { + try { + const resp = await client.getInstance().userGetLoginInfo() + const loginInfo = resp.data + if ( + (loginInfo.supported_auth_types?.indexOf(AuthTypes.SSO) ?? -1) > -1 + ) { + setFormType(DisplayFormType.sso) + } else { + setFormType(DisplayFormType.tidbCredential) + } + setSupportedAuthTypes(loginInfo.supported_auth_types ?? []) + } catch (e) { + Modal.error({ + title: 'Initialize Sign in failed', + content: '' + e, + okText: 'Reload', + onOk: () => window.location.reload(), + }) + } + } + run() + }, []) + + return ( + +
+ + + {({ style, className }) => ( + + )} + + {formType === DisplayFormType.tidbCredential && ( + + )} + {formType === DisplayFormType.shareCode && ( + + )} + {formType === DisplayFormType.sso && ( + + )} + + +
+
+ ) +} + +export default App diff --git a/ui-ori/dashboardApp/layout/signin/landing.svg b/ui-ori/dashboardApp/layout/signin/landing.svg new file mode 100644 index 0000000000..5d66f97609 --- /dev/null +++ b/ui-ori/dashboardApp/layout/signin/landing.svg @@ -0,0 +1 @@ + diff --git a/ui-ori/dashboardApp/layout/signin/logo.svg b/ui-ori/dashboardApp/layout/signin/logo.svg new file mode 100644 index 0000000000..99333a9b48 --- /dev/null +++ b/ui-ori/dashboardApp/layout/signin/logo.svg @@ -0,0 +1 @@ + diff --git a/ui-ori/dashboardApp/layout/translations/en.yaml b/ui-ori/dashboardApp/layout/translations/en.yaml new file mode 100755 index 0000000000..6bc0940972 --- /dev/null +++ b/ui-ori/dashboardApp/layout/translations/en.yaml @@ -0,0 +1,36 @@ +signin: + message: + error: 'Sign in failed: {{ msg }}' + success: Sign in successfully + access_doc: Help + access_doc_link: https://docs.pingcap.com/tidb/stable/dashboard-user + form: + username: Username + username_tooltip: Sign in user can be customized in TiDB 5.3 or later versions + password: Password + button: Sign In + tidb_auth: + title: SQL User Sign In + switch: + title: SQL User + description: I know the username and password to connect to the database + code_auth: + title: Authorization Code Sign In + switch: + title: Authorization Code + description: I was invited by others with an authorization code + code: Code + sso: + button: Sign In via Company Account (SSO) + switch: + title: SSO + description: I want to sign in use my company account + use_alternative: Use Alternative Authentication + alternative: + title: Select Authentication +nav: + user: + signout: Sign Out + sider: + debug: Advanced Debugging + experimental: Experimental Features diff --git a/ui-ori/dashboardApp/layout/translations/zh.yaml b/ui-ori/dashboardApp/layout/translations/zh.yaml new file mode 100755 index 0000000000..ad611a5011 --- /dev/null +++ b/ui-ori/dashboardApp/layout/translations/zh.yaml @@ -0,0 +1,37 @@ +signin: + message: + error: '登录失败: {{ msg }}' + success: 登录成功 + access_doc: 帮助 + access_doc_link: https://docs.pingcap.com/zh/tidb/stable/dashboard-user + form: + username: 用户名 + username_tooltip: 升级到 TiDB 5.3 及更高版本后可自定义登录用户 + password: 密码 + button: 登录 + tidb_auth: + title: SQL 用户登录 + switch: + title: SQL 用户 + description: 我知道数据库的登录用户名和密码 + code_auth: + title: 授权码登录 + switch: + title: 授权码 + description: 其他人通过授权码邀请我使用 + code: 授权码 + sso: + button: 使用公司账号 SSO 登录 + switch: + title: SSO + description: 使用公司账号登录 + use_alternative: 使用其他登录方式 + alternative: + title: 选择登录方式 + +nav: + user: + signout: 登出 + sider: + debug: 高级调试 + experimental: 实验性功能 diff --git a/ui-ori/dashboardApp/nprogress.less b/ui-ori/dashboardApp/nprogress.less new file mode 100644 index 0000000000..2cc90d5caf --- /dev/null +++ b/ui-ori/dashboardApp/nprogress.less @@ -0,0 +1,69 @@ +@progress-color: #ffc53d; + +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: @progress-color; + + position: fixed; + z-index: 1031; + top: 0; + left: 0; + + width: 100%; + height: 2px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0px; + width: 100px; + height: 100%; + box-shadow: 0 0 10px @progress-color, 0 0 5px @progress-color; + opacity: 1; + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: block; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + + border: solid 2px transparent; + border-top-color: @progress-color; + border-left-color: @progress-color; + border-radius: 50%; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@keyframes nprogress-spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/ui-ori/diagnoseReportApp/components/DiagnosisReport.tsx b/ui-ori/diagnoseReportApp/components/DiagnosisReport.tsx new file mode 100644 index 0000000000..bf0bb5b03f --- /dev/null +++ b/ui-ori/diagnoseReportApp/components/DiagnosisReport.tsx @@ -0,0 +1,99 @@ +import React, { useState } from 'react' +import { useTranslation } from 'react-i18next' +import DiagnosisTable from './DiagnosisTable' +import { ExpandContext, TableDef } from '../types' +import { ALL_LANGUAGES } from '@lib/utils/i18n' + +function LangDropdown() { + const { i18n } = useTranslation() + return ( +
+ +
+ ) +} + +type Props = { + diagnosisTables: TableDef[] +} + +function TablesNavMenu({ diagnosisTables }: Props) { + const { t } = useTranslation() + return ( +
+ +
+
+ {diagnosisTables.map((item) => ( + +

+ {item.category[0] && + t(`diagnosis.tables.category.${item.category[0]}`)} +

+ + {t(`diagnosis.tables.title.${item.title}`)} + +
+ ))} +
+
+
+ ) +} + +export default function DiagnosisReport({ diagnosisTables }: Props) { + const [expandAll, setExpandAll] = useState(false) + const { t } = useTranslation() + + return ( +
+
+

{t('diagnosis.title')}

+
+ + + + +
+ + + {diagnosisTables.map((item, idx) => ( + + ))} + +
+
+ ) +} diff --git a/ui-ori/diagnoseReportApp/components/DiagnosisTable.tsx b/ui-ori/diagnoseReportApp/components/DiagnosisTable.tsx new file mode 100644 index 0000000000..f5bf927686 --- /dev/null +++ b/ui-ori/diagnoseReportApp/components/DiagnosisTable.tsx @@ -0,0 +1,110 @@ +import React, { useContext, useState, useEffect } from 'react' +import { useTranslation } from 'react-i18next' +import { TableDef, ExpandContext, TableRowDef } from '../types' +import ReactMarkdown from 'react-markdown' + +function DiagnosisRow({ row }: { row: TableRowDef }) { + const outsideExpand = useContext(ExpandContext) + const [internalExpand, setInternalExpand] = useState(false) + const { t } = useTranslation() + + // when outsideExpand changes, reset the internalExpand to the same as outsideExpand + useEffect(() => { + setInternalExpand(outsideExpand) + }, [outsideExpand]) + + return ( + <> + + {(row.values || []).map((val, valIdx) => ( + + {t(`diagnosis.tables.table.name.${val}`, val)} + {valIdx === 0 && + t(`diagnosis.tables.table.comment.${val}`, '') !== '' && ( +
+
+ + + +
+
+
+
+

{t(`diagnosis.tables.table.comment.${val}`)}

+
+
+
+
+ )} + {valIdx === 0 && (row.sub_values || []).length > 0 && ( + <> +     + setInternalExpand(!internalExpand)} + > + {internalExpand ? t('diagnosis.fold') : t('diagnosis.expand')} + + + )} + + ))} + + {(row.sub_values || []).map((subVals, subValsIdx) => ( + + {subVals.map((subVal, subValIdx) => ( + + {subValIdx === 0 && '|-- '} + {subVal} + + ))} + + ))} + + ) +} + +type Props = { + diagnosis: TableDef +} + +export default function DiagnosisTable({ diagnosis }: Props) { + const { category, title, column, rows } = diagnosis + const { t } = useTranslation() + + return ( +
+ {(category || []).map((c, idx) => ( +

+ {c && t(`diagnosis.tables.category.${c}`)} +

+ ))} +

{t(`diagnosis.tables.title.${title}`)}

+

+ +

+ + + + {column.map((col, colIdx) => ( + + ))} + + + + {(rows || []).map((row, rowIdx) => ( + + ))} + +
+ {col} +
+
+ ) +} diff --git a/ui-ori/diagnoseReportApp/index.css b/ui-ori/diagnoseReportApp/index.css new file mode 100644 index 0000000000..e5a6ab6cd4 --- /dev/null +++ b/ui-ori/diagnoseReportApp/index.css @@ -0,0 +1,36 @@ +.report-container { + margin-bottom: 16px; +} + +tr.subvalues { + background-color: lightcyan; +} + +tr.subvalues.fold { + display: none; +} + +.subvalues-toggle { + display: inline-block; + width: 60px; + cursor: pointer; + color: #2160c4; +} + +.actions { + padding: 8px 0; + background-color: white; + + position: sticky; + top: 0; + z-index: 2; +} + +.table-header-row { + position: sticky; + top: 55px; + z-index: 1; + + background-color: #888; + color: white !important; +} diff --git a/ui-ori/diagnoseReportApp/index.tsx b/ui-ori/diagnoseReportApp/index.tsx new file mode 100644 index 0000000000..18f9757c03 --- /dev/null +++ b/ui-ori/diagnoseReportApp/index.tsx @@ -0,0 +1,31 @@ +import React from 'react' +import ReactDOM from 'react-dom' + +import 'bulma/css/bulma.css' +import '@fortawesome/fontawesome-free/js/all.js' + +import * as i18n from '@lib/utils/i18n' +import DiagnosisReport from './components/DiagnosisReport' +import './index.css' + +function refineDiagnosisData() { + const diagnosisData = window.__diagnosis_data__ || [] + console.log(window.__diagnosis_data__) + + let preCategory = '' + diagnosisData.forEach((d) => { + if (d.category.join('') === preCategory) { + d.category = [] + } else { + preCategory = d.category.join('') + } + }) + return diagnosisData +} + +i18n.addTranslations(require.context('./translations/', false, /\.yaml$/)) + +ReactDOM.render( + , + document.getElementById('root') +) diff --git a/ui-ori/diagnoseReportApp/react-app-env.d.ts b/ui-ori/diagnoseReportApp/react-app-env.d.ts new file mode 100644 index 0000000000..0a981e6ea6 --- /dev/null +++ b/ui-ori/diagnoseReportApp/react-app-env.d.ts @@ -0,0 +1,6 @@ +/// + +// https://stackoverflow.com/questions/12709074/how-do-you-explicitly-set-a-new-property-on-window-in-typescript +interface Window { + __diagnosis_data__: any +} diff --git a/ui-ori/diagnoseReportApp/translations/en.yaml b/ui-ori/diagnoseReportApp/translations/en.yaml new file mode 100644 index 0000000000..defac374fc --- /dev/null +++ b/ui-ori/diagnoseReportApp/translations/en.yaml @@ -0,0 +1,303 @@ +diagnosis: + title: '{{distro.tidb}} Cluster System Report' + expand_all: Expand All + fold_all: Collapse All + expand: Expand + fold: Collapse + all_tables: Report Overview + tables: + category: + header: Basic Info + diagnose: Diagnose + load: Load Info + overview: Component Info + TiDB: '{{distro.tidb}} Component' + PD: '{{distro.pd}} Component' + TiKV: '{{distro.tikv}} Component' + config: Configuration Info + error: Error Info + title: + compare_diagnose: Diagnostics Comparison + compare_report_time_range: Comparison Time Range + top_10_slow_query_in_time_range_t1: Top 10 Slow Queries in Time Range t1 + top_10_slow_query_in_time_range_t2: top 10 Slow Queries in Time Range t2 + top_10_slow_query_group_by_digest_in_time_range_t1: Top 10 Slow Queries Group by Digest in Time Range t1 + top_10_slow_query_group_by_digest_in_time_range_t2: Top 10 slow queries group by digest in Time Range t2 + slow_query_with_diff_plan in_in_time_range_t1: Slow Queries with Different Plan in Time Range t1 + slow_query_with_diff_plan in_in_time_range_t2: Slow queries with Different Plan in Time Range t2 + diagnose_in_time_range_t1: Diagnostics in Time Range t1 + diagnose_in_time_range_t2: Diagnostics in Time Range t2 + max_diff_item: Maximum Different Item + slow_query_t2: Slow Queries In Time Range t2 + generate_report_error: Report Generation Error + report_time_range: Report Time Range + diagnose: Diagnosis Result + total_time_consume: Time Consumed by Each Component + total_error: Errors Occurred in Each Component + time_consume: Time Consumed + tidb_time_consume: Time Consumed by {{distro.tidb}} Component + transaction: '{{distro.tidb}} Transaction' + tidb_connection_count: '{{distro.tidb}} Server Connections' + statistics_info: Statistics Info + ddl_owner: DDL Owner + scheduler_initial_config: Scheduler Initial Config + scheduler_change_config: Scheduler Config Change History + tidb_gc_initial_config: '{{distro.tidb}} GC Initial Config' + tidb_gc_change_config: '{{distro.tidb}} GC Config Change History' + tikv_rocksdb_initial_config: '{{distro.tikv}} RocksDB Initial Config' + tikv_rocksdb_change_config: '{{distro.tikv}} RocksDB Config Change History' + tikv_raftstore_initial_config: '{{distro.tikv}} RaftStore Initial Config' + tikv_raftstore_change_config: '{{distro.tikv}} RaftStore Config Change History' + pd_time_consume: Time Consumed by {{distro.pd}} Component + balance_leader_region: Scheduled Leader/Region Count + approximate_region_size: Approximate Region Size + tikv_engine_size: '{{distro.tikv}} Engine Size' + tikv_time_consume: Time Consumed by {{distro.tikv}} Component + scheduler_info: Scheduler Info + gc_info: GC Info + task_info: Task Info + snapshot_info: Snapshot Info + coprocessor_info: Coprocessor Info + raft_info: Raft Info + tikv_error: '{{distro.tikv}} Error' + tidb_current_config: "{{distro.tidb}}'s Current Config" + pd_current_config: "{{distro.pd}}'s Current Config" + tikv_current_config: "{{distro.tikv}}'s Current Config" + node_load_info: Server Load Info + process_cpu_usage: Instance CPU Usage + process_memory_usage: Instance Memory Usage + tidb/pd_goroutines_count: '{{distro.tidb}}/{{distro.pd}} Goroutines Count' + tikv_thread_cpu_usage: '{{distro.tikv}} Thread CPU Usage' + store_status: Store Status + cluster_status: Cluster Status + etcd_status: etcd Status + cluster_info: Cluster Topology Info + cache_hit: Cache Hit + cluster_hardware: Cluster Hardware Info + rocksdb_time_consume: Time Consumed by RocksDB + top_10_slow_query: Top 10 Slow Queries + top_10_slow_query_group_by_digest: Top 10 Slow Queries Group By Digest + slow_query_with_diff_plan: Slow Queries with Different Plan + comment: + compare_diagnose: Automatically diagnose the cluster problem by comparing with the reference time. + max_diff_item: The maximum different metrics between two time ranges. + diagnose: Automatically diagnose the cluster problem and record the problem in the table below. + total_time_consume: This table contains the event time consumed in {{distro.tidb}}/{{distro.tikv}}/{{distro.pd}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. + total_error: This table contains the total count of each error event. METRIC_NAME is the error event name; LABEL is the event label, such as instance, event type, etc; TOTAL_COUNT is the total count of this event. + tidb_time_consume: This table contains the event time consumed in {{distro.tidb}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. + transaction: This table contains the {{distro.tidb}} transaction statistics information. METRIC_NAME is the object name; LABEL is the object label, such as instance, event type, etc; TOTAL_VALUE is the total size/value of this object; TOTAL_COUNT is the total count of this object; P999 is the max size/value of 0.999 quantile; P99 is the max size/value of 0.99 quantile; P90 is the max size/value of 0.90 quantile; P80 is the max size/value of 0.80 quantile. + tidb_connection_count: The number of connections of each {{distro.tidb}} server. + ddl_owner: This table contains the DDL Owner info. Note that if no DDL request has been executed, the Owner info maybe null below, but it doesn't indicate that no DDL Owner exists. + scheduler_initial_config: The initial config value of {{distro.pd}} scheduler. The initial time is the start time of this report. + scheduler_change_config: The config change history of {{distro.pd}} scheduler. APPROXIMATE_CHANGE_TIME is the minimum start effective time. + tidb_gc_initial_config: The initial config value of {{distro.tidb}} GC. The initial time is the start time of this report. + tidb_gc_change_config: The config change history of {{distro.tidb}} GC. APPROXIMATE_CHANGE_TIME is the minimum start effective time. + tikv_rocksdb_initial_config: The initial config value of {{distro.tikv}} RocksDB. The initial time is the start time of this report. + tikv_rocksdb_change_config: The config change history of {{distro.tikv}} RocksDB. APPROXIMATE_CHANGE_TIME is the minimum start effective time. + tikv_raftstore_initial_config: The initial config value of {{distro.tikv}} RaftStore. The initial time is the start time of this report. + tikv_raftstore_change_config: The config change history of {{distro.tikv}} RaftStore. APPROXIMATE_CHANGE_TIME is the minimum start effective time. + pd_time_consume: This table contains the event time consumed in {{distro.pd}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. + tikv_time_consume: This table contains the event time consumed in {{distro.tikv}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. + table: + name: + tidb_transaction: Transaction + tidb_kv_request: KV request + tidb_slow_query: Slow query + tidb_ddl_handle_job: DDL job + tidb_ddl_batch_add_index: Batch add index + tidb_load_schema: Schema load + tidb_meta_operation: '{{distro.tidb}} meta operation' + tidb_auto_id_request: '{{distro.tidb}} auto ID request' + tidb_statistics_auto_analyze: '{{distro.tidb}} auto analyze' + tidb_gc: '{{distro.tidb}} GC' + pd_client_cmd: '{{distro.pd}} client cmd' + pd_handle_request: '{{distro.pd}} request' + pd_handle_transactions: etcd transactions + tikv_cop_request: Coprocessor request + tikv_cop_handle: Coprocessor handling request + tikv_handle_snapshot: Snapshot handling + tikv_send_snapshot: Snapshot sending + tikv_commit_log: Raft commit log + tidb_transaction_retry_num: '{{distro.tidb}} transaction retry' + tidb_txn_region_num: Transaction Region count + tidb_txn_kv_write_num: Transaction KV write count + tidb_txn_kv_write_size: Transaction KV write size + tidb_load_safepoint_total_num: Safepoint load + tikv_scheduler_stage_total_num: Scheduler stage + tikv_worker_handled_tasks_total_num: '{{distro.tikv}} worker handled tasks' + tikv_worker_pending_tasks_total_num: '{{distro.tikv}} worker pending tasks' + tikv_futurepool_handled_tasks_total_num: future_pool handled tasks + tikv_futurepool_pending_tasks_total_num: future_pool pending tasks + tikv_snapshot_kv_count: Snapshot KV + tikv_snapshot_size: Snapshot size + tikv_cop_scan_keys_num: '{{distro.tikv}} Coprocessor scan keys' + tikv_cop_total_response_total_size: '{{distro.tikv}} Coprocessor response' + tikv_cop_scan_num: '{{distro.tikv}} Coprocessor scan' + tikv_raft_sent_messages_total_num: Raft sent messages + tikv_flush_messages_total_num: Raft flush messages + tikv_receive_messages_total_num: Raft receive messages + tikv_raft_dropped_messages_total: Raft dropped messages + tikv_raft_proposals_total_num: Raft proposals + tikv_grpc_error_total_count: gRPC errors + tikv_critical_error_total_count: '{{distro.tikv}} critical errors' + tikv_coprocessor_request_error_total_count: Coprocessor request errors + node_disk_write_latency: Disk write latency + node_disk_read_latency: Disk read latency + sched_worker: Scheduler worker + tikv_memtable_hit: memtable hit + tikv_block_all_cache_hit: All block cache hit + tikv_block_index_cache_hit: Index block cache hit + tikv_block_filter_cache_hit: Filter block cache hit + tikv_block_data_cache_hit: Data block cache hit + tikv_block_bloom_prefix_cache_hit: Bloom prefix block cache hit + comment: + tidb_query: The time cost of SQL queries. The label is [sql_type]. + tidb_get_token(us): The time cost of a session getting token to execute the SQL query. The label is [instance]. + tidb_parse: The time cost of parsing SQL queries. The label is [sql_type]. + tidb_compile: The time cost of building the query plan. The label is [sql_type]. + tidb_execute: The time cost of executing the SQL query, which does not include the time to get the results of the query. The label is [sql_type]. + tidb_distsql_execution: The time cost of distsql execution. The label is [type]. + tidb_cop: The processing time of KV storage Coprocessor. The label is [instance]. + tidb_transaction: The time cost of a transaction executing durations, including retry. The label is [sql_type]. + tidb_transaction_local_latch_wait: The time cost of waiting for local latch. The label is [instance]. + tidb_kv_backoff: The time cost of {{distro.tidb}} transaction latch waiting for key value storage. The label is [type]. + tidb_kv_request: The time cost of KV requests durations. The label is [type]. + tidb_slow_query: The time cost of {{distro.tidb}} slow queries. The label is [instance]. + tidb_slow_query_cop_process: The total Coprocessor processing time of {{distro.tidb}} slow queries. The label is [instance]. + tidb_slow_query_cop_wait: The total Coprocessor waiting time of {{distro.tidb}} slow queries. The label is [instance]. + tidb_ddl_handle_job: The time cost of processing {{distro.tidb}} DDL jobs. The label is [type]. + tidb_ddl_worker: The time cost of DDL worker handling jobs. The label is [action]. + tidb_ddl_update_self_version: The time cost of updating {{distro.tidb}} schema syncer version. The label is [result]. + tidb_owner_handle_syncer: The time cost of {{distro.tidb}} DDL owner operations on etcd. The label is [type]. + tidb_ddl_batch_add_index: The time cost of {{distro.tidb}} batch adding index. The label is [type]. + tidb_ddl_deploy_syncer: The time cost of {{distro.tidb}} DDL schema syncer statistics, including init, start, watch, and clear. The label is [type]. + tidb_load_schema: The time cost of {{distro.tidb}} loading schema. The label is [type]. + tidb_meta_operation: The time cost of {{distro.tidb}} meta operations, including get/set schema and DDL jobs. The label is [instance]. + tidb_auto_id_request: The time cost of handling requests for {{distro.tidb}} auto ID. The label is [type]. + tidb_statistics_auto_analyze: The time cost of {{distro.tidb}} auto analyze. The label is [type]. + tidb_gc: The time cost of KV storage garbage collection. The label is [instance]. + tidb_gc_push_task: The time cost of KV storage range worker processing one task. The label is [instance]. + tidb_batch_client_unavailable: The time cost of KV storage batch processing unavailable. The label is [type]. + tidb_batch_client_wait: The time cost of {{distro.tidb}} KV storage batch processing client requests that are waiting. The label is [instance]. + pd_start_tso_wait: The time cost of waiting for the start timestamp oracle. The label is [instance]. + pd_tso_rpc: The time cost from sending TSO request to receiving the response. The label is [instance]. + pd_tso_wait: The time cost from the client starting to wait for the timestamp to receiving the timestamp. The label is [instance]. + pd_client_cmd: The time cost of {{distro.pd}} client command. The label is [type]. + pd_handle_request: The time cost of {{distro.pd}} handling request. The label is [type]. + pd_grpc_completed_commands: The time cost of {{distro.pd}} completing each kind of gRPC commands. The label is [grpc_method]. + pd_operator_finish: The time cost of {{distro.pd}} completing each kind of scheduling commands. The label is [type]. + pd_operator_step_finish: The time cost of {{distro.pd}} completing operating steps. The label is [type]. + pd_handle_transactions: The time cost of {{distro.pd}} handling etcd transactions. The label is [result]. + pd_region_heartbeat: The time cost of heartbeats in each {{distro.tikv}} instance. The label is [address]. + etcd_wal_fsync: The time cost of etcd writing WAL into the persistent storage. The label is [instance]. + pd_peer_round_trip: The latency of the network. The label is [To]. + tikv_grpc_message: The time cost of handling {{distro.tikv}} gRPC messages. The label is [type]. + tikv_cop_request: The time cost of Coprocessor handling read requests. The label is [req]. + tikv_cop_handle: The time cost of handling Coprocessor requests. The label is [req]. + tikv_cop_wait: The time cost of Coprocessor requests that wait for being handled. The label is [req]. + tikv_scheduler_command: The time cost of executing commit command. The label is [type]. + tikv_scheduler_latch_wait: The waiting time of {{distro.tikv}} latch in commit command. The label is [type]. + tikv_handle_snapshot: The time cost of handling snapshots. The label is [type]. + tikv_send_snapshot: The time cost of sending snapshots. The label is [instance]. + tikv_storage_async_request: The time cost of processing asynchronous snapshot requests. The label is [type]. + tikv_raft_append_log: The time cost of Raft appends log. The label is [instance]. + tikv_raft_apply_log: The time cost of Raft apply log. The label is [instance]. + tikv_raft_apply_wait: The time cost of Raft apply wait. The label is [instance]. + tikv_raft_process: The time cost of peer processes in Raft. The label is [instance]. + tikv_raft_propose_wait: The waiting time of each proposal. The label is [type]. + tikv_raft_store_events: The time cost of raftstore events. The label is [type]. + tikv_commit_log: The time cost of Raft commits log. The label is [instance]. + tikv_check_split: The time cost of running split check. The label is [instance]. + tikv_ingest_sst: The time cost of ingesting SST files. The label is [instance]. + tikv_gc_tasks: The time cost of executing GC tasks. The label is [task]. + tikv_pd_request: The time cost of {{distro.tikv}} sending requests to {{distro.pd}}. The label is [type]. + tikv_lock_manager_deadlock_detect: + tikv_lock_manager_waiter_lifetime: + tikv_backup_range: + tikv_backup: + tidb_transaction_retry_num: '{{distro.tidb}} transaction retry count. The label is [instance].' + tidb_transaction_statement_num: The total number of {{distro.tidb}} statements within a transaction. Internal means the internal transaction of {{distro.tidb}}. The label is [sql_type]. + tidb_txn_region_num: The number of Regions that each transaction operates. The label is [instance]. + tidb_txn_kv_write_num: The number of KV writes per transaction execution. The label is [instance]. + tidb_txn_kv_write_size: The KV write size per transaction execution. The label is [instance]. + tidb_load_safepoint_total_num: The total count of safe point loading. The label is [instance]. + tidb_lock_resolver_total_num: The total count of lock resolve. The label is [instance]. + pseudo_estimation_total_count: The total count of {{distro.tidb}} Optimizer using pseudo estimation. The label is [instance, type]. + dump_feedback_total_count: The total count of operations that {{distro.tidb}} dumping statistics back to KV storage. The label is [instance, type]. + store_query_feedback_total_count: The total count of {{distro.tidb}} store querying feedback. The label is [instance, type]. + update_stats_total_count: The total count of {{distro.tidb}} updating statistics using feed back. The label is [instance]. + balance-leader-in: balance-leader-in is the total count of Leader moving into the {{distro.tikv}} store. The label is [address]. + balance-leader-out: balance-leader-out is the total count of Leader moving out of the {{distro.tikv}} store. The label is [address]. + balance-region-in: balance-region-in is the total count of Regions moving into the {{distro.tikv}} store. The label is [address]. + balance-region-out: balance-region-in is the total count of Regions moving into the {{distro.tikv}} store. The label is [address]. + Approximate Region size: The approximate Region size. The label is [instance]. + store size: The storage size. The label is [instance, type]. + tikv_scheduler_keys_read: The number of keys read by a command. The label is [instance, type]. + tikv_scheduler_keys_written: The number of keys written by a command. The label is [instance, type]. + tikv_scheduler_scan_details_total_num: The keys scan details of each CF when executing a command. The label is [instance,req,tag]. + tikv_scheduler_stage_total_num: The total number of scheduler states. The label is [instance,type,stage]. + tikv_gc_keys_total_num: The total number of keys in CF affected during GC. The label is [instance,cf,tag]. + tidb_gc_worker_action_total_num: The total count of KV storage garbage collection. The label is [instance,type]. + tikv_worker_handled_tasks_total_num: The total number of tasks handled by worker. The label is [instance,name]. + tikv_worker_pending_tasks_total_num: The total number of pending and running tasks of worker. The label is [instance,name]. + tikv_futurepool_handled_tasks_total_num: The total number of tasks handled by future_pool. The label is [instance,name]. + tikv_futurepool_pending_tasks_total_num: The total number of pending and running tasks of future_pool. The label is [instance,name]. + tikv_snapshot_kv_count: tikv_snapshot_kv_count. The label is [instance]. + tikv_snapshot_size: The number of KV pairs within a snapshot. The label is [instance]. + tikv_snapshot_state_total_count: tikv_snapshot_size. The label is [instance,type]. + tikv_cop_scan_keys_num: The total number of {{distro.tikv}} Coprocessor scan keys. The label is [instance,req]. + tikv_cop_total_response_total_size: '{{distro.tikv}} coprocessor response total size. The label is [instance].' + tikv_cop_scan_num: The total number of {{distro.tikv}} coprocessor scan operations. The label is [instance,req,tag,cf]. + tikv_raft_sent_messages_total_num: The total number of sent Raft messages. The label is [instance,type]. + tikv_flush_messages_total_num: The total number of flushed Raft messages. The label is [instance]. + tikv_receive_messages_total_num: The total number of received Raft messages. The label is [instance]. + tikv_raft_dropped_messages_total: The total number of dropped Raft messages. The label is [instance,type]. + tikv_raft_proposals_total_num: The total number of raft proposals. The label is [instance,type]. + tikv_grpc_error_total_count: The total number of the gRPC message failures. The label is [instance,type]. + tikv_critical_error_total_count: The total number of the {{distro.tikv}} critical errors. The label is [instance,type]. + tikv_scheduler_is_busy_total_count: The total number of Scheduler Busy events that make the {{distro.tikv}} instance temporarily unavailable. The label is [instance,db,type,stage]. + tikv_channel_full_total_count: The total number of channel full errors, which will make the {{distro.tikv}} instance temporarily unavailable. The label is [instance,db,type]. + tikv_coprocessor_request_error_total_count: The total number of Coprocessor errors. The label is [instance,reason]. + tikv_engine_write_stall: Indicates occurrences of Write Stall events that make the {{distro.tikv}} instance temporarily unavailable. The label is [instance,db]. + tikv_server_report_failures_total_count: The total number of reported failure messages. The label is [instance]. + tikv_storage_async_request_error: The total number of storage request errors. The label is [instance,status,type]. + tikv_lock_manager_detect_error_total_count: The total number of {{distro.tikv}} lock manager detect error. The label is [instance,type]. + tikv_backup_errors_total_count: The total number of {{distro.tikv}} lock manager detected errors. The label is [instance,error]. + node_disk_write_latency: The disk write latency in each node. The label is [instance,device]. + node_disk_read_latency: The disk read latency in each node. The label is [instance,device]. + grpc: The CPU utilization of each {{distro.tikv}} gRPC. The label is [instance]. + raftstore: The CPU utilization of {{distro.tikv}} raftstore thread. The label is [instance]. + Async apply: The CPU utilization of {{distro.tikv}} async apply thread. The label is [instance]. + sched_worker: The CPU utilization of {{distro.tikv}} scheduler worker thread. The label is [instance]. + snapshot: The CPU utilization of {{distro.tikv}} snapshot. The label is [instance]. + unified read pool: The CPU utilization of {{distro.tikv}} unified read pool thread. The label is [instance]. + storage read pool: The CPU utilization of {{distro.tikv}} storage read pool thread. The label is [instance]. + storage read pool normal: The CPU utilization of {{distro.tikv}} storage read pool normal thread. The label is [instance]. + storage read pool high: The CPU utilization of {{distro.tikv}} storage read pool high thread. The label is [instance]. + storage read pool low: The CPU utilization of {{distro.tikv}} storage read pool low thread. The label is [instance]. + cop: The CPU utilization of {{distro.tikv}} Coprocessor. The label is [instance]. + cop normal: The CPU utilization of {{distro.tikv}} Coprocessor normal thread. The label is [instance]. + cop high: The CPU utilization of {{distro.tikv}} Coprocessor high thread. The label is [instance]. + cop low: The CPU utilization of {{distro.tikv}} Coprocessor low thread. The label is [instance]. + rocksdb: The CPU utilization {{distro.tikv}} RocksDB. The label is [instance]. + gc: The CPU utilization of {{distro.tikv}} GC. The label is [instance]. + split_check: The CPU utilization of {{distro.tikv}} split_check. The label is [instance]. + region_score: The Region score of store. The label is [address]. + leader_score: The Leader score of store. The label is [address]. + region_count: The Region count of store. The label is [address]. + leader_count: The Leader score of store. The label is [address]. + region_size: The Region size of store. The label is [address]. + leader_size: The Leader size of store. The label is [address]. + tikv_memtable_hit: The hit rate of memtable. The label is [instance]. + tikv_block_all_cache_hit: The hit rate of all block cache. The label is [instance]. + tikv_block_index_cache_hit: The hit rate of index block cache. The label is [instance]. + tikv_block_filter_cache_hit: The hit rate of filter block cache. The label is [instance]. + tikv_block_data_cache_hit: The hit rate of data block cache. The label is [instance]. + tikv_block_bloom_prefix_cache_hit: The hit rate of bloom_prefix block cache. The label is [instance]. + get duration: The time consumed when RocksDB executing get operations. The label is [instance]. + seek duration: The time consumed when RocksDB executing seek operations. The label is [instance]. + write duration: The time consumed when RocksDB executing write operations. The label is [instance]. + WAL sync duration: The time consumed when RocksDB executing WAL sync operations. The label is [instance]. + compaction duration: The time consumed when RocksDB executing compaction operations. The label is [instance]. + SST read duration: The time consumed when RocksDB reading SST files. The label is [instance]. + write stall duration: The time cost of write stall. The label is [instance]. diff --git a/ui-ori/diagnoseReportApp/translations/zh.yaml b/ui-ori/diagnoseReportApp/translations/zh.yaml new file mode 100644 index 0000000000..12b969b050 --- /dev/null +++ b/ui-ori/diagnoseReportApp/translations/zh.yaml @@ -0,0 +1,304 @@ +diagnosis: + title: '{{distro.tidb}} 集群系统报告' + expand_all: 展开所有 + fold_all: 收起所有 + expand: 展开 + fold: 收起 + all_tables: 报告信息总览 + tables: + category: + header: 基本信息 + diagnose: 诊断 + load: 负载 + overview: 各组件信息总览 + TiDB: '{{distro.tidb}} 组件' + PD: '{{distro.pd}} 组件' + TiKV: '{{distro.tikv}} 组件' + config: 配置 + error: 错误 + title: + compare_diagnose: 诊断对比 + compare_report_time_range: 对比报告区间 + top_10_slow_query_in_time_range_t1: t1 中的 Top 10 慢查询 + top_10_slow_query_in_time_range_t2: t2 中的 Top 10 慢查询 + top_10_slow_query_group_by_digest_in_time_range_t1: 按 SQL 指纹聚合的 t1 Top 10 慢查询 + top_10_slow_query_group_by_digest_in_time_range_t2: 按 SQL 指纹聚合的 t2 Top 10 慢查询 + slow_query_with_diff_plan_in_time_range_t1: t1 中的不同执行计划的慢查询 + slow_query_with_diff_plan_in_time_range_t2: t2 中的不同执行计划的慢查询 + diagnose_in_time_range_t1: t1 中的诊断信息 + diagnose_in_time_range_t2: t2 中的诊断信息 + max_diff_item: 最大不同项 + slow_query_t2: t2 中的慢查询 + generate_report_error: 生成报告的报错 + report_time_range: 报告区间 + diagnose: 诊断结果 + total_time_consume: 各组件总耗时 + total_error: 各组件总报错数 + time_consume: 耗时 + tidb_time_consume: '{{distro.tidb}} 中事件耗时' + transaction: '{{distro.tidb}} 事务' + tidb_connection_count: '{{distro.tidb}} 连接数' + statistics_info: 统计信息 + ddl_owner: DDL Owner + scheduler_initial_config: 调度器初始配置 + scheduler_change_config: 调度器配置修改历史 + tidb_gc_initial_config: '{{distro.tidb}} GC 初始配置' + tidb_gc_change_config: '{{distro.tidb}} GC 配置修改历史' + tikv_rocksdb_initial_config: '{{distro.tikv}} RocksDB 初始配置' + tikv_rocksdb_change_config: '{{distro.tikv}} RocksDB 配置修改历史' + tikv_raftstore_initial_config: '{{distro.tikv}} RaftStore 初始配置' + tikv_raftstore_change_config: '{{distro.tikv}} RaftStore 配置修改历史' + pd_time_consume: '{{distro.pd}} 中事件耗时' + balance_leader_region: Leader/Region 调度数 + approximate_region_size: Approximate Region 大小 + tikv_engine_size: '{{distro.tikv}} 实例存储大小' + tikv_time_consume: '{{distro.tikv}} 中事件耗时' + scheduler_info: '{{distro.tikv}} 调度器信息' + gc_info: GC 信息 + task_info: '{{distro.tikv}} 任务信息' + snapshot_info: '{{distro.tikv}} 快照信息' + coprocessor_info: Coprocessor 信息 + raft_info: Raft 信息 + tikv_error: '{{distro.tikv}} 错误' + tidb_current_config: '{{distro.tidb}} 当前配置' + pd_current_config: '{{distro.pd}} 当前配置' + tikv_current_config: '{{distro.tikv}} 当前配置' + node_load_info: 服务器负载信息 + process_cpu_usage: 各实例 CPU 使用率 + process_memory_usage: 各实例内存消耗 + tidb/pd_goroutines_count: '{{distro.tidb}}/{{distro.pd}} 的 Goroutines 数量' + tikv_thread_cpu_usage: '{{distro.tikv}} 的 CPU 使用情况' + store_status: '{{distro.tikv}} 节点的存储状态' + cluster_status: 集群状态 + etcd_status: etcd 状态 + cluster_info: 集群拓扑信息 + cache_hit: 缓存命中率 + cluster_hardware: 集群硬件信息 + rocksdb_time_consume: RocksDB 事件耗时 + top_10_slow_query: Top 10 慢查询 + top_10_slow_query_group_by_digest: 按 SQL 指纹聚合的 Top 10 慢查询 + slow_query_with_diff_plan: 不同执行计划的慢查询 + comment: + compare_diagnose: 通过与参考时间的比较,自动诊断集群问题。 + max_diff_item: 两段时间中的最大不同项。 + diagnose: 该表显示的是自动诊断的结果,即集群中出现的问题。 + total_time_consume: 该表显示的是 {{distro.tidb}}/{{distro.tikv}}/{{distro.pd}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 + total_error: 该表显示的是各错误事件的数量。METRIC_NAME 是错误事件名称;LABEL 是事件标签,如实例、事件类型;TOTAL_COUNT 是该错误事件的总数。 + tidb_time_consume: 该表显示的是 {{distro.tidb}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 + transaction: 该表显示了 {{distro.tidb}} 事务的统计信息。METRIC_NAME 是对象名;LABEL 是对象标签,如实例、事件类型等;TOTAL_VALUE 是该对象的总大小;TOTAL_COUNT 是该对象的总计数;P999 为 0.999 分位数的最大值;P99 是 0.99 分位数的最大值;P90 是 0.90 分位数的最大值;P80 是 0.80 分位数的最大值。 + tidb_connection_count: '{{distro.tidb}} 服务器的连接数。' + ddl_owner: DDL Owner 的信息。注意:如果没有 DDL 请求被执行,下面的 Owner 信息可能为空,这并不表示 DDL Owner 不存在。 + scheduler_initial_config: '{{distro.pd}} 调度器的初始配置值。初始时间是报表的开始时间。' + scheduler_change_config: '{{distro.pd}} 调度器的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' + tidb_gc_initial_config: '{{distro.tidb}} GC 的初始配置值。初始时间是报表的开始时间。' + tidb_gc_change_config: '{{distro.tidb}} GC 的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' + tikv_rocksdb_initial_config: '{{distro.tikv}} RocksDB 的初始配置值。初始时间是报表的开始时间。' + tikv_rocksdb_change_config: '{{distro.tikv}} RocksDB 的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' + tikv_raftstore_initial_config: '{{distro.tikv}} RaftStore 的初始配置值。初始时间是报表的开始时间。' + tikv_raftstore_change_config: '{{distro.tikv}} RaftStore 的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' + pd_time_consume: 该表显示的是 {{distro.pd}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 + tikv_time_consume: 该表显示的是 {{distro.tikv}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 + table: + name: + tidb_transaction: '{{distro.tidb}} 事务' + tidb_kv_request: '{{distro.tidb}} KV 请求' + tidb_slow_query: 慢查询 + tidb_ddl_handle_job: DDL 任务 + tidb_ddl_batch_add_index: 批量索引添加 + tidb_load_schema: Schema 加载 + tidb_meta_operation: '{{distro.tidb}} 元操作' + tidb_auto_id_request: '{{distro.tidb}} 自增 ID 请求' + tidb_statistics_auto_analyze: '{{distro.tidb}} 自动分析' + tidb_gc: 垃圾回收 + pd_client_cmd: '{{distro.pd}} 客户端命令' + pd_handle_request: '{{distro.pd}} 请求' + pd_handle_transactions: etcd 事务 + pd_peer_round_trip: 网络延迟 + tikv_cop_request: Coprocessor 读请求 + tikv_cop_handle: Coprocessor 请求 + tikv_handle_snapshot: 快照处理 + tikv_send_snapshot: 快照发送 + tikv_commit_log: Raft 提交日志 + tidb_transaction_retry_num: '{{distro.tidb}} 事务重试数' + tidb_txn_region_num: 事务操作的 Region 数量 + tidb_txn_kv_write_num: 事务执行的 KV 写入数量 + tidb_txn_kv_write_size: 事务执行的 KV 写入大小 + tidb_load_safepoint_total_num: 安全点装载总数量 + tikv_scheduler_stage_total_num: 调度程序状态的总数量 + tikv_worker_handled_tasks_total_num: worker 处理的任务总数量 + tikv_worker_pending_tasks_total_num: 工作进程的挂起和运行任务的总数量 + tikv_futurepool_handled_tasks_total_num: future_pool 处理的任务总数量 + tikv_futurepool_pending_tasks_total_num: future_pool 总挂起和运行任务数量 + tikv_snapshot_kv_count: 快照的 KV 数量 + tikv_snapshot_size: 快照大小 + tikv_cop_scan_keys_num: '{{distro.tikv}} Coprocessor 扫描键总数量' + tikv_cop_total_response_total_size: '{{distro.tikv}} Coprocessor 响应总大小' + tikv_cop_scan_num: '{{distro.tikv}} Coprocessor 扫描操作总数量' + tikv_raft_sent_messages_total_num: 发送的 Raft 消息的总数量 + tikv_flush_messages_total_num: 持久化 Raft 消息的总数量 + tikv_receive_messages_total_num: 接受 Raft 消息的总数量 + tikv_raft_dropped_messages_total: 丢弃 Raft 消息的总数量 + tikv_raft_proposals_total_num: Raft proposal 的总数量 + tikv_grpc_error_total_count: gRPC 消息失败的总数量 + tikv_critical_error_total_count: '{{distro.tikv}} 临界误差的总数量' + tikv_coprocessor_request_error_total_count: Coprocessor 错误总数量 + node_disk_write_latency: 磁盘写延迟 + node_disk_read_latency: 磁盘读取延迟 + sched_worker: 调度器工作线程 + tikv_memtable_hit: memtable 命中率 + tikv_block_all_cache_hit: 所有块缓存命中率 + tikv_block_index_cache_hit: 索引块缓存命中率 + tikv_block_filter_cache_hit: 过滤块缓存命中率 + tikv_block_data_cache_hit: 数据块缓存命中率 + tikv_block_bloom_prefix_cache_hit: bloom_prefix 块缓存命中率 + comment: + tidb_query: SQL 查询耗时,标签是"SQL 类型"。 + tidb_get_token(us): 会话获取令牌以执行 SQL 查询的耗时,标签是"实例"。 + tidb_parse: 解析 SQL 的耗时,标签是"SQL 类型"。 + tidb_compile: 构建查询计划的时间,标签是"SQL 类型"。 + tidb_execute: 执行 SQL 的时间,不包括获得查询结果的时间,标签是"SQL 类型"。 + tidb_distsql_execution: 执行 distsql 的耗时,标签是"类型"。 + tidb_cop: KV storage Coprocessor 处理的耗时,标签是"实例"。 + tidb_transaction: 事务执行 durations 的时间成本,包括重试,标签是"SQL 类型"。 + tidb_transaction_local_latch_wait: 事务执行时本地锁占用的时间,标签是"实例"。 + tidb_kv_backoff: '{{distro.tidb}} 事务锁等待键值存储的时间,标签是"类型"。' + tidb_kv_request: KV 请求 durations 的耗时,标签是"类型"。 + tidb_slow_query: '{{distro.tidb}} 慢查询的时间开销,标签是"实例"。' + tidb_slow_query_cop_process: '{{distro.tidb}} 的慢查询总 cop 处理的耗时,标签是"实例"。' + tidb_slow_query_cop_wait: '{{distro.tidb}} 的慢查询总 cop 的等待时间,标签是"实例"。' + tidb_ddl_handle_job: 处理 {{distro.tidb}} DDL 任务的耗时,标签是"类型"。 + tidb_ddl_worker: DDL worker 处理任务的耗时,标签是"实例"。 + tidb_ddl_update_self_version: '{{distro.tidb}} schema 同步器版本更新的耗时,标签是"结果"。' + tidb_owner_handle_syncer: 在 etcd 上执行 {{distro.tidb}} DDL 所有者操作的耗时,标签是"类型"。 + tidb_ddl_batch_add_index: '{{distro.tidb}} 批量添加索引的耗时,标签是"类型"。' + tidb_ddl_deploy_syncer: '{{distro.tidb}} DDL schema 同步器统计的时间成本,包括 init、start、watch、clear,标签是"类型"。' + tidb_load_schema: 加载 {{distro.tidb}} schema 的时间成本,标签是"类型"。 + tidb_meta_operation: '{{distro.tidb}} 元操作的时间成本,包括 get/set 模式和 DDL 作业,标签是"实例"。' + tidb_auto_id_request: '{{distro.tidb}} 自增 ID 处理 ID 请求的耗时,标签是"类型"。' + tidb_statistics_auto_analyze: 自动分析 {{distro.tidb}} 的耗时,标签是"类型"。 + tidb_gc: KV 存储垃圾回收的时间,标签是"实例"。 + tidb_gc_push_task: KV 存储范围内 worker 处理一项任务的耗时,标签是"实例"。 + tidb_batch_client_unavailable: KV 存储批量处理不可用的耗时,标签是"类型"。 + tidb_batch_client_wait: KV 存储批量处理客户端等待请求的耗时,标签是"实例"。 + pd_start_tso_wait: 等待获取开始时间戳 timestamp 的耗时,标签是"实例"。 + pd_tso_rpc: 发送 TSO 请求直到收到响应的时间,标签是"实例"。 + pd_tso_wait: 客户端开始等待 timestamp 直到收到 timestamp 结果的耗时,标签是"实例"。 + pd_client_cmd: '{{distro.pd}} 客户端命令的耗时,标签是"类型"。' + pd_handle_request: '{{distro.pd}} 处理请求的耗时,标签是"类型"。' + pd_grpc_completed_commands: '{{distro.pd}} 完成各种 gRPC 命令的耗时,标签是"gRPC 方法"。' + pd_operator_finish: '{{distro.pd}} 完成各种调度命令的时间,标签是"类型"。' + pd_operator_step_finish: '{{distro.pd}} 完成操作步骤的耗时,标签是"类型"。' + pd_handle_transactions: '{{distro.pd}} 处理 etcd 事务的耗时,标签是"结果"。' + pd_region_heartbeat: 每个 {{distro.tikv}} 实例中心跳的耗时,标签是"服务地址"。 + etcd_wal_fsync: etcd 将 WAL 写入持久存储器的耗时,标签是"实例"。 + pd_peer_round_trip: 网络的延迟,标签是"实例"。 + tikv_grpc_message: gRPC 报文的 {{distro.tikv}} 处理耗时,标签是"类型"。 + tikv_cop_request: Coprocessor 处理读请求的时间开销,标签是"请求"。 + tikv_cop_handle: 处理 Coprocessor 请求的时间开销,标签是"请求"。 + tikv_cop_wait: Coprocessor 请求等待处理的耗时,标签是"请求"。 + tikv_scheduler_command: 执行 commit 命令的耗时,标签是"类型"。 + tikv_scheduler_latch_wait: 提交命令中 {{distro.tikv}} 锁存器等待的时间开销,标签是"类型"。 + tikv_handle_snapshot: 处理快照的时间开销,标签是"类型"。 + tikv_send_snapshot: 发送快照的时间开销,标签是"实例"。 + tikv_storage_async_request: 处理异步快照请求的时间开销,标签是"类型"。 + tikv_raft_append_log: Raft appends log 的时间开销,标签是"实例"。 + tikv_raft_apply_log: Raft apply log 的时间开销,标签是"实例"。 + tikv_raft_apply_wait: Raft apply wait 的时间开销,标签是"实例"。 + tikv_raft_process: Peer processes in Raft 的时间开销,标签是"实例"。 + tikv_raft_propose_wait: 每一个 Raft 提议的等待时间,标签是"类型"。 + tikv_raft_store_events: RaftStore events 的时间开销,标签是"类型"。 + tikv_commit_log: Raft 提交日志的时间开销,标签是"实例"。 + tikv_check_split: 运行分割检查的耗时,标签是"实例"。 + tikv_ingest_sst: Ingest SST 文件的耗时,标签是"实例"。 + tikv_gc_tasks: 执行 GC 任务的耗时,标签是"任务"。 + tikv_pd_request: '{{distro.tikv}} 向 {{distro.pd}} 发送请求的耗时,标签是"类型"。' + tikv_lock_manager_deadlock_detect: + tikv_lock_manager_waiter_lifetime: + tikv_backup_range: + tikv_backup: + tidb_transaction_retry_num: '{{distro.tidb}} 事务重试次数,标签是"实例"。' + tidb_transaction_statement_num: 一个事务中 {{distro.tidb}} 语句数的总数量。Internal 是指 {{distro.tidb}} 内部事务,标签是"实例"。' + tidb_txn_region_num: 每个事务进行操作的区域数量,标签是"实例"。 + tidb_txn_kv_write_num: 每个事务执行的 KV 写入数量,标签是"实例"。 + tidb_txn_kv_write_size: 每个事务执行的 KV 写入大小,标签是"实例"。 + tidb_load_safepoint_total_num: 安全点装载总数量,标签是"实例"。 + tidb_lock_resolver_total_num: lock resolve 的总数量,标签是"实例"。 + pseudo_estimation_total_count: 使用伪估计的 {{distro.tidb}} 优化器的总数量,标签是"实例","类型"。 + dump_feedback_total_count: '{{distro.tidb}} 转储统计数据回 KV 存储的操作总数量,标签是"实例"。' + store_query_feedback_total_count: '{{distro.tidb}} 存储查询反馈的总数量,标签是"实例"。' + update_stats_total_count: 使用反馈更新统计数据的 {{distro.tidb}} 总数量,标签是"实例"。 + blance-leader-in: Leader 移动到 {{distro.tikv}} 存储的总数量,标签是"实例"。 + blance-leader-out: Leader 移出 {{distro.tikv}} 存储的总数量,标签是"实例"。 + blance-region-in: 移动到 {{distro.tikv}} 存储的 Region 总数量,标签是"实例"。 + blance-region-out: 移出 {{distro.tikv}} 存储的的 Region 总数量,标签是"实例"。 + Approximate Region size: 近似 Region 大小,标签是"实例"。 + store size: 存储大小,标签是"实例"。 + tikv_scheduler_keys_read: 由一条命令读取的键数量,标签是"实例","类型"。 + tikv_scheduler_keys_written: 由一条命令写入的键数量,标签是"实例","类型"。 + tikv_scheduler_scan_details_total_num: 在执行一条命令时,扫描每个 CF 的详细信息的总数量,标签是"实例"。 + tikv_scheduler_stage_total_num: 调度程序状态的总数量,标签是"实例","阶段","类型"。 + tikv_gc_keys_total_num: GC 期间 CF 中受影响的键的总数量,标签是"实例"。 + tidb_gc_worker_action_total_num: KV 存储垃圾回收总量,标签是"实例","类型"。 + tikv_worker_handled_tasks_total_num: worker 处理的任务总数量,标签是"实例"。 + tikv_worker_pending_tasks_total_num: 工作进程的挂起和运行任务的总数量,标签是"实例"。 + tikv_futurepool_handled_tasks_total_num: future_pool 处理的任务总数量,标签是"实例"。 + tikv_futurepool_pending_tasks_total_num: future_pool 的总挂起和运行任务,标签是"实例"。 + tikv_snapshot_kv_count: tikv_snapshot_kv_count,标签是"实例"。 + tikv_snapshot_size: 快照内 KV 的数量,标签是"实例"。 + tikv_snapshot_state_total_count: '{{distro.tikv}} 的快照大小,标签是"实例","类型"。' + tikv_cop_scan_keys_num: '{{distro.tikv}} Coprocessor 扫描键总数量,标签是"实例"。' + tikv_cop_total_response_total_size: '{{distro.tikv}} Coprocessor 响应总大小,标签是"实例"。' + tikv_cop_scan_num: '{{distro.tikv}} Coprocessor 扫描操作总数量,标签是"实例"。' + tikv_raft_sent_messages_total_num: 发送的 Raft 消息的总数量,标签是"实例","类型"。 + tikv_flush_messages_total_num: Raft 上刷新了的信息总数量,标签是"实例"。 + tikv_receive_messages_total_num: Raft 收到的的信息总数量,标签是"实例"。 + tikv_raft_dropped_messages_total: Raft 丢掉的的信息总数量,标签是"实例","类型"。 + tikv_raft_proposals_total_num: Raft 提议的的总数量,标签是"实例","类型"。 + tikv_grpc_error_total_count: gRPC 消息失败的总数量,标签是"实例","类型"。 + tikv_critical_error_total_count: '{{distro.tikv}} 临界误差的总数量,标签是"实例","类型"。' + tikv_scheduler_is_busy_total_count: 使 {{distro.tikv}} 实例暂时不可用的调度器繁忙事件的总数量,标签是"实例"。 + tikv_channel_full_total_count: 通道完全错误的总数量,它将使 {{distro.tikv}} 实例暂时不可用,标签是"实例"。 + tikv_coprocessor_request_error_total_count: Coprocessor 错误的总数量,标签是"实例","原因"。 + tikv_engine_write_stall: 指示使 {{distro.tikv}} 实例暂时不可用的写失速事件,标签是"实例"。 + tikv_server_report_failures_total_count: 报告失败消息的总数量,标签是"实例"。 + tikv_storage_async_request_error: 存储请求错误的总数量,标签是"实例","状态","类型"。 + tikv_lock_manager_detect_error_total_count: '{{distro.tikv}} 锁管理器检测错误的总数量,标签是"实例","类型"。' + tikv_backup_errors_total_count: '{{distro.tikv}} 锁管理的总错误,标签是"实例","错误"。' + node_disk_write_latency: 每个节点的磁盘写延迟,标签是"实例","设备"。 + node_disk_read_latency: 每个节点的磁盘读取延迟,标签是"实例","设备"。 + grpc: 每个 {{distro.tikv}} gRPC 的 CPU 利用率,标签是"实例"。' + raftstore: '{{distro.tikv}} RaftStore 线程的 CPU 利用率,标签是"实例"。' + Async apply: '{{distro.tikv}} 异步应用线程的 CPU 利用率,标签是"实例"。' + sched_worker: '{{distro.tikv}} 调度器工作线程的 CPU 利用率,标签是"实例"。' + snapshot: '{{distro.tikv}} 快照的 CPU 利用率,标签是"实例"。' + unified read pool: '{{distro.tikv}} 统一读池线程的 CPU 利用率,标签是"实例"。' + storage read pool: '{{distro.tikv}} 存储读池线程的 CPU 利用率,标签是"实例"。' + storage read pool normal: '{{distro.tikv}} 存储读池普通线程的 CPU 利用率,标签是"实例"。' + storage read pool high: '{{distro.tikv}} 存储较高读线程的 CPU 利用率,标签是"实例"。' + storage read pool low: '{{distro.tikv}} 存储较低读线程的 CPU 利用率,标签是"实例"。' + cop: '{{distro.tikv}} Coprocessor 的 CPU 利用率,标签是"实例"。' + cop normal: '{{distro.tikv}} Coprocessor 普通线程的 CPU 利用率,标签是"实例"。' + cop high: '{{distro.tikv}} Coprocessor 高线程的 CPU 利用率,标签是"实例"。' + cop low: '{{distro.tikv}} Coprocessor 低线程的 CPU 利用率,标签是"实例"。' + rocksdb: '{{distro.tikv}} RocksDB 的 CPU 利用率,标签是"实例"。' + gc: '{{distro.tikv}} GC 的 CPU 利用率,标签是"实例"。' + split_check: '{{distro.tikv}} split_chec 的 CPU 利用率,标签是"实例"。' + region_score: store 的 Region 得分,标签是"服务地址"。 + leader_score: store 的 Leader 得分,标签是"服务地址"。 + region_count: store 的 Region 数量,标签是"服务地址"。 + leader_count: store 的 Leader 数量,标签是"服务地址"。 + region_size: store 的 Region 大小,标签是"服务地址"。 + leader_size: store 的 Leader 大小,标签是"服务地址"。 + tikv_memtable_hit: memtable 的命中率,标签是"实例"。 + tikv_block_all_cache_hit: 所有块缓存的命中率,标签是"实例"。 + tikv_block_index_cache_hit: 索引块缓存的命中率,标签是"实例"。 + tikv_block_filter_cache_hit: 过滤块缓存的命中率,标签是"实例"。 + tikv_block_data_cache_hit: 数据块缓存的命中率,标签是"实例"。 + tikv_block_bloom_prefix_cache_hit: bloom_prefix 块缓存的命中率,标签是"实例"。 + get duration: RocksDB 执行 get 操作的耗时,标签是"实例"。 + seek duration: RocksDB 执行 seek 操作的耗时,标签是"实例"。 + write duration: RocksDB 执行写操作的耗时,标签是"实例"。 + WAL sync duration: RocksDB 执行 WAL 同步操作的耗时,标签是"实例"。 + compaction duration: RocksDB 执行压缩操作的耗时,标签是"实例"。 + SST read duration: RocksDB 读取 SST 文件的耗时,标签是"实例"。 + write stall duration: 由写停顿引起的时间,标签是"实例"。 diff --git a/ui-ori/diagnoseReportApp/types.ts b/ui-ori/diagnoseReportApp/types.ts new file mode 100644 index 0000000000..b3919bb118 --- /dev/null +++ b/ui-ori/diagnoseReportApp/types.ts @@ -0,0 +1,17 @@ +import { createContext } from 'react' + +export interface TableRowDef { + values: string[] + sub_values: string[][] + comment: string +} + +export interface TableDef { + category: string[] + title: string + comment: string + column: string[] + rows: TableRowDef[] +} + +export const ExpandContext = createContext(false) diff --git a/ui-ori/gulpfile.esm.js b/ui-ori/gulpfile.esm.js new file mode 100644 index 0000000000..1888ae5682 --- /dev/null +++ b/ui-ori/gulpfile.esm.js @@ -0,0 +1,87 @@ +import { task, watch, series, parallel, src, dest } from 'gulp' +import shell from 'gulp-shell' +import Stream from 'stream' +import { getUserAgentRegExp } from 'browserslist-useragent-regexp' + +task('swagger:generate_spec', shell.task('../scripts/generate_swagger_spec.sh')) + +task( + 'swagger:generate_client', + shell.task( + 'yarn openapi-generator generate -i ../swaggerspec/swagger.yaml -g typescript-axios -c .openapi_config.yaml -o lib/client/api' + ) +) + +task( + 'swagger:generate', + series('swagger:generate_spec', 'swagger:generate_client') +) + +task('swagger:watch', () => + watch(['../cmd/**/*.go', '../pkg/**/*.go'], series('swagger:generate')) +) + +task('distro:generate', shell.task('../scripts/generate_distro_info.sh')) + +task('distro:watch', () => + watch(['../pkg/utils/distro/*.go'], series('distro:generate')) +) + +task( + 'webpack:dev', + shell.task( + 'REACT_APP_COMMIT_HASH=$(git rev-parse --short HEAD) yarn react-app-rewired start' + ) +) + +task( + 'webpack:build', + shell.task( + 'REACT_APP_COMMIT_HASH=$(git rev-parse --short HEAD) yarn react-app-rewired build' + ) +) + +task( + 'build', + series(parallel('swagger:generate', 'distro:generate'), 'webpack:build') +) + +task( + 'dev', + series( + parallel('swagger:generate', 'distro:generate'), + parallel('swagger:watch', 'distro:watch', 'webpack:dev') + ) +) + +///////////////////////////////// + +// inspired from: https://github.com/brwnll/gulp-version-filename/blob/master/index.js +function updateBrowserList() { + const stream = new Stream.Transform({ objectMode: true }) + + stream._transform = function (file, _filetype, callback) { + const oriContents = file.contents.toString() + const pattern = 'var __SUPPORTED_BROWSERS__ =' + + if (oriContents.indexOf(pattern) < 0) { + return stream.emit('error', new Error(`Missing "${pattern}" pattern`)) + } + const browserList = getUserAgentRegExp({ allowHigherVersions: true }) + const regPattern = new RegExp(`${pattern} .+`) + const newContents = oriContents.replace( + regPattern, + `${pattern} ${browserList}` + ) + file.contents = Buffer.from(newContents) + callback(null, file) + } + + return stream +} + +task('gen:browserlist', () => { + return src('public/compat.js') + .pipe(updateBrowserList()) + .pipe(dest('public', { overwrite: true })) +}) diff --git a/ui-ori/lib/.gitignore b/ui-ori/lib/.gitignore new file mode 100644 index 0000000000..2c725bf464 --- /dev/null +++ b/ui-ori/lib/.gitignore @@ -0,0 +1 @@ +/distribution.json diff --git a/ui-ori/lib/antd.global.less b/ui-ori/lib/antd.global.less new file mode 100644 index 0000000000..c7d882649e --- /dev/null +++ b/ui-ori/lib/antd.global.less @@ -0,0 +1,512 @@ +// Slightly modified from https://github.com/ant-design/ant-design/blob/master/components/style/core/base.less + +/* stylelint-disable at-rule-no-unknown */ + +// Reboot +// +// Normalization of HTML elements, manually forked from Normalize.css to remove +// styles targeting irrelevant browsers while applying new styles. +// +// Normalize is licensed MIT. https://github.com/necolas/normalize.css + +// HTML & Body reset +@{html-selector}, +body { + .square(100%); +} + +// remove the clear button of a text input control in IE10+ +input::-ms-clear, +input::-ms-reveal { + display: none; +} + +// Document +// +// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`. +// 2. Change the default font family in all browsers. +// 3. Correct the line height in all browsers. +// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS. +// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so +// we force a non-overlapping, non-auto-hiding scrollbar to counteract. +// 6. Change the default tap highlight to be completely transparent in iOS. + +*, +*::before, +*::after { + box-sizing: border-box; // 1 +} + +@{html-selector} { + font-family: sans-serif; // 2 + line-height: 1.15; // 3 + -webkit-text-size-adjust: 100%; // 4 + -ms-text-size-adjust: 100%; // 4 + -ms-overflow-style: scrollbar; // 5 + -webkit-tap-highlight-color: fade(@black, 0%); // 6 +} + +// IE10+ doesn't honor `` in some cases. +@-ms-viewport { + width: device-width; +} + +// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers) +article, +aside, +dialog, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block; +} + +// Body +// +// 1. remove the margin in all browsers. +// 2. As a best practice, apply a default `body-background`. + +body { + margin: 0; // 1 + color: @text-color; + font-size: @font-size-base; + font-family: @font-family; + font-variant: @font-variant-base; + line-height: @line-height-base; + background-color: @body-background; // 2 + font-feature-settings: @font-feature-settings-base; +} + +// Suppress the focus outline on elements that cannot be accessed via keyboard. +// This prevents an unwanted focus outline from appearing around elements that +// might still respond to pointer events. +// +// Credit: https://github.com/suitcss/base +[tabindex='-1']:focus { + outline: none !important; +} + +// Content grouping +// +// 1. Add the correct box sizing in Firefox. +// 2. Show the overflow in Edge and IE. + +hr { + box-sizing: content-box; // 1 + height: 0; // 1 + overflow: visible; // 2 +} + +// +// Typography +// + +// remove top margins from headings +// +// By default, `

`-`

` all receive top and bottom margins. We nuke the top +// margin for easier control within type scales as it avoids margin collapsing. +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5em; + color: @heading-color; + font-weight: 500; +} + +// Reset margins on paragraphs +// +// Similarly, the top margin on `

`s get reset. However, we also reset the +// bottom margin to use `em` units instead of `em`. +p { + margin-top: 0; + margin-bottom: 1em; +} + +// Abbreviations +// +// 1. remove the bottom border in Firefox 39-. +// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. +// 3. Add explicit cursor to indicate changed behavior. +// 4. Duplicate behavior to the data-* attribute for our tooltip plugin + +abbr[title], +abbr[data-original-title] { + // 4 + text-decoration: underline dotted; // 2 + border-bottom: 0; // 1 + cursor: help; // 3 +} + +address { + margin-bottom: 1em; + font-style: normal; + line-height: inherit; +} + +input[type='text'], +input[type='password'], +input[type='number'], +textarea { + -webkit-appearance: none; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1em; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 500; +} + +dd { + margin-bottom: 0.5em; + margin-left: 0; // Undo browser default +} + +blockquote { + margin: 0 0 1em; +} + +dfn { + font-style: italic; // Add the correct font style in Android 4.3- +} + +b, +strong { + font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari +} + +small { + font-size: 80%; // Add the correct font size in all browsers +} + +// +// Prevent `sub` and `sup` elements from affecting the line height in +// all browsers. +// + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} + +// +// Links +// + +a { + color: @link-color; + text-decoration: @link-decoration; + background-color: transparent; // remove the gray background on active links in IE 10. + outline: none; + cursor: pointer; + transition: color 0.3s; + -webkit-text-decoration-skip: objects; // remove gaps in links underline in iOS 8+ and Safari 8+. + + &:hover { + color: @link-hover-color; + } + + &:active { + color: @link-active-color; + } + + &:active, + &:hover { + text-decoration: @link-hover-decoration; + outline: 0; + } + + // https://github.com/ant-design/ant-design/issues/22503 + &:focus { + text-decoration: @link-focus-decoration; + outline: @link-focus-outline; + } + + &[disabled] { + color: @disabled-color; + cursor: not-allowed; + pointer-events: none; + } +} + +// +// Code +// + +pre, +code, +kbd, +samp { + font-size: 1em; // Correct the odd `em` font sizing in all browsers. + font-family: @code-family; +} + +pre { + // remove browser default top margin + margin-top: 0; + // Reset browser default of `1em` to use `em`s + margin-bottom: 1em; + // Don't allow content to break outside + overflow: auto; +} + +// +// Figures +// +figure { + // Apply a consistent margin strategy (matches our type styles). + margin: 0 0 1em; +} + +// +// Images and content +// + +img { + vertical-align: middle; + border-style: none; // remove the border on images inside links in IE 10-. +} + +svg:not(:root) { + overflow: hidden; // Hide the overflow in IE +} + +// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property. +// +// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11 +// DON'T remove the click delay when `` is present. +// However, they DO support emoving the click delay via `touch-action: manipulation`. +// See: +// * https://getbootstrap.com/docs/4.0/content/reboot/#click-delay-optimization-for-touch +// * http://caniuse.com/#feat=css-touch-action +// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay + +a, +area, +button, +[role='button'], +input:not([type='range']), +label, +select, +summary, +textarea { + touch-action: manipulation; +} + +// +// Tables +// + +table { + border-collapse: collapse; // Prevent double borders +} + +caption { + padding-top: 0.75em; + padding-bottom: 0.3em; + color: @text-color-secondary; + text-align: left; + caption-side: bottom; +} + +th { + // Matches default `` alignment by inheriting from the ``, or the + // closest parent with a set `text-align`. + text-align: inherit; +} + +// +// Forms +// + +input, +button, +select, +optgroup, +textarea { + margin: 0; // remove the margin in Firefox and Safari + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; // Show the overflow in Edge +} + +button, +select { + text-transform: none; // remove the inheritance of text transform in Firefox +} + +// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` +// controls in Android 4. +// 2. Correct the inability to style clickable types in iOS and Safari. +button, +@{html-selector} [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; // 2 +} + +// remove inner border and padding from Firefox, but don't restore the outline like Normalize. +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type='radio'], +input[type='checkbox'] { + box-sizing: border-box; // 1. Add the correct box sizing in IE 10- + padding: 0; // 2. remove the padding in IE 10- +} + +input[type='date'], +input[type='time'], +input[type='datetime-local'], +input[type='month'] { + // remove the default appearance of temporal inputs to avoid a Mobile Safari + // bug where setting a custom line-height prevents text from being vertically + // centered within the input. + // See https://bugs.webkit.org/show_bug.cgi?id=139848 + // and https://github.com/twbs/bootstrap/issues/11266 + -webkit-appearance: listbox; +} + +textarea { + overflow: auto; // remove the default vertical scrollbar in IE. + // Textareas should really only resize vertically so they don't break their (horizontal) containers. + resize: vertical; +} + +fieldset { + // Browsers set a default `min-width: min-content;` on fieldsets, + // unlike e.g. `

`s, which have `min-width: 0;` by default. + // So we reset that to ensure fieldsets behave more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359 + // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements + min-width: 0; + margin: 0; + // Reset the default outline behavior of fieldsets so they don't affect page layout. + padding: 0; + border: 0; +} + +// 1. Correct the text wrapping in Edge and IE. +// 2. Correct the color inheritance from `fieldset` elements in IE. +legend { + display: block; + width: 100%; + max-width: 100%; // 1 + margin-bottom: 0.5em; + padding: 0; + color: inherit; // 2 + font-size: 1.5em; + line-height: inherit; + white-space: normal; // 1 +} + +progress { + vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera. +} + +// Correct the cursor style of incement and decement buttons in Chrome. +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} + +[type='search'] { + // This overrides the extra rounded corners on search inputs in iOS so that our + // `.form-control` class can properly style them. Note that this cannot simply + // be added to `.form-control` as it's not specific enough. For details, see + // https://github.com/twbs/bootstrap/issues/11586. + outline-offset: -2px; // 2. Correct the outline style in Safari. + -webkit-appearance: none; +} + +// +// remove the inner padding and cancel buttons in Chrome and Safari on macOS. +// + +[type='search']::-webkit-search-cancel-button, +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +// +// 1. Correct the inability to style clickable types in iOS and Safari. +// 2. Change font properties to `inherit` in Safari. +// + +::-webkit-file-upload-button { + font: inherit; // 2 + -webkit-appearance: button; // 1 +} + +// +// Correct element displays +// + +output { + display: inline-block; +} + +summary { + display: list-item; // Add the correct display in all browsers +} + +template { + display: none; // Add the correct display in IE +} + +// Always hide an element with the `hidden` HTML attribute (from PureCSS). +// Needed for proper display in IE 10-. +[hidden] { + display: none !important; +} + +mark { + padding: 0.2em; + background-color: @yellow-1; +} + +// Utility classes +.clearfix { + .clearfix(); +} diff --git a/ui-ori/lib/antd.less b/ui-ori/lib/antd.less new file mode 100644 index 0000000000..5a03808516 --- /dev/null +++ b/ui-ori/lib/antd.less @@ -0,0 +1,12 @@ +// This file will replace the default ant design style. + +@import '~antd/es/style/themes/index'; +@import '~antd/es/style/mixins/index'; + +@import './antd.global.less'; +@import '~antd/es/style/core/iconfont'; +@import '~antd/es/style/core/motion'; + +body { + @import './antd.override.less'; +} diff --git a/ui-ori/lib/antd.override.less b/ui-ori/lib/antd.override.less new file mode 100644 index 0000000000..8a0431ff16 --- /dev/null +++ b/ui-ori/lib/antd.override.less @@ -0,0 +1,28 @@ +.ant-badge { + font-size: 1em; +} + +.ant-badge-status-text { + font-size: 1em; +} + +.ant-form-inline .ant-form-item { + margin-bottom: @padding-sm; +} + +.ant-form-inline { + margin-bottom: -@padding-sm; +} + +.ant-tooltip { + pointer-events: none; +} + +// related issue: +// Descriptions component has different look between Chrome and Safari +// https://github.com/ant-design/ant-design/issues/24999 +// can be removed after above issue is fixed +th.ant-descriptions-item, +th.ant-descriptions-item-label { + text-align: left; +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/DiskTable.tsx b/ui-ori/lib/apps/ClusterInfo/components/DiskTable.tsx new file mode 100644 index 0000000000..e7a9be879b --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/DiskTable.tsx @@ -0,0 +1,212 @@ +import { Tooltip, Typography } from 'antd' +import React, { useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { getValueFormat } from '@baurine/grafana-value-formats' +import client, { HostinfoInfo, HostinfoPartitionInfo } from '@lib/client' +import { Bar, CardTable } from '@lib/components' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import { + InstanceKind, + InstanceKinds, + InstanceKindName, +} from '@lib/utils/instanceTable' +import { WarningOutlined } from '@ant-design/icons' + +interface IExpandedDiskItem extends HostinfoPartitionInfo { + key: string + host?: string + instancesCount: Record +} + +function expandDisksItems(rows: HostinfoInfo[]): IExpandedDiskItem[] { + const expanded: IExpandedDiskItem[] = [] + rows.forEach((row) => { + const instancesPerPartition: Record< + string, + Record + > = {} + + let partitions = 0 + + Object.values(row.instances ?? {}).forEach((i) => { + if (!i) { + return + } + if (!instancesPerPartition[i.partition_path_lower!]) { + instancesPerPartition[i.partition_path_lower!] = { + pd: 0, + tidb: 0, + tikv: 0, + tiflash: 0, + } + } + instancesPerPartition[i.partition_path_lower!][i.type!]++ + }) + + for (let pathL in row.partitions) { + const instancesCount = instancesPerPartition[pathL] + if (!instancesCount) { + // This partition does not have deployed instances, skip + continue + } + const partition = row.partitions[pathL] + expanded.push({ + key: `${row.host} ${pathL}`, + host: row.host, + instancesCount, + ...partition, + }) + partitions++ + } + + if (partitions === 0) { + // Supply dummy item.. + expanded.push({ + key: row.host ?? '', + host: row.host, + instancesCount: { + pd: 0, + tidb: 0, + tikv: 0, + tiflash: 0, + }, + }) + } + }) + return expanded +} + +export default function HostTable() { + const { t } = useTranslation() + + const { data, isLoading, error } = useClientRequest((reqConfig) => + client.getInstance().clusterInfoGetHostsInfo(reqConfig) + ) + + const diskData = useMemo(() => expandDisksItems(data?.hosts ?? []), [data]) + + const columns: IColumn[] = useMemo( + () => [ + { + name: t('cluster_info.list.disk_table.columns.host'), + key: 'host', + minWidth: 100, + maxWidth: 150, + onRender: (row: IExpandedDiskItem) => { + if (!row.free) { + return ( + + + {row.host} + + + ) + } + return ( + + {row.host} + + ) + }, + }, + { + name: t('cluster_info.list.disk_table.columns.mount_dir'), + key: 'mount_dir', + minWidth: 150, + maxWidth: 200, + onRender: (row: IExpandedDiskItem) => { + if (!row.path) { + return + } + return ( + + {row.path} + + ) + }, + }, + { + name: t('cluster_info.list.disk_table.columns.fs'), + key: 'fs', + minWidth: 50, + maxWidth: 100, + onRender: (row: IExpandedDiskItem) => { + return row.fstype?.toUpperCase() ?? '' + }, + }, + { + name: t('cluster_info.list.disk_table.columns.disk_size'), + key: 'disk_size', + minWidth: 60, + maxWidth: 100, + onRender: (row: IExpandedDiskItem) => { + if (!row.total) { + return + } + return getValueFormat('bytes')(row.total, 1) + }, + }, + { + name: t('cluster_info.list.disk_table.columns.disk_usage'), + key: 'disk_usage', + minWidth: 100, + maxWidth: 150, + onRender: (row: IExpandedDiskItem) => { + if (!row.total || !row.free) { + return + } + const total = row.total + const free = row.free + const used = total - free + const usedPercent = (used / total).toFixed(3) + const tooltipContent = ( + + Used: {getValueFormat('bytes')(used, 1)} ( + {getValueFormat('percentunit')(+usedPercent, 1)}) + + ) + return ( + + + + ) + }, + }, + { + name: t('cluster_info.list.disk_table.columns.instances'), + key: 'instances', + minWidth: 100, + maxWidth: 200, + onRender: (row: IExpandedDiskItem) => { + const item = InstanceKinds.map((ik) => { + if (row.instancesCount[ik] > 0) { + return `${row.instancesCount[ik]} ${InstanceKindName[ik]}` + } else { + return '' + } + }) + const content = item.filter((v) => v.length > 0).join(', ') + return ( + + {content} + + ) + }, + }, + ], + [t] + ) + + return ( + + ) +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/HostTable.tsx b/ui-ori/lib/apps/ClusterInfo/components/HostTable.tsx new file mode 100644 index 0000000000..2b9e8970b3 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/HostTable.tsx @@ -0,0 +1,213 @@ +import { Tooltip, Typography } from 'antd' +import React, { useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { red } from '@ant-design/colors' +import { getValueFormat } from '@baurine/grafana-value-formats' +import client, { HostinfoInfo } from '@lib/client' +import { Bar, CardTable, Pre } from '@lib/components' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import { + InstanceKind, + InstanceKinds, + InstanceKindName, +} from '@lib/utils/instanceTable' +import { WarningOutlined } from '@ant-design/icons' + +interface IExpandedHostItem extends HostinfoInfo { + key: string + instancesCount: Record +} + +function expandHostItems(rows: HostinfoInfo[]): IExpandedHostItem[] { + const expanded: IExpandedHostItem[] = [] + rows.forEach((row) => { + const instancesCount: Record = { + pd: 0, + tidb: 0, + tikv: 0, + tiflash: 0, + } + + Object.values(row.instances ?? {}).forEach((i) => { + if (!i) { + return + } + instancesCount[i.type!]++ + }) + + expanded.push({ + key: row.host ?? '', + instancesCount, + ...row, + }) + }) + return expanded +} + +export default function HostTable() { + const { t } = useTranslation() + + const { data, isLoading, error } = useClientRequest((reqConfig) => + client.getInstance().clusterInfoGetHostsInfo(reqConfig) + ) + + const hostData = useMemo(() => expandHostItems(data?.hosts ?? []), [data]) + + const columns: IColumn[] = useMemo( + () => [ + { + name: t('cluster_info.list.host_table.columns.host'), + key: 'host', + minWidth: 100, + maxWidth: 150, + onRender: (row: IExpandedHostItem) => { + if (!row.cpu_info) { + // We assume that CPU info must be successfully retrieved. + return ( + + + {row.host} + + + ) + } + return ( + + {row.host} + + ) + }, + }, + { + name: t('cluster_info.list.host_table.columns.cpu'), + key: 'cpu', + minWidth: 100, + maxWidth: 150, + onRender: (row: IExpandedHostItem) => { + const { cpu_info: c } = row + if (!c) { + return + } + const tooltipContent = ` +Physical Cores: ${c.physical_cores} +Logical Cores: ${c.logical_cores}` + return ( + {tooltipContent.trim()}}> + {`${c.physical_cores!} (${c.logical_cores!} vCore)`} + + ) + }, + }, + { + name: t('cluster_info.list.host_table.columns.cpu_arch'), + key: 'cpu-arch', + minWidth: 60, + maxWidth: 100, + onRender: (row: IExpandedHostItem) => { + const { cpu_info: c } = row + if (!c || !c.arch) { + return {'Unknow'} + } + return {`${c.arch}`} + }, + }, + { + name: t('cluster_info.list.host_table.columns.cpu_usage'), + key: 'cpu_usage', + minWidth: 100, + maxWidth: 150, + onRender: (row: IExpandedHostItem) => { + if (!row.cpu_usage) { + return + } + const system = row.cpu_usage.system ?? 0 + const idle = row.cpu_usage.idle ?? 1 + const user = 1 - system - idle + const tooltipContent = ` +User: ${getValueFormat('percentunit')(user)} +System: ${getValueFormat('percentunit')(system)}` + return ( + {tooltipContent.trim()}}> + + + ) + }, + }, + { + name: t('cluster_info.list.host_table.columns.memory'), + key: 'memory', + minWidth: 60, + maxWidth: 100, + onRender: (row: IExpandedHostItem) => { + if (!row.memory_usage) { + return + } + return getValueFormat('bytes')(row.memory_usage.total ?? 0, 1) + }, + }, + { + name: t('cluster_info.list.host_table.columns.memory_usage'), + key: 'memory_usage', + minWidth: 100, + maxWidth: 150, + onRender: (row: IExpandedHostItem) => { + if (!row.memory_usage) { + return + } + const { total, used } = row.memory_usage + const usedPercent = (used! / total!).toFixed(3) + const title = ( +
+ Used: {getValueFormat('bytes')(used!, 1)} ( + {getValueFormat('percentunit')(+usedPercent, 1)}) +
+ ) + return ( + + + + ) + }, + }, + { + name: t('cluster_info.list.host_table.columns.instances'), + key: 'instances', + minWidth: 100, + maxWidth: 200, + onRender: (row: IExpandedHostItem) => { + const item = InstanceKinds.map((ik) => { + if (row.instancesCount[ik] > 0) { + return `${row.instancesCount[ik]} ${InstanceKindName[ik]}` + } else { + return '' + } + }) + const content = item.filter((v) => v.length > 0).join(', ') + return ( + + {content} + + ) + }, + }, + ], + [t] + ) + + return ( + + ) +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/InstanceTable.tsx b/ui-ori/lib/apps/ClusterInfo/components/InstanceTable.tsx new file mode 100644 index 0000000000..07cbac1b22 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/InstanceTable.tsx @@ -0,0 +1,195 @@ +import { DeleteOutlined } from '@ant-design/icons' +import { usePersistFn } from 'ahooks' +import { Divider, Popconfirm, Tooltip } from 'antd' +import React, { useCallback, useMemo } from 'react' +import { useTranslation } from 'react-i18next' + +import client from '@lib/client' +import { CardTable, InstanceStatusBadge } from '@lib/components' +import DateTime from '@lib/components/DateTime' +import { + buildInstanceTable, + IInstanceTableItem, + InstanceStatus, +} from '@lib/utils/instanceTable' +import { useClientRequest } from '@lib/utils/useClientRequest' + +function StatusColumn({ + node, + onHideTiDB, +}: { + node: IInstanceTableItem + onHideTiDB: (node) => void +}) { + const { t } = useTranslation() + + const onConfirm = usePersistFn(() => { + onHideTiDB && onHideTiDB(node) + }) + + return ( + + {node.instanceKind === 'tidb' && node.status !== InstanceStatus.Up && ( + <> + + + + + + + + + + )} + + + ) +} + +export default function ListPage() { + const { t } = useTranslation() + + const { + data: dataTiDB, + isLoading: loadingTiDB, + error: errTiDB, + sendRequest, + } = useClientRequest((reqConfig) => + client.getInstance().getTiDBTopology(reqConfig) + ) + + const { + data: dataStores, + isLoading: loadingStores, + error: errStores, + } = useClientRequest((reqConfig) => + client.getInstance().getStoreTopology(reqConfig) + ) + + const { + data: dataPD, + isLoading: loadingPD, + error: errPD, + } = useClientRequest((reqConfig) => + client.getInstance().getPDTopology(reqConfig) + ) + + const [tableData, groupData] = useMemo( + () => + buildInstanceTable({ + dataPD, + dataTiDB, + dataTiKV: dataStores?.tikv, + dataTiFlash: dataStores?.tiflash, + includeTiFlash: true, + }), + [dataTiDB, dataStores, dataPD] + ) + + const handleHideTiDB = useCallback( + async (node) => { + await client + .getInstance() + .topologyTidbAddressDelete(`${node.ip}:${node.port}`) + sendRequest() + }, + [sendRequest] + ) + + const columns = useMemo( + () => [ + { + name: t('cluster_info.list.instance_table.columns.node'), + key: 'node', + minWidth: 100, + maxWidth: 160, + onRender: ({ ip, port }) => { + const fullName = `${ip}:${port}` + return ( + + {fullName} + + ) + }, + }, + { + name: t('cluster_info.list.instance_table.columns.status'), + key: 'status', + minWidth: 100, + maxWidth: 120, + onRender: (node) => ( + + ), + }, + { + name: t('cluster_info.list.instance_table.columns.up_time'), + key: 'start_timestamp', + minWidth: 100, + maxWidth: 150, + onRender: ({ start_timestamp: ts }) => { + if (ts !== undefined && ts !== 0) { + return + } + }, + }, + { + name: t('cluster_info.list.instance_table.columns.version'), + fieldName: 'version', + key: 'version', + minWidth: 100, + maxWidth: 150, + onRender: ({ version }) => ( + + {version} + + ), + }, + { + name: t('cluster_info.list.instance_table.columns.git_hash'), + fieldName: 'git_hash', + key: 'git_hash', + minWidth: 100, + maxWidth: 200, + onRender: ({ git_hash }) => ( + + {git_hash} + + ), + }, + { + name: t('cluster_info.list.instance_table.columns.deploy_path'), + fieldName: 'deploy_path', + key: 'deploy_path', + minWidth: 150, + maxWidth: 300, + onRender: ({ deploy_path }) => ( + + {deploy_path} + + ), + }, + ], + [t, handleHideTiDB] + ) + + return ( + + ) +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/Statistics.module.less b/ui-ori/lib/apps/ClusterInfo/components/Statistics.module.less new file mode 100644 index 0000000000..6372349792 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/Statistics.module.less @@ -0,0 +1,8 @@ +@import '~antd/es/style/themes/default.less'; + +// FIXME: We should not provide padding for CardTab content, so that user +// can control whether a padding is needed. For example, to a . +.content { + margin-left: -@padding-page; + margin-right: -@padding-page; +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/Statistics.tsx b/ui-ori/lib/apps/ClusterInfo/components/Statistics.tsx new file mode 100644 index 0000000000..f709bd3e5d --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/Statistics.tsx @@ -0,0 +1,102 @@ +import React from 'react' +import { useClientRequest } from '@lib/utils/useClientRequest' +import client, { ClusterinfoClusterStatisticsPartial } from '@lib/client' +import { AnimatedSkeleton, ErrorBar, Descriptions, Card } from '@lib/components' +import { useTranslation } from 'react-i18next' +import { getValueFormat } from '@baurine/grafana-value-formats' +import { Alert } from 'antd' + +import styles from './Statistics.module.less' +import { InstanceKinds, InstanceKindName } from '@lib/utils/instanceTable' + +function PartialInfo({ data }: { data?: ClusterinfoClusterStatisticsPartial }) { + const { t } = useTranslation() + return ( + + + {data?.number_of_instances ?? 'Unknown'} + + + {data?.number_of_hosts ?? 'Unknown'} + + + {getValueFormat('bytes')(data?.total_memory_capacity_bytes ?? 0, 1)} + + + {data?.total_physical_cores ?? 'Unknown'} + + + {data?.total_logical_cores ?? 'Unknown'} + + + ) +} + +export default function Statistics() { + const { data, isLoading, error } = useClientRequest((reqConfig) => + client.getInstance().clusterInfoGetStatistics(reqConfig) + ) + const { t } = useTranslation() + + return ( + + {error && } + {data && ( +
+ {(data.probe_failure_hosts ?? 0) > 0 && ( + + + + )} + + + + {(data.versions ?? []).join(', ')} + + + + + + + + {InstanceKinds.map((ik) => { + return ( + + + + ) + })} +
+ )} +
+ ) +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocation.tsx b/ui-ori/lib/apps/ClusterInfo/components/StoreLocation.tsx new file mode 100755 index 0000000000..3f8c0d29e5 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/StoreLocation.tsx @@ -0,0 +1,32 @@ +import React, { useMemo } from 'react' +import { useClientRequest } from '@lib/utils/useClientRequest' +import client from '@lib/client' +import { AnimatedSkeleton, ErrorBar } from '@lib/components' +import StoreLocationTree, { + buildTreeData, + getShortStrMap, +} from './StoreLocationTree' + +export default function StoreLocation() { + const { data, isLoading, error, sendRequest } = useClientRequest( + (reqConfig) => client.getInstance().getStoreLocationTopology(reqConfig) + ) + const treeData = useMemo(() => buildTreeData(data), [data]) + const shortStrMap = useMemo(() => getShortStrMap(data), [data]) + + return ( +
+ + + document.documentElement.clientHeight - 80 - 48 * 2 // 48 = margin of cardInner + } + onReload={sendRequest} + /> + +
+ ) +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less new file mode 100755 index 0000000000..5837306b95 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less @@ -0,0 +1,33 @@ +@import '~antd/es/style/themes/default.less'; + +.tooltip { + opacity: 0; + position: absolute; + top: 0; + left: 0; + padding: @padding-xs @padding-md; + background: white; + text-align: center; + line-height: @line-height-base; + border-radius: @border-radius-base; + z-index: 10; + transition: all 0.1s ease-out; + pointer-events: none; + box-shadow: @box-shadow-base; + + &::before { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + width: 12px; + height: 12px; + background: white; + border: 1px solid #ddd; + border-top-color: transparent; + border-left-color: transparent; + transform: translate(-50%, 50%) rotate(45deg); + transform-origin: center center; + z-index: 10; + } +} diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.stories.tsx b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.stories.tsx new file mode 100755 index 0000000000..daf78ee4d0 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.stories.tsx @@ -0,0 +1,240 @@ +import React from 'react' +import StoreLocationTree, { + buildTreeData, + trimDuplicate, + getShortStrMap, +} from '.' + +export default { + title: 'StoreLocationTree', +} + +const dataSource1 = { + name: 'Stores', + value: '', + children: [ + { + name: 'zone', + value: 'sh', + children: [ + { + name: 'rack', + value: 'r1', + children: [ + { + name: 'host', + value: 'h1', + children: [ + { + name: 'TiKV', + value: '127.0.0.1:20160', + children: [], + }, + ], + }, + { + name: 'host', + value: 'h2', + children: [ + { + name: 'TiKV', + value: '127.0.0.1:20162', + children: [], + }, + ], + }, + ], + }, + ], + }, + { + name: 'zone', + value: 'bj', + children: [ + { + name: 'rack', + value: 'r1', + children: [ + { + name: 'host', + value: 'h1', + children: [ + { + name: 'TiKV', + value: '127.0.0.1:20161', + children: [], + }, + ], + }, + ], + }, + { + name: 'TiFlash', + value: '127.0.0.1:3930', + children: [], + }, + ], + }, + ], +} + +export const Normal = () => + +const dataSource2 = { + name: 'Stores', + value: '', + children: [ + { + name: 'failure-domain.beta.kubernetes.io/region', + value: 'us-west1', + children: [ + { + name: 'failure-domain.beta.kubernetes.io/zone', + value: 'us-west1-a', + children: [ + { + name: 'kubernetes.io/hostname', + value: + 'shoot--stating--a13df0bd-56f54530-z1-111111-tkq7r.internal', + children: [ + { + name: 'TiFlash', + value: 'db-tiflash-0.db-tiflash-peer.tidb1373', + children: [], + }, + ], + }, + { + name: 'kubernetes.io/hostname', + value: + 'shoot--stating--a13df0bd-b8cdec65-z1-22222-fdsaf.internal', + children: [ + { + name: 'TiKV', + value: 'db-tikv-0.db-tikv-peer.tidb1373', + children: [], + }, + ], + }, + ], + }, + { + name: 'failure-domain.beta.kubernetes.io/zone', + value: 'us-west1-b', + children: [ + { + name: 'kubernetes.io/hostname', + value: + 'shoot--stating--a13df0bd-xxxxxxxxxx-z1-33333-xxxxx.internal', + children: [ + { + name: 'TiKV', + value: 'db-tikv-1.db-tikv-peer.tidb1373', + children: [], + }, + ], + }, + ], + }, + { + name: 'failure-domain.beta.kubernetes.io/zone', + value: 'us-west1-c', + children: [ + { + name: 'kubernetes.io/hostname', + value: 'shoot--stating--a13df0bd-yyyyy-z1-33333-mmmm.internal', + children: [ + { + name: 'TiKV', + value: 'db-tikv-2.db-tikv-peer.tidb1373', + children: [], + }, + ], + }, + ], + }, + ], + }, + ], +} + +export const Kubernetes = () => + +///////////////////////////// + +const arr1 = [ + 'aaa-bbbb-111a.abc.123', + 'aaa-bbbb-222a.abc.123', + 'aaa-bbbb-333a.abc.123', +] +const arr2 = ['aaa-111a.abc.123', 'aaa-222a.abc.123', 'aaa-333a.abc.123'] +const arr3 = [] +const arr4 = ['abc'] +const arr5 = ['abcd', 'abce'] +console.log(trimDuplicate(arr1)) +console.log(trimDuplicate(arr2)) +console.log(trimDuplicate(arr3)) +console.log(trimDuplicate(arr4)) +console.log(trimDuplicate(arr5)) + +///////////////////////////// + +const data1 = { + location_labels: [ + 'failure-domain.beta.kubernetes.io/region', + 'failure-domain.beta.kubernetes.io/zone', + 'kubernetes.io/hostname', + ], + stores: [ + { + address: 'db-tiflash-0.db-tiflash-peer.tidb1373', + labels: { + engine: 'tiflash', + 'failure-domain.beta.kubernetes.io/region': 'us-west1', + 'failure-domain.beta.kubernetes.io/zone': 'us-west1-a', + 'kubernetes.io/hostname': + 'shoot--stating--a13df0bd-56f54530-z1-111111-tkq7r.internal', + }, + }, + { + address: 'db-tikv-0.db-tikv-peer.tidb1373', + labels: { + engine: '', + 'failure-domain.beta.kubernetes.io/region': 'us-west1', + 'failure-domain.beta.kubernetes.io/zone': 'us-west1-a', + 'kubernetes.io/hostname': + 'shoot--stating--a13df0bd-b8cdec65-z1-22222-fdsaf.internal', + }, + }, + { + address: 'db-tikv-1.db-tikv-peer.tidb1373', + labels: { + engine: '', + 'failure-domain.beta.kubernetes.io/region': 'us-west1', + 'failure-domain.beta.kubernetes.io/zone': 'us-west1-b', + 'kubernetes.io/hostname': + 'shoot--stating--a13df0bd-xxxxxxxxxx-z1-33333-xxxxx.internal', + }, + }, + { + address: 'db-tikv-2.db-tikv-peer.tidb1373', + labels: { + engine: '', + 'failure-domain.beta.kubernetes.io/region': 'us-west1', + 'failure-domain.beta.kubernetes.io/zone': 'us-west1-c', + 'kubernetes.io/hostname': + 'shoot--stating--a13df0bd-yyyyy-z1-33333-mmmm.internal', + }, + }, + ], +} + +const dataSource = buildTreeData(data1) +const shortStrMap = getShortStrMap(data1) +console.log(shortStrMap) + +export const KubernetesByShort = () => ( + +) + +///////////////////////////// diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.tsx b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.tsx new file mode 100755 index 0000000000..9e88fadf81 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.tsx @@ -0,0 +1,587 @@ +import React, { useRef, useEffect } from 'react' +import * as d3 from 'd3' +import { + ZoomInOutlined, + ZoomOutOutlined, + ReloadOutlined, +} from '@ant-design/icons' +import { Space } from 'antd' +import { cyan, magenta, grey } from '@ant-design/colors' +import { useTranslation } from 'react-i18next' + +import { TopologyStoreLocation } from '@lib/client' + +import styles from './index.module.less' +import { InstanceKindName } from '@lib/utils/instanceTable' + +////////////////////////////////////// + +type ShortStrMap = Record + +export function getShortStrMap( + data: TopologyStoreLocation | undefined +): ShortStrMap { + let allShortStrMap: ShortStrMap = {} + + if (data === undefined) { + return allShortStrMap + } + + // location labels + // failure-domain.beta.kubernetes.io/region => region + data.location_labels?.forEach((label) => { + if (label.indexOf('/') >= 0) { + const shortStr = label.split('/').pop() + if (shortStr) { + allShortStrMap[label] = shortStr + } + } + }) + + // location labels value + data.location_labels?.forEach((label) => { + // get label values + const labelValues: string[] = [] + data.stores?.forEach((store) => { + const val = store.labels?.[label] + if (val) { + labelValues.push(val) + } + }) + const shortStrMap = trimDuplicate(labelValues) + allShortStrMap = Object.assign(allShortStrMap, shortStrMap) + }) + + // tikv & tiflash nodes address + const addresses = (data.stores || []).map((s) => s.address!) + addresses.forEach((addr) => { + if (addr.startsWith('db-')) { + const shortStr = addr.split('.').shift() + if (shortStr) { + allShortStrMap[addr] = shortStr + } + } + }) + + return allShortStrMap +} + +// input: ['aaa-111a.abc.123', 'aaa-222a.abc.123', 'aaa-333a.abc.123'], items in the array have either the same prefix or suffix, or both. +// output: +// { +// "aaa-111a.abc.123":"111a", +// "aaa-222a.abc.123":"222a", +// "aaa-333a.abc.123":"333a" +// } +export function trimDuplicate(strArr: string[]): ShortStrMap { + const shortStrMap: ShortStrMap = {} + const strSet = new Set(strArr) + if (strSet.size < 2) { + return shortStrMap + } + + let i = 0 + let c + const charSet = new Set() + // calc the prefix length + let headDotOrMinusPos = -1 + while (true) { + charSet.clear() + for (let str of strSet) { + c = str[i] + if (c === undefined) { + break + } + charSet.add(c) + } + if (c === undefined) { + break + } + if (charSet.size > 1) { + break + } + if (c === '.' || c === '-') { + headDotOrMinusPos = i + } + i++ + } + + // calc the suffix length + i = 0 + let tailDotOrMinusPos = -1 + while (true) { + charSet.clear() + for (let str of strSet) { + c = str[str.length - 1 - i] + if (c === undefined) { + break + } + charSet.add(c) + } + if (c === undefined) { + break + } + if (charSet.size > 1) { + break + } + if (c === '.' || c === '-') { + tailDotOrMinusPos = i + } + i++ + } + + if (headDotOrMinusPos === -1 && tailDotOrMinusPos === -1) { + return shortStrMap + } + strSet.forEach((s) => { + const startIdx = headDotOrMinusPos + 1 + const endIdx = + tailDotOrMinusPos === -1 ? s.length : s.length - 1 - tailDotOrMinusPos + const short = s.slice(startIdx, endIdx) + shortStrMap[s] = short + }) + + return shortStrMap +} + +////////////////////////////////////// + +const NODE_STORES = 'Stores' +const NODE_TIFLASH = InstanceKindName.tiflash +const NODE_TIKV = InstanceKindName.tikv + +type TreeNode = { + name: string + value: string + children: TreeNode[] +} + +export function buildTreeData( + data: TopologyStoreLocation | undefined +): TreeNode { + const treeData: TreeNode = { name: NODE_STORES, value: '', children: [] } + + if ((data?.location_labels?.length || 0) > 0) { + const locationLabels: string[] = data?.location_labels || [] + + for (const store of data?.stores || []) { + // reset curNode, point to tree nodes beginning + let curNode = treeData + for (const curLabel of locationLabels) { + const curLabelVal = store.labels![curLabel] + if (curLabelVal === undefined) { + continue + } + let subNode: TreeNode | undefined = curNode.children.find( + (el) => el.name === curLabel && el.value === curLabelVal + ) + if (subNode === undefined) { + subNode = { name: curLabel, value: curLabelVal, children: [] } + curNode.children.push(subNode) + } + // make curNode point to subNode + curNode = subNode + } + const storeType = + store.labels!['engine'] === 'tiflash' ? NODE_TIFLASH : NODE_TIKV + curNode.children.push({ + name: storeType, + value: store.address!, + children: [], + }) + } + } + return treeData +} + +////////////////////////////////////// + +interface ITooltipConfig { + enable: boolean + offsetX: number + offsetY: number +} + +export interface IStoreLocationProps { + dataSource: any + shortStrMap?: ShortStrMap + getMinHeight?: () => number + onReload?: () => void +} + +const MAX_STR_LENGTH = 16 + +const margin = { left: 60, right: 40, top: 80, bottom: 100 } +const dx = 40 + +const diagonal = d3 + .linkHorizontal() + .x((d: any) => d.y) + .y((d: any) => d.x) + +function calcHeight(root) { + let x0 = Infinity + let x1 = -x0 + root.each((d) => { + if (d.x > x1) x1 = d.x + if (d.x < x0) x0 = d.x + }) + return x1 - x0 +} + +export default function StoreLocationTree({ + dataSource, + shortStrMap = {}, + getMinHeight, + onReload, +}: IStoreLocationProps) { + const divRef = useRef(null) + const { t } = useTranslation() + + const tooltipConfig = useRef() + tooltipConfig.current = { + enable: true, + offsetX: 0, + offsetY: 0, + } + + useEffect(() => { + let divWidth = divRef.current?.clientWidth || 0 + const root = d3.hierarchy(dataSource) as any + root.descendants().forEach((d, i) => { + d.id = i + d._children = d.children + // collapse all nodes default + // if (d.depth) d.children = null + }) + const dy = divWidth / (root.height + 2) + let tree = d3.tree().nodeSize([dx, dy]) + + const div = d3.select(divRef.current) + div.select('svg#slt').remove() + const svg = div + .append('svg') + .attr('id', 'slt') + .attr('width', divWidth) + .attr('height', dx + margin.top + margin.bottom) + .style('font', '14px sans-serif') + .style('user-select', 'none') + + const bound = svg + .append('g') + .attr('transform', `translate(${margin.left}, ${margin.top})`) + const gLink = bound + .append('g') + .attr('fill', 'none') + .attr('stroke', '#ddd') + .attr('stroke-width', 2) + const gNode = bound + .append('g') + .attr('cursor', 'pointer') + .attr('pointer-events', 'all') + + // tooltip + const tooltip = d3.select('#store-location-tooltip') + // zoom + const zoom = d3 + .zoom() + .scaleExtent([0.1, 5]) + .filter(function () { + // ref: https://godbasin.github.io/2018/02/07/d3-tree-notes-4-zoom-amd-drag/ + // only zoom when pressing CTRL + const isWheelEvent = d3.event instanceof WheelEvent + return !isWheelEvent || (isWheelEvent && d3.event.ctrlKey) + }) + .on('start', () => { + // hide tooltip if it shows + tooltip.style('opacity', 0) + tooltipConfig.current!.enable = false + }) + .on('zoom', () => { + const t = d3.event.transform + bound.attr( + 'transform', + `translate(${t.x + margin.left}, ${t.y + margin.top}) scale(${t.k})` + ) + // this will cause unexpected result when dragging + // svg.attr('transform', d3.event.transform) + }) + .on('end', () => { + const t = d3.event.transform + tooltipConfig.current = { + enable: t.k === 1, // disable tooltip if zoom + offsetX: t.x, + offsetY: t.y, + } + }) + svg.call(zoom as any) + + // zoom actions + d3.select('#slt-zoom-in').on('click', function () { + zoom.scaleBy(svg.transition().duration(500) as any, 1.2) + }) + d3.select('#slt-zoom-out').on('click', function () { + zoom.scaleBy(svg.transition().duration(500) as any, 0.8) + }) + d3.select('#slt-zoom-reset').on('click', function () { + // https://stackoverflow.com/a/51981636/2998877 + svg + .transition() + .duration(500) + .call(zoom.transform as any, d3.zoomIdentity) + onReload?.() + }) + + update(root) + + function update(source) { + // use altKey to slow down the animation, interesting! + const duration = d3.event && d3.event.altKey ? 2500 : 500 + const nodes = root.descendants().reverse() + const links = root.links() + + // compute the new tree layout + // it modifies root self + tree(root) + const boundHeight = calcHeight(root) + // node.x represent the y axes position actually + // [root.y, root.x] is [0, 0], we need to move it to [0, boundHeight/2] + root.descendants().forEach((d, i) => { + d.x += boundHeight / 2 + }) + if (root.x0 === undefined) { + // initial root.x0, root.y0, only need to set it once + root.x0 = root.x + root.y0 = root.y + } + + const contentHeight = boundHeight + margin.top + margin.bottom + + const transition = svg + .transition() + .duration(duration) + .attr('width', divWidth) + .attr('height', Math.max(getMinHeight?.() || 0, contentHeight)) + + // update the nodes + const node = gNode.selectAll('g').data(nodes, (d: any) => d.id) + + // enter any new nodes at the parent's previous position + const nodeEnter = node + .enter() + .append('g') + .attr('transform', (_d) => `translate(${source.y0},${source.x0})`) + .attr('fill-opacity', 0) + .attr('stroke-opacity', 0) + .on('click', (d: any) => { + d.children = d.children ? null : d._children + update(d) + }) + .on('mouseenter', onMouseEnter) + .on('mouseleave', onMouseLeave) + + function onMouseEnter(datum) { + if (!tooltipConfig.current?.enable) { + return + } + + const { name, value } = datum.data + if ( + shortStrMap[name] === undefined && + shortStrMap[value] === undefined + ) { + return + } + + tooltip.select('#store-location-tooltip-name').text(name) + tooltip.select('#store-location-tooltip-value').text(value) + + const x = datum.y + margin.left + tooltipConfig.current.offsetX + const y = datum.x + margin.top - 20 + tooltipConfig.current.offsetY + tooltip.style( + 'transform', + `translate(calc(-50% + ${x}px), calc(-100% + ${y}px))` + ) + + tooltip.style('opacity', 1) + } + function onMouseLeave() { + tooltip.style('opacity', 0) + } + + // circle + nodeEnter + .append('circle') + .attr('r', 8) + .attr('fill', '#fff') + .attr('stroke', (d: any) => { + if (d._children) { + return grey[1] + } + if (d.data.name === NODE_TIFLASH) { + return magenta[4] + } + return cyan[5] + }) + .attr('stroke-width', 3) + + // text for root node + nodeEnter + .filter(({ data: { name } }: any) => name === NODE_STORES) + .append('text') + .attr('dy', '0.31em') + .attr('x', -15) + .attr('text-anchor', 'end') + .text(({ data: { name } }: any) => name) + + // text for non-root and non-leaf nodes + const middleNodeText = nodeEnter + .filter( + ({ data: { name } }: any) => + name !== NODE_STORES && name !== NODE_TIFLASH && name !== NODE_TIKV + ) + .append('text') + middleNodeText + .append('tspan') + .text(({ data: { name } }: any) => shortStrMap[name] ?? name) + .attr('x', -15) + .attr('dy', '-0.2em') + .attr('text-anchor', 'end') + middleNodeText + .append('tspan') + .text(({ data: { value } }: any) => { + if (value.length <= MAX_STR_LENGTH) { + return value + } + let shortStr = shortStrMap[value] ?? value + if (shortStr.length > MAX_STR_LENGTH) { + const midIdx = Math.round(MAX_STR_LENGTH / 2) - 1 + shortStr = + shortStr.slice(0, midIdx) + + '..' + + shortStr.slice(shortStr.length - midIdx, shortStr.length) + } + return shortStr + }) + .attr('x', -15) + .attr('dy', '1em') + .attr('text-anchor', 'end') + + // text for leaf nodes + const leafNodeText = nodeEnter + .filter( + ({ data: { name } }: any) => + name === NODE_TIFLASH || name === NODE_TIKV + ) + .append('text') + leafNodeText + .append('tspan') + .text(({ data: { name } }: any) => name) + .attr('x', 15) + .attr('dy', '-0.2em') + leafNodeText + .append('tspan') + .text(({ data: { value } }: any) => shortStrMap[value] ?? value) + .attr('x', 15) + .attr('dy', '1em') + + // transition nodes to their new position + node + .merge(nodeEnter as any) + .transition(transition as any) + .attr('transform', (d: any) => `translate(${d.y},${d.x})`) + .attr('fill-opacity', 1) + .attr('stroke-opacity', 1) + + // transition exiting nodes to the parent's new position + node + .exit() + .transition(transition as any) + .remove() + .attr('transform', (d) => `translate(${source.y},${source.x})`) + .attr('fill-opacity', 0) + .attr('stroke-opacity', 0) + + // update the links + const link = gLink.selectAll('path').data(links, (d: any) => d.target.id) + + // enter any new links at the parent's previous position + const linkEnter = link + .enter() + .append('path') + .attr('d', (_d) => { + const o = { x: source.x0, y: source.y0 } + return diagonal({ source: o, target: o } as any) + }) + + // transition links to their new position + link + .merge(linkEnter as any) + .transition(transition as any) + .attr('d', diagonal as any) + + // transition exiting nodes to the parent's new position + link + .exit() + .transition(transition as any) + .remove() + .attr('d', (_d) => { + const o = { x: source.x, y: source.y } + return diagonal({ source: o, target: o } as any) + }) + + // stash the old positions for transition + root.eachBefore((d) => { + d.x0 = d.x + d.y0 = d.y + }) + } + + function resizeHandler() { + divWidth = divRef.current?.clientWidth || 0 + const dy = divWidth / (root.height + 2) + tree = d3.tree().nodeSize([dx, dy]) + update(root) + } + + window.addEventListener('resize', resizeHandler) + return () => { + window.removeEventListener('resize', resizeHandler) + } + }, [dataSource, getMinHeight, onReload, shortStrMap]) + + return ( +
+ + + + + + *{t('cluster_info.list.store_topology.tooltip')} + + + +
+
+
+
+
+ ) +} + +// refs: +// https://observablehq.com/@d3/tidy-tree +// https://observablehq.com/@d3/collapsible-tree diff --git a/ui-ori/lib/apps/ClusterInfo/index.meta.ts b/ui-ori/lib/apps/ClusterInfo/index.meta.ts new file mode 100644 index 0000000000..af55c48425 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/index.meta.ts @@ -0,0 +1,9 @@ +import { ClusterOutlined } from '@ant-design/icons' + +export default { + id: 'cluster_info', + routerPrefix: '/cluster_info', + icon: ClusterOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_cluster_info" */ '.'), +} diff --git a/ui-ori/lib/apps/ClusterInfo/index.tsx b/ui-ori/lib/apps/ClusterInfo/index.tsx new file mode 100644 index 0000000000..7fc65495e9 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/index.tsx @@ -0,0 +1,23 @@ +import React from 'react' +import { HashRouter as Router, Route, Routes, Navigate } from 'react-router-dom' + +import { Root } from '@lib/components' +import ListPage from './pages/List' + +const App = () => { + return ( + + + + } + /> + } /> + + + + ) +} + +export default App diff --git a/ui-ori/lib/apps/ClusterInfo/pages/List.module.less b/ui-ori/lib/apps/ClusterInfo/pages/List.module.less new file mode 100644 index 0000000000..d761c22587 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/pages/List.module.less @@ -0,0 +1,15 @@ +@import '~antd/es/style/themes/default.less'; + +.card_tab_navs { + padding-left: @padding-page; // 48px + padding-right: @padding-page; // 48px + height: @padding-page; // 48px + margin-bottom: @padding-md; // 16px + border-bottom: 1px solid @gray-4; + + :global { + .ant-tabs-ink-bar { + height: @outline-width; // 2px + } + } +} diff --git a/ui-ori/lib/apps/ClusterInfo/pages/List.tsx b/ui-ori/lib/apps/ClusterInfo/pages/List.tsx new file mode 100644 index 0000000000..c329d44c4f --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/pages/List.tsx @@ -0,0 +1,74 @@ +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { useNavigate, useParams } from 'react-router-dom' + +import { Card } from '@lib/components' +import CardTabs from '@lib/components/CardTabs' + +import InstanceTable from '../components/InstanceTable' +import HostTable from '../components/HostTable' +import DiskTable from '../components/DiskTable' +import StoreLocation from '../components/StoreLocation' +import Statistics from '../components/Statistics' + +import styles from './List.module.less' + +function renderTabBar(props, DefaultTabBar) { + return ( + + + + ) +} + +export default function ListPage() { + const { tabKey } = useParams() + const navigate = useNavigate() + const { t } = useTranslation() + + const tabs = [ + { + key: 'instance', + title: t('cluster_info.list.instance_table.title'), + content: () => , + }, + { + key: 'host', + title: t('cluster_info.list.host_table.title'), + content: () => , + }, + { + key: 'disk', + title: t('cluster_info.list.disk_table.title'), + content: () => , + }, + { + key: 'store_topology', + title: t('cluster_info.list.store_topology.title'), + content: () => , + }, + { + key: 'statistics', + title: t('cluster_info.list.statistics.title'), + content: () => , + }, + ] + + return ( + + + { + navigate(`/cluster_info/${key}`) + }} + renderTabBar={renderTabBar} + animated={false} + tabs={tabs} + /> + + + ) +} diff --git a/ui-ori/lib/apps/ClusterInfo/status/status.ts b/ui-ori/lib/apps/ClusterInfo/status/status.ts new file mode 100644 index 0000000000..4cd5fdbf5d --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/status/status.ts @@ -0,0 +1,5 @@ +export const STATUS_UNREACHABLE = 0 +export const STATUS_UP = 1 +export const STATUS_TOMBSTONE = 2 +export const STATUS_OFFLINE = 3 +export const STATUS_DOWN = 4 diff --git a/ui-ori/lib/apps/ClusterInfo/translations/en.yaml b/ui-ori/lib/apps/ClusterInfo/translations/en.yaml new file mode 100644 index 0000000000..26612a3a1d --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/translations/en.yaml @@ -0,0 +1,54 @@ +cluster_info: + nav_title: Cluster Info + list: + instance_table: + title: Instances + columns: + node: Address + version: Version + status: Status + up_time: Up Time + deploy_path: Deployment Directory + git_hash: Git Hash + actions: + hide_db: + tooltip: Hide + confirm: Do you want to hide this {{distro.tidb}} instance? + host_table: + title: Hosts + columns: + host: Host Address + cpu: CPU + cpu_arch: CPU Arch + cpu_usage: CPU Usage + memory: Memory + memory_usage: Memory Usage + instances: Instances + instanceUnavailable: Host information is unavailable due to instances on the host is down + disk_table: + title: Disks + columns: + host: Host Address + mount_dir: Mount Directory + fs: File System + disk_size: Disk Capacity + disk_usage: Disk Usage + instances: Instances + store_topology: + title: Store Topology + tooltip: You can also zoom in or out by pressing CTRL and scrolling mouse wheel + statistics: + title: Statistics + summary_title: Cluster Summary + field: + version: Version + instances: '# Instances' + hosts: '# Hosts that instances deployed' + memory_capacity: Σ Memory capacity (of all hosts) + physical_cores: Σ CPU physical cores (of all hosts) + logical_cores: Σ CPU logical cores (of all hosts) + message: + instance_down: 'Some instances are down in {{n}} host(s) so that host related information may be inccurate.' + sub_statistics: Sub-statistics below are counted by instance kinds. The sum of host metrics in sub-statistics can be larger "Cluster Summary" when different instances are deployed in the same host. + error: + load: 'Load component {{comp}} error: {{cause}}' diff --git a/ui-ori/lib/apps/ClusterInfo/translations/zh.yaml b/ui-ori/lib/apps/ClusterInfo/translations/zh.yaml new file mode 100644 index 0000000000..33eff7a140 --- /dev/null +++ b/ui-ori/lib/apps/ClusterInfo/translations/zh.yaml @@ -0,0 +1,54 @@ +cluster_info: + nav_title: 集群信息 + list: + instance_table: + title: 实例 + columns: + node: 地址 + version: 版本 + status: 状态 + up_time: 启动时间 + deploy_path: 部署路径 + git_hash: Git 哈希值 + actions: + hide_db: + tooltip: 隐藏 + confirm: 您确认要隐藏该 {{distro.tidb}} 实例吗? + host_table: + title: 主机 + columns: + host: 主机地址 + cpu: CPU + cpu_arch: CPU 架构 + cpu_usage: CPU 使用率 + memory: 物理内存 + memory_usage: 内存使用率 + instances: 实例 + instanceUnavailable: 由于该主机上没有实例存活,因此无法获取主机信息 + disk_table: + title: 磁盘 + columns: + host: 主机地址 + mount_dir: 磁盘挂载点 + fs: 文件系统 + disk_size: 磁盘容量 + disk_usage: 磁盘使用率 + instances: 实例 + store_topology: + title: 存储拓扑 + tooltip: 按住 Ctrl 键并滑动鼠标滚轮也可以缩放 + statistics: + title: 统计 + summary_title: 集群总计 + field: + version: 版本 + instances: 总实例数量 + hosts: 实例部署的总机器数量 + memory_capacity: 内存总量总和 (按实例部署的机器计算) + physical_cores: CPU 物理核心数总和 (按实例部署的机器计算) + logical_cores: CPU 逻辑核心数总和 (按实例部署的机器计算) + message: + instance_down: '由于有 {{n}} 台机器上的所有实例都未启动或无法访问,因此统计中关于机器的指标可能会不准确。' + sub_statistics: 子统计按不同实例类型分别计算。当一个机器上部署了不同类型实例时,以下子统计的机器指标累加起来会超过“集群总计”数量。 + error: + load: '加载组件 {{comp}} 失败: {{cause}}' diff --git a/ui-ori/lib/apps/Configuration/InlineEditor.tsx b/ui-ori/lib/apps/Configuration/InlineEditor.tsx new file mode 100644 index 0000000000..a063ec83f2 --- /dev/null +++ b/ui-ori/lib/apps/Configuration/InlineEditor.tsx @@ -0,0 +1,140 @@ +import { useState, useCallback, useEffect } from 'react' +import React from 'react' +import { EditOutlined } from '@ant-design/icons' +import { Input, Popover, Button, Space, Tooltip } from 'antd' +import { usePersistFn } from 'ahooks' + +interface IInlineEditorProps { + title?: string + value: any + displayValue: string + onSave?: (newValue: any) => Promise +} + +function valueWithSameType(newValue, oldValue) { + if (typeof oldValue === 'string') { + return newValue + } else if (typeof oldValue === 'number') { + // Note: `Number()` is more strict than `parseFloat()`. + const v = Number(newValue) + if (isNaN(v)) { + throw new Error(`"${newValue}" is not a number`) + } + return v + } else if (typeof oldValue === 'boolean') { + switch (String(newValue).toLowerCase().trim()) { + case 'true': + case 'yes': + case '1': + return true + case 'false': + case 'no': + case '0': + return false + default: + throw new Error(`"${newValue}" is not a boolean`) + } + } else { + // Otherwise, return as string + return newValue + } +} + +function InlineEditor({ + value, + displayValue, + title, + onSave, +}: IInlineEditorProps) { + const [isVisible, setIsVisible] = useState(false) + const [inputVal, setInputVal] = useState(displayValue) + const [isPosting, setIsPosting] = useState(false) + + const handleCancel = useCallback(() => { + setIsVisible(false) + setInputVal(displayValue) + }, [displayValue]) + + const handleSave = usePersistFn(async () => { + if (!onSave) { + setIsVisible(false) + return + } + try { + setIsPosting(true) + // PD only accept modified config in the same value type, + // i.e. true => false, but not true => "false" + const r = await onSave(valueWithSameType(inputVal, value)) + if (r !== false) { + // When onSave returns non-false, input value is not reverted and only popup is hidden + setIsVisible(false) + } else { + // When onSave returns false, popup is not hidden and value is reverted + setInputVal(displayValue) + } + } catch (e) { + setInputVal(displayValue) + setIsVisible(false) + } finally { + setIsPosting(false) + } + }) + + const handleInputValueChange = useCallback((e) => { + setInputVal(e.target.value) + }, []) + + useEffect(() => { + setInputVal(displayValue) + }, [displayValue]) + + const renderPopover = usePersistFn(() => { + return ( + +
+ +
+
+ + + + +
+
+ ) + }) + + return ( + + + {' '} + + {displayValue} + + + + ) +} + +export default InlineEditor diff --git a/ui-ori/lib/apps/Configuration/index.meta.ts b/ui-ori/lib/apps/Configuration/index.meta.ts new file mode 100644 index 0000000000..5ed4c33271 --- /dev/null +++ b/ui-ori/lib/apps/Configuration/index.meta.ts @@ -0,0 +1,9 @@ +import { ToolOutlined } from '@ant-design/icons' + +export default { + id: 'configuration', + routerPrefix: '/configuration', + icon: ToolOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_configuration" */ '.'), +} diff --git a/ui-ori/lib/apps/Configuration/index.tsx b/ui-ori/lib/apps/Configuration/index.tsx new file mode 100644 index 0000000000..5d6453a7f1 --- /dev/null +++ b/ui-ori/lib/apps/Configuration/index.tsx @@ -0,0 +1,228 @@ +import React, { useMemo, useCallback, useRef, useState, useEffect } from 'react' +import { Root, CardTable, Card, Pre } from '@lib/components' +import { useClientRequest } from '@lib/utils/useClientRequest' +import client, { ConfigurationItem } from '@lib/client' +import { IGroup, IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import InlineEditor from './InlineEditor' +import { Modal, Spin, Tooltip, Input } from 'antd' +import { usePersistFn, useDebounce } from 'ahooks' +import { LoadingOutlined } from '@ant-design/icons' +import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' +import { useTranslation } from 'react-i18next' + +interface IRow extends ConfigurationItem { + kind: string +} + +interface IValueProps { + item: IRow + onSaved?: () => void +} + +const loadingSpinner = + +function Value({ item, onSaved }: IValueProps) { + const handleSave = usePersistFn(async (newValue) => { + try { + const resp = await client.getInstance().configurationEdit({ + id: item.id, + kind: item.kind, + new_value: newValue, + }) + if ((resp?.data?.warnings?.length ?? 0) > 0) { + Modal.warning({ + title: 'Edit configuration is partially done', + content: ( +
{resp.data.warnings?.map((w) => w.message).join('\n\n')}
+ ), + }) + } + } catch (e) { + return false + } + onSaved?.() + }) + + const stringValue = String(item.value) + + if (item.is_multi_value) { + return ( + + (multiple values){' '} + + {stringValue} + + + ) + } else if (!item.is_editable) { + return ( + + {stringValue} + + ) + } else { + // Note: We preserve the original value so that newValue's type can be inferred. + return ( + + ) + } +} + +function getKey(item: IRow) { + return `${item.kind}.${item.id}` +} + +export default function () { + const { data, isLoading, error, sendRequest } = useClientRequest( + (reqConfig) => client.getInstance().configurationGetAll(reqConfig) + ) + + const { t } = useTranslation() + const [filterValueLower, setFilterValueLower] = useState('') + const debouncedFilterValue = useDebounce(filterValueLower, { wait: 200 }) + + const handleSaved = useCallback(() => { + sendRequest() + }, [sendRequest]) + + const handleFilterChange = useCallback((e) => { + setFilterValueLower(e.target.value.toLowerCase()) + }, []) + + const errors = useMemo(() => { + if (error) { + return [error] + } + if (data?.errors) { + return data.errors + } + return [] + }, [data, error]) + + const [rows, setRows] = useState([]) + const [groups, setGroups] = useState([]) + const lastSavedGroups = useRef([]) + + // When data is changed, re-calculate rows and groups. + useEffect(() => { + if (!data) { + setRows([]) + setGroups([]) + lastSavedGroups.current = [] + return + } + + const newRows: IRow[] = [] + const newGroups: IGroup[] = [] + let startIndex = 0 + for (const configKind of [ + 'tidb_variable', + 'pd_config', + 'tikv_config', + 'tidb_config', + ]) { + const items = data?.items?.[configKind] ?? [] + for (const item of items) { + if (debouncedFilterValue.length > 0) { + if ( + item.id?.toLowerCase().indexOf(debouncedFilterValue) === -1 && + String(item.value).toLowerCase().indexOf(debouncedFilterValue) === + -1 + ) { + continue + } + } + newRows.push({ + ...item, + kind: configKind, + }) + } + newGroups.push({ + key: configKind, + name: t(`configuration.common.kind.${configKind}`), + startIndex: startIndex, + count: newRows.length - startIndex, + }) + startIndex = newRows.length + } + + setRows(newRows) + + // DetailsList internally changes the group element and add new fields. When assigning new + // fresh groups, group states will be changed, result in UI state not preserved. + // Thus, we update to use new groups only when groups are different. + if (JSON.stringify(lastSavedGroups.current) === JSON.stringify(newGroups)) { + // Update group reference, otherwise DetailsList won't update + setGroups((g) => [...g]) + } else { + setGroups(newGroups) + lastSavedGroups.current = JSON.parse(JSON.stringify(newGroups)) + } + }, [data, debouncedFilterValue, t]) + + const columns = useMemo(() => { + const columns: IColumn[] = [ + { + key: 'key', + name: 'Config', + minWidth: 300, + maxWidth: 300, + onRender: (item) => { + return ( + + {item.id} + + ) + }, + }, + { + key: 'value', + name: 'Value', + onRender: (item) => { + return + }, + minWidth: 300, + maxWidth: 300, + }, + ] + return columns + }, [handleSaved]) + + return ( + + + +
+ + + +
+
+ + + + + +
+
+ ) +} diff --git a/ui-ori/lib/apps/Configuration/translations/en.yaml b/ui-ori/lib/apps/Configuration/translations/en.yaml new file mode 100644 index 0000000000..d7a20b7cd5 --- /dev/null +++ b/ui-ori/lib/apps/Configuration/translations/en.yaml @@ -0,0 +1,8 @@ +configuration: + nav_title: Configurations + common: + kind: + tidb_variable: '{{distro.tidb}} Variables' + pd_config: '{{distro.pd}} Configurations' + tikv_config: '{{distro.tikv}} Configurations' + tidb_config: '{{distro.tidb}} Configurations' diff --git a/ui-ori/lib/apps/Configuration/translations/zh.yaml b/ui-ori/lib/apps/Configuration/translations/zh.yaml new file mode 100644 index 0000000000..ed25a6e55c --- /dev/null +++ b/ui-ori/lib/apps/Configuration/translations/zh.yaml @@ -0,0 +1,8 @@ +configuration: + nav_title: 实例配置 + common: + kind: + tidb_variable: '{{distro.tidb}} 变量' + pd_config: '{{distro.pd}} 配置' + tikv_config: '{{distro.tikv}} 配置' + tidb_config: '{{distro.tidb}} 配置' diff --git a/ui-ori/lib/apps/ContinuousProfiling/index.meta.ts b/ui-ori/lib/apps/ContinuousProfiling/index.meta.ts new file mode 100644 index 0000000000..fa596d4c25 --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/index.meta.ts @@ -0,0 +1,10 @@ +import { AimOutlined } from '@ant-design/icons' + +export default { + id: 'continuous_profiling', + routerPrefix: '/continuous_profiling', + icon: AimOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => + import(/* webpackChunkName: "app_continuous_profiling" */ '.'), +} diff --git a/ui-ori/lib/apps/ContinuousProfiling/index.tsx b/ui-ori/lib/apps/ContinuousProfiling/index.tsx new file mode 100644 index 0000000000..0e48d29f44 --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/index.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import { HashRouter as Router, Route, Routes } from 'react-router-dom' + +import { Root, ParamsPageWrapper } from '@lib/components' +import { Detail, List } from './pages' + +const App = () => ( + + + + } /> + + + + } + /> + + + +) + +export default App diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/ConProfSettingForm.tsx b/ui-ori/lib/apps/ContinuousProfiling/pages/ConProfSettingForm.tsx new file mode 100755 index 0000000000..a508c4e5e3 --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/pages/ConProfSettingForm.tsx @@ -0,0 +1,214 @@ +import React, { useState, useCallback, useMemo } from 'react' +import { + Form, + Skeleton, + Switch, + Input, + Space, + Button, + Modal, + Select, +} from 'antd' +import { ExclamationCircleOutlined } from '@ant-design/icons' +import { useTranslation } from 'react-i18next' +import { TFunction } from 'i18next' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import client, { + ErrorStrategy, + ConprofContinuousProfilingConfig, +} from '@lib/client' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { ErrorBar, InstanceSelect } from '@lib/components' +import { useIsWriteable } from '@lib/utils/store' + +const ONE_DAY_SECONDS = 24 * 60 * 60 +const RETENTION_SECONDS = [ + 3 * ONE_DAY_SECONDS, + 5 * ONE_DAY_SECONDS, + 10 * ONE_DAY_SECONDS, +] + +function translateSecToDay(seconds: number, t: TFunction) { + // in our case, the seconds value must be the multiple of one day seconds + if (seconds % ONE_DAY_SECONDS !== 0) { + console.warn(`${seconds} is not the mulitple of one day seconds`) + } + const day = seconds / ONE_DAY_SECONDS + return t('continuous_profiling.settings.profile_retention_duration_option', { + d: day, + }) +} + +interface Props { + onClose: () => void + onConfigUpdated: () => any +} + +function ConProfSettingForm({ onClose, onConfigUpdated }: Props) { + const [submitting, setSubmitting] = useState(false) + const { t } = useTranslation() + const isWriteable = useIsWriteable() + + const { + data: initialConfig, + isLoading: loading, + error, + } = useClientRequest(() => + client.getInstance().continuousProfilingConfigGet({ + errorStrategy: ErrorStrategy.Custom, + }) + ) + + const { data: estimateSize } = useClientRequest(() => + client.getInstance().continuousProfilingEstimateSizeGet({ + errorStrategy: ErrorStrategy.Custom, + }) + ) + + const dataRetentionSeconds = useMemo(() => { + const curRetentionSec = + initialConfig?.continuous_profiling?.data_retention_seconds + if ( + curRetentionSec && + RETENTION_SECONDS.indexOf(curRetentionSec) === -1 && + // filter out the duration that is not multiple of ONE_DAY_SECONDS + curRetentionSec % ONE_DAY_SECONDS === 0 + ) { + return RETENTION_SECONDS.concat(curRetentionSec).sort() + } + return RETENTION_SECONDS + }, [initialConfig]) + + const handleSubmit = useCallback( + (values) => { + async function updateConfig(values) { + const newConfig: ConprofContinuousProfilingConfig = { + enable: values.enable, + data_retention_seconds: values.data_retention_seconds, + } + try { + setSubmitting(true) + await client.getInstance().continuousProfilingConfigPost({ + continuous_profiling: newConfig, + }) + onClose() + onConfigUpdated() + } finally { + setSubmitting(false) + } + } + + if (!values.enable) { + // confirm + Modal.confirm({ + title: t('continuous_profiling.settings.close_feature'), + icon: , + content: t('continuous_profiling.settings.close_feature_confirm'), + okText: t('continuous_profiling.settings.actions.close'), + cancelText: t('continuous_profiling.settings.actions.cancel'), + okButtonProps: { danger: true }, + onOk: () => updateConfig(values), + }) + } else { + updateConfig(values) + } + }, + [t, onClose, onConfigUpdated] + ) + + return ( + <> + {error && } + {loading && } + {!loading && initialConfig && ( +
+ + + + + + prev.enable !== cur.enable} + > + {({ getFieldValue }) => + getFieldValue('enable') && ( + <> + + + + + + + + + + + + + ) + } + + + + + + + +
+ )} + + ) +} + +export default ConProfSettingForm diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/Detail.tsx b/ui-ori/lib/apps/ContinuousProfiling/pages/Detail.tsx new file mode 100644 index 0000000000..d85ba8341e --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/pages/Detail.tsx @@ -0,0 +1,153 @@ +import { Badge, Button } from 'antd' +import React, { useCallback, useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { ArrowLeftOutlined } from '@ant-design/icons' +import { usePersistFn } from 'ahooks' +import { upperFirst } from 'lodash' + +import client from '@lib/client' +import { CardTable, DateTime, Descriptions, Head } from '@lib/components' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { InstanceKindName } from '@lib/utils/instanceTable' +import useQueryParams from '@lib/utils/useQueryParams' + +export default function Page() { + const { t } = useTranslation() + const { ts } = useQueryParams() + + const { + data: groupProfileDetail, + isLoading: groupDetailLoading, + error: groupDetailError, + } = useClientRequest(() => { + return client.getInstance().continuousProfilingGroupProfileDetailGet(ts) + }) + + const profileDuration = groupProfileDetail?.profile_duration_secs || 0 + + const columns = useMemo( + () => [ + { + name: t('continuous_profiling.detail.table.columns.instance'), + key: 'instance', + minWidth: 150, + maxWidth: 400, + onRender: (record) => record.target.address, + }, + { + name: t('continuous_profiling.detail.table.columns.kind'), + key: 'kind', + minWidth: 100, + maxWidth: 150, + onRender: (record) => { + return InstanceKindName[record.target.component] + }, + }, + { + name: t('continuous_profiling.detail.table.columns.content'), + key: 'content', + minWidth: 150, + maxWidth: 300, + onRender: (record) => { + const profileType = record.profile_type + if (profileType === 'profile') { + return `CPU Profiling - ${profileDuration}s` + } + return upperFirst(profileType) + }, + }, + { + name: t('continuous_profiling.detail.table.columns.status'), + key: 'status', + minWidth: 150, + maxWidth: 200, + onRender: (record) => { + if (record.state === 'failed') { + return + } else { + return ( + + ) + } + }, + }, + ], + [t, profileDuration] + ) + + const handleRowClick = usePersistFn( + async (rec, _idx, _ev: React.MouseEvent) => { + const { + profile_type, + target: { component, address }, + } = rec + const res = await client + .getInstance() + .continuousProfilingActionTokenGet( + `ts=${ts}&profile_type=${profile_type}&component=${component}&address=${address}` + ) + const token = res.data + if (!token) { + return + } + window.open( + `${client.getBasePath()}/continuous_profiling/single_profile/view?token=${token}`, + '_blank' + ) + } + ) + + const handleDownloadGroup = useCallback(async () => { + const res = await client + .getInstance() + .continuousProfilingActionTokenGet(`ts=${ts}`) + const token = res.data + if (!token) { + return + } + window.location.href = `${client.getBasePath()}/continuous_profiling/download?token=${token}` + }, [ts]) + + return ( +
+ + {t('continuous_profiling.detail.head.back')} + + } + titleExtra={ + + } + > + {groupProfileDetail && ( + + + + + + )} + + + +
+ ) +} diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/List.module.less b/ui-ori/lib/apps/ContinuousProfiling/pages/List.module.less new file mode 100644 index 0000000000..96493788d3 --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/pages/List.module.less @@ -0,0 +1,20 @@ +@import '~antd/es/style/themes/default.less'; + +.list { + &_container { + display: flex; + flex-direction: column; + height: 100vh; + } + + &_toolbar { + @media only screen and (max-width: @screen-md) { + flex-direction: column; + } + } +} + +.alert_container { + margin-left: @padding-page; + margin-right: @padding-page; +} diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/List.tsx b/ui-ori/lib/apps/ContinuousProfiling/pages/List.tsx new file mode 100644 index 0000000000..00ca02d193 --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/pages/List.tsx @@ -0,0 +1,229 @@ +import { Badge, Tooltip, Space, Drawer, Result, Button, Alert } from 'antd' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import React, { useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { useNavigate } from 'react-router-dom' +import { usePersistFn, useSessionStorageState } from 'ahooks' +import { + LoadingOutlined, + ReloadOutlined, + SettingOutlined, +} from '@ant-design/icons' + +import client, { ErrorStrategy } from '@lib/client' +import { + Card, + CardTable, + Toolbar, + TimeRangeSelector, + TimeRange, + calcTimeRange, +} from '@lib/components' +import DateTime from '@lib/components/DateTime' +import openLink from '@lib/utils/openLink' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { InstanceKindName } from '@lib/utils/instanceTable' + +import ConProfSettingForm from './ConProfSettingForm' + +import styles from './List.module.less' + +export default function Page() { + const { + data: historyTable, + isLoading: listLoading, + error: historyError, + sendRequest: reloadGroupProfiles, + } = useClientRequest(() => { + const [beginTime, endTime] = calcTimeRange(timeRange) + return client + .getInstance() + .continuousProfilingGroupProfilesGet(beginTime, endTime, { + errorStrategy: ErrorStrategy.Custom, + }) + }) + const { t } = useTranslation() + const navigate = useNavigate() + + const handleRowClick = usePersistFn( + (rec, _idx, ev: React.MouseEvent) => { + openLink(`/continuous_profiling/detail?ts=${rec.ts}`, ev, navigate) + } + ) + + const historyTableColumns = useMemo( + () => [ + { + name: t('continuous_profiling.list.table.columns.targets'), + key: 'targets', + minWidth: 150, + maxWidth: 250, + onRender: (rec) => { + const { tikv, tidb, pd, tiflash } = rec.component_num + const s = `${tikv} ${InstanceKindName['tikv']}, ${tidb} ${InstanceKindName['tidb']}, ${pd} ${InstanceKindName['pd']}, ${tiflash} ${InstanceKindName['tiflash']}` + return {s} + }, + }, + { + name: t('continuous_profiling.list.table.columns.status'), + key: 'status', + minWidth: 100, + maxWidth: 150, + onRender: (rec) => { + if (rec.state === 'failed') { + // all failed + return ( + + ) + } else if (rec.state === 'success') { + // all success + return ( + + ) + } else { + // partial failed + return ( + + ) + } + }, + }, + { + name: t('continuous_profiling.list.table.columns.start_at'), + key: 'ts', + minWidth: 160, + maxWidth: 220, + onRender: (rec) => { + return + }, + }, + { + name: t('continuous_profiling.list.table.columns.duration'), + key: 'duration', + minWidth: 100, + maxWidth: 150, + fieldName: 'profile_duration_secs', + }, + ], + [t] + ) + + const [timeRange, setTimeRange] = useSessionStorageState< + TimeRange | undefined + >('conprof.timerange', undefined) + + function onTimeRangeChange(v: TimeRange) { + setTimeRange(v) + setTimeout(() => { + reloadGroupProfiles() + }, 0) + } + + const [showSettings, setShowSettings] = useState(false) + + const { data: ngMonitoringConfig, sendRequest: reloadConfig } = + useClientRequest((reqConfig) => + client.getInstance().continuousProfilingConfigGet(reqConfig) + ) + const conprofIsDisabled = useMemo( + () => ngMonitoringConfig?.continuous_profiling?.enable === false, + [ngMonitoringConfig] + ) + + function refresh() { + reloadConfig() + reloadGroupProfiles() + } + + return ( +
+ + + + + + + + {listLoading ? ( + + ) : ( + + )} + + + setShowSettings(true)} /> + + + + + + {conprofIsDisabled && historyTable && historyTable.length > 0 && ( +
+ +
+ )} + + {conprofIsDisabled && historyTable?.length === 0 ? ( + setShowSettings(true)}> + {t('continuous_profiling.settings.open_settings')} + + } + /> + ) : ( +
+ + + +
+ )} + + setShowSettings(false)} + destroyOnClose={true} + > + setShowSettings(false)} + onConfigUpdated={reloadConfig} + /> + +
+ ) +} diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/index.ts b/ui-ori/lib/apps/ContinuousProfiling/pages/index.ts new file mode 100644 index 0000000000..641e4de57a --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/pages/index.ts @@ -0,0 +1,4 @@ +import List from './List' +import Detail from './Detail' + +export { List, Detail } diff --git a/ui-ori/lib/apps/ContinuousProfiling/translations/en.yaml b/ui-ori/lib/apps/ContinuousProfiling/translations/en.yaml new file mode 100644 index 0000000000..5412c10a09 --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/translations/en.yaml @@ -0,0 +1,64 @@ +continuous_profiling: + nav_title: Continuous Profiling + list: + toolbar: + refresh: Refresh + settings: Settings + control_form: + title: Start Profiling Instances + enable_tooltip: This feature is enabled, you can disable it in the settings + disable_tooltip: This feature is not enabled, you can enable it in the settings + table: + title: Profiling History + columns: + targets: Instances + start_at: Start At + duration: Duration (sec) + status: Status + status: + running: Running + finished: Finished + failed: Failed + partial_finished: Partial Finished + unknown: Unknown + actions: + detail: Detail + detail: + head: + back: History + title: Profiling Detail + start_at: Start At + download: Download Profiling Result + table: + columns: + instance: Instance + kind: Component + content: Content + status: Status + status: + finished: Finished + settings: + title: Settings + disabled_result: + title: Feature Not Enabled + sub_title: Continuous Profiling feature is not enabled. You can modify settings to enable the feature and wait for new data being collected. + disabled_with_history: Continuous Profiling feature is not enabled, but you still can view history result. You can modify settings to enable the feature. + open_settings: Open Settings + switch: Enable Feature + switch_tooltip: Whether Continuous Profiling feature is enabled. When enabled, it generates the instances profiling results continuously. + profile_targets: Profiling Targets + profile_targets_tooltip: | + Profiling all instances, new created instance will be profiled automatically. + It has {{n}} instances, it is estimated to generate {{size}} profiling result each day. + profile_duration: Profiling Duration + profile_duration_tooltip: + profile_interval: Profiling Interval + profile_interval_tooltip: + profile_retention_duration: Retention Duration + profile_retention_duration_tooltip: The profiling result is persisted in the disk, and will be deleted beyond the retention duration. This setting works for all result, includes the history result. + profile_retention_duration_option: '{{d}} days' + close_feature: Disable Continuous Profiling Feature + close_feature_confirm: Are you sure want to disable this feature, it will stop continuous profiling, history result will be kept. + actions: + close: Disable + cancel: Cancel diff --git a/ui-ori/lib/apps/ContinuousProfiling/translations/zh.yaml b/ui-ori/lib/apps/ContinuousProfiling/translations/zh.yaml new file mode 100644 index 0000000000..0f20ce1d08 --- /dev/null +++ b/ui-ori/lib/apps/ContinuousProfiling/translations/zh.yaml @@ -0,0 +1,66 @@ +continuous_profiling: + nav_title: 持续分析 + toolbar: + refresh: Refresh + list: + toolbar: + refresh: 刷新 + settings: 设置 + control_form: + title: 开始性能分析 + enable_tooltip: 该功能已开启,你可以在设置中关闭 + disable_tooltip: 该功能未启用,你可以在设置中启用 + table: + title: 性能分析历史 + columns: + targets: 实例 + start_at: 开始时间 + duration: 时长(秒) + status: 状态 + status: + running: 分析中 + finished: 完成 + failed: 失败 + partial_finished: 部分完成 + unknown: 未知 + actions: + detail: 详情 + detail: + head: + back: 历史记录 + title: 性能分析详情 + start_at: 开始时间 + download: 下载性能分析结果 + table: + columns: + instance: 实例 + kind: 组件 + content: 内容 + status: 状态 + status: + finished: 完成 + settings: + title: 设置 + disabled_result: + title: 该功能未启用 + sub_title: 持续性能分析功能未启用。您可以修改设置打开该功能后等待新数据收集。 + disabled_with_history: 持续性能分析功能未启用,但仍然可以查看历史数据。您可以修改设置打开该功能。 + open_settings: 打开设置 + switch: 启用功能 + switch_tooltip: 是否启用持续分析功能,启用后,会持续产出实例性能分析结果。 + profile_targets: 分析范围 + profile_targets_tooltip: | + 分析所有实例,在新实例创建后,也会自动加入分析范围。 + 目前有 {{n}} 个实例,预计每日生成 {{size}} 分析结果文件。 + profile_duration: 分析时长 + profile_duration_tooltip: + profile_interval: 执行周期 + profile_interval_tooltip: + profile_retention_duration: 保留时间 + profile_retention_duration_tooltip: 分析结果会持久化到磁盘中,超过保留时间会被回收。该配置对所有结果生效,包括历史结果。 + profile_retention_duration_option: '{{d}} 天' + close_feature: 关闭持续分析功能 + close_feature_confirm: 确认要关闭该功能吗?关闭后将停止持续分析,历史结果会继续保留。 + actions: + close: 确认 + cancel: 取消 diff --git a/ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx b/ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx new file mode 100644 index 0000000000..0aab0b1868 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx @@ -0,0 +1,163 @@ +import React, { useCallback, useMemo, useState, useEffect } from 'react' +import { useTranslation } from 'react-i18next' +import { Form, Button, Space, Row, Col } from 'antd' +import { isNull, isUndefined } from 'lodash' +import { DownloadOutlined, UndoOutlined } from '@ant-design/icons' +import client, { + EndpointAPIModel, + EndpointAPIParam, + TopologyPDInfo, + TopologyStoreInfo, + TopologyTiDBInfo, +} from '@lib/client' +import { ApiFormWidgetConfig, createFormWidget } from './widgets' +import { isConstantModel } from './widgets/Constant' +import { distro } from '@lib/utils/i18n' + +export interface Topology { + tidb: TopologyTiDBInfo[] + tikv: TopologyStoreInfo[] + tiflash: TopologyStoreInfo[] + pd: TopologyPDInfo[] +} + +export default function ApiForm({ + endpoint, + topology, +}: { + endpoint: EndpointAPIModel + topology: Topology +}) { + const { t } = useTranslation() + const { id, path_params, query_params, component } = endpoint + const endpointHostParamKey = useMemo( + () => `${distro[component!]?.toLowerCase()}_host`, + [component] + ) + const pathParams = (path_params ?? []).map((p) => { + p.required = true + return p + }) + const params = [...pathParams, ...(query_params ?? [])] + const [loading, setLoading] = useState(false) + const [form] = Form.useForm() + const formPathsWithoutConstant = params + .filter((p) => !isConstantModel(p)) + .map((p) => p.name!) + + const download = useCallback( + async (values: any) => { + try { + setLoading(true) + const { [endpointHostParamKey]: host, ...p } = values + const [hostname, port] = host.split(':') + // filter the null value params + const params = Object.entries(p).reduce((prev, [k, v]) => { + if (!(isUndefined(v) || isNull(v) || v === '')) { + prev[k] = v + } + return prev + }, {}) + const resp = await client.getInstance().debugAPIRequestEndpoint({ + id, + host: hostname, + port: Number(port), + params, + }) + const token = resp.data + window.location.href = `${client.getBasePath()}/debug_api/download?token=${token}` + } catch (e) { + console.error(e) + } finally { + setLoading(false) + } + }, + [id, endpointHostParamKey] + ) + + const endpointParam = useMemo( + () => ({ + name: endpointHostParamKey, + required: true, + model: { + type: 'host', + }, + }), + [endpointHostParamKey] + ) + const EndpointHost = () => ( + + ) + useEffect(() => { + formPathsWithoutConstant.push(endpointHostParamKey) + }) + + return ( +
+ + + + + {params + // hide constant param model widget + .filter((param) => !isConstantModel(param)) + .map((param) => ( + + + + ))} + + + + + + + +
+ ) +} + +function FormItemCol(props: React.HTMLAttributes) { + return ( + + {props.children} + + ) +} + +function ApiFormItem(widgetConfig: ApiFormWidgetConfig) { + const { param } = widgetConfig + return ( + + {createFormWidget(widgetConfig)} + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/ApiList.module.less b/ui-ori/lib/apps/DebugAPI/apilist/ApiList.module.less new file mode 100644 index 0000000000..52a7257f89 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/ApiList.module.less @@ -0,0 +1,17 @@ +.collapse_panel:not(:last-child) { + border-bottom: 1px solid #eee; +} + +.header { + user-select: none; + h4 { + margin-bottom: 0; + } + p { + margin-bottom: 0; + } +} + +.schema { + color: #999; +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx b/ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx new file mode 100644 index 0000000000..64fb7046df --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx @@ -0,0 +1,208 @@ +import React, { useEffect, useMemo, useState } from 'react' +import { Collapse, Space, Input, Empty, Alert } from 'antd' +import { useTranslation } from 'react-i18next' +import { TFunction } from 'i18next' +import { SearchOutlined } from '@ant-design/icons' +import { debounce } from 'lodash' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' + +import { AnimatedSkeleton, Card, Root } from '@lib/components' +import { useClientRequest } from '@lib/utils/useClientRequest' +import client, { EndpointAPIModel } from '@lib/client' + +import style from './ApiList.module.less' +import ApiForm, { Topology } from './ApiForm' +import { buildQueryString } from './widgets' +import { distro } from '@lib/utils/i18n' + +const getEndpointTranslationKey = (endpoint: EndpointAPIModel) => + `debug_api.${endpoint.component}.endpoints.${endpoint.id}` + +const useFilterEndpoints = (endpoints?: EndpointAPIModel[]) => { + const [keywords, setKeywords] = useState('') + const nonNullEndpoints = useMemo(() => endpoints || [], [endpoints]) + const [filteredEndpoints, setFilteredEndpoints] = + useState(nonNullEndpoints) + const { t } = useTranslation() + + useEffect(() => { + const k = keywords.trim() + if (!!k) { + setFilteredEndpoints( + nonNullEndpoints.filter((e) => { + return ( + e.id?.includes(k) || + e.path?.includes(k) || + t(getEndpointTranslationKey(e)).includes(k) + ) + }) + ) + } else { + setFilteredEndpoints(nonNullEndpoints) + } + }, [nonNullEndpoints, keywords, t]) + + return { + endpoints: filteredEndpoints, + filterBy: debounce(setKeywords, 300), + } +} + +export default function Page() { + const { t, i18n } = useTranslation() + const { data: endpointData, isLoading: isEndpointLoading } = useClientRequest( + (reqConfig) => client.getInstance().debugAPIGetEndpoints(reqConfig) + ) + const { endpoints, filterBy } = useFilterEndpoints(endpointData) + + // TODO: refine with components/InstanceSelect + const { data: tidbTopology = [], isLoading: isTiDBTopology } = + useClientRequest((reqConfig) => + client.getInstance().getTiDBTopology(reqConfig) + ) + const { data: pdTopology = [], isLoading: isPDLoading } = useClientRequest( + (reqConfig) => client.getInstance().getPDTopology(reqConfig) + ) + const { data: storeTopology, isLoading: isStoreLoading } = useClientRequest( + (reqConfig) => client.getInstance().getStoreTopology(reqConfig) + ) + const topology: Topology = { + tidb: tidbTopology!, + tikv: storeTopology?.tikv || [], + tiflash: storeTopology?.tiflash || [], + pd: pdTopology!, + } + const isTopologyLoading = isTiDBTopology || isPDLoading || isStoreLoading + + const groups = useMemo( + () => + endpoints.reduce((prev, endpoint) => { + const groupName = endpoint.component! + if (!prev[groupName]) { + prev[groupName] = [] + } + prev[groupName].push(endpoint) + return prev + }, {} as { [group: string]: EndpointAPIModel[] }), + [endpoints] + ) + const sortedGroups = useMemo( + () => + ['tidb', 'tikv', 'tiflash', 'pd'] + .filter((sortKey) => groups[sortKey]) + .map((sortKey) => groups[sortKey]), + [groups] + ) + + function EndpointGroup({ group }: { group: EndpointAPIModel[] }) { + return ( + + + {group.map((endpoint) => { + const descTranslationKey = `debug_api.${endpoint.component}.endpoints.${endpoint.id}_desc` + const descExists = i18n.exists(descTranslationKey) + + return ( + + } + key={endpoint.id!} + > + {descExists && ( + + )} + + + ) + })} + + + ) + } + + return ( + + + + + + +
+ + } + onChange={(e) => filterBy(e.target.value)} + /> + +
+
+ + + {endpoints.length ? ( + sortedGroups.map((g) => ( + + )) + ) : ( + + )} + + +
+
+ ) +} + +function CustomHeader({ + endpoint, + translation, +}: { + endpoint: EndpointAPIModel + translation: { + t: TFunction + } +}) { + const { t } = translation + return ( +
+ + +

{t(getEndpointTranslationKey(endpoint))}

+
+ +
+
+ ) +} + +// e.g. http://{tidb_ip}/stats/dump/{db}/{table}?queryName={queryName} +function Schema({ endpoint }: { endpoint: EndpointAPIModel }) { + const query = buildQueryString(endpoint.query_params ?? []) + return ( +

+ {`http://{${distro[endpoint.component!]?.toLowerCase()}_host}${ + endpoint.path + }${query}`} +

+ ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/index.ts b/ui-ori/lib/apps/DebugAPI/apilist/index.ts new file mode 100644 index 0000000000..3b4ebcfbb5 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/index.ts @@ -0,0 +1,3 @@ +import ApiList from './ApiList' + +export { ApiList } diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Bool.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Bool.tsx new file mode 100644 index 0000000000..cc8d2aa984 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Bool.tsx @@ -0,0 +1,27 @@ +// Copyright 2021 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import React from 'react' +import { Switch } from 'antd' + +import type { ApiFormWidget } from './index' + +export const BoolWidget: ApiFormWidget = ({ onChange, value }) => { + return ( + onChange!(v ? 'true' : (undefined as any))} + /> + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Constant.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Constant.tsx new file mode 100644 index 0000000000..2a668627da --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Constant.tsx @@ -0,0 +1,20 @@ +import { EndpointAPIParam } from '@lib/client' +import React, { useEffect } from 'react' + +import type { ApiFormWidget, QueryBuilder, ParamModelType } from './index' + +export const ConstantWidget: ApiFormWidget = ({ param, onChange }) => { + const model = param.model as ParamModelType + useEffect(() => { + onChange!(model.data) + }) + return

{model.data}

+} + +export const ConstantQueryBuilder: QueryBuilder = (p) => { + return `${p.name}=${(p.model as ParamModelType).data}` +} + +export const isConstantModel = (p: EndpointAPIParam): boolean => { + return (p.model as ParamModelType).type === 'constant' +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Database.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Database.tsx new file mode 100644 index 0000000000..0e6526c31f --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Database.tsx @@ -0,0 +1,55 @@ +import React, { useCallback, useState } from 'react' +import { Select, Tooltip } from 'antd' +import { useTranslation } from 'react-i18next' + +import client from '@lib/client' +import type { ApiFormWidget } from './index' +import { useLimitSelection } from './useLimitSelection' + +export const DatabaseWidget: ApiFormWidget = ({ value, onChange }) => { + const { t } = useTranslation() + const tips = t(`debug_api.widgets.db`) + + const [loading, setLoading] = useState(false) + const [options, setOptions] = useState([]) + const onFocus = useCallback(async () => { + if (options.length) { + return + } + + setLoading(true) + try { + const rst = await client.getInstance().infoListDatabases() + setOptions(rst.data) + } finally { + setLoading(false) + } + }, [setLoading, setOptions, options]) + + const memoOnChange = useCallback( + (tags: string[]) => onChange?.(tags[0]), + [onChange] + ) + const { selectRef, onSelectChange } = useLimitSelection(1, memoOnChange) + + return ( + + + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Enum.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Enum.tsx new file mode 100644 index 0000000000..22a3300032 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Enum.tsx @@ -0,0 +1,23 @@ +import React from 'react' +import { Select } from 'antd' +import { useTranslation } from 'react-i18next' + +import type { ApiFormWidget, ParamModelType } from './index' + +export const EnumWidget: ApiFormWidget = ({ param }) => { + const { t } = useTranslation() + return ( + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Host.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Host.tsx new file mode 100644 index 0000000000..b694986d93 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Host.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import { Select } from 'antd' +import { useTranslation } from 'react-i18next' + +import type { ApiFormWidget } from './index' +import { distro } from '@lib/utils/i18n' + +const portKeys: { [k: string]: string } = { + tidb: 'status_port', + tikv: 'status_port', + tiflash: 'status_port', + pd: 'port', +} + +export const HostSelectWidget: ApiFormWidget = ({ endpoint, topology }) => { + const { t } = useTranslation() + const componentEndpoints = topology[endpoint.component!] + const portKey = portKeys[endpoint.component!] + + return ( + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Int.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Int.tsx new file mode 100644 index 0000000000..ad595a2947 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Int.tsx @@ -0,0 +1,17 @@ +import React from 'react' +import { InputNumber } from 'antd' +import { useTranslation } from 'react-i18next' + +import type { ApiFormWidget } from './index' + +export const IntWidget: ApiFormWidget = ({ param, onChange, value }) => { + const { t } = useTranslation() + return ( + onChange!(v ? String(v) : (undefined as any))} + placeholder={t(`debug_api.widgets.int`, { param: param.name })} + /> + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/StoresState.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/StoresState.tsx new file mode 100644 index 0000000000..64ef2befc1 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/StoresState.tsx @@ -0,0 +1,30 @@ +import React from 'react' +import { Select } from 'antd' +import { useTranslation } from 'react-i18next' + +import type { ApiFormWidget } from './index' + +// sync from https://github.com/pingcap/kvproto/blob/master/pkg/metapb/metapb.pb.go#L42 +const options = ['Up', 'Offline', 'Tombstone'] + +export const StoresStateWidget: ApiFormWidget = ({ + param, + value, + onChange, +}) => { + const { t } = useTranslation() + return ( + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Table.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Table.tsx new file mode 100644 index 0000000000..0429bcb50e --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Table.tsx @@ -0,0 +1,64 @@ +import React, { useCallback, useRef, useState } from 'react' +import { Select, Tooltip } from 'antd' +import { useTranslation } from 'react-i18next' + +import client, { InfoTableSchema } from '@lib/client' +import type { ApiFormWidget } from './index' +import { useLimitSelection } from './useLimitSelection' + +export const TableWidget: ApiFormWidget = ({ form, value, onChange }) => { + const { t } = useTranslation() + const tips = t(`debug_api.widgets.table`) + + const [loading, setLoading] = useState(false) + const [options, setOptions] = useState([]) + const prevDBValue = useRef('') + const onFocus = useCallback(async () => { + // Hardcode associated with the db field + const dbValue = form.getFieldValue('db') + if (prevDBValue.current === dbValue) { + return + } else { + prevDBValue.current = dbValue + } + if (!dbValue) { + setOptions([]) + return + } + + setLoading(true) + try { + const rst = await client.getInstance().infoListTables(dbValue) + setOptions(rst.data) + } finally { + setLoading(false) + } + }, [setLoading, setOptions, form]) + + const memoOnChange = useCallback( + (tags: string[]) => onChange?.(tags[0]), + [onChange] + ) + const { selectRef, onSelectChange } = useLimitSelection(1, memoOnChange) + + return ( + + + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/TableID.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/TableID.tsx new file mode 100644 index 0000000000..610a2a147a --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/TableID.tsx @@ -0,0 +1,64 @@ +import React, { useCallback, useState } from 'react' +import { Select, Tooltip } from 'antd' +import { useTranslation } from 'react-i18next' + +import client, { InfoTableSchema } from '@lib/client' +import type { ApiFormWidget } from './index' +import { useLimitSelection } from './useLimitSelection' + +const filterOptionByNameAndID: any = ( + inputValue: string, + // children means Select.Option children nodes + option: { children: string } +) => { + return option.children.includes(inputValue) +} + +export const TableIDWidget: ApiFormWidget = ({ value, onChange }) => { + const { t } = useTranslation() + const tips = t(`debug_api.widgets.table_id`) + + const [loading, setLoading] = useState(false) + const [options, setOptions] = useState([]) + const onFocus = useCallback(async () => { + if (options.length) { + return + } + + setLoading(true) + try { + const rst = await client.getInstance().infoListTables() + setOptions(rst.data) + } finally { + setLoading(false) + } + }, [setLoading, setOptions, options]) + + const memoOnChange = useCallback( + (tags: string[]) => onChange?.(tags[0]), + [onChange] + ) + const { selectRef, onSelectChange } = useLimitSelection(1, memoOnChange) + + return ( + + + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Tags.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Tags.tsx new file mode 100644 index 0000000000..0790d8f6a0 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Tags.tsx @@ -0,0 +1,19 @@ +import React from 'react' +import { Select } from 'antd' +import { useTranslation } from 'react-i18next' + +import type { ApiFormWidget } from './index' + +export const TagsWidget: ApiFormWidget = ({ param, value, onChange }) => { + const { t } = useTranslation() + return ( + + ) +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Text.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Text.tsx new file mode 100644 index 0000000000..c27715566c --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Text.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import { Input } from 'antd' +import { useTranslation } from 'react-i18next' + +import type { ApiFormWidget, QueryBuilder } from './index' + +export const TextWidget: ApiFormWidget = ({ param }) => { + const { t } = useTranslation() + return ( + + ) +} + +export const TextQueryBuilder: QueryBuilder = (p) => { + return `${p.name}={${p.name}}` +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/index.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/index.tsx new file mode 100644 index 0000000000..7717a5b26e --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/index.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import type { FormInstance } from 'antd/es/form/Form' + +import { EndpointAPIModel, EndpointAPIParam } from '@lib/client' +import type { Topology } from '../ApiForm' +import { TextWidget, TextQueryBuilder } from './Text' +import { TagsWidget } from './Tags' +import { IntWidget } from './Int' +import { EnumWidget } from './Enum' +import { ConstantWidget, ConstantQueryBuilder } from './Constant' +import { HostSelectWidget } from './Host' +import { DatabaseWidget } from './Database' +import { TableWidget } from './Table' +import { TableIDWidget } from './TableID' +import { StoresStateWidget } from './StoresState' +import { BoolWidget } from './Bool' + +export interface Widgets { + [type: string]: ApiFormWidget +} + +export interface ApiFormWidget { + (config: ApiFormWidgetConfig): JSX.Element +} + +export interface ApiFormWidgetConfig { + form: FormInstance + param: EndpointAPIParam + endpoint: EndpointAPIModel + topology: Topology + value?: string + onChange?: (v: string) => void +} + +export interface ParamModelType { + type: string + data: any +} + +// For customized form controls. https://ant.design/components/form-cn/#components-form-demo-customized-form-controls +const createJSXElementWrapper = + (WidgetDef: ApiFormWidget) => (config: ApiFormWidgetConfig) => + + +const paramModelWidgets: Widgets = { + host: HostSelectWidget, + text: TextWidget, + escape_text: TextWidget, + bool: createJSXElementWrapper(BoolWidget), + multi_value: createJSXElementWrapper(TagsWidget), + int: createJSXElementWrapper(IntWidget), + enum: EnumWidget, + constant: ConstantWidget, + db: createJSXElementWrapper(DatabaseWidget), + table: createJSXElementWrapper(TableWidget), + table_id: createJSXElementWrapper(TableIDWidget), +} + +const paramWidgets: Widgets = { + 'pd_stores/state': createJSXElementWrapper(StoresStateWidget), +} + +export const createFormWidget = (config: ApiFormWidgetConfig) => { + const { param, endpoint } = config + const widget = + paramWidgets[`${endpoint.id}/${param.name!}`] || + paramModelWidgets[(param.model as any).type] || + paramModelWidgets.text + return widget(config) +} + +// query string + +export interface QueryBuilder { + (p: EndpointAPIParam): string +} + +const queryBuilders: { [type: string]: QueryBuilder } = { + text: TextQueryBuilder, + constant: ConstantQueryBuilder, +} + +export const buildQueryString = (params: EndpointAPIParam[]) => { + const query = params.reduce((prev, param, i) => { + if (i === 0) { + prev += '?' + } else { + prev += '&' + } + + const builder = + queryBuilders[(param.model as ParamModelType).type] || queryBuilders.text + prev += builder(param) + + return prev + }, '') + return query +} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/useLimitSelection.ts b/ui-ori/lib/apps/DebugAPI/apilist/widgets/useLimitSelection.ts new file mode 100644 index 0000000000..a8458c6bce --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/apilist/widgets/useLimitSelection.ts @@ -0,0 +1,24 @@ +import { useCallback, useRef } from 'react' + +export const useLimitSelection = (limit: number, emit: Function) => { + const selectRef = useRef(null) + const onSelectChange = useCallback( + (items: string[]) => { + // Limit the available options to one option + // There are no official limit props. https://github.com/ant-design/ant-design/issues/6626 + if (items.length > limit) { + items.shift() + } + if (items.length === limit) { + selectRef.current.blur() + } + emit?.(items) + }, + [emit, limit, selectRef] + ) + + return { + selectRef, + onSelectChange, + } +} diff --git a/ui-ori/lib/apps/DebugAPI/index.meta.ts b/ui-ori/lib/apps/DebugAPI/index.meta.ts new file mode 100644 index 0000000000..4e0bd93ba5 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/index.meta.ts @@ -0,0 +1,9 @@ +import { ApiOutlined } from '@ant-design/icons' + +export default { + id: 'debug_api', + routerPrefix: '/debug_api', + icon: ApiOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_debug_api" */ '.'), +} diff --git a/ui-ori/lib/apps/DebugAPI/index.tsx b/ui-ori/lib/apps/DebugAPI/index.tsx new file mode 100644 index 0000000000..76f5f5a634 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/index.tsx @@ -0,0 +1,12 @@ +import React from 'react' + +import { Root } from '@lib/components' +import { ApiList } from './apilist' + +const App = () => ( + + + +) + +export default App diff --git a/ui-ori/lib/apps/DebugAPI/translations/en.yaml b/ui-ori/lib/apps/DebugAPI/translations/en.yaml new file mode 100644 index 0000000000..f8dc8f3d81 --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/translations/en.yaml @@ -0,0 +1,82 @@ +debug_api: + nav_title: Debug Data + keyword_search: Filter by keyword + endpoints_not_found: Endpoints not found + warning_header: + title: Warning + body: These debug endpoints and data are largely internal and intended for use by {{ distro.tidb }} developers. Please use this feature under the guidance of {{ distro.tidb }} technical support. + form: + download: Download + reset: Reset + widgets: + host_select_placeholder: Please select the {{endpointType}} host + text: Please enter the {{param}} + tags: Please enter the {{param}} + int: Please enter the {{param}} + enum: Please select the {{param}} + db: Please select the database or enter the full database name + table: Please select the table or enter the full table name + table_id: Please select the table ID or enter the full table ID + tidb: + name: '{{distro.tidb}}' + endpoints: + tidb_stats_dump: Statistics Data - of a Table + tidb_stats_dump_timestamp: Statistics Data - of a Table and Timestamp + tidb_stats_dump_timestamp_desc: The timestamp needs to be set within the GC safe point + tidb_config: Current {{distro.tidb}} Config + tidb_schema: Schema Information - All / by TableID + tidb_schema_db: Schema Information - by Database + tidb_schema_db_table: Schema Information - by Database + Table + tidb_dbtable_tableid: schema and Table Information - by TableID + tidb_ddl_history: DDL History - All + tidb_info: '{{distro.tidb}} Server Information - Current' + tidb_info_all: '{{distro.tidb}} Server Information - All {{distro.tidb}} Servers' + tidb_regions_meta: Region - All + tidb_region_id: Region - by RegionID + tidb_table_regions: Region - by Database + Table + tidb_hot_regions: Hot Regions + tidb_pprof: '{{distro.tidb}} pprof' + tidb_pprof_desc: The `seconds` parameter is only effective to `kind=profile` and `kind=trace`. + tikv: + name: '{{distro.tikv}}' + endpoints: + tikv_config: Current {{distro.tikv}} Config + tikv_profile: '{{distro.tikv}} Profile' + tiflash: + name: '{{distro.tiflash}}' + endpoints: + tiflash_config: Current {{distro.tiflash}} Config + tiflash_profile: '{{distro.tiflash}} Profile' + pd: + name: '{{distro.pd}}' + endpoints: + pd_cluster: Cluster Information (pd-ctl cluster) + pd_cluster_status: Cluster Status + pd_config_show_all: Current {{distro.pd}} Config + pd_health: Cluster Health Information (pd-ctl health) + pd_hot_read: Hot - Read (pd-ctl hot read) + pd_hot_write: Hot - Write (pd-ctl hot write) + pd_hot_stores: Hot - Stores (pd-ctl hot store) + pd_labels: All Labels (pd-ctl label) + pd_label_stores: List Stores by Label (pd-ctl label store [name] [value]) + pd_members_show: All Members Information (pd-ctl member) + pd_leader_show: Leader Information (pd-ctl member leader show) + pd_operator_show: All Operators (pd-ctl operator show) + pd_regions: Regions - All (pd-ctl region) + pd_region_id: Region - by RegionID (pd-ctl region [id]) + pd_region_key: Region - by Key Reside in (pd-ctl region key [key]) + pd_region_scan: Regions - Scan All (pd-ctl region scan) + pd_region_sibling: Regions - Sibling Regions by RegionID (pd-ctl region sibling [id]) + pd_region_start_key: Regions - All Regions Starting from a Key (pd-ctl region startkey [key]) + pd_regions_store: Regions - All Regions of a Store (pd-ctl region store [store-id]) + pd_region_top_read: Regions - Top Read Flow (pd-ctl region topread) + pd_region_top_write: Regions - Top Write Flow (pd-ctl region topread) + pd_region_top_conf_ver: Regions - Top Conf Version (pd-ctl region topconfver) + pd_region_top_version: Regions - Top Version (pd-ctl region topversion) + pd_region_top_size: Regions - Top Size (pd-ctl region topsize) + pd_region_check: Regions - Check Regions in Abnormal Conditions (region check [state]) + pd_scheduler_show: All Schedulers (pd-ctl scheduler show) + pd_stores: Stores - All (pd-ctl store) + pd_store_id: Store - by StoreID (pd-ctl store [id]) + pd_pprof: '{{distro.pd}} pprof' + pd_pprof_desc: The `seconds` parameter is only effective to `kind=profile` and `kind=trace`. diff --git a/ui-ori/lib/apps/DebugAPI/translations/zh.yaml b/ui-ori/lib/apps/DebugAPI/translations/zh.yaml new file mode 100644 index 0000000000..aa34f185cd --- /dev/null +++ b/ui-ori/lib/apps/DebugAPI/translations/zh.yaml @@ -0,0 +1,26 @@ +debug_api: + nav_title: 内部调试数据 + keyword_search: 按关键字过滤接口 + endpoints_not_found: 找不到对应接口 + warning_header: + title: 警告 + body: 本页面提供的调试接口主要面向 {{ distro.tidb }} 开发者、提供数据库内部运行数据。请在 {{ distro.tidb }} 技术支持的指导下使用本功能。 + form: + download: 下载 + reset: 重置 + widgets: + host_select_placeholder: 请选择对应的 {{endpointType}} host + text: 请输入 {{param}} + tags: 请输入 {{param}} + int: 请输入 {{param}} + enum: 请选择 {{param}} + db: 请从列表中选择 database 或输入完整的 database 名称 + table: 请从列表中选择 table 或输入完整的 table 名称 + table_id: 请从列表中选择 table ID 或输入完整的 table ID + tidb: + endpoints: + tidb_stats_dump_timestamp_desc: 时间戳应当在 GC Safe Point 以后 + tidb_pprof_desc: seconds 参数仅对 kind=profile 和 kind=trace 生效 + pd: + endpoints: + pd_pprof_desc: seconds 参数仅对 kind=profile 和 kind=trace 生效 diff --git a/ui-ori/lib/apps/Diagnose/components/DiagnosisTable.tsx b/ui-ori/lib/apps/Diagnose/components/DiagnosisTable.tsx new file mode 100644 index 0000000000..0ad438a731 --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/components/DiagnosisTable.tsx @@ -0,0 +1,201 @@ +import { Button } from 'antd' +import React, { useEffect, useMemo, useRef, useState, useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { LoadingOutlined } from '@ant-design/icons' + +import client, { DiagnoseTableDef } from '@lib/client' +import { CardTable, DateTime } from '@lib/components' +import { useClientRequest, RequestFactory } from '@lib/utils/useClientRequest' + +import { diagnosisColumns } from '../utils/tableColumns' + +// FIXME: use better naming +// stableTimeRange: used to start diagnosing when triggering by clicking "Start" outside this component +// unstableTimeRange: used to start diagnosing when triggering by clicking "Start" inside this component +export interface IDiagnosisTableProps { + stableTimeRange: [number, number] + unstableTimeRange: [number, number] + kind: string +} + +type ReqFnType = RequestFactory + +// Modified from SearchResult.tsx +function Row({ renderer, props }) { + const [expanded, setExpanded] = useState(false) + const handleClick = useCallback(() => { + setExpanded((v) => !v) + }, []) + + // https://stackoverflow.com/questions/53623294/how-to-conditionally-change-a-color-of-a-row-in-detailslist + const backgroundColor = props.item.is_sub ? 'lightcyan' : 'inhert' + return ( +
+ {renderer({ + ...props, + styles: { root: { backgroundColor } }, + item: { ...props.item, expanded }, + })} +
+ ) +} + +export default function DiagnosisTable({ + stableTimeRange, + unstableTimeRange, + kind, +}: IDiagnosisTableProps) { + const { t } = useTranslation() + + const [internalTimeRange, setInternalTimeRange] = useState<[number, number]>([ + 0, 0, + ]) + useEffect(() => setInternalTimeRange(stableTimeRange), [stableTimeRange]) + function handleStart() { + setInternalTimeRange(unstableTimeRange) + } + const timeChanged = useMemo( + () => + internalTimeRange[0] !== unstableTimeRange[0] || + internalTimeRange[1] !== unstableTimeRange[1], + [internalTimeRange, unstableTimeRange] + ) + + const reqFn = useRef(null) + useEffect(() => { + reqFn.current = (reqConfig) => + client.getInstance().diagnoseDiagnosisPost( + { + start_time: internalTimeRange[0], + end_time: internalTimeRange[1], + kind, + }, + reqConfig + ) + }, [internalTimeRange, kind]) + + const { data, isLoading, error, sendRequest } = useClientRequest( + reqFn.current!, + { immediate: false } + ) + + useEffect(() => { + if (internalTimeRange[0] !== 0) { + sendRequest() + } + }, [internalTimeRange, sendRequest]) + + //////////////// + + const allRows = useMemo(() => { + const _columnHeaders = + data?.column?.map((col) => col.toLocaleLowerCase()) || [] + let _rows: any[] = [] + data?.rows?.forEach((row, rowIdx) => { + // values (array) + let _newRow = { row_idx: rowIdx, is_sub: false, show_sub: false } + row.values?.forEach((v, v_idx) => { + const key = _columnHeaders[v_idx] + _newRow[key] = v + }) + + //subvalues (2 demensional array) + let _subRows: any[] = [] + row.sub_values?.forEach((sub_v) => { + let _subRow = { row_idx: rowIdx, is_sub: true } + sub_v.forEach((v, idx) => { + const key = _columnHeaders[idx] + _subRow[key] = v + }) + _subRows.push(_subRow) + }) + + _newRow['sub_rows'] = _subRows + _rows.push(_newRow) + }) + return _rows + }, [data]) + + const [items, setItems] = useState(allRows) + useEffect(() => { + setItems(allRows) + }, [allRows]) + + const toggleShowSub = useCallback( + (rowIdx, showSub) => { + let newRows = [...items] + let curRowPos = newRows.findIndex( + (el) => el.row_idx === rowIdx && el.is_sub === false + ) + if (curRowPos === -1) { + return + } + let curRow = newRows[curRowPos] + + // update status + curRow.show_sub = showSub + if (showSub) { + // insert sub rows + newRows.splice(curRowPos + 1, 0, ...curRow.sub_rows) + } else { + // remove sub rows + newRows.splice(curRowPos + 1, curRow.sub_rows.length) + } + setItems(newRows) + }, + [items] + ) + + const columns = useMemo( + () => diagnosisColumns(items, toggleShowSub), + [items, toggleShowSub] + ) + + //////////////// + + const renderRow = useCallback((props, defaultRender) => { + if (!props) { + return null + } + return + }, []) + + //////////////// + + function cardExtra() { + if (isLoading) { + return + } + if (timeChanged || error) { + return ( + + ) + } + return null + } + + function subTitle() { + if (internalTimeRange[0] > 0) { + return ( + + ~{' '} + + + ) + } + return null + } + + return ( + + ) +} diff --git a/ui-ori/lib/apps/Diagnose/index.meta.ts b/ui-ori/lib/apps/Diagnose/index.meta.ts new file mode 100644 index 0000000000..d4bbd0439d --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/index.meta.ts @@ -0,0 +1,9 @@ +import { SafetyCertificateOutlined } from '@ant-design/icons' + +export default { + id: 'diagnose', + routerPrefix: '/diagnose', + icon: SafetyCertificateOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_diagnose" */ '.'), +} diff --git a/ui-ori/lib/apps/Diagnose/index.tsx b/ui-ori/lib/apps/Diagnose/index.tsx new file mode 100644 index 0000000000..83440fd848 --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/index.tsx @@ -0,0 +1,17 @@ +import React from 'react' +import { HashRouter as Router, Route, Routes } from 'react-router-dom' + +import { Root } from '@lib/components' +import { DiagnoseGenerator } from './pages' + +const App = () => ( + + + + } /> + + + +) + +export default App diff --git a/ui-ori/lib/apps/Diagnose/pages/DiagnoseGenerator.tsx b/ui-ori/lib/apps/Diagnose/pages/DiagnoseGenerator.tsx new file mode 100644 index 0000000000..9da012ae98 --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/pages/DiagnoseGenerator.tsx @@ -0,0 +1,148 @@ +import { Button, Form, Input, InputNumber, Select } from 'antd' +import dayjs, { Dayjs } from 'dayjs' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import React, { useState, useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import { Card } from '@lib/components' +import { DatePicker } from '@lib/components' +import DiagnosisTable from '../components/DiagnosisTable' + +const DURATION_MINS = [5, 10, 30, 60, 24 * 60] +const DEF_DURATION_MINS = 10 + +function minsAgo(mins: number): Dayjs { + return dayjs().subtract(mins, 'm') +} + +export default function DiagnoseGenerator() { + const { t } = useTranslation() + + const [duration, setDuration] = useState(DEF_DURATION_MINS) + const [startTime, setStartTime] = useState(() => minsAgo(duration)) + const timeRange: [number, number] = useMemo(() => { + const _startTime = dayjs(startTime).unix() + return [_startTime, _startTime + duration * 60] + }, [startTime, duration]) + + const [stableTimeRange, setStableTimeRange] = useState<[number, number]>([ + 0, 0, + ]) + + function handleFinish() { + setStableTimeRange(timeRange) + } + + const timeChanged = useMemo( + () => + timeRange[0] !== stableTimeRange[0] || + timeRange[1] !== stableTimeRange[1], + [timeRange, stableTimeRange] + ) + + return ( +
+ +
+ + setStartTime(val || minsAgo(duration))} + /> + + + + + + + + prev.rangeDuration !== cur.rangeDuration + } + > + {({ getFieldValue }) => { + return ( + getFieldValue('rangeDuration') === 0 && ( + + `${value} min`} + parser={(value) => value?.replace(/[^\d]/g, '') || ''} + style={{ width: 120 }} + onChange={(val) => setDuration(val as number)} + /> + + ) + ) + }} + + + + {timeChanged && ( + + + + )} +
+
+ +
+ + + + + +
+
+ ) +} diff --git a/ui-ori/lib/apps/Diagnose/pages/index.ts b/ui-ori/lib/apps/Diagnose/pages/index.ts new file mode 100644 index 0000000000..62175aa5d6 --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/pages/index.ts @@ -0,0 +1,3 @@ +import DiagnoseGenerator from './DiagnoseGenerator' + +export { DiagnoseGenerator } diff --git a/ui-ori/lib/apps/Diagnose/translations/en.yaml b/ui-ori/lib/apps/Diagnose/translations/en.yaml new file mode 100644 index 0000000000..04ce7e7dd7 --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/translations/en.yaml @@ -0,0 +1,23 @@ +diagnose: + nav_title: Cluster Diagnostics + generate: + title: Cluster Diagnostics + range_begin: Range Start Time + range_duration: Range Duration + submit: Start + time_duration: + custom: Custom + table_title: + config_diagnosis: Config Diagnosis + error_diagnosis: Error Diagnosis + performance_diagnosis: Performance Diagnosis + fields: + rule: Rule + item: Item + type: Type + instance: Instance + status_address: Status Address + value: Value + reference: Reference + severity: Severity + details: Details diff --git a/ui-ori/lib/apps/Diagnose/translations/zh.yaml b/ui-ori/lib/apps/Diagnose/translations/zh.yaml new file mode 100644 index 0000000000..6577b2c517 --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/translations/zh.yaml @@ -0,0 +1,23 @@ +diagnose: + nav_title: 集群诊断 + generate: + title: 集群诊断 + range_begin: 区间起始时间 + range_duration: 区间长度 + submit: 开始 + time_duration: + custom: 自定义 + table_title: + config_diagnosis: 配置诊断 + error_diagnosis: 故障诊断 + performance_diagnosis: 性能诊断 + fields: + rule: Rule + item: Item + type: Type + instance: Instance + status_address: Status Address + value: Value + reference: Reference + severity: Severity + details: Details diff --git a/ui-ori/lib/apps/Diagnose/utils/tableColumns.tsx b/ui-ori/lib/apps/Diagnose/utils/tableColumns.tsx new file mode 100644 index 0000000000..29f27fa455 --- /dev/null +++ b/ui-ori/lib/apps/Diagnose/utils/tableColumns.tsx @@ -0,0 +1,126 @@ +import { Tooltip } from 'antd' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import React from 'react' +import { PlusOutlined, MinusOutlined } from '@ant-design/icons' + +import { TextWithInfo, TextWrap } from '@lib/components' + +type ToggleShowSubFn = (rowIdx: number, showSub: boolean) => void + +function commonColumnName(fieldName: string): any { + return +} + +function commonColumn(fieldName: string, minWidth: number, maxWidth?: number) { + return { + name: commonColumnName(fieldName), + key: fieldName, + fieldName, + minWidth, + maxWidth, + onRender: (rec) => { + if (rec.expanded) { + return {rec[fieldName]} + } else { + return ( + + {rec[fieldName]} + + ) + } + }, + } +} + +function ruleColumn(toggleShowSub: ToggleShowSubFn): IColumn { + const handleClick = (ev: React.MouseEvent, rec) => { + ev.stopPropagation() + toggleShowSub(rec.row_idx, !rec.show_sub) + } + return { + ...commonColumn('rule', 150, 200), + onRender: (rec) => ( + + {rec.is_sub && '|--'} + {!rec.is_sub && + rec.sub_rows.length > 0 && + (rec.show_sub ? ( + handleClick(ev, rec)} /> + ) : ( + handleClick(ev, rec)} /> + ))}{' '} + {rec.expanded ? ( + rec.rule + ) : ( + {rec.rule} + )} + + ), + } +} + +function itemColumn(): IColumn { + return commonColumn('item', 100, 150) +} + +function typeColumn(): IColumn { + return commonColumn('type', 60, 80) +} + +function instanceColumn(): IColumn { + return commonColumn('instance', 100, 200) +} + +function statusAddressColumn(): IColumn { + return commonColumn('status_address', 100, 200) +} + +function valueColumn(): IColumn { + return commonColumn('value', 100, 150) +} + +function referenceColumn(): IColumn { + return commonColumn('reference', 100, 150) +} + +function severityColumn(): IColumn { + return commonColumn('severity', 100, 120) +} + +function detailsColumn(): IColumn { + return commonColumn('details', 200) +} + +function categoryColumn(): IColumn { + return commonColumn('category', 100, 200) +} + +function tableColumn(): IColumn { + return commonColumn('table', 100, 200) +} + +function errorColumn(): IColumn { + return commonColumn('error', 200) +} + +////////////////////////////////////////// + +export function diagnosisColumns( + rows: any[], + toggleShowSub: ToggleShowSubFn +): IColumn[] { + if (rows.length > 0 && rows[0].error) { + return [categoryColumn(), tableColumn(), errorColumn()] + } + return [ + ruleColumn(toggleShowSub), + itemColumn(), + typeColumn(), + instanceColumn(), + statusAddressColumn(), + valueColumn(), + referenceColumn(), + severityColumn(), + detailsColumn(), + ] +} diff --git a/ui-ori/lib/apps/InstanceProfiling/index.meta.ts b/ui-ori/lib/apps/InstanceProfiling/index.meta.ts new file mode 100644 index 0000000000..da59500eec --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/index.meta.ts @@ -0,0 +1,9 @@ +import { AimOutlined } from '@ant-design/icons' + +export default { + id: 'instance_profiling', + routerPrefix: '/instance_profiling', + icon: AimOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_instance_profiling" */ '.'), +} diff --git a/ui-ori/lib/apps/InstanceProfiling/index.tsx b/ui-ori/lib/apps/InstanceProfiling/index.tsx new file mode 100644 index 0000000000..adcf71a101 --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/index.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import { HashRouter as Router, Route, Routes } from 'react-router-dom' + +import { Root, ParamsPageWrapper } from '@lib/components' +import { Detail, List } from './pages' + +const App = () => ( + + + + } /> + + + + } + /> + + + +) + +export default App diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/Detail.tsx b/ui-ori/lib/apps/InstanceProfiling/pages/Detail.tsx new file mode 100644 index 0000000000..f7f25d3255 --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/pages/Detail.tsx @@ -0,0 +1,187 @@ +import { Badge, Button, Progress } from 'antd' +import React, { useCallback, useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { ArrowLeftOutlined } from '@ant-design/icons' +import { usePersistFn } from 'ahooks' + +import client from '@lib/client' +import { CardTable, DateTime, Head, Descriptions } from '@lib/components' +import { useClientRequestWithPolling } from '@lib/utils/useClientRequest' +import { InstanceKindName } from '@lib/utils/instanceTable' +import useQueryParams from '@lib/utils/useQueryParams' + +function mapData(data) { + if (!data) { + return data + } + data.tasks_status.forEach((task) => { + if (task.state === 1) { + let task_elapsed_secs = data.server_time - task.started_at + let progress = + task_elapsed_secs / data.task_group_status.profile_duration_secs + if (progress > 0.99) { + progress = 0.99 + } + if (progress < 0) { + progress = 0 + } + task.progress = progress + } + }) + return data +} + +function isFinished(data) { + const groupState = data?.task_group_status?.state + return groupState === 2 || groupState === 3 +} + +export default function Page() { + const { t } = useTranslation() + const { id } = useQueryParams() + + const { + data: respData, + isLoading, + error, + } = useClientRequestWithPolling( + (reqConfig) => client.getInstance().getProfilingGroupDetail(id, reqConfig), + { + shouldPoll: (data) => !isFinished(data), + } + ) + + const data = useMemo(() => mapData(respData), [respData]) + + const profileDuration = + respData?.task_group_status?.profile_duration_secs || 0 + + const columns = useMemo( + () => [ + { + name: t('instance_profiling.detail.table.columns.instance'), + key: 'instance', + minWidth: 150, + maxWidth: 400, + onRender: (record) => record.target.display_name, + }, + { + name: t('instance_profiling.detail.table.columns.kind'), + key: 'kind', + minWidth: 100, + maxWidth: 150, + onRender: (record) => { + return InstanceKindName[record.target.kind] + }, + }, + { + name: t('instance_profiling.detail.table.columns.content'), + key: 'content', + minWidth: 150, + maxWidth: 300, + onRender: (record) => { + return `CPU Profiling - ${profileDuration}s` + }, + }, + { + name: t('instance_profiling.detail.table.columns.status'), + key: 'status', + minWidth: 150, + maxWidth: 200, + onRender: (record) => { + if (record.state === 1) { + return ( +
+ +
+ ) + } else if (record.state === 0) { + return + } else { + return ( + + ) + } + }, + }, + ], + [t, profileDuration] + ) + + const handleRowClick = usePersistFn( + async (rec, _idx, _ev: React.MouseEvent) => { + const res = await client + .getInstance() + .getActionToken(rec.id, 'single_view') + const token = res.data + if (!token) { + return + } + window.open( + `${client.getBasePath()}/profiling/single/view?token=${token}`, + '_blank' + ) + } + ) + + const handleDownloadGroup = useCallback(async () => { + const res = await client.getInstance().getActionToken(id, 'group_download') + const token = res.data + if (!token) { + return + } + window.location.href = `${client.getBasePath()}/profiling/group/download?token=${token}` + }, [id]) + + return ( +
+ + {t('instance_profiling.detail.head.back')} + + } + titleExtra={ + + } + > + {respData && ( + + + + + + )} + + +
+ ) +} diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/List.module.less b/ui-ori/lib/apps/InstanceProfiling/pages/List.module.less new file mode 100644 index 0000000000..dab1ce95dc --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/pages/List.module.less @@ -0,0 +1,14 @@ +@import '~antd/es/style/themes/default.less'; + +.list { + &_container { + display: flex; + flex-direction: column; + height: 100vh; + } +} + +.alert_container { + margin-left: @padding-page; + margin-right: @padding-page; +} diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/List.tsx b/ui-ori/lib/apps/InstanceProfiling/pages/List.tsx new file mode 100644 index 0000000000..b6ca69da17 --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/pages/List.tsx @@ -0,0 +1,252 @@ +import { Badge, Button, Form, Select, Modal, Alert } from 'antd' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import React, { useMemo, useState, useCallback, useRef } from 'react' +import { useTranslation } from 'react-i18next' +import { useNavigate } from 'react-router-dom' +import { usePersistFn } from 'ahooks' + +import client, { + ProfilingStartRequest, + ModelRequestTargetNode, +} from '@lib/client' +import { + Card, + CardTable, + InstanceSelect, + IInstanceSelectRefProps, +} from '@lib/components' +import DateTime from '@lib/components/DateTime' +import openLink from '@lib/utils/openLink' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { combineTargetStats } from '../utils' + +import styles from './List.module.less' + +const profilingDurationsSec = [10, 30, 60, 120] +const defaultProfilingDuration = 30 + +export default function Page() { + const { + data: historyTable, + isLoading: listLoading, + error: historyError, + } = useClientRequest((reqConfig) => + client.getInstance().getProfilingGroups(reqConfig) + ) + const { data: ngMonitoringConfig } = useClientRequest((reqConfig) => + client.getInstance().continuousProfilingConfigGet(reqConfig) + ) + const conprofEnable = + ngMonitoringConfig?.continuous_profiling?.enable ?? false + + const { t } = useTranslation() + const navigate = useNavigate() + const instanceSelect = useRef(null) + const [submitting, setSubmitting] = useState(false) + + const handleFinish = useCallback( + async (fieldsValue) => { + if (!fieldsValue.instances || fieldsValue.instances.length === 0) { + Modal.error({ + content: 'Some required fields are not filled', + }) + return + } + if (!instanceSelect.current) { + Modal.error({ + content: 'Internal error: Instance select is not ready', + }) + return + } + const targets: ModelRequestTargetNode[] = instanceSelect + .current!.getInstanceByKeys(fieldsValue.instances) + .map((instance) => { + let port + switch (instance.instanceKind) { + case 'pd': + port = instance.port + break + case 'tidb': + case 'tikv': + case 'tiflash': + port = instance.status_port + break + } + return { + kind: instance.instanceKind, + display_name: instance.key, + ip: instance.ip, + port, + } + }) + .filter((i) => i.port != null) + const req: ProfilingStartRequest = { + targets, + duration_secs: fieldsValue.duration, + } + try { + setSubmitting(true) + const res = await client.getInstance().startProfiling(req) + navigate(`/instance_profiling/detail?id=${res.data.id}`) + } finally { + setSubmitting(false) + } + }, + [navigate] + ) + + const handleRowClick = usePersistFn( + (rec, _idx, ev: React.MouseEvent) => { + openLink(`/instance_profiling/detail?id=${rec.id}`, ev, navigate) + } + ) + + const historyTableColumns = useMemo( + () => [ + { + name: t('instance_profiling.list.table.columns.targets'), + key: 'targets', + minWidth: 150, + maxWidth: 250, + onRender: (rec) => { + const s = combineTargetStats(rec.target_stats) + return {s} + }, + }, + { + name: t('instance_profiling.list.table.columns.status'), + key: 'status', + minWidth: 100, + maxWidth: 150, + onRender: (rec) => { + if (rec.state === 0) { + // all failed + return ( + + ) + } else if (rec.state === 1) { + // running + return ( + + ) + } else if (rec.state === 2) { + // all success + return ( + + ) + } else { + // partial success + return ( + + ) + } + }, + }, + { + name: t('instance_profiling.list.table.columns.start_at'), + key: 'started_at', + minWidth: 160, + maxWidth: 220, + onRender: (rec) => { + return + }, + }, + { + name: t('instance_profiling.list.table.columns.duration'), + key: 'duration', + minWidth: 100, + maxWidth: 150, + fieldName: 'profile_duration_secs', + }, + ], + [t] + ) + + return ( +
+ +
+ + + + + + + + + +
+
+ + {conprofEnable && ( +
+ +
+ )} + +
+ + + +
+
+ ) +} diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/index.ts b/ui-ori/lib/apps/InstanceProfiling/pages/index.ts new file mode 100644 index 0000000000..641e4de57a --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/pages/index.ts @@ -0,0 +1,4 @@ +import List from './List' +import Detail from './Detail' + +export { List, Detail } diff --git a/ui-ori/lib/apps/InstanceProfiling/translations/en.yaml b/ui-ori/lib/apps/InstanceProfiling/translations/en.yaml new file mode 100644 index 0000000000..6ee03fdec8 --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/translations/en.yaml @@ -0,0 +1,42 @@ +profiling: + nav_title: Profiling Instances +instance_profiling: + nav_title: Manual Profiling + list: + control_form: + title: Start Profiling Instances + instances: + label: Select instances + duration: + label: Duration + submit: Start Profiling + disable_warning: Already enabled continuous profiling, so manual profiling is disabled. You can see all instances profiling results in the continuous profiling page. + table: + title: Profiling History + columns: + targets: Instances + start_at: Start At + duration: Duration (sec) + status: Status + status: + running: Running + finished: Finished + failed: Failed + partial_finished: Partial Finished + unknown: Unknown + actions: + detail: Detail + detail: + head: + back: History + title: Profiling Detail + start_at: Start At + download: Download Profiling Result + table: + columns: + instance: Instance + kind: Component + content: Content + status: Status + status: + finished: Finished diff --git a/ui-ori/lib/apps/InstanceProfiling/translations/zh.yaml b/ui-ori/lib/apps/InstanceProfiling/translations/zh.yaml new file mode 100644 index 0000000000..c417cf6575 --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/translations/zh.yaml @@ -0,0 +1,42 @@ +profiling: + nav_title: 实例性能分析 +instance_profiling: + nav_title: 手动分析 + list: + control_form: + title: 开始性能分析 + instances: + label: 选择实例 + duration: + label: 分析时长 + submit: 开始分析 + disable_warning: 已启用持续性能分析功能,因此手动性能分析不可用。可在持续性能分析页面查看当前及过往的分析结果。 + table: + title: 性能分析历史 + columns: + targets: 实例 + start_at: 开始时间 + duration: 时长(秒) + status: 状态 + status: + running: 分析中 + finished: 完成 + failed: 失败 + partial_finished: 部分完成 + unknown: 未知 + actions: + detail: 详情 + detail: + head: + back: 历史记录 + title: 性能分析详情 + start_at: 开始时间 + download: 下载性能分析结果 + table: + columns: + instance: 实例 + kind: 组件 + content: 内容 + status: 状态 + status: + finished: 完成 diff --git a/ui-ori/lib/apps/InstanceProfiling/utils/combineTargetStats.ts b/ui-ori/lib/apps/InstanceProfiling/utils/combineTargetStats.ts new file mode 100644 index 0000000000..462303e875 --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/utils/combineTargetStats.ts @@ -0,0 +1,18 @@ +import { ModelRequestTargetStatistics } from '@lib/client' +import { InstanceKindName } from '@lib/utils/instanceTable' + +const targetNameMap = { + num_tidb_nodes: InstanceKindName.tidb, + num_tikv_nodes: InstanceKindName.tikv, + num_pd_nodes: InstanceKindName.pd, + num_tiflash_nodes: InstanceKindName.tiflash, +} + +export const combineTargetStats = (stats: ModelRequestTargetStatistics) => + Object.entries(stats) + .reduce((prev, [key, stat]) => { + const targetName = targetNameMap[key] + targetName && prev.push(`${stat} ${targetName}`) + return prev + }, [] as string[]) + .join(', ') diff --git a/ui-ori/lib/apps/InstanceProfiling/utils/index.ts b/ui-ori/lib/apps/InstanceProfiling/utils/index.ts new file mode 100644 index 0000000000..625a73b6b9 --- /dev/null +++ b/ui-ori/lib/apps/InstanceProfiling/utils/index.ts @@ -0,0 +1 @@ +export * from './combineTargetStats' diff --git a/ui-ori/lib/apps/KeyViz/components/KeyViz.less b/ui-ori/lib/apps/KeyViz/components/KeyViz.less new file mode 100644 index 0000000000..46cd9705e5 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/components/KeyViz.less @@ -0,0 +1,160 @@ +@import '~antd/es/style/themes/default.less'; + +.PD-Cluster-Legend { + position: relative; + + .unit { + font-size: 12px; + color: #333; + position: absolute; + right: 0; + top: 5px; + } +} + +.PD-KeyVis { + height: 100vh; + display: flex; + flex-direction: column; + + .ui.dropdown .menu { + z-index: 9999; + } + + .PD-KeyVis-Toolbar { + .group-icons-btn { + border: 0; + margin-top: -7px; + .button { + border-left: 0 !important; + } + + .icon { + color: #1b1c1d; + } + } + + .ant-select .anticon { + margin-right: 5px; + } + } + + svg, + button { + user-select: none; + } + + g.tick text { + font-family: 'Poppins'; + font-size: 12px; + text-anchor: start; + } + + .tooltip { + padding: 10px; + color: #eee; + background-color: #333; + box-shadow: 5px 5px 10px rgba(black, 0.5); + border-radius: 3px; + min-width: 200px; + + div.value { + display: flex; + align-items: center; + + div.value { + margin: 0; + padding: 7px; + font-weight: bold; + border-radius: 3px; + } + + div.unit { + color: #999; + font-size: 0.8rem; + margin-left: 10px; + } + } + + button { + line-height: 1; + background-color: transparent; + border: transparent solid 1px; + border-radius: 3px; + outline: none; + padding: 3px; + text-align: left; + color: #fff; + transition: background-color ease-in 100ms; + + &:hover { + border: #888 solid 1px; + cursor: pointer; + } + + &:active { + background-color: #888; + transition: none; + } + } + + .time { + color: #aaa; + line-height: 1.2; + margin-top: 10px; + font-size: 0.8rem; + } + + .overviewLabel { + margin: 20px 0; + .subLabel { + padding: 1px 3px; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 250px; + } + } + + .keyContainer { + margin-top: 10px; + padding: 0 3px; + .desc { + text-transform: uppercase; + font-weight: bold; + font-size: 0.8rem; + color: #ccc; + } + .label, + .key { + display: block; + color: #888; + font-size: 0.7rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 250px; + } + } + } + + .heatmap { + flex-grow: 1; + margin: @padding-page; + margin-top: -32px; + } +} + +#PD-KeyVis-Brightness-Overlay { + background-color: @select-dropdown-bg; + padding: @padding-md; + border-radius: @border-radius-base; + outline: none; + box-shadow: @box-shadow-base; + box-sizing: border-box; +} + +.PD-KeyVis-Select-Option .anticon { + display: none; +} diff --git a/ui-ori/lib/apps/KeyViz/components/KeyViz.tsx b/ui-ori/lib/apps/KeyViz/components/KeyViz.tsx new file mode 100644 index 0000000000..5699c5dada --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/components/KeyViz.tsx @@ -0,0 +1,277 @@ +import React, { useState, useEffect, useCallback } from 'react' +import { Button, Drawer, Result } from 'antd' +import { useTranslation } from 'react-i18next' +import { useGetSet, useMount, useInterval } from 'react-use' +import { useBoolean } from 'ahooks' + +import client, { ConfigKeyVisualConfig } from '@lib/client' +import { Heatmap } from '../heatmap' +import { HeatmapData, HeatmapRange, DataTag } from '../heatmap/types' +import { fetchHeatmap } from '../utils' +import KeyVizSettingForm from './KeyVizSettingForm' +import KeyVizToolbar from './KeyVizToolbar' + +import './KeyViz.less' + +type CacheEntry = { + metricType: DataTag + dateRange: number + expireTime: number + data: HeatmapData +} + +// const CACHE_EXPRIE_SECS = 10 + +class HeatmapCache { + // cache: CacheEntry[] = [] + // latestFetchIdx = 0 + + async fetch( + range: number | HeatmapRange, + metricType: DataTag + ): Promise { + // return fetchDummyHeatmap() + let selection + if (typeof range === 'number') { + const endTime = Math.ceil(new Date().getTime() / 1000) + // this.cache = this.cache.filter((entry) => entry.expireTime > endTime) + // const entry = this.cache.find( + // (entry) => entry.dateRange === range && entry.metricType === metricType + // ) + // if (entry) { + // return entry.data + // } else { + selection = { + starttime: endTime - range, + endtime: endTime, + } + // } + } else { + selection = range + } + + // this.latestFetchIdx += 1 + // const fetchIdx = this.latestFetchIdx + const data = await fetchHeatmap(selection, metricType) + // if (fetchIdx === this.latestFetchIdx) { + // if (typeof range === 'number') { + // this.cache.push({ + // dateRange: range, + // metricType: metricType, + // expireTime: new Date().getTime() / 1000 + CACHE_EXPRIE_SECS, + // data: data, + // }) + // } + return data + // } + // return undefined + } +} + +// Todo: define heatmap state, with auto check control, date range select, reset to zoom +// fetchData , changeType, add loading state, change zoom level to reset autofetch, + +type ChartState = { + heatmapData: HeatmapData + metricType: DataTag +} + +// TODO: using global state is not a good idea +let _chart +let cache = new HeatmapCache() + +const KeyViz = () => { + const [chartState, setChartState] = useState() + const [getSelection, setSelection] = useGetSet(null) + const [isLoading, setLoading] = useState(true) + const [getAutoRefreshSeconds, setAutoRefreshSeconds] = useGetSet(0) + const [getRemainingRefreshSeconds, setRemainingRefreshSeconds] = useGetSet(0) + const [getOnBrush, setOnBrush] = useGetSet(false) + const [getDateRange, setDateRange] = useGetSet(3600 * 6) + const [getBrightLevel, setBrightLevel] = useGetSet(1) + const [getMetricType, setMetricType] = useGetSet('written_bytes') + const [config, setConfig] = useState(null) + const [ + shouldShowSettings, + { setTrue: openSettings, setFalse: closeSettings }, + ] = useBoolean(false) + const { t } = useTranslation() + + const enabled = config?.auto_collection_disabled !== true + + const updateServiceStatus = useCallback(async function () { + try { + setLoading(true) + const resp = await client.getInstance().keyvisualConfigGet() + const config = resp.data + const enabled = config?.auto_collection_disabled !== true + if (!enabled) { + setAutoRefreshSeconds(0) + } + setConfig(config) + } finally { + setLoading(false) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + useMount(updateServiceStatus) + + const updateHeatmap = useCallback(async () => { + if (getAutoRefreshSeconds() > 0) { + setRemainingRefreshSeconds(getAutoRefreshSeconds()) + } + try { + setLoading(true) + setOnBrush(false) + const metricType = getMetricType() + const data = await cache.fetch( + getSelection() || getDateRange(), + metricType + ) + setChartState({ heatmapData: data!, metricType }) + } finally { + setLoading(false) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + const onChangeBrightLevel = useCallback((val) => { + if (!_chart) return + setBrightLevel(val) + _chart.brightness(val) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + const onChangeDateRange = useCallback((v: number) => { + setDateRange(v) + setSelection(null) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + const onResetZoom = useCallback(() => { + setSelection(null) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + const onToggleBrush = useCallback(() => { + const newOnBrush = !getOnBrush() + setAutoRefreshSeconds(0) + setOnBrush(newOnBrush) + _chart.brush(newOnBrush) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + const onBrush = useCallback((selection: HeatmapRange) => { + setOnBrush(false) + setAutoRefreshSeconds(0) + setSelection(selection) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + const onZoom = useCallback(() => { + setAutoRefreshSeconds(0) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + const onChartInit = useCallback((chart) => { + _chart = chart + setLoading(false) + _chart.brightness(getBrightLevel()) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + useEffect(() => { + if (getRemainingRefreshSeconds() > getAutoRefreshSeconds()) { + setRemainingRefreshSeconds(getAutoRefreshSeconds()) + } + if (getAutoRefreshSeconds() > 0) { + onResetZoom() + setOnBrush(false) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [getAutoRefreshSeconds()]) + + useEffect(() => { + if (enabled) { + updateHeatmap() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [config, getSelection(), getDateRange(), getMetricType()]) + + useInterval(() => { + if (getAutoRefreshSeconds() === 0) { + return + } + if (getRemainingRefreshSeconds() === 0) { + updateHeatmap() + } else { + setRemainingRefreshSeconds((c) => c - 1) + } + }, 1000) + + const disabledPage = isLoading ? null : ( + + {t('keyviz.settings.open_setting')} + + } + /> + ) + + const mainPart = !enabled + ? disabledPage + : chartState && ( + + ) + + return ( +
+ + + {mainPart} + + + + +
+ ) +} + +export default KeyViz diff --git a/ui-ori/lib/apps/KeyViz/components/KeyVizSettingForm.tsx b/ui-ori/lib/apps/KeyViz/components/KeyVizSettingForm.tsx new file mode 100644 index 0000000000..d639aa3e3b --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/components/KeyVizSettingForm.tsx @@ -0,0 +1,207 @@ +import React, { useState, useMemo, useCallback } from 'react' +import { + Form, + Skeleton, + Switch, + Space, + Button, + Modal, + Radio, + Input, +} from 'antd' +import { ExclamationCircleOutlined } from '@ant-design/icons' +import { useTranslation } from 'react-i18next' +import client from '@lib/client' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { ErrorBar } from '@lib/components' +import { useIsWriteable } from '@lib/utils/store' + +const policyConfigurable = process.env.NODE_ENV === 'development' + +interface Props { + onClose: () => void + onConfigUpdated: () => any +} + +type SeparatorStatus = { + validateStatus: 'warning' | 'success' + hasFeedback: boolean + help: string +} + +const negateSwitchProps = { + getValueProps: (value) => ({ checked: value !== true }), + getValueFromEvent: (checked) => !checked, +} + +function getSeparatorValidator(t) { + const separatorEmptyStatus: SeparatorStatus = { + validateStatus: 'warning', + hasFeedback: true, + help: t('keyviz.settings.separator_empty_warning'), + } + const separatorNotEmptyStatus: SeparatorStatus = { + validateStatus: 'success', + hasFeedback: true, + help: '', + } + return (value: string | undefined) => + value === undefined || value === '' + ? separatorEmptyStatus + : separatorNotEmptyStatus +} + +function getPolicyOptions(t) { + return ['db', 'kv'].map((policy) => { + let label = t(`keyviz.settings.policy_${policy}`) + return ( + + {label} + + ) + }) +} + +function KeyVizSettingForm({ onClose, onConfigUpdated }: Props) { + const [submitting, setSubmitting] = useState(false) + const { t } = useTranslation() + const isWriteable = useIsWriteable() + + const { + data: config, + isLoading: loading, + error, + } = useClientRequest((reqConfig) => + client.getInstance().keyvisualConfigGet(reqConfig) + ) + + const onUpdateServiceStatus = async (values) => { + try { + setSubmitting(true) + await client.getInstance().keyvisualConfigPut(values) + onClose() + onConfigUpdated() + } finally { + setSubmitting(false) + } + } + + const onSubmit = (values) => { + if ( + config?.auto_collection_disabled !== true && + values.auto_collection_disabled === true + ) { + Modal.confirm({ + title: t('keyviz.settings.close_keyviz'), + icon: , + content: t('keyviz.settings.close_keyviz_warning'), + okText: t('keyviz.settings.actions.close'), + cancelText: t('keyviz.settings.actions.cancel'), + okButtonProps: { danger: true }, + onOk: () => onUpdateServiceStatus(values), + }) + } else { + onUpdateServiceStatus(values) + } + } + + const [form] = Form.useForm() + const onValuesChange = useCallback( + (changedValues, values) => { + if (changedValues?.auto_collection_disabled !== true && !values?.policy) { + form.setFieldsValue({ policy: 'db' }) + } + if ( + config?.policy !== 'kv' && + changedValues?.policy === 'kv' && + !values?.policy_kv_separator + ) { + form.setFieldsValue({ policy_kv_separator: '/' }) + } + }, + [form, config] + ) + const policyOptions = useMemo(() => getPolicyOptions(t), [t]) + const validateSeparator = useMemo(() => getSeparatorValidator(t), [t]) + + return ( + <> + {error && } + {loading && } + {!loading && config && ( +
+ + {({ getFieldValue }) => { + const enabled = getFieldValue('auto_collection_disabled') !== true + const policy = getFieldValue('policy') + const separator = getFieldValue('policy_kv_separator') + return ( + <> + + + + + + {policyOptions} + + + + + + + ) + }} + + + + + + + +
+ )} + + ) +} + +export default KeyVizSettingForm diff --git a/ui-ori/lib/apps/KeyViz/components/KeyVizToolbar.tsx b/ui-ori/lib/apps/KeyViz/components/KeyVizToolbar.tsx new file mode 100644 index 0000000000..c4c6f29829 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/components/KeyVizToolbar.tsx @@ -0,0 +1,301 @@ +import React, { Component, useEffect } from 'react' +import { + AreaChartOutlined, + ArrowsAltOutlined, + BulbOutlined, + ClockCircleOutlined, + DownOutlined, + LoadingOutlined, + SyncOutlined, + SettingOutlined, +} from '@ant-design/icons' +import { + Slider, + Spin, + Select, + Dropdown, + Button, + Menu, + Tooltip, + Space, +} from 'antd' +import { withTranslation, WithTranslation } from 'react-i18next' +import { useSpring, animated } from 'react-spring' +import Flexbox from '@g07cha/flexbox-react' +import { Card, Toolbar } from '@lib/components' +import { getValueFormat } from '@baurine/grafana-value-formats' + +function RefreshProgress(props) { + const { value } = props + const r = 50 + const totalLength = 2 * Math.PI * r + const [springProps, setSpringProps] = useSpring(() => ({ + value: 0, + })) + + useEffect(() => { + setSpringProps({ + value, + }) + }, [setSpringProps, value]) + + return ( + + + + + ) +} + +export interface IKeyVizToolbarProps { + enabled: boolean + isLoading: boolean + autoRefreshSeconds: number + remainingRefreshSeconds?: number + isOnBrush: boolean + metricType: string + brightLevel: number + dateRange: number + onResetZoom: () => void + onToggleBrush: () => void + onChangeMetric: (string) => void + onChangeDateRange: (number) => void + onChangeBrightLevel: (number) => void + onChangeAutoRefresh: (number) => void + onRefresh: () => void + onShowSettings: () => any +} + +class KeyVizToolbar extends Component { + state = { + exp: 0, + } + + handleRefreshClick = () => { + this.props.onRefresh() + } + + handleAutoRefreshMenuClick = ({ key }) => { + this.props.onChangeAutoRefresh(parseInt(key)) + } + + handleDateRange = (value) => { + this.props.onChangeDateRange(value) + } + + handleMetricChange = (value) => { + this.props.onChangeMetric(value) + } + + handleBrightLevel = (exp: number) => { + this.props.onChangeBrightLevel(Math.pow(2, exp)) + this.setState({ exp }) + } + + handleBrightnessDropdown = () => { + setTimeout(() => { + this.handleBrightLevel(this.state.exp) + }, 0) + } + + render() { + const { + t, + enabled, + dateRange, + isOnBrush, + metricType, + remainingRefreshSeconds, + autoRefreshSeconds, + onShowSettings, + } = this.props + + // in hours + const dateRangeOptions = [1, 6, 12, 24, 24 * 7] + + const MetricOptions = [ + { text: t('keyviz.toolbar.view_type.read_bytes'), value: 'read_bytes' }, + { + text: t('keyviz.toolbar.view_type.write_bytes'), + value: 'written_bytes', + }, + { text: t('keyviz.toolbar.view_type.read_keys'), value: 'read_keys' }, + { text: t('keyviz.toolbar.view_type.write_keys'), value: 'written_keys' }, + { text: t('keyviz.toolbar.view_type.all'), value: 'integration' }, + ] + + // in seconds + const autoRefreshOptions = [15, 30, 60, 2 * 60, 5 * 60, 10 * 60] + + const autoRefreshMenu = ( + + + {t('keyviz.toolbar.auto_refresh.off')} + + {autoRefreshOptions.map((sec) => { + return ( + + {getValueFormat('s')(sec, 0)} + + ) + })} + + + ) + + return ( + + + + +
{ + e.stopPropagation() + }} + > + +
+ + this.handleBrightLevel(value as number) + } + /> + +
+
+ } + trigger={['click']} + onVisibleChange={this.handleBrightnessDropdown} + > + +
+ + + + + + + + + + + } + > + {autoRefreshSeconds ? ( + + ) : ( + + )} + {t('keyviz.toolbar.refresh')} + + + {this.props.isLoading && ( + } + /> + )} +
+ + + + + + +
+
+ ) + } +} + +export default withTranslation()(KeyVizToolbar) diff --git a/ui-ori/lib/apps/KeyViz/heatmap/axis/histogram.ts b/ui-ori/lib/apps/KeyViz/heatmap/axis/histogram.ts new file mode 100644 index 0000000000..dcf034eec5 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/axis/histogram.ts @@ -0,0 +1,109 @@ +import * as d3 from 'd3' +import { Section, scaleSections } from '.' + +const fill = '#333' +const fillFocus = '#ccc' +const stroke = '#fff' + +export function histogram(data: number[][]) { + let xRange: [number, number] = [0, 0] + let yRange: [number, number] = [0, 0] + + histogram.xRange = function (val: [number, number]) { + xRange = val + return this + } + + histogram.yRange = function (val: [number, number]) { + yRange = val + return this + } + + function histogram( + xCtx: CanvasRenderingContext2D, + yCtx: CanvasRenderingContext2D, + xFocusDomain: [number, number] | null, + yFocusDomain: [number, number] | null, + xScale, + yScale + ) { + const xHeight = xCtx.canvas.height + const yWidth = yCtx.canvas.width + + const xLen = data.length + const yLen = data[0].length + + const xStartIdx = Math.max(0, Math.floor(xScale.invert(xRange[0]))) + const xEndIdx = Math.min(xLen - 1, Math.ceil(xScale.invert(xRange[1]))) + const yStartIdx = Math.max(0, Math.floor(yScale.invert(yRange[0]))) + const yEndIdx = Math.min(yLen - 1, Math.ceil(yScale.invert(yRange[1]))) + + const xSum: Section[] = [] + const ySum: Section[] = [] + + for (let x = xStartIdx; x < xEndIdx; x++) { + let sumVal = 0 + for (let y = yStartIdx; y < yEndIdx; y++) { + sumVal += data[x][y] + } + xSum.push({ val: sumVal, startIdx: x, endIdx: x + 1 }) + } + for (let y = yStartIdx; y < yEndIdx; y++) { + let sumVal = 0 + for (let x = xStartIdx; x < xEndIdx; x++) { + sumVal += data[x][y] + } + ySum.push({ val: sumVal, startIdx: y, endIdx: y + 1 }) + } + + const xBins = scaleSections( + xSum, + xFocusDomain, + xRange, + xScale, + (origin, val) => origin + val + ) + const yBins = scaleSections( + ySum, + yFocusDomain, + yRange, + yScale, + (origin, val) => origin + val + ) + + const xBinsMax = d3.max(xBins, (section) => section.val)! + const yBinsMax = d3.max(yBins, (section) => section.val)! + + xCtx.clearRect(xRange[0], 0, xRange[1], xHeight) + xCtx.strokeStyle = stroke + xCtx.lineWidth = 1 + for (const bin of xBins) { + const width = bin.endPos - bin.startPos + const height = (bin.val / xBinsMax) * xHeight + if (height < 1) continue + xCtx.fillStyle = bin.focus ? fillFocus : fill + xCtx.beginPath() + xCtx.rect(bin.startPos, xHeight - height, width, height) + xCtx.fill() + xCtx.stroke() + xCtx.closePath() + } + + yCtx.clearRect(0, yRange[0], yWidth, yRange[1]) + yCtx.strokeStyle = stroke + yCtx.lineWidth = 1 + for (const bin of yBins) { + const width = (bin.val / yBinsMax) * yWidth + const height = bin.endPos - bin.startPos + if (width < 1) continue + yCtx.fillStyle = bin.focus ? fillFocus : fill + yCtx.beginPath() + yCtx.rect(yWidth - width, bin.startPos, width, height) + yCtx.fill() + yCtx.stroke() + yCtx.closePath() + } + } + + return histogram +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts b/ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts new file mode 100644 index 0000000000..7f22e12d04 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts @@ -0,0 +1,82 @@ +import _ from 'lodash' + +export type Section = { + val: T + startIdx: number + endIdx: number +} + +export type DisplaySection = { + val: T + startIdx: number + endIdx: number + startPos: number + endPos: number + focus: boolean +} + +const mergeWidth = 3 + +export function scaleSections( + sections: Section[], + focusDomain: [number, number] | null, + range: [number, number], + scale: (idx: number) => number, + merge: (origin: T, val: T) => T +): DisplaySection[] { + let result: DisplaySection[] = [] + let mergedSmallSection: DisplaySection | null = null + let oneSectionRendered = false + + for (const section of sections) { + const canvasStart = range[0] + const canvasEnd = range[1] + const startPos = scale(section.startIdx) + const endPos = scale(section.endIdx) + const commonStart = Math.max(startPos, canvasStart) + const commonEnd = Math.min(endPos, canvasEnd) + const focus = focusDomain + ? Math.min(scale(focusDomain[1]), endPos) - + Math.max(scale(focusDomain[0]), startPos) > + 0 + : false + + if (mergedSmallSection) { + if ( + mergedSmallSection.endPos - mergedSmallSection.startPos >= mergeWidth || + commonStart - mergedSmallSection.startPos > mergeWidth || + (!oneSectionRendered && section.startIdx % 2 === 0) + ) { + result.push(mergedSmallSection) + oneSectionRendered = true + mergedSmallSection = null + } + } + + if (commonEnd - commonStart > 0) { + if (commonEnd - commonStart > mergeWidth) { + result.push( + _.assign( + { startPos: commonStart, endPos: commonEnd, focus: focus }, + section + ) + ) + oneSectionRendered = true + mergedSmallSection = null + } else { + if (mergedSmallSection === null) { + mergedSmallSection = _.assign( + { startPos: commonStart, endPos: commonEnd, focus: focus }, + section + ) + } else { + mergedSmallSection.val = merge(mergedSmallSection.val, section.val) + mergedSmallSection.endPos = commonEnd + mergedSmallSection.focus = mergedSmallSection.focus || focus + } + } + } + } + + return result +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/axis/label-axis.ts b/ui-ori/lib/apps/KeyViz/heatmap/axis/label-axis.ts new file mode 100644 index 0000000000..d0e4143d8b --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/axis/label-axis.ts @@ -0,0 +1,138 @@ +import _ from 'lodash' +import { Section, DisplaySection, scaleSections } from '.' +import { KeyAxisEntry } from '../types' +import { truncateString } from '../utils' + +const labelAxisMargin = 4 +const labelAxisWidth = 28 +const labelTextPadding = 4 +const minTextHeight = 17 +const fill = '#333' +const fillFocus = '#ccc' +const stroke = '#fff' +const textFill = 'white' +const textFillFocus = '#333' +const font = '500 12px Poppins' +const focusFont = '700 12px Poppins' + +type Label = Section +type DisplayLabel = DisplaySection + +export function labelAxisGroup(keyAxis: KeyAxisEntry[]) { + // Remove the endkey of the last region, so that the row where the region is located is aligned with the startkey. + if (keyAxis.length > 1) { + keyAxis = keyAxis.slice(1) + } + + let range: [number, number] = [0, 0] + const groups = aggrKeyAxisLabel(keyAxis) + + labelAxisGroup.range = function (val) { + range = val + return this + } + + function labelAxisGroup( + ctx: CanvasRenderingContext2D, + focusDomain: [number, number] | null, + scale: (idx: number) => number + ) { + const width = ctx.canvas.width + const height = ctx.canvas.height + + let scaledGroups = groups.map((group) => + scaleSections(group, focusDomain, range, scale, () => '') + ) + + ctx.clearRect(0, 0, width, height) + ctx.strokeStyle = stroke + ctx.lineWidth = 1 + ctx.textBaseline = 'middle' + for (const [groupIdx, group] of scaledGroups.entries()) { + const marginLeft = groupIdx * (labelAxisWidth + labelAxisMargin) + + for (const label of group) { + const width = labelAxisWidth + const height = label.endPos - label.startPos + + ctx.fillStyle = label.focus ? fillFocus : fill + ctx.beginPath() + ctx.rect(marginLeft, label.startPos, width, height) + ctx.fill() + ctx.stroke() + ctx.closePath() + + if (shouldShowLabelText(label)) { + ctx.font = label.focus ? focusFont : font + ctx.fillStyle = label.focus ? textFillFocus : textFill + ctx.translate( + marginLeft + labelAxisWidth / 2 + 2, + label.endPos - labelTextPadding + ) + ctx.rotate(-Math.PI / 2) + ctx.fillText(fitLabelText(label), 0, 0) + ctx.resetTransform() + ctx.scale(window.devicePixelRatio, window.devicePixelRatio) + } + } + } + } + + return labelAxisGroup +} + +function shouldShowLabelText(label: DisplayLabel): boolean { + return ( + label.endPos - label.startPos >= minTextHeight && label.val?.length !== 0 + ) +} + +function fitLabelText(label: DisplayLabel): string { + const rectWidth = label.endPos - label.startPos + const textLen = Math.floor(rectWidth / 7.5) + return truncateString(label.val, textLen) +} + +function aggrKeyAxisLabel(keyAxis: KeyAxisEntry[]): Label[][] { + let result: Label[][] = _.times(4, () => []) + let notEqual: boolean[] = _.times(keyAxis.length, () => false) + + for (let groupIdx = 0; groupIdx < result.length; groupIdx++) { + let lastLabel: string | null = null + let startKeyIdx: number | null = null + + for (let keyIdx = 0; keyIdx < keyAxis.length; keyIdx++) { + const label = keyAxis[keyIdx].labels[groupIdx] + // When the prefixes are equal and this column is null, it is considered equal to the previous row of labels. + notEqual[keyIdx] = + notEqual[keyIdx] || (label != null && label !== lastLabel) + + if (notEqual[keyIdx]) { + if (startKeyIdx != null && lastLabel != null) { + result[groupIdx].push({ + val: lastLabel, + startIdx: startKeyIdx, + endIdx: keyIdx, + }) + startKeyIdx = null + } + + if (label != null) { + startKeyIdx = keyIdx + } + + lastLabel = label + } + } + + if (startKeyIdx != null && lastLabel != null) { + result[groupIdx].push({ + val: lastLabel, + startIdx: startKeyIdx, + endIdx: keyAxis.length, + }) + } + } + + return result +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/buffer.ts b/ui-ori/lib/apps/KeyViz/heatmap/buffer.ts new file mode 100644 index 0000000000..b24e39e71c --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/buffer.ts @@ -0,0 +1,33 @@ +import * as d3 from 'd3' + +export function createBuffer( + normalizedValues: Uint8Array, + width: number, + height: number, + rasterizedColors: Uint32Array +): HTMLCanvasElement { + const canvas = d3 + .create('canvas') + .attr('width', width) + .attr('height', height) + .node() as HTMLCanvasElement + + console.time('createBuffer') + + const ctx = canvas.getContext('2d') as CanvasRenderingContext2D + const imageDataBuffer = new ArrayBuffer(width * height * 4) + const imageDataPixels = new Uint32Array(imageDataBuffer) + + const len = normalizedValues.length + for (let i = 0; i < len; i++) { + imageDataPixels[i] = rasterizedColors[normalizedValues[i]] + } + + const imageData = ctx.createImageData(width, height) + imageData.data.set(new Uint8ClampedArray(imageDataBuffer)) + ctx.putImageData(imageData, 0, 0) + + console.timeEnd('createBuffer') + + return canvas +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/chart.ts b/ui-ori/lib/apps/KeyViz/heatmap/chart.ts new file mode 100644 index 0000000000..1d3517350b --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/chart.ts @@ -0,0 +1,837 @@ +import * as d3 from 'd3' +import _ from 'lodash' +import { HeatmapRange, HeatmapData, DataTag } from './types' +import { createBuffer } from './buffer' +import { labelAxisGroup } from './axis/label-axis' +import { histogram } from './axis/histogram' +import { getColorScheme, ColorScheme, rasterizeLevel } from './color' +import { tagUnit, withUnit, clickToCopyBehavior } from './utils' + +import legend from './legend' + +const margin = { + top: 25, + right: 40, + bottom: 70, + left: 100, +} + +const tooltipOffset = { + horizontal: 20, + vertical: 20, +} + +type TooltipStatus = { + pinned: boolean + hidden: boolean + x: number + y: number +} + +type FocusStatus = { + xDomain: [number, number] + yDomain: [number, number] +} + +const defaultTooltipStatus = { pinned: false, hidden: true, x: 0, y: 0 } +const heatmapCanvasPixelRatio = Math.max(2, window.devicePixelRatio) + +function normalizeData(d: number[][], maxValue: number) { + const height = d.length > 0 ? d[0].length : 0 + const width = d.length + const len = width * height + const normalized = new Uint8Array(len) + const logMaxValue = Math.log(maxValue) + for (let cIdx = 0; cIdx < width; cIdx++) { + for (let rIdx = 0; rIdx < height; rIdx++) { + const addr = rIdx * width + cIdx + normalized[addr] = + (Math.log(d[cIdx][rIdx]) / logMaxValue) * rasterizeLevel + } + } + return normalized +} + +export async function heatmapChart( + container, + data: HeatmapData, + dataTag: DataTag, + onBrush: (range: HeatmapRange) => void, + onZoom: () => void +) { + const maxValue = + d3.max(data.data[dataTag].map((array) => d3.max(array)!)) || 0 + const normalizedData = normalizeData(data.data[dataTag], maxValue) + + let colorScheme: ColorScheme + let brightness = 1 + let bufferCanvas: HTMLCanvasElement + let zoomTransform = d3.zoomIdentity + let tooltipStatus: TooltipStatus = _.clone(defaultTooltipStatus) + let focusStatus: FocusStatus | null = null + let isBrushing = false + let width = 0 + let height = 0 + let canvasWidth = 0 + let canvasHeight = 0 + + heatmapChart.brightness = function (val: number) { + brightness = val + updateBuffer() + heatmapChart() + } + + heatmapChart.brush = function (enabled: boolean) { + isBrushing = enabled + heatmapChart() + } + + heatmapChart.resetZoom = function () { + zoomTransform = d3.zoomIdentity + heatmapChart() + } + + heatmapChart.size = function (newWidth, newHeight) { + const newCanvasWidth = newWidth - margin.left - margin.right + const newCanvasHeight = newHeight - margin.top - margin.bottom + // Sync transform on resize + if (canvasWidth !== 0 && canvasHeight !== 0) { + zoomTransform = d3.zoomIdentity + .translate( + (zoomTransform.x * newCanvasWidth) / canvasWidth, + (zoomTransform.y * newCanvasHeight) / canvasHeight + ) + .scale(zoomTransform.k) + } + width = newWidth + height = newHeight + canvasWidth = newCanvasWidth + canvasHeight = newCanvasHeight + heatmapChart() + } + + function updateBuffer() { + const d = data.data[dataTag] + const height = d.length > 0 ? d[0].length : 0 + const width = d.length + const newColorScheme = getColorScheme(maxValue, brightness) + bufferCanvas = createBuffer( + normalizedData, + width, + height, + newColorScheme.rasterizedColors + ) + colorScheme = newColorScheme + } + + updateBuffer() + heatmapChart() + + function heatmapChart() { + let xHistogramCanvas = container + .selectAll('canvas.x-histogram') + .data([null]) + xHistogramCanvas = xHistogramCanvas + .enter() + .append('canvas') + .classed('x-histogram', true) + .style('position', 'absolute') + .style('z-index', '100') + .merge(xHistogramCanvas) + .attr('width', canvasWidth * window.devicePixelRatio) + .attr('height', canvasHeight * window.devicePixelRatio) + .style('width', canvasWidth + 'px') + .style('height', 30 + 'px') + .style('margin-top', height - 60 + 'px') + .style('margin-left', margin.left + 'px') + xHistogramCanvas + .node() + .getContext('2d') + .scale(window.devicePixelRatio, window.devicePixelRatio) + + let yHistogramCanvas = container + .selectAll('canvas.y-histogram') + .data([null]) + yHistogramCanvas = yHistogramCanvas + .enter() + .append('canvas') + .classed('y-histogram', true) + .style('position', 'absolute') + .style('z-index', '101') + .merge(yHistogramCanvas) + .attr('width', 30 * window.devicePixelRatio) + .attr('height', canvasHeight * window.devicePixelRatio) + .style('width', 30 + 'px') + .style('height', canvasHeight + 'px') + .style('margin-top', margin.top + 'px') + .style('margin-left', width - 30 + 'px') + yHistogramCanvas + .node() + .getContext('2d') + .scale(window.devicePixelRatio, window.devicePixelRatio) + + let labelCanvas = container.selectAll('canvas.label').data([null]) + labelCanvas = labelCanvas + .enter() + .append('canvas') + .classed('label', true) + .style('position', 'absolute') + .style('z-index', '102') + .merge(labelCanvas) + .style('width', 90 + 'px') + .style('height', canvasHeight + 'px') + .attr('width', 90 * window.devicePixelRatio) + .attr('height', canvasHeight * window.devicePixelRatio) + .style('margin-top', margin.top + 'px') + labelCanvas + .node() + .getContext('2d') + .scale(window.devicePixelRatio, window.devicePixelRatio) + + let canvas = container.selectAll('canvas.heatmap').data([null]) + canvas = canvas + .enter() + .append('canvas') + .classed('heatmap', true) + .style('position', 'absolute') + .style('z-index', '103') + .merge(canvas) + .attr('width', canvasWidth * heatmapCanvasPixelRatio) + .attr('height', canvasHeight * heatmapCanvasPixelRatio) + .style('width', canvasWidth + 'px') + .style('height', canvasHeight + 'px') + .style('margin-top', margin.top + 'px') + .style('margin-right', margin.right + 'px') + .style('margin-bottom', margin.bottom + 'px') + .style('margin-left', margin.left + 'px') + const ctx: CanvasRenderingContext2D = canvas.node().getContext('2d') + ctx.imageSmoothingEnabled = false + ctx.scale(heatmapCanvasPixelRatio, heatmapCanvasPixelRatio) + + let axis = container.selectAll('svg').data([null]) + axis = axis + .enter() + .append('svg') + .style('position', 'absolute') + .style('z-index', '200') + .merge(axis) + .style('width', width + 'px') + .style('height', height + 'px') + + let tooltipLayer = container.selectAll('div').data([null]) + tooltipLayer = tooltipLayer + .enter() + .append('div') + .style('position', 'absolute') + .style('z-index', '300') + .style('pointer-events', 'none') + .merge(tooltipLayer) + .style('width', width + 'px') + .style('height', height + 'px') + + const xScale = d3 + .scaleLinear() + .domain([0, data.timeAxis.length - 1]) + .range([0, canvasWidth]) + + const yScale = d3 + .scaleLinear() + .domain([0, data.keyAxis.length - 1]) + .range([0, canvasHeight]) + + const xAxis = d3 + .axisBottom(xScale) + .tickFormat((idx) => + data.timeAxis[idx as number] !== undefined + ? d3.timeFormat('%Y-%m-%d %H:%M:%S')( + new Date(data.timeAxis[idx as number] * 1000) + ) + : '' + ) + .ticks(width / 270) + + const labelAxis = labelAxisGroup(data.keyAxis).range([0, canvasHeight]) + + const histogramAxis = histogram(data.data[dataTag]) + .xRange([0, canvasWidth]) + .yRange([0, canvasHeight]) + + let xAxisG = axis.selectAll('g.x-axis').data([null]) + xAxisG = xAxisG + .enter() + .append('g') + .classed('x-axis', true) + .merge(xAxisG) + .attr('transform', 'translate(' + margin.left + ',' + (height - 20) + ')') + + d3.zoom().transform(axis, zoomTransform) + + const zoomBehavior = d3 + .zoom() + .scaleExtent([1, 128]) + .on('zoom', zooming) + .on('end', zoomEnd) + + function constrainBoucing(transform) { + const bounceRatio = 0.8 + const dragLeft = Math.max(0, transform.applyX(0)) + const dragRight = Math.max(0, canvasWidth - transform.applyX(canvasWidth)) + const dragTop = Math.max(0, transform.applyY(0)) + const dragBottom = Math.max( + 0, + canvasHeight - transform.applyY(canvasHeight) + ) + return d3.zoomIdentity + .translate( + Math.floor(transform.x - (dragLeft - dragRight) * bounceRatio), + Math.floor(transform.y - (dragTop - dragBottom) * bounceRatio) + ) + .scale(transform.k) + } + + function constrainHard(transform) { + let dx0 = transform.invertX(0), + dx1 = transform.invertX(canvasWidth) - canvasWidth, + dy0 = transform.invertY(0), + dy1 = transform.invertY(canvasHeight) - canvasHeight + return transform.translate( + dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), + dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) + ) + } + + function zooming() { + onZoom() + if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') { + zoomTransform = constrainBoucing(d3.event.transform) + hideTooltips() + } else { + zoomTransform = constrainHard(d3.event.transform) + showTooltips() + } + render() + } + + function zoomEnd() { + zoomTransform = constrainHard(zoomTransform) + axis.call(d3.zoom().transform, zoomTransform) + if (tooltipStatus.pinned) { + showTooltips() + } + render() + } + + function focusPoint(x: number, y: number) { + focusStatus = { xDomain: [x, x + 0.001], yDomain: [y, y + 0.001] } + } + + function hoverBehavior(axis) { + axis.on('mousemove', () => { + showTooltips() + render() + }) + + axis.on('mouseout', () => { + if (!tooltipStatus.pinned && !isBrushing) { + focusStatus = null + render() + } + }) + } + + function showTooltips() { + tooltipStatus.hidden = false + + if (!tooltipStatus.pinned) { + const mouseCanvasOffset = d3.mouse(canvas.node()) + if (isNaN(mouseCanvasOffset[0])) return + + const xRescale = zoomTransform.rescaleX(xScale) + const yRescale = zoomTransform.rescaleY(yScale) + const x = xRescale.invert(mouseCanvasOffset[0]) + const y = yRescale.invert(mouseCanvasOffset[1]) + + if (!isBrushing) focusPoint(x, y) + + if ( + mouseCanvasOffset[0] < 0 || + mouseCanvasOffset[0] > canvasWidth || + mouseCanvasOffset[1] < 0 || + mouseCanvasOffset[1] > canvasHeight + ) { + hideTooltips() + } else { + tooltipStatus.x = x + tooltipStatus.y = y + } + } + } + + function hideTooltips() { + tooltipStatus.hidden = true + } + + function hideAxisTicksWithoutLabel() { + axis.selectAll('.tick text').each(function () { + if (this.innerHTML === '') { + this.parentNode.style.display = 'none' + } + }) + } + + axis.on('click', clicked) + + function clicked() { + if (d3.event.defaultPrevented) return // zoom + + const mouseCanvasOffset = d3.mouse(canvas.node()) + if ( + mouseCanvasOffset[0] < 0 || + mouseCanvasOffset[0] > canvasWidth || + mouseCanvasOffset[1] < 0 || + mouseCanvasOffset[1] > canvasHeight + ) { + return + } + + tooltipStatus.pinned = !tooltipStatus.pinned + showTooltips() + render() + } + + axis.call(zoomBehavior) + axis.call(hoverBehavior) + + function render() { + renderHeatmap() + // renderHighlight() + renderAxis() + renderBrush() + renderTooltip() + renderCross() + legend(colorScheme, dataTag) + } + + function renderHeatmap() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight) + ctx.drawImage( + bufferCanvas, + xScale.invert(zoomTransform.invertX(0)), + yScale.invert(zoomTransform.invertY(0)), + xScale.invert(canvasWidth * (1 / zoomTransform.k)), + yScale.invert(canvasHeight * (1 / zoomTransform.k)), + 0, + 0, + canvasWidth, + canvasHeight + ) + } + + // function renderHighlight() { + // const selectedData = data.data[dataTag] + // const xLen = selectedData.length + // const yLen = selectedData[0].length + // const xRescale = zoomTransform.rescaleX(xScale) + // const yRescale = zoomTransform.rescaleY(yScale) + // const xStartIdx = Math.max(0, Math.floor(xScale.invert(0))) + // const xEndIdx = Math.min(xLen - 1, Math.ceil(xScale.invert(canvasWidth))) + // const yStartIdx = Math.max(0, Math.floor(yScale.invert(0))) + // const yEndIdx = Math.min(yLen - 1, Math.ceil(yScale.invert(canvasHeight))) + + // ctx.shadowColor = '#fff' + // ctx.shadowBlur = 9 + zoomTransform.k // 10 + 1 * (zoomTransform.k - 1) + // ctx.fillStyle = 'blue' + // for (let x = xStartIdx; x < xEndIdx; x++) { + // for (let y = yStartIdx; y < yEndIdx; y++) { + // if (selectedData[x][y] > maxValue / 2) { + // const left = xRescale(x) + // const top = yRescale(y) + // const right = xRescale(x + 1) + // const bottom = yRescale(y + 1) + // const width = right - left + // const height = bottom - top + // const xPadding = ((0.8 + 0.5 * (1 - 1 / zoomTransform.k)) * width) / height + // const yPadding = ((0.8 + 0.5 * (1 - 1 / zoomTransform.k)) * height) / width + // ctx.beginPath() + // ctx.shadowOffsetX = (left + 1000) * heatmapCanvasPixelRatio + // ctx.shadowOffsetY = (top + 1000) * heatmapCanvasPixelRatio + // ctx.fillRect(-1000 - xPadding, -1000 - yPadding, right - left + xPadding * 2, bottom - top + yPadding * 2) + // ctx.closePath() + // } + // } + // } + // } + + function renderAxis() { + const xRescale = zoomTransform.rescaleX(xScale) + const yRescale = zoomTransform.rescaleY(yScale) + histogramAxis( + xHistogramCanvas.node().getContext('2d'), + yHistogramCanvas.node().getContext('2d'), + focusStatus?.xDomain, + focusStatus?.yDomain, + xRescale, + yRescale + ) + labelAxis( + labelCanvas.node().getContext('2d'), + focusStatus?.yDomain, + yRescale + ) + xAxisG.call(xAxis.scale(xRescale)) + hideAxisTicksWithoutLabel() + } + + function renderBrush() { + if (isBrushing) { + const brush = d3 + .brush() + .extent([ + [0, 0], + [canvasWidth, canvasHeight], + ]) + .on('start', brushStart) + .on('brush', brushing) + .on('end', brushEnd) + + let brushSvg = axis.selectAll('g.brush').data([null]) + brushSvg = brushSvg + .enter() + .append('g') + .classed('brush', true) + .merge(brushSvg) + .attr( + 'transform', + 'translate(' + margin.left + ',' + margin.top + ')' + ) + .call(brush) + + function brushStart() { + hideTooltips() + render() + } + + function brushing() { + const selection = d3.event.selection + if (selection) { + const xRescale = zoomTransform.rescaleX(xScale) + const yRescale = zoomTransform.rescaleY(yScale) + focusStatus = { + xDomain: [ + xRescale.invert(selection[0][0]), + xRescale.invert(selection[1][0]), + ], + yDomain: [ + yRescale.invert(selection[0][1]), + yRescale.invert(selection[1][1]), + ], + } + render() + } + } + + function brushEnd() { + brushSvg.remove() + isBrushing = false + + const selection = d3.event.selection + if (selection) { + brush.move(brushSvg, null) + const xRescale = zoomTransform.rescaleX(xScale) + const yRescale = zoomTransform.rescaleY(yScale) + const startTime = + data.timeAxis[Math.floor(xRescale.invert(selection[0][0]))] + const endTime = + data.timeAxis[Math.ceil(xRescale.invert(selection[1][0]))] + const startKey = + data.keyAxis[Math.ceil(yRescale.invert(selection[1][1]))].key + const endKey = + data.keyAxis[Math.floor(yRescale.invert(selection[0][1]))].key + + onBrush({ + starttime: startTime, + endtime: endTime, + startkey: startKey, + endkey: endKey, + }) + } + + showTooltips() + render() + } + } else { + axis.selectAll('g.brush').remove() + } + } + + function getTooltipOverviewLabel(keyIdx) { + const startLabel = data.keyAxis[keyIdx]!.labels + const endLabel = data.keyAxis[keyIdx - 1]!.labels + + if (!startLabel && !endLabel) { + return [] + } + if (!startLabel) { + return endLabel + } + if (!endLabel || _.isEqual(startLabel, endLabel)) { + return startLabel + } + + const startLen = startLabel.length + const endLen = endLabel.length + + // Cross start boundary, only use end label + if ( + startLen >= 1 && + startLen + 1 === endLen && + _.isEqual(startLabel, endLabel.slice(0, startLen)) + ) { + return endLabel + } + // range + if ( + startLen >= 3 && + startLen === endLen && + _.isEqual( + startLabel.slice(0, startLen - 1), + endLabel.slice(0, startLen - 1) + ) + ) { + return [ + ...startLabel.slice(0, startLen - 1), + `${startLabel[startLen - 1]} ~ ${endLabel[startLen - 1]}`, + ] + } + // Cross end boundary, only use start label + return startLabel + } + + function renderTooltip() { + if (tooltipStatus.hidden) { + tooltipLayer.selectAll('div').remove() + return + } + + const timeIdx = Math.floor(tooltipStatus.x) + const keyIdx = Math.floor(tooltipStatus.y) + + if (data.keyAxis[keyIdx] == null || data.keyAxis[keyIdx + 1] == null) { + return + } + + if ( + data.timeAxis[timeIdx] == null || + data.timeAxis[timeIdx + 1] == null + ) { + return + } + + const xRescale = zoomTransform.rescaleX(xScale) + const yRescale = zoomTransform.rescaleY(yScale) + const canvasOffset = [ + xRescale(tooltipStatus.x), + yRescale(tooltipStatus.y), + ] + + let tooltipDiv = tooltipLayer.selectAll('div').data([null]) + tooltipDiv = tooltipDiv + .enter() + .append('div') + .style('position', 'absolute') + // .style('width', tooltipSize.width + 'px') + // .style('height', tooltipSize.height + 'px') + .classed('tooltip', true) + .merge(tooltipDiv) + .style('pointer-events', tooltipStatus.pinned ? 'all' : 'none') + + if (canvasOffset[0] < canvasWidth / 2) { + // Left half + const v = canvasOffset[0] + tooltipOffset.horizontal + margin.left + tooltipDiv.style('left', `${v}px`).style('right', 'auto') + } else { + // Right half + const v = + canvasWidth - + canvasOffset[0] + + tooltipOffset.horizontal + + margin.right + tooltipDiv.style('right', `${v}px`).style('left', 'auto') + } + + if (canvasOffset[1] < canvasHeight / 2) { + // Top half + const v = canvasOffset[1] + tooltipOffset.vertical + margin.top + tooltipDiv.style('top', `${v}px`).style('bottom', 'auto') + } else { + // Bottom half + const v = + canvasHeight - + canvasOffset[1] + + tooltipOffset.vertical + + margin.bottom + tooltipDiv.style('bottom', `${v}px`).style('top', 'auto') + } + + const value = data.data[dataTag]?.[timeIdx]?.[keyIdx] + + let valueDiv = tooltipDiv.selectAll('div.value').data([null]) + valueDiv = valueDiv + .enter() + .append('div') + .classed('value', true) + .merge(valueDiv) + + let valueText = valueDiv.selectAll('div.value').data([null]) + valueText + .enter() + .append('div') + .classed('value', true) + .merge(valueText) + .text(withUnit(value)) + .style('color', colorScheme.label(value)) + .style('background-color', colorScheme.background(value)) + + let unitText = valueDiv.selectAll('div.unit').data([null]) + unitText + .enter() + .append('div') + .classed('unit', true) + .merge(unitText) + .text(tagUnit(dataTag)) + + const timeText = [timeIdx, timeIdx + 1] + .map((idx) => + d3.timeFormat('%Y-%m-%d\n%H:%M:%S')( + new Date(data.timeAxis[idx] * 1000) + ) + ) + .join(' ~ ') + + let timeDiv = tooltipDiv.selectAll('button.time').data([timeText]) + timeDiv + .enter() + .append('button') + .classed('time', true) + .merge(timeDiv) + .call(clickToCopyBehavior, (d) => d) + .text((d) => d) + + let overviewLabelDiv = tooltipDiv + .selectAll('div.overviewLabel') + .data([keyIdx + 1]) + overviewLabelDiv = overviewLabelDiv + .enter() + .append('div') + .classed('overviewLabel', true) + .merge(overviewLabelDiv) + + let overviewSubLabel = overviewLabelDiv + .selectAll('.subLabel') + .style('display', 'none') + .data((keyIdx) => getTooltipOverviewLabel(keyIdx)) + + overviewSubLabel + .enter() + .append('button') + .classed('subLabel', true) + .merge(overviewSubLabel) + .call(clickToCopyBehavior, (d) => d) + .text((d, idx) => { + // Prefix with spaces + return '\u00A0'.repeat(idx * 2) + d + }) + .style('display', 'block') + + let keyContainer = tooltipDiv.selectAll('div.keyContainer').data([ + { + desc: 'Start Key (Incl.):', + idx: keyIdx + 1, + }, + { + desc: 'End key (Excl.):', + idx: keyIdx, + }, + ]) + + keyContainer = keyContainer + .enter() + .append('div') + .classed('keyContainer', true) + .merge(keyContainer) + + let descText = keyContainer.selectAll('.desc').data((d) => [d]) + descText + .enter() + .append('div') + .classed('desc', true) + .merge(descText) + .text(({ desc }) => desc) + + let keyText = keyContainer.selectAll('button.key').data((d) => [d]) + keyText + .enter() + .append('button') + .classed('key', true) + .merge(keyText) + .call(clickToCopyBehavior, ({ idx }) => data.keyAxis[idx]!.key) + .text(({ idx }) => data.keyAxis[idx]!.key) + } + + function renderCross() { + if (tooltipStatus.pinned) { + const xRescale = zoomTransform.rescaleX(xScale) + const yRescale = zoomTransform.rescaleY(yScale) + const canvasOffset = [ + xRescale(tooltipStatus.x), + yRescale(tooltipStatus.y), + ] + const crossCenterPadding = 3 + const crossBorder = 1 + const crossSize = 8 + const crossWidth = 2 + + ctx.lineWidth = crossWidth + 2 * crossBorder + ctx.strokeStyle = '#111' + ctx.beginPath() + ctx.moveTo(canvasOffset[0], canvasOffset[1] - crossSize - crossBorder) + ctx.lineTo( + canvasOffset[0], + canvasOffset[1] - crossCenterPadding + crossBorder + ) + ctx.moveTo( + canvasOffset[0], + canvasOffset[1] + crossCenterPadding - crossBorder + ) + ctx.lineTo(canvasOffset[0], canvasOffset[1] + crossSize + crossBorder) + ctx.moveTo(canvasOffset[0] - crossSize - crossBorder, canvasOffset[1]) + ctx.lineTo( + canvasOffset[0] - crossCenterPadding + crossBorder, + canvasOffset[1] + ) + ctx.moveTo( + canvasOffset[0] + crossCenterPadding - crossBorder, + canvasOffset[1] + ) + ctx.lineTo(canvasOffset[0] + crossSize + crossBorder, canvasOffset[1]) + ctx.stroke() + ctx.lineWidth = crossWidth + ctx.strokeStyle = '#eee' + ctx.beginPath() + ctx.moveTo(canvasOffset[0], canvasOffset[1] - crossSize) + ctx.lineTo(canvasOffset[0], canvasOffset[1] - crossCenterPadding) + ctx.moveTo(canvasOffset[0], canvasOffset[1] + crossCenterPadding) + ctx.lineTo(canvasOffset[0], canvasOffset[1] + crossSize) + ctx.moveTo(canvasOffset[0] - crossSize, canvasOffset[1]) + ctx.lineTo(canvasOffset[0] - crossCenterPadding, canvasOffset[1]) + ctx.moveTo(canvasOffset[0] + crossCenterPadding, canvasOffset[1]) + ctx.lineTo(canvasOffset[0] + crossSize, canvasOffset[1]) + ctx.stroke() + } + } + + render() + } + + return heatmapChart +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/color.ts b/ui-ori/lib/apps/KeyViz/heatmap/color.ts new file mode 100644 index 0000000000..71e49688fb --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/color.ts @@ -0,0 +1,62 @@ +import * as d3 from 'd3' + +const heatmapColor = d3.interpolateRgbBasis([ + '#000000', + '#080808', + '#090909', + '#101010', + '#111111', + '#121212', + '#131313', + '#141414', + '#151515', + '#171717', + '#181818', + '#191919', + '#410c74', + '#72067b', + '#b00f53', + '#fcc734', + '#fbfc43', + '#ffffb0', +]) + +export const rasterizeLevel = 100 + +export type ColorScale = (val: number) => d3.RGBColor +export type ColorScheme = { + background: ColorScale + label: ColorScale + maxValue: number + rasterizedColors: Uint32Array +} + +export function getColorScheme( + maxValue: number, + brightness: number +): ColorScheme { + const logScale = (d3 as any).scaleSymlog().domain([0, maxValue / brightness]) + const backgroundColorScale = (d: number) => + d3.color(heatmapColor(logScale(d)))! as d3.RGBColor + const labelColorScale = (d: number) => + d3.hsl(backgroundColorScale(d)).l > 0.5 + ? (d3.color('black')! as d3.RGBColor) + : (d3.color('white')! as d3.RGBColor) + + const rasterizedColors = new Uint32Array(rasterizeLevel + 1) + for (let i = 0; i <= rasterizeLevel; i++) { + const color = d3.color( + backgroundColorScale(Math.pow(maxValue, i / rasterizeLevel)) + ) + const colorRgb = color.rgb() + rasterizedColors[i] = + colorRgb.r | (colorRgb.g << 8) | (colorRgb.b << 16) | 0xff000000 + } + + return { + background: backgroundColorScale, + label: labelColorScale, + maxValue: maxValue, + rasterizedColors, + } +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/index.tsx b/ui-ori/lib/apps/KeyViz/heatmap/index.tsx new file mode 100644 index 0000000000..1930e3e340 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/index.tsx @@ -0,0 +1,57 @@ +import React, { useRef, useEffect } from 'react' +import * as d3 from 'd3' +import { useEventListener } from 'ahooks' +import { heatmapChart } from './chart' +import { HeatmapData, DataTag, HeatmapRange } from './types' + +type HeatmapProps = { + data: HeatmapData + dataTag: DataTag + onBrush: (selection: HeatmapRange) => void + onZoom: () => void + onChartInit: (any) => void +} + +function _Heatmap(props) { + const divRef: React.RefObject = useRef(null) + const chart = useRef(null) + + function updateChartSize() { + if (divRef.current == null) { + return + } + if (!chart.current) { + return + } + const container = divRef.current + const width = container.offsetWidth + const height = container.offsetHeight + chart.current.size(width, height) + } + + useEffect(() => { + const init = async () => { + if (divRef.current != null) { + const container = divRef.current + chart.current = await heatmapChart( + d3.select(container), + props.data, + props.dataTag, + props.onBrush, + props.onZoom + ) + props.onChartInit(chart.current) + updateChartSize() + } + } + init() + }, [props, props.data, props.dataTag]) + + useEventListener('resize', () => { + updateChartSize() + }) + + return
+} + +export const Heatmap = React.memo(_Heatmap) diff --git a/ui-ori/lib/apps/KeyViz/heatmap/legend.ts b/ui-ori/lib/apps/KeyViz/heatmap/legend.ts new file mode 100644 index 0000000000..6ba86e8ef0 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/legend.ts @@ -0,0 +1,86 @@ +import * as d3 from 'd3' +import _ from 'lodash' + +import { ColorScheme } from './color' +import { DataTag } from './types' +import { tagUnit, withUnit } from './utils' + +export default function (colorScheme: ColorScheme, dataTag: DataTag) { + let marginRight = 120 + let width = 500 + let height = 50 + let innerWidth = width - marginRight + let innerHeight = 26 + let tickCount = 5 + + if (document.querySelector('.PD-Cluster-Legend') === null) { + return + } + let container = (d3 as any) + .select('.PD-Cluster-Legend') + .style('width', `${width}px`) + .style('height', `${height}px`) + + let xScale = (d3 as any) + .scaleSymlog() + .domain([colorScheme.maxValue / 1000, colorScheme.maxValue]) + .range([0, innerWidth]) + + let canvas = container.selectAll('canvas').data([null]) + canvas = canvas + .enter() + .append('canvas') + .style('position', 'absolute') + .style('left', '0px') + .style('top', '0px') + .merge(canvas) + .attr('width', width) + .attr('height', height) + + const ctx: CanvasRenderingContext2D = canvas.node().getContext('2d') + + for (let x = 0; x < innerWidth; x++) { + ctx.fillStyle = colorScheme.background(xScale.invert(x)).toString() + ctx.fillRect(x, 0, 1, innerHeight) + } + + let xAxis = d3 + .axisBottom(xScale) + .tickValues( + _.range(0, tickCount + 1).map((d) => + xScale.invert((innerWidth * d) / tickCount) + ) + ) + .tickSize(innerHeight) + .tickFormat((d) => withUnit(d as number)) + + let svg = container.selectAll('svg').data([null]) + svg = svg + .enter() + .append('svg') + .style('position', 'absolute') + .style('left', '0px') + .style('top', '0px') + .merge(svg) + .attr('width', width) + .attr('height', height) + + let xAxisG = svg.selectAll('g').data([null]) + xAxisG + .enter() + .append('g') + .merge(xAxisG) + .call(xAxis) + .call((g) => { + g.selectAll('.tick text').attr('y', innerHeight + 6) + g.selectAll('.domain').remove() + }) + + let unitLabel = container.selectAll('div').data([null]) + unitLabel + .enter() + .append('div') + .classed('unit', true) + .merge(unitLabel) + .text(tagUnit(dataTag)) +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/types.ts b/ui-ori/lib/apps/KeyViz/heatmap/types.ts new file mode 100644 index 0000000000..c365b19e7e --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/types.ts @@ -0,0 +1,18 @@ +import { DecoratorLabelKey, MatrixMatrix } from '@lib/client' + +export type KeyAxisEntry = DecoratorLabelKey +export type HeatmapData = MatrixMatrix + +export type DataTag = + | 'integration' + | 'written_bytes' + | 'read_bytes' + | 'written_keys' + | 'read_keys' + +export type HeatmapRange = { + starttime?: number + endtime?: number + startkey?: string + endkey?: string +} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/utils.ts b/ui-ori/lib/apps/KeyViz/heatmap/utils.ts new file mode 100644 index 0000000000..29b4830812 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/heatmap/utils.ts @@ -0,0 +1,74 @@ +import * as d3 from 'd3' + +import { DataTag } from './types' + +export function tagUnit(tag: DataTag): string { + switch (tag) { + case 'integration': + return 'bytes/min' + case 'read_bytes': + return 'bytes/min' + case 'written_bytes': + return 'bytes/min' + case 'read_keys': + return 'keys/min' + case 'written_keys': + return 'keys/min' + } +} + +export function withUnit(val: number): string { + val = val || 0 + if (val > 1024 * 1024 * 1024) { + return (val / 1024 / 1024 / 1024).toFixed(2) + ' G' + } else if (val > 1024 * 1024) { + return (val / 1024 / 1024).toFixed(2) + ' M' + } else if (val > 1024) { + return (val / 1024).toFixed(2) + ' K' + } else { + return val.toFixed(2) + } +} + +export function truncateString(str: string, len: number): string { + if (str.length > len) { + return ( + str.substr(0, len / 2 - 1) + + '....' + + str.substr(str.length - len / 2 + 1, str.length) + ) + } else { + return str + } +} + +export function clickToCopyBehavior(selection, map) { + selection.each(function (d) { + d3.select(this).on('click', () => { + copyToClipboard(map(d)) + }) + }) +} + +function copyToClipboard(text: string) { + const input = d3.select('body').append('input').attr('value', text) + input.node()!.select() + document.execCommand('copy') + input.remove() +} + +export function doEventsOnYield(generator): Promise { + return new Promise((resolve, reject) => { + let g = generator() + let advance = () => { + try { + let r = g.next() + if (r.done) resolve() + } catch (e) { + reject(e) + } + setTimeout(advance, 0) + } + advance() + }) +} diff --git a/ui-ori/lib/apps/KeyViz/index.meta.ts b/ui-ori/lib/apps/KeyViz/index.meta.ts new file mode 100644 index 0000000000..7af2277efd --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/index.meta.ts @@ -0,0 +1,9 @@ +import { EyeOutlined } from '@ant-design/icons' + +export default { + id: 'keyviz', + routerPrefix: '/keyviz', + icon: EyeOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_keyviz" */ '.'), +} diff --git a/ui-ori/lib/apps/KeyViz/index.tsx b/ui-ori/lib/apps/KeyViz/index.tsx new file mode 100644 index 0000000000..0b613a74d5 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/index.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import { Root } from '@lib/components' +import KeyViz from './components/KeyViz' + +export default () => { + return ( + + + + ) +} diff --git a/ui-ori/lib/apps/KeyViz/translations/en.yaml b/ui-ori/lib/apps/KeyViz/translations/en.yaml new file mode 100644 index 0000000000..c302bef2d8 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/translations/en.yaml @@ -0,0 +1,39 @@ +keyviz: + nav_title: Key Visualizer + toolbar: + brightness: Brightness + zoom: + select: Select & Zoom + reset: Reset + refresh: Refresh + auto_refresh: + title: Auto Refresh + off: Off + view_type: + read_bytes: Read (bytes) + write_bytes: Write (bytes) + read_keys: Read (keys) + write_keys: Write (keys) + all: All + settings: + title: Settings + disabled_result: + title: Feature Not Enabled + sub_title: | + Key Visualizer feature is not enabled so that visual reports cannot be viewed. + You can modify settings to enable the feature and wait for new data being collected. + open_setting: Open Settings + close_keyviz: Disable Key Visualizer Feature + close_keyviz_warning: Are you sure want to disable this feature? Current visual reports will be cleared. + switch: Enable Feature + switch_tooltip: Whether Key Visualizer feature is enabled. When enabled, there will be small overhead. + policy: Policy + policy_db: '{{distro.tidb}}' + policy_kv: Raw KV + separator: Separator + separator_placeholder: The separator used to split Key + separator_empty_warning: If left blank, Key will not be split + actions: + save: Save + close: Disable + cancel: Cancel diff --git a/ui-ori/lib/apps/KeyViz/translations/zh.yaml b/ui-ori/lib/apps/KeyViz/translations/zh.yaml new file mode 100644 index 0000000000..336dd6eb12 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/translations/zh.yaml @@ -0,0 +1,39 @@ +keyviz: + nav_title: 流量可视化 + toolbar: + brightness: 调整亮度 + zoom: + select: 框选 + reset: 重置 + refresh: 刷新 + auto_refresh: + title: 自动刷新 + off: 关闭 + view_type: + read_bytes: 读取字节量 + write_bytes: 写入字节量 + read_keys: 读取次数 + write_keys: 写入次数 + all: 所有 + settings: + title: 设置 + disabled_result: + title: 该功能未启用 + sub_title: | + 流量可视化功能未启用,因此无法查看可视化报告。 + 您可以修改设置打开该功能后等待新数据收集。 + open_setting: 打开设置 + close_keyviz: 关闭流量可视化功能 + close_keyviz_warning: 确认要关闭该功能吗?关闭后现有历史记录也将被清空! + switch: 启用功能 + switch_tooltip: 是否启用流量可视化功能,关闭后将不能使用流量可视化功能,但能减少一些 {{distro.pd}} 的 CPU 资源开销。 + policy: 模式 + policy_db: '{{distro.tidb}}' + policy_kv: 原生 KV + separator: 分隔符 + separator_placeholder: 用于切分 Key 的分隔符 + separator_empty_warning: 分隔符为空串时,Key 将不会被切分 + actions: + save: 保存 + close: 确认 + cancel: 取消 diff --git a/ui-ori/lib/apps/KeyViz/utils/api.ts b/ui-ori/lib/apps/KeyViz/utils/api.ts new file mode 100644 index 0000000000..7f3ae4f978 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/utils/api.ts @@ -0,0 +1,31 @@ +import client from '@lib/client' +import { HeatmapData, HeatmapRange, DataTag } from '../heatmap/types' + +export async function fetchHeatmap( + selection?: HeatmapRange, + type: DataTag = 'written_bytes' +): Promise { + const resp = await client + .getInstance() + .keyvisualHeatmapsGet( + selection?.startkey, + selection?.endkey, + selection?.starttime, + selection?.endtime, + type + ) + reverse(resp.data) + return resp.data +} + +// Reverse the columns (key axis) of the matrix +// so that the direction of the axis matches the first quadrant +function reverse(data: HeatmapData) { + data.keyAxis.reverse() + for (const tag in data.data) { + const d = data.data[tag] + for (let col of d) { + col.reverse() + } + } +} diff --git a/ui-ori/lib/apps/KeyViz/utils/index.ts b/ui-ori/lib/apps/KeyViz/utils/index.ts new file mode 100644 index 0000000000..3318fdbc97 --- /dev/null +++ b/ui-ori/lib/apps/KeyViz/utils/index.ts @@ -0,0 +1 @@ +export * from './api' diff --git a/ui-ori/lib/apps/Overview/components/Instances.tsx b/ui-ori/lib/apps/Overview/components/Instances.tsx new file mode 100644 index 0000000000..8748b396af --- /dev/null +++ b/ui-ori/lib/apps/Overview/components/Instances.tsx @@ -0,0 +1,115 @@ +import { Link } from 'react-router-dom' +import React, { useMemo } from 'react' +import { Card, AnimatedSkeleton, Descriptions } from '@lib/components' +import { useTranslation } from 'react-i18next' +import { useClientRequest } from '@lib/utils/useClientRequest' +import client from '@lib/client' +import { Typography, Row, Col, Space } from 'antd' +import { + STATUS_OFFLINE, + STATUS_TOMBSTONE, + STATUS_UP, +} from '@lib/apps/ClusterInfo/status/status' +import { RightOutlined, WarningOutlined } from '@ant-design/icons' +import { Stack } from 'office-ui-fabric-react/lib/Stack' + +import styles from './Styles.module.less' + +function ComponentItem(props: { + name: string + resp: { data?: { status?: number }[]; isLoading: boolean; error?: any } +}) { + const { name, resp } = props + const [upNums, allNums] = useMemo(() => { + if (!resp.data) { + return [0, 0] + } + let up = 0 + let all = 0 + for (const instance of resp.data) { + all++ + if ( + instance.status === STATUS_UP || + instance.status === STATUS_TOMBSTONE || + instance.status === STATUS_OFFLINE + ) { + up++ + } + } + return [up, all] + }, [resp]) + + return ( + + {!resp.error && ( + + + + {upNums} + / {allNums} + + + + )} + {resp.error && ( + + + Error + + + )} + + ) +} + +export default function Nodes() { + const { t } = useTranslation() + const tidbResp = useClientRequest((reqConfig) => + client.getInstance().getTiDBTopology(reqConfig) + ) + const storeResp = useClientRequest((reqConfig) => + client.getInstance().getStoreTopology(reqConfig) + ) + const tiKVResp = { + ...storeResp, + data: storeResp.data?.tikv, + } + const tiFlashResp = { + ...storeResp, + data: storeResp.data?.tiflash, + } + const pdResp = useClientRequest((reqConfig) => + client.getInstance().getPDTopology(reqConfig) + ) + + return ( + + {t('overview.instances.title')} + + + } + noMarginLeft + > + + + + + + + + + + + + + + + + + + + + ) +} diff --git a/ui-ori/lib/apps/Overview/components/MonitorAlert.tsx b/ui-ori/lib/apps/Overview/components/MonitorAlert.tsx new file mode 100644 index 0000000000..fdb6160d91 --- /dev/null +++ b/ui-ori/lib/apps/Overview/components/MonitorAlert.tsx @@ -0,0 +1,102 @@ +import React, { useEffect, useState } from 'react' +import { RightOutlined, WarningOutlined } from '@ant-design/icons' +import { Card, AnimatedSkeleton } from '@lib/components' +import client from '@lib/client' +import { Link } from 'react-router-dom' +import { useTranslation } from 'react-i18next' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { Space, Typography } from 'antd' +import { Stack } from 'office-ui-fabric-react/lib/Stack' + +export default function MonitorAlert() { + const { t } = useTranslation() + const [alertCounter, setAlertCounter] = useState(0) + + const { data: amData, isLoading: amIsLoading } = useClientRequest( + (reqConfig) => client.getInstance().getAlertManagerTopology(reqConfig) + ) + const { data: grafanaData, isLoading: grafanaIsLoading } = useClientRequest( + (reqConfig) => client.getInstance().getGrafanaTopology(reqConfig) + ) + + useEffect(() => { + if (!amData) { + return + } + async function fetch() { + let resp = await client + .getInstance() + .getAlertManagerCounts(`${amData!.ip}:${amData!.port}`) + setAlertCounter(resp.data) + } + fetch() + }, [amData]) + + return ( + + + + {!grafanaData && ( + + + + {t('overview.monitor_alert.view_monitor_warn')} + + + )} + {grafanaData && ( + + + {t('overview.monitor_alert.view_monitor')} + + + + )} + + + {!amData && ( + + + + {t('overview.monitor_alert.view_alerts_warn')} + + + )} + {amData && ( + + + 0 ? 'danger' : undefined}> + {alertCounter === 0 + ? t('overview.monitor_alert.view_zero_alerts') + : t('overview.monitor_alert.view_alerts', { + alertCount: alertCounter, + })} + + + + + )} + +
+ + + {t('overview.monitor_alert.run_diagnose')} + + + +
+
+
+ ) +} diff --git a/ui-ori/lib/apps/Overview/components/RecentSlowQueries.tsx b/ui-ori/lib/apps/Overview/components/RecentSlowQueries.tsx new file mode 100644 index 0000000000..03306b5d42 --- /dev/null +++ b/ui-ori/lib/apps/Overview/components/RecentSlowQueries.tsx @@ -0,0 +1,43 @@ +import { RightOutlined } from '@ant-design/icons' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' + +import { DateTime } from '@lib/components' +import { + SlowQueriesTable, + useSlowQueryTableController, + DEF_SLOW_QUERY_COLUMN_KEYS, + DEF_SLOW_QUERY_OPTIONS, +} from '@lib/apps/SlowQuery' + +export default function RecentSlowQueries() { + const { t } = useTranslation() + const controller = useSlowQueryTableController( + null, + DEF_SLOW_QUERY_COLUMN_KEYS, + false, + { ...DEF_SLOW_QUERY_OPTIONS, limit: 10 }, + false + ) + const { + queryTimeRange: { beginTime, endTime }, + } = controller + + return ( + + {t('overview.recent_slow_query.title')} + + } + subTitle={ + + ~{' '} + + + } + /> + ) +} diff --git a/ui-ori/lib/apps/Overview/components/RecentStatements.tsx b/ui-ori/lib/apps/Overview/components/RecentStatements.tsx new file mode 100644 index 0000000000..a39fd7cf5a --- /dev/null +++ b/ui-ori/lib/apps/Overview/components/RecentStatements.tsx @@ -0,0 +1,52 @@ +import { RightOutlined } from '@ant-design/icons' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' + +import { + StatementsTable, + useStatementTableController, +} from '@lib/apps/Statement' +import { DateTime, IColumnKeys } from '@lib/components' + +const visibleColumnKeys: IColumnKeys = { + digest_text: true, + sum_latency: true, + avg_latency: true, + related_schemas: true, +} + +export default function RecentStatements() { + const { t } = useTranslation() + const controller = useStatementTableController( + null, + visibleColumnKeys, + false, + undefined, + false + ) + const { + allTimeRanges, + statementsTimeRange: { begin_time, end_time }, + } = controller + + return ( + + {t('overview.top_statements.title')} + + } + subTitle={ + allTimeRanges.length > 0 && ( + + ~{' '} + + + ) + } + /> + ) +} diff --git a/ui-ori/lib/apps/Overview/components/Styles.module.less b/ui-ori/lib/apps/Overview/components/Styles.module.less new file mode 100644 index 0000000000..e15e1ad25c --- /dev/null +++ b/ui-ori/lib/apps/Overview/components/Styles.module.less @@ -0,0 +1,3 @@ +.big { + font-size: larger; +} diff --git a/ui-ori/lib/apps/Overview/index.meta.ts b/ui-ori/lib/apps/Overview/index.meta.ts new file mode 100644 index 0000000000..71487f1da9 --- /dev/null +++ b/ui-ori/lib/apps/Overview/index.meta.ts @@ -0,0 +1,10 @@ +import { AppstoreOutlined } from '@ant-design/icons' + +export default { + id: 'overview', + routerPrefix: '/overview', + icon: AppstoreOutlined, + isDefaultRouter: true, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_overview" */ '.'), +} diff --git a/ui-ori/lib/apps/Overview/index.tsx b/ui-ori/lib/apps/Overview/index.tsx new file mode 100644 index 0000000000..4da266f0fa --- /dev/null +++ b/ui-ori/lib/apps/Overview/index.tsx @@ -0,0 +1,79 @@ +import { Col, Row } from 'antd' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { HashRouter as Router } from 'react-router-dom' + +import { MetricChart, Root } from '@lib/components' + +import MonitorAlert from './components/MonitorAlert' +import Instances from './components/Instances' +import RecentStatements from './components/RecentStatements' +import RecentSlowQueries from './components/RecentSlowQueries' + +function QPS() { + const { t } = useTranslation() + + return ( + + ) +} + +function Latency() { + const { t } = useTranslation() + + return ( + + ) +} + +export default function App() { + return ( + + + + + + + + + + + + + + + + + ) +} diff --git a/ui-ori/lib/apps/Overview/translations/en.yaml b/ui-ori/lib/apps/Overview/translations/en.yaml new file mode 100644 index 0000000000..e94469c516 --- /dev/null +++ b/ui-ori/lib/apps/Overview/translations/en.yaml @@ -0,0 +1,19 @@ +overview: + nav_title: Overview + top_statements: + title: Top SQL Statements + recent_slow_query: + title: Recent Slow Queries + instances: + title: Alive Instances + monitor_alert: + title: Monitor & Alert + view_monitor: View Metrics + view_monitor_warn: Metrics unavailable + view_alerts: 'View {{alertCount}} Alerts' + view_zero_alerts: 'View Alerts' + view_alerts_warn: Alert unavailable + run_diagnose: Run Diagnostics + metrics: + total_requests: QPS + latency: Latency diff --git a/ui-ori/lib/apps/Overview/translations/zh.yaml b/ui-ori/lib/apps/Overview/translations/zh.yaml new file mode 100644 index 0000000000..0a6574d777 --- /dev/null +++ b/ui-ori/lib/apps/Overview/translations/zh.yaml @@ -0,0 +1,19 @@ +overview: + nav_title: 概况 + top_statements: + title: Top SQL 语句 + recent_slow_query: + title: 最近慢查询 + instances: + title: 在线实例 + monitor_alert: + title: 监控和告警 + view_monitor: 查看监控 + view_monitor_warn: 监控不可用 + view_alerts: '查看 {{alertCount}} 条告警' + view_zero_alerts: 查看告警 + view_alerts_warn: 告警不可用 + run_diagnose: 运行诊断 + metrics: + total_requests: QPS + latency: 延迟 diff --git a/ui-ori/lib/apps/QueryEditor/Editor.module.less b/ui-ori/lib/apps/QueryEditor/Editor.module.less new file mode 100644 index 0000000000..b8562272d2 --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/Editor.module.less @@ -0,0 +1,10 @@ +.editorContainer { + flex-grow: 1; + position: relative; + overflow: hidden; + + :global(.ace_editor) { + position: absolute; + z-index: 1; + } +} diff --git a/ui-ori/lib/apps/QueryEditor/Editor.tsx b/ui-ori/lib/apps/QueryEditor/Editor.tsx new file mode 100644 index 0000000000..20256cd99d --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/Editor.tsx @@ -0,0 +1,36 @@ +import React, { useRef } from 'react' +import AceEditor, { IAceEditorProps } from 'react-ace' +import { useSize } from 'ahooks' + +import 'ace-builds/src-noconflict/mode-sql' +import 'ace-builds/src-noconflict/ext-searchbox' +import './editorThemes/oneHalfDark' +import './editorThemes/oneHalfLight' + +import styles from './Editor.module.less' + +interface IEditorProps extends IAceEditorProps {} + +function Editor({ ...props }: IEditorProps, ref: React.Ref) { + const containerRef = useRef(null) + const containerSize = useSize(containerRef) + return ( +
+ +
+ ) +} + +export default React.memo(React.forwardRef(Editor)) diff --git a/ui-ori/lib/apps/QueryEditor/ResultTable.module.less b/ui-ori/lib/apps/QueryEditor/ResultTable.module.less new file mode 100644 index 0000000000..439608c0a7 --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/ResultTable.module.less @@ -0,0 +1,7 @@ +.resultTable { + position: absolute; + top: @padding-page; // FIXME: This is hacky. Can we provide a component? + bottom: 0; + left: 0; + width: 100%; +} diff --git a/ui-ori/lib/apps/QueryEditor/ResultTable.tsx b/ui-ori/lib/apps/QueryEditor/ResultTable.tsx new file mode 100644 index 0000000000..f668ab4b84 --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/ResultTable.tsx @@ -0,0 +1,64 @@ +import React, { useMemo } from 'react' +import { QueryeditorRunResponse } from '@lib/client' +import { CardTable } from '@lib/components' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' + +import styles from './ResultTable.module.less' + +interface IResultTableProps { + results?: QueryeditorRunResponse +} + +function ResultTable({ results }: IResultTableProps) { + const columns: IColumn[] = useMemo(() => { + if (!results) { + return [] + } + if (results.error_msg) { + return [ + { + name: 'Error', + key: 'error', + minWidth: 100, + fieldName: 'error', + isMultiline: true, + }, + ] + } else { + return (results.column_names ?? []).map((cn, idx) => ({ + name: cn, + key: cn, + minWidth: 200, + maxWidth: 500, + fieldName: String(idx), + })) + } + }, [results]) + + const items = useMemo(() => { + if (!results) { + return [] + } + if (results.error_msg) { + return [{ error: results.error_msg }] + } else { + return results.rows ?? [] + } + }, [results]) + + return ( +
+ + + +
+ ) +} + +export default ResultTable diff --git a/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfDark.js b/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfDark.js new file mode 100644 index 0000000000..fd9d1022a5 --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfDark.js @@ -0,0 +1,118 @@ +/* eslint-disable no-multi-str */ + +const ace = require('ace-builds/src-noconflict/ace') + +ace.define( + 'ace/theme/oneHalfDark', + ['require', 'exports', 'module', 'ace/lib/dom'], + function (require, exports, module) { + exports.isDark = true + exports.cssClass = 'ace-one-half-dark' + exports.cssText = + '.ace-one-half-dark .ace_gutter {\ +background: #282c34;\ +color: rgb(130,134,140)\ +}\ +.ace-one-half-dark .ace_print-margin {\ +width: 1px;\ +background: #e8e8e8\ +}\ +.ace-one-half-dark {\ +background-color: #282c34;\ +color: #dcdfe4\ +}\ +.ace-one-half-dark .ace_cursor {\ +color: #a3b3cc\ +}\ +.ace-one-half-dark .ace_marker-layer .ace_selection {\ +background: #474e5d\ +}\ +.ace-one-half-dark.ace_multiselect .ace_selection.ace_start {\ +box-shadow: 0 0 3px 0px #282c34;\ +border-radius: 2px\ +}\ +.ace-one-half-dark .ace_marker-layer .ace_step {\ +background: rgb(198, 219, 174)\ +}\ +.ace-one-half-dark .ace_marker-layer .ace_bracket {\ +margin: -1px 0 0 -1px;\ +border: 1px solid #5c6370\ +}\ +.ace-one-half-dark .ace_marker-layer .ace_active-line {\ +background: #313640\ +}\ +.ace-one-half-dark .ace_gutter-active-line {\ +background-color: #313640\ +}\ +.ace-one-half-dark .ace_marker-layer .ace_selected-word {\ +border: 1px solid #474e5d\ +}\ +.ace-one-half-dark .ace_fold {\ +background-color: #61afef;\ +border-color: #dcdfe4\ +}\ +.ace-one-half-dark .ace_keyword {\ +color: #c678dd\ +}\ +.ace-one-half-dark .ace_constant {\ +color: #e5c07b\ +}\ +.ace-one-half-dark .ace_constant.ace_numeric {\ +color: #e5c07b\ +}\ +.ace-one-half-dark .ace_constant.ace_character.ace_escape {\ +color: #56b6c2\ +}\ +.ace-one-half-dark .ace_support.ace_function {\ +color: #61afef\ +}\ +.ace-one-half-dark .ace_support.ace_class {\ +color: #e5c07b\ +}\ +.ace-one-half-dark .ace_storage {\ +color: #c678dd\ +}\ +.ace-one-half-dark .ace_invalid.ace_illegal {\ +color: #dcdfe4;\ +background-color: #e06c75\ +}\ +.ace-one-half-dark .ace_invalid.ace_deprecated {\ +color: #dcdfe4;\ +background-color: #e5c07b\ +}\ +.ace-one-half-dark .ace_string {\ +color: #98c379\ +}\ +.ace-one-half-dark .ace_string.ace_regexp {\ +color: #98c379\ +}\ +.ace-one-half-dark .ace_comment {\ +color: #5c6370\ +}\ +.ace-one-half-dark .ace_variable {\ +color: #e06c75\ +}\ +.ace-one-half-dark .ace_meta.ace_selector {\ +color: #c678dd\ +}\ +.ace-one-half-dark .ace_entity.ace_other.ace_attribute-name {\ +color: #e5c07b\ +}\ +.ace-one-half-dark .ace_entity.ace_name.ace_function {\ +color: #61afef\ +}\ +.ace-one-half-dark .ace_entity.ace_name.ace_tag {\ +color: #e06c75\ +}' + + var dom = require('../lib/dom') + dom.importCssString(exports.cssText, exports.cssClass) + } +) +;(function () { + ace.require(['ace/theme/oneHalfDark'], function (m) { + if (typeof module == 'object' && typeof exports == 'object' && module) { + module.exports = m + } + }) +})() diff --git a/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfLight.js b/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfLight.js new file mode 100644 index 0000000000..3e831e2c0c --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfLight.js @@ -0,0 +1,102 @@ +/* eslint-disable no-multi-str */ + +const ace = require('ace-builds/src-noconflict/ace') + +ace.define( + 'ace/theme/oneHalfLight', + ['require', 'exports', 'module', 'ace/lib/dom'], + function (require, exports, module) { + exports.isDark = false + exports.cssClass = 'ace-one-half-light' + exports.cssText = + '.ace-one-half-light .ace_gutter {\ +background: #fafafa;\ +color: rgb(153,154,158)\ +}\ +.ace-one-half-light .ace_print-margin {\ +width: 1px;\ +background: #e8e8e8\ +}\ +.ace-one-half-light {\ +background-color: #fafafa;\ +color: #383a42\ +}\ +.ace-one-half-light .ace_cursor {\ +color: #383a42\ +}\ +.ace-one-half-light .ace_marker-layer .ace_selection {\ +background: #bfceff\ +}\ +.ace-one-half-light.ace_multiselect .ace_selection.ace_start {\ +box-shadow: 0 0 3px 0px #fafafa;\ +border-radius: 2px\ +}\ +.ace-one-half-light .ace_marker-layer .ace_step {\ +background: rgb(198, 219, 174)\ +}\ +.ace-one-half-light .ace_marker-layer .ace_bracket {\ +margin: -1px 0 0 -1px;\ +border: 1px solid #a0a1a7\ +}\ +.ace-one-half-light .ace_marker-layer .ace_active-line {\ +background: #f0f0f0\ +}\ +.ace-one-half-light .ace_gutter-active-line {\ +background-color: #f0f0f0\ +}\ +.ace-one-half-light .ace_marker-layer .ace_selected-word {\ +border: 1px solid #bfceff\ +}\ +.ace-one-half-light .ace_fold {\ +background-color: #0184bc;\ +border-color: #383a42\ +}\ +.ace-one-half-light .ace_keyword,\ +.ace-one-half-light .ace_meta.ace_selector,\ +.ace-one-half-light .ace_storage {\ +color: #a626a4\ +}\ +.ace-one-half-light .ace_constant,\ +.ace-one-half-light .ace_constant.ace_numeric,\ +.ace-one-half-light .ace_entity.ace_other.ace_attribute-name,\ +.ace-one-half-light .ace_support.ace_class {\ +color: #c18401\ +}\ +.ace-one-half-light .ace_constant.ace_character.ace_escape {\ +color: #0997b3\ +}\ +.ace-one-half-light .ace_entity.ace_name.ace_function,\ +.ace-one-half-light .ace_support.ace_function {\ +color: #0184bc\ +}\ +.ace-one-half-light .ace_invalid.ace_illegal {\ +color: #fafafa;\ +background-color: #e06c75\ +}\ +.ace-one-half-light .ace_invalid.ace_deprecated {\ +color: #fafafa;\ +background-color: #e5c07b\ +}\ +.ace-one-half-light .ace_string,\ +.ace-one-half-light .ace_string.ace_regexp {\ +color: #50a14f\ +}\ +.ace-one-half-light .ace_comment {\ +color: #a0a1a7\ +}\ +.ace-one-half-light .ace_entity.ace_name.ace_tag,\ +.ace-one-half-light .ace_variable {\ +color: #e45649\ +}' + + var dom = require('../lib/dom') + dom.importCssString(exports.cssText, exports.cssClass) + } +) +;(function () { + ace.require(['ace/theme/oneHalfLight'], function (m) { + if (typeof module == 'object' && typeof exports == 'object' && module) { + module.exports = m + } + }) +})() diff --git a/ui-ori/lib/apps/QueryEditor/index.meta.ts b/ui-ori/lib/apps/QueryEditor/index.meta.ts new file mode 100644 index 0000000000..39f0b8443f --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/index.meta.ts @@ -0,0 +1,9 @@ +import { ConsoleSqlOutlined } from '@ant-design/icons' + +export default { + id: 'query_editor', + routerPrefix: '/query_editor', + icon: ConsoleSqlOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "query_editor" */ '.'), +} diff --git a/ui-ori/lib/apps/QueryEditor/index.module.less b/ui-ori/lib/apps/QueryEditor/index.module.less new file mode 100644 index 0000000000..c7049c7dda --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/index.module.less @@ -0,0 +1,40 @@ +@import '~antd/es/style/themes/default.less'; + +.container { + height: 100vh; + display: flex; + flex-direction: column; + + &:before, + &:after { + // Handle margin collapse + content: ' '; + display: table; + } +} + +.contentContainer { + flex: 1; + min-height: 0; + + > :global(.gutter.gutter-vertical) { + background-color: @gray-3; + cursor: row-resize; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII='); + background-repeat: no-repeat; + background-position: center center; + margin: 0 @padding-page; + } + + &.isCollapsed > :global(.gutter) { + display: none; + } +} + +.successText { + color: @success-color; +} + +.resultTableContainer { + position: relative; +} diff --git a/ui-ori/lib/apps/QueryEditor/index.tsx b/ui-ori/lib/apps/QueryEditor/index.tsx new file mode 100644 index 0000000000..650550e4f1 --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/index.tsx @@ -0,0 +1,107 @@ +import React, { useState, useCallback, useRef } from 'react' +import cx from 'classnames' +import { Root, Card } from '@lib/components' +import Split from 'react-split' +import { Button, Space, Typography } from 'antd' +import { + CaretRightOutlined, + LoadingOutlined, + WarningOutlined, + CheckOutlined, +} from '@ant-design/icons' + +import Editor from './Editor' +import ResultTable from './ResultTable' + +import styles from './index.module.less' +import client, { QueryeditorRunResponse } from '@lib/client' +import ReactAce from 'react-ace/lib/ace' +import { getValueFormat } from '@baurine/grafana-value-formats' + +const MAX_DISPLAY_ROWS = 1000 + +function App() { + const [results, setResults] = useState() + const [isRunning, setRunning] = useState(false) + const editor = useRef(null) + + const isResultsEmpty = + !results || + (!results.error_msg && (!results.column_names?.length || !results.rows)) + + const handleRun = useCallback(async () => { + try { + setRunning(true) + setResults(undefined) + const resp = await client.getInstance().queryEditorRun({ + max_rows: MAX_DISPLAY_ROWS, + statements: editor.current?.editor.getValue(), + }) + setResults(resp.data) + } finally { + setRunning(false) + } + editor.current?.editor.focus() + }, []) + + return ( + +
+ + + + { + + {isRunning && } + {results && results.error_msg && ( + + Error ( + {getValueFormat('ms')(results.execution_ms || 0, 1)}) + + )} + {results && !results.error_msg && ( + + Success ( + {getValueFormat('ms')(results.execution_ms || 0, 1)}, + {(results.actual_rows || 0) > (results.rows?.length || 0) + ? `Displaying first ${results.rows?.length || 0} of ${ + results.actual_rows || 0 + } rows` + : `${results.rows?.length || 0} rows`} + ) + + )} + + } + + + + + + +
+ {!isResultsEmpty && } +
+
+
+
+ ) +} + +export default App diff --git a/ui-ori/lib/apps/QueryEditor/translations/en.yaml b/ui-ori/lib/apps/QueryEditor/translations/en.yaml new file mode 100644 index 0000000000..f812e9e708 --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/translations/en.yaml @@ -0,0 +1,2 @@ +query_editor: + nav_title: Query Editor diff --git a/ui-ori/lib/apps/QueryEditor/translations/zh.yaml b/ui-ori/lib/apps/QueryEditor/translations/zh.yaml new file mode 100644 index 0000000000..bfe81914c0 --- /dev/null +++ b/ui-ori/lib/apps/QueryEditor/translations/zh.yaml @@ -0,0 +1,2 @@ +query_editor: + nav_title: 查询编辑器 diff --git a/ui-ori/lib/apps/SearchLogs/components/Icon.tsx b/ui-ori/lib/apps/SearchLogs/components/Icon.tsx new file mode 100644 index 0000000000..2c5c59daa1 --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/components/Icon.tsx @@ -0,0 +1,18 @@ +import { + CheckCircleTwoTone, + InfoCircleTwoTone, + LoadingOutlined, +} from '@ant-design/icons' +import React from 'react' + +export function LoadingIcon() { + return +} + +export function SuccessIcon() { + return +} + +export function FailIcon() { + return +} diff --git a/ui-ori/lib/apps/SearchLogs/components/Log.tsx b/ui-ori/lib/apps/SearchLogs/components/Log.tsx new file mode 100644 index 0000000000..6e0ff67eec --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/components/Log.tsx @@ -0,0 +1,32 @@ +import React, { useCallback } from 'react' +import TextHighlighter from 'react-highlight-words' +import { TextWrap, Pre } from '@lib/components' + +import styles from './Styles.module.less' + +interface LogProps { + patterns: string[] + expanded: boolean + log: string +} + +export default function Log({ patterns, log, expanded }: LogProps) { + const handleClick = useCallback((ev: React.MouseEvent) => { + ev.stopPropagation() + }, []) + return ( + +
+         new RegExp(p, 'gi'))}
+          textToHighlight={log}
+        />
+      
+
+ ) +} diff --git a/ui-ori/lib/apps/SearchLogs/components/SearchHeader.tsx b/ui-ori/lib/apps/SearchLogs/components/SearchHeader.tsx new file mode 100644 index 0000000000..6e525d40da --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/components/SearchHeader.tsx @@ -0,0 +1,190 @@ +import client from '@lib/client' +import { + LogsearchCreateTaskGroupRequest, + ModelRequestTargetNode, +} from '@lib/client' +import { Button, Form, Input, Select, Modal } from 'antd' +import React, { useState, useCallback, useRef } from 'react' +import { useTranslation } from 'react-i18next' +import { useNavigate } from 'react-router-dom' +import { useMount } from 'ahooks' +import { + TimeRangeSelector, + TimeRange, + calcTimeRange, + InstanceSelect, + IInstanceSelectRefProps, +} from '@lib/components' + +import { ValidLogLevels, LogLevelText } from '../utils' + +interface Props { + taskGroupID?: number +} + +interface IFormProps { + timeRange?: TimeRange + logLevel?: number + instances?: string[] + keywords?: string +} + +export default function SearchHeader({ taskGroupID }: Props) { + const { t } = useTranslation() + const navigate = useNavigate() + const [form] = Form.useForm() + const [isSubmitting, setSubmitting] = useState(false) + const instanceSelect = useRef(null) + + useMount(() => { + async function fetchData() { + if (!taskGroupID) { + return + } + const res = await client + .getInstance() + .logsTaskgroupsIdGet(String(taskGroupID)) + const { task_group, tasks } = res.data + const { start_time, end_time, min_level, patterns } = + task_group?.search_request ?? {} + const fieldsValue: IFormProps = { + timeRange: { + type: 'absolute', + value: [start_time! / 1000, end_time! / 1000], + }, + logLevel: min_level || 2, + instances: (tasks ?? []) + .filter((t) => t.target && t.target!.display_name) + .map((t) => t.target!.display_name!), + keywords: (patterns ?? []).join(' '), + } + form.setFieldsValue(fieldsValue) + } + fetchData() + }) + + const handleSearch = useCallback( + async (fieldsValue: IFormProps) => { + if ( + !fieldsValue.instances || + fieldsValue.instances.length === 0 || + !fieldsValue.logLevel || + !fieldsValue.timeRange + ) { + Modal.error({ + content: 'Some required fields are not filled', + }) + return + } + if (!instanceSelect.current) { + Modal.error({ + content: 'Internal error: Instance select is not ready', + }) + return + } + + const targets: ModelRequestTargetNode[] = instanceSelect + .current!.getInstanceByKeys(fieldsValue.instances) + .map((instance) => { + let port + switch (instance.instanceKind) { + case 'pd': + case 'tikv': + case 'tiflash': + port = instance.port + break + case 'tidb': + port = instance.status_port + break + } + return { + kind: instance.instanceKind, + display_name: instance.key, + ip: instance.ip, + port, + } + }) + .filter((i) => i.port != null) + + const [startTime, endTime] = calcTimeRange(fieldsValue.timeRange) + + const req: LogsearchCreateTaskGroupRequest = { + targets, + request: { + start_time: startTime * 1000, // unix millionsecond + end_time: endTime * 1000, // unix millionsecond + min_level: fieldsValue.logLevel, + patterns: (fieldsValue.keywords ?? '').split(/\s+/), // 'foo boo' => ['foo', 'boo'] + }, + } + + try { + setSubmitting(true) + const result = await client.getInstance().logsTaskgroupPut(req) + const id = result?.data?.task_group?.id + if (id) { + navigate(`/search_logs/detail?id=${id}`) + } + } finally { + setSubmitting(false) + } + }, + [navigate] + ) + + return ( +
+ + + + + + + + + + + + + + + +
+ ) +} diff --git a/ui-ori/lib/apps/SearchLogs/components/SearchProgress.tsx b/ui-ori/lib/apps/SearchLogs/components/SearchProgress.tsx new file mode 100644 index 0000000000..4626eca1d4 --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/components/SearchProgress.tsx @@ -0,0 +1,242 @@ +import { Button, Modal, Tree } from 'antd' +import _ from 'lodash' +import React, { useEffect, useState, useMemo, useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import client, { LogsearchTaskModel } from '@lib/client' +import { AnimatedSkeleton, Card } from '@lib/components' +import { FailIcon, LoadingIcon, SuccessIcon } from './Icon' +import { TaskState } from '../utils' + +import styles from './Styles.module.less' +import { InstanceKindName, InstanceKinds } from '@lib/utils/instanceTable' + +const { confirm } = Modal +const taskStateIcons = { + [TaskState.Running]: LoadingIcon, + [TaskState.Finished]: SuccessIcon, + [TaskState.Error]: FailIcon, +} + +function getLeafNodes(tasks: LogsearchTaskModel[]) { + return tasks.map((task) => { + const title = ( + + {task.target?.display_name ?? ''}{' '} + ({getValueFormat('bytes')(task.size!, 1)}) + + ) + return { + key: String(task.id), + title, + icon: taskStateIcons[task.state || TaskState.Error], + disableCheckbox: !task.size || task.state !== TaskState.Finished, + } + }) +} + +function parentNodeIcon(tasks: LogsearchTaskModel[]) { + // Running: has at least one task running + if (tasks.some((task) => task.state === TaskState.Running)) { + return LoadingIcon + } + // Finished: all tasks are finished + if (!tasks.some((task) => task.state !== TaskState.Finished)) { + return SuccessIcon + } + // Failed: no task is running, and has failed task + return FailIcon +} + +function parentNodeCheckable(tasks: LogsearchTaskModel[]) { + // Checkable: at least one task has finished and the log must not be empty + return ( + tasks.some((task) => task.state === TaskState.Finished) && + tasks.reduce((acc, task) => (acc += task.size || 0), 0) > 0 + ) +} + +interface Props { + taskGroupID: number + tasks: LogsearchTaskModel[] + toggleReload: () => void +} + +export default function SearchProgress({ + taskGroupID, + tasks, + toggleReload, +}: Props) { + const [checkedKeys, setCheckedKeys] = useState([]) + const [isLoading, setIsLoading] = useState(true) + + const { t } = useTranslation() + + useEffect(() => { + if (tasks !== undefined && tasks.length > 0) { + setIsLoading(false) + } + }, [tasks]) + + const descriptionArray = useMemo( + () => [ + t('search_logs.progress.running'), + t('search_logs.progress.success'), + t('search_logs.progress.failed'), + ], + [t] + ) + + const describeProgress = useCallback( + (tasks: LogsearchTaskModel[]) => { + const arr = [0, 0, 0] + tasks.forEach((task) => { + const state = task.state + if (state !== undefined) { + arr[state - 1]++ + } + }) + const res: string[] = [] + arr.forEach((count, index) => { + if (index < 1 || count <= 0) { + return + } + const str = `${count} ${descriptionArray[index]}` + res.push(str) + }) + return ( + res.join(', ') + + ' (' + + getValueFormat('bytes')(_.sumBy(tasks, 'size'), 1) + + ')' + ) + }, + [descriptionArray] + ) + + const treeData = useMemo(() => { + const data: any[] = [] + const tasksByIK = _.groupBy(tasks, (t) => t.target?.kind) + InstanceKinds.forEach((ik) => { + const tasks = tasksByIK[ik] + if (!tasks) { + return + } + const title = ( + + {InstanceKindName[ik]} {describeProgress(tasks)} + + ) + data.push({ + title, + key: ik, + icon: parentNodeIcon(tasks), + disableCheckbox: !parentNodeCheckable(tasks), + children: getLeafNodes(tasks), + }) + }) + return data + }, [tasks, describeProgress]) + + async function handleDownload() { + if (taskGroupID < 0) { + return + } + // filter out all parent node + const keys = checkedKeys.filter( + (key) => !InstanceKinds.some((ik) => ik === key) + ) + + const res = await client.getInstance().logsDownloadAcquireTokenGet(keys) + const token = res.data + if (!token) { + return + } + const url = `${client.getBasePath()}/logs/download?token=${token}` + window.location.href = url + } + + async function handleCancel() { + if (taskGroupID < 0) { + return + } + confirm({ + title: t('search_logs.confirm.cancel_tasks'), + onOk() { + client.getInstance().logsTaskgroupsIdCancelPost(taskGroupID + '') + toggleReload() + }, + }) + } + + async function handleRetry() { + if (taskGroupID < 0) { + return + } + confirm({ + title: t('search_logs.confirm.retry_tasks'), + onOk() { + client.getInstance().logsTaskgroupsIdRetryPost(taskGroupID + '') + toggleReload() + }, + }) + } + + const handleCheck = useCallback((checkedKeys) => { + setCheckedKeys(checkedKeys as string[]) + }, []) + + return ( + + + {tasks && ( + <> +
{describeProgress(tasks)}
+
+ + + +
+ + + )} +
+
+ ) +} diff --git a/ui-ori/lib/apps/SearchLogs/components/SearchResult.tsx b/ui-ori/lib/apps/SearchLogs/components/SearchResult.tsx new file mode 100644 index 0000000000..df5e10898c --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/components/SearchResult.tsx @@ -0,0 +1,157 @@ +import client from '@lib/client' +import { ModelRequestTargetNode, LogsearchTaskModel } from '@lib/client' +import { CardTable, Card, TextWrap } from '@lib/components' +import { Alert, Tooltip } from 'antd' +import React, { useEffect, useState, useMemo, useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { InstanceKindName } from '@lib/utils/instanceTable' +import dayjs from 'dayjs' + +import { LogLevelText } from '../utils' +import Log from './Log' + +import styles from './Styles.module.less' + +type LogPreview = { + key: number + time?: string + level?: string + component?: ModelRequestTargetNode | undefined + log?: string +} + +function componentRender({ component: target }) { + if (target === undefined) { + return '' + } + return ( + + {target.kind ? InstanceKindName[target.kind] : '?'}{' '} + + {target.display_name} + + + ) +} + +function Row({ renderer, props }) { + const [expanded, setExpanded] = useState(false) + const handleClick = useCallback(() => { + setExpanded((v) => !v) + }, []) + return ( +
+ {renderer({ ...props, item: { ...props.item, expanded } })} +
+ ) +} + +interface Props { + patterns: string[] + taskGroupID: number + tasks: LogsearchTaskModel[] +} + +export default function SearchResult({ patterns, taskGroupID, tasks }: Props) { + const [logPreviews, setData] = useState([]) + const { t } = useTranslation() + const [loading, setLoading] = useState(true) + + useEffect(() => { + function getComponent(id: number | undefined) { + return tasks.find((task) => { + return task.id !== undefined && task.id === id + })?.target + } + + async function getLogPreview() { + if (!taskGroupID) { + return + } + + try { + const res = await client + .getInstance() + .logsTaskgroupsIdPreviewGet(taskGroupID + '') + setData( + res.data.map((value, index): LogPreview => { + return { + key: index, + time: dayjs(value.time).format('YYYY-MM-DD HH:mm:ss (z)'), + level: LogLevelText[value.level ?? 0], + component: getComponent(value.task_id), + log: value.message, + } + }) + ) + } finally { + setLoading(false) + } + } + if (tasks.length > 0 && taskGroupID !== tasks[0].task_group_id) { + setLoading(true) + } + getLogPreview() + }, [taskGroupID, tasks]) + + const renderRow = useCallback((props, defaultRender) => { + if (!props) { + return null + } + return + }, []) + + const columns = useMemo( + () => [ + { + name: t('search_logs.preview.time'), + key: 'time', + fieldName: 'time', + minWidth: 120, + maxWidth: 180, + }, + { + name: t('search_logs.preview.level'), + key: 'level', + fieldName: 'level', + minWidth: 40, + maxWidth: 80, + }, + { + name: t('search_logs.preview.component'), + key: 'component', + minWidth: 40, + maxWidth: 120, + onRender: componentRender, + }, + { + name: t('search_logs.preview.log'), + key: 'log', + minWidth: 200, + onRender: ({ log, expanded }) => ( + + ), + }, + ], + [t, patterns] + ) + + return ( +
+ {!loading && ( + + + + )} + +
+ ) +} diff --git a/ui-ori/lib/apps/SearchLogs/components/Styles.module.less b/ui-ori/lib/apps/SearchLogs/components/Styles.module.less new file mode 100644 index 0000000000..e8915a0c13 --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/components/Styles.module.less @@ -0,0 +1,25 @@ +@import '~antd/lib/style/themes/default.less'; + +// FIXME: Use +.buttons { + margin-top: 12px; +} + +.buttons > :global(button) { + margin-right: 12px; + margin-bottom: 12px; +} + +.logText { + cursor: text; +} + +.logRow { + cursor: pointer; +} + +.highlight { + background: @gold-3; + margin: 0; + padding: 0; +} diff --git a/ui-ori/lib/apps/SearchLogs/components/index.ts b/ui-ori/lib/apps/SearchLogs/components/index.ts new file mode 100644 index 0000000000..425c19471b --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/components/index.ts @@ -0,0 +1,5 @@ +import SearchHeader from './SearchHeader' +import SearchProgress from './SearchProgress' +import SearchResult from './SearchResult' + +export { SearchHeader, SearchProgress, SearchResult } diff --git a/ui-ori/lib/apps/SearchLogs/index.meta.ts b/ui-ori/lib/apps/SearchLogs/index.meta.ts new file mode 100644 index 0000000000..15337190c8 --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/index.meta.ts @@ -0,0 +1,9 @@ +import { FileSearchOutlined } from '@ant-design/icons' + +export default { + id: 'search_logs', + routerPrefix: '/search_logs', + icon: FileSearchOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_search_logs" */ '.'), +} diff --git a/ui-ori/lib/apps/SearchLogs/index.tsx b/ui-ori/lib/apps/SearchLogs/index.tsx new file mode 100644 index 0000000000..3cbd0f72a8 --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/index.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import { Root, ParamsPageWrapper } from '@lib/components' +import { HashRouter as Router, Route, Routes } from 'react-router-dom' + +import { LogSearch, LogSearchHistory, LogSearchDetail } from './pages' + +export default function () { + return ( + + + + } /> + } /> + + + + } + /> + + + + ) +} diff --git a/ui-ori/lib/apps/SearchLogs/pages/LogSearch.tsx b/ui-ori/lib/apps/SearchLogs/pages/LogSearch.tsx new file mode 100644 index 0000000000..22f05a751a --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/pages/LogSearch.tsx @@ -0,0 +1,25 @@ +import { Empty } from 'antd' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' + +import { Card } from '@lib/components' +import { SearchHeader } from '../components' + +export default function LogSearch() { + const { t } = useTranslation() + + return ( +
+ + + + + {t('search_logs.page.view')}{' '} + + {t('search_logs.page.search_histroy')} + + +
+ ) +} diff --git a/ui-ori/lib/apps/SearchLogs/pages/LogSearchDetail.tsx b/ui-ori/lib/apps/SearchLogs/pages/LogSearchDetail.tsx new file mode 100644 index 0000000000..e32353eecd --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/pages/LogSearchDetail.tsx @@ -0,0 +1,89 @@ +import { Col, Row } from 'antd' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import React, { useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { ArrowLeftOutlined } from '@ant-design/icons' + +import client from '@lib/client' +import { Head } from '@lib/components' +import { useClientRequestWithPolling } from '@lib/utils/useClientRequest' +import { SearchHeader, SearchProgress, SearchResult } from '../components' +import { TaskState } from '../utils' +import useQueryParams from '@lib/utils/useQueryParams' + +export default function LogSearchingDetail() { + const { t } = useTranslation() + const { id } = useQueryParams() + const [reloadKey, setReloadKey] = useState(false) + + function toggleReload() { + setReloadKey(!reloadKey) + } + + const taskGroupID = id === undefined ? 0 : +id + + function isFinished(data) { + if (taskGroupID < 0) { + return true + } + if (!data) { + return false + } + if (data.tasks.some((task) => task.state === TaskState.Running)) { + return false + } + return true + } + + const { data } = useClientRequestWithPolling( + (reqConfig) => client.getInstance().logsTaskgroupsIdGet(id, reqConfig), + { + shouldPoll: (data) => !isFinished(data), + } + ) + + const tasks = useMemo(() => data?.tasks ?? [], [data]) + + return ( + + + + {t('search_logs.nav.search_logs')} + + } + > +
+ +
+ +
+ +
+
+ + + + +
+ ) +} diff --git a/ui-ori/lib/apps/SearchLogs/pages/LogSearchHistory.tsx b/ui-ori/lib/apps/SearchLogs/pages/LogSearchHistory.tsx new file mode 100644 index 0000000000..6c982e10cf --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/pages/LogSearchHistory.tsx @@ -0,0 +1,227 @@ +import client from '@lib/client' +import { LogsearchTaskGroupModel } from '@lib/client' +import { Head, CardTable, DateTime } from '@lib/components' +import { ArrowLeftOutlined, ExclamationCircleOutlined } from '@ant-design/icons' +import { Badge, Button, Modal, Space } from 'antd' +import React, { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { + Selection, + SelectionMode, +} from 'office-ui-fabric-react/lib/DetailsList' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import { LogLevelText } from '../utils' + +function componentRender({ target_stats: stats, t }) { + // FIXME: Extract common util + const r: Array = [] + if (stats?.num_tidb_nodes) { + r.push(`${stats.num_tidb_nodes} ${t('distro.tidb')}`) + } + if (stats?.num_tikv_nodes) { + r.push(`${stats.num_tikv_nodes} ${t('distro.tikv')}`) + } + if (stats?.num_pd_nodes) { + r.push(`${stats.num_pd_nodes} ${t('distro.pd')}`) + } + return {r.join(', ')} +} + +function timeRender({ search_request }: LogsearchTaskGroupModel) { + return ( + + {search_request?.start_time && ( + + )} + {' ~ '} + {search_request?.end_time && ( + + )} + + ) +} + +function levelRender({ search_request: request }: LogsearchTaskGroupModel) { + return LogLevelText[request?.min_level!] +} + +function patternRender({ search_request: request }: LogsearchTaskGroupModel) { + return (request?.patterns ?? []).join(' ') +} + +export default function LogSearchingHistory() { + const [taskGroups, setTaskGroups] = useState([]) + const [selectedRowKeys, setRowKeys] = useState([]) + + const { t } = useTranslation() + + useEffect(() => { + async function getData() { + const res = await client.getInstance().logsTaskgroupsGet() + setTaskGroups(res.data) + } + + getData() + }, []) + + function stateRender({ state }: LogsearchTaskGroupModel) { + switch (state) { + case 1: + return ( + + ) + case 2: + return ( + + ) + default: + return + } + } + + function actionRender(taskGroup: LogsearchTaskGroupModel) { + if (taskGroup.id === 0) { + return + } + return ( + + {t('search_logs.history.detail')} + + ) + } + + async function handleDeleteSelected() { + Modal.confirm({ + title: t('search_logs.history.delete_confirm_title'), + icon: , + content: t('search_logs.history.delete_selected_confirm_content'), + okText: t('search_logs.history.delete'), + cancelText: t('search_logs.common.cancel'), + okButtonProps: { danger: true }, + onOk: async () => { + for (const taskGroupID of selectedRowKeys) { + await client.getInstance().logsTaskgroupsIdDelete(taskGroupID) + } + const res = await client.getInstance().logsTaskgroupsGet() + setTaskGroups(res.data) + }, + }) + } + + async function handleDeleteAll() { + Modal.confirm({ + title: t('search_logs.history.delete_confirm_title'), + icon: , + content: t('search_logs.history.delete_all_confirm_content'), + okText: t('search_logs.history.delete'), + cancelText: t('search_logs.common.cancel'), + okButtonProps: { danger: true }, + onOk: async () => { + const allKeys = taskGroups.map((taskGroup) => taskGroup.id) + for (const key of allKeys) { + if (key === undefined) { + continue + } + await client.getInstance().logsTaskgroupsIdDelete(String(key)) + } + const res = await client.getInstance().logsTaskgroupsGet() + setTaskGroups(res.data) + }, + }) + } + + const rowSelection = new Selection({ + onSelectionChanged: () => { + const items = rowSelection.getSelection() as LogsearchTaskGroupModel[] + setRowKeys(items.map((item) => item.id!.toString())) + }, + }) + + const columns = [ + { + name: t('search_logs.common.time_range'), + key: 'time', + minWidth: 200, + maxWidth: 300, + onRender: timeRender, + }, + { + name: t('search_logs.preview.level'), + key: 'level', + minWidth: 70, + maxWidth: 120, + onRender: levelRender, + }, + { + name: t('search_logs.history.instances'), + key: 'target_stats', + minWidth: 100, + maxWidth: 250, + onRender: (p) => componentRender({ ...p, t }), + }, + { + name: t('search_logs.common.keywords'), + key: 'keywords', + minWidth: 100, + maxWidth: 200, + onRender: patternRender, + }, + { + name: t('search_logs.history.status'), + key: 'state', + minWidth: 100, + maxWidth: 150, + onRender: stateRender, + }, + { + name: t('search_logs.history.action'), + key: 'action', + minWidth: 100, + maxWidth: 200, + onRender: actionRender, + }, + ] + + return ( +
+ + {t('search_logs.nav.search_logs')} + + } + titleExtra={ + + + + + } + /> +
+ + + +
+
+ ) +} diff --git a/ui-ori/lib/apps/SearchLogs/pages/index.ts b/ui-ori/lib/apps/SearchLogs/pages/index.ts new file mode 100644 index 0000000000..f0bb14ab4d --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/pages/index.ts @@ -0,0 +1,5 @@ +import LogSearch from './LogSearch' +import LogSearchHistory from './LogSearchHistory' +import LogSearchDetail from './LogSearchDetail' + +export { LogSearch, LogSearchHistory, LogSearchDetail } diff --git a/ui-ori/lib/apps/SearchLogs/translations/en.yaml b/ui-ori/lib/apps/SearchLogs/translations/en.yaml new file mode 100644 index 0000000000..497d3710dd --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/translations/en.yaml @@ -0,0 +1,49 @@ +search_logs: + nav_title: Search Logs + nav: + search_logs: Search Logs + detail: Search Result + history: History + page: + intro: Preview and download logs by clicking Search + tip: The preview shows only the first 500 logs + view: View + search_histroy: search histroy + common: + time_range: Time Range + start_time: Start Time + end_time: End Time + log_level: Log Level + components: instances + keywords: Keywords + keywords_placeholder: Keywords, Optional, separated by spaces + search: Search + progress: Progress + download_selected: Download selected + cancel: Cancel + retry: Retry + progress: + running: running + success: completed + failed: failed + confirm: + cancel_tasks: Are you sure you want to cancel all running log search tasks? + retry_tasks: Are you sure you want to retry all failed log search tasks? + preview: + time: Time + level: Level + component: Component + log: Log + history: + instances: Instances + running: Running + finished: Finished + delete_selected: Delete selected + delete_all: Delete All + status: Status + action: Action + detail: Detail + delete: Delete + delete_confirm_title: Delete Log Search Histories + delete_selected_confirm_content: Are you sure you want to delete selected log search histories? + delete_all_confirm_content: Are you sure you want to delete all log search histories? diff --git a/ui-ori/lib/apps/SearchLogs/translations/zh.yaml b/ui-ori/lib/apps/SearchLogs/translations/zh.yaml new file mode 100644 index 0000000000..18afccdbd0 --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/translations/zh.yaml @@ -0,0 +1,49 @@ +search_logs: + nav_title: 日志搜索 + nav: + search_logs: 日志搜索 + detail: 搜索结果 + history: 历史搜索 + page: + intro: 点击搜索预览和下载日志 + tip: 预览仅显示前 500 项日志 + view: 查看 + search_histroy: 搜索历史 + common: + time_range: 时间范围 + start_time: 起始时间 + end_time: 结束时间 + log_level: 日志等级 + components: 选择实例 + keywords: 关键字 + keywords_placeholder: 搜索关键字,可选,以空格分割 + search: 搜索 + progress: 搜索进度 + download_selected: 下载选中日志 + cancel: 取消 + retry: 重试 + progress: + running: 正在运行 + success: 成功 + failed: 失败 + confirm: + cancel_tasks: 确认要取消正在运行的日志搜索任务么? + retry_tasks: 确认要重试所有失败的日志搜索任务么? + preview: + time: 时间 + level: 日志等级 + component: 组件 + log: 日志 + history: + instances: 实例 + running: 正在搜索 + finished: 已完成 + delete_selected: 删除选中的任务 + delete_all: 删除全部任务 + status: 状态 + action: 操作 + detail: 查看详情 + delete: 删除 + delete_confirm_title: 删除搜索历史 + delete_selected_confirm_content: 确认要删除选中的搜索历史吗? + delete_all_confirm_content: 确认要删除所有的搜索历史吗? diff --git a/ui-ori/lib/apps/SearchLogs/utils/index.ts b/ui-ori/lib/apps/SearchLogs/utils/index.ts new file mode 100644 index 0000000000..dc0f7048ea --- /dev/null +++ b/ui-ori/lib/apps/SearchLogs/utils/index.ts @@ -0,0 +1,34 @@ +export enum LogLevel { + Unknown = 0, + Debug, + Info, + Warn, + Trace, + Critical, + Error, +} + +export const LogLevelText = { + [LogLevel.Unknown]: 'UNKNOWN', + [LogLevel.Debug]: 'DEBUG', + [LogLevel.Info]: 'INFO', + [LogLevel.Warn]: 'WARN', + [LogLevel.Trace]: 'TRACE', + [LogLevel.Critical]: 'CRITICAL', + [LogLevel.Error]: 'ERROR', +} + +export const ValidLogLevels = [ + LogLevel.Debug, + LogLevel.Info, + LogLevel.Warn, + // LogLevel.Trace, + LogLevel.Critical, + LogLevel.Error, +] + +export enum TaskState { + Running = 1, + Finished, + Error, +} diff --git a/ui-ori/lib/apps/SlowQuery/components/SlowQueriesTable.tsx b/ui-ori/lib/apps/SlowQuery/components/SlowQueriesTable.tsx new file mode 100644 index 0000000000..00cf0e9e21 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/components/SlowQueriesTable.tsx @@ -0,0 +1,60 @@ +import { usePersistFn } from 'ahooks' +import React, { useCallback } from 'react' +import { CardTable, ICardTableProps } from '@lib/components' +import DetailPage from '../pages/Detail' +import { ISlowQueryTableController } from '../utils/useSlowQueryTableController' +import openLink from '@lib/utils/openLink' +import { useNavigate } from 'react-router-dom' + +interface Props extends Partial { + controller: ISlowQueryTableController +} + +function SlowQueriesTable({ controller, ...restProps }: Props) { + const { + loadingSlowQueries, + tableColumns, + slowQueries, + orderOptions: { orderBy, desc }, + changeOrder, + errors, + visibleColumnKeys, + + saveClickedItemIndex, + getClickedItemIndex, + } = controller + + const navigate = useNavigate() + const handleRowClick = usePersistFn( + (rec, idx, ev: React.MouseEvent) => { + saveClickedItemIndex(idx) + const qs = DetailPage.buildQuery({ + digest: rec.digest, + connectId: rec.connection_id, + timestamp: rec.timestamp, + }) + openLink(`/slow_query/detail?${qs}`, ev, navigate) + } + ) + + const getKey = useCallback((row) => `${row.digest}_${row.timestamp}`, []) + + return ( + + ) +} + +export default SlowQueriesTable diff --git a/ui-ori/lib/apps/SlowQuery/components/index.ts b/ui-ori/lib/apps/SlowQuery/components/index.ts new file mode 100644 index 0000000000..f273d64d3a --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/components/index.ts @@ -0,0 +1,3 @@ +import SlowQueriesTable from './SlowQueriesTable' + +export { SlowQueriesTable } diff --git a/ui-ori/lib/apps/SlowQuery/index.meta.ts b/ui-ori/lib/apps/SlowQuery/index.meta.ts new file mode 100644 index 0000000000..77ad507166 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/index.meta.ts @@ -0,0 +1,9 @@ +import { RocketOutlined } from '@ant-design/icons' + +export default { + id: 'slow_query', + routerPrefix: '/slow_query', + icon: RocketOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_slow_query" */ '.'), +} diff --git a/ui-ori/lib/apps/SlowQuery/index.tsx b/ui-ori/lib/apps/SlowQuery/index.tsx new file mode 100644 index 0000000000..f3565c41f0 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/index.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import { Root } from '@lib/components' +import { HashRouter as Router, Route, Routes } from 'react-router-dom' +import useCache, { CacheContext } from '@lib/utils/useCache' + +import { List, Detail } from './pages' + +export default function () { + const slowQueryCacheMgr = useCache(2) + + return ( + + + + + } /> + } /> + + + + + ) +} + +export * from './components' +export * from './pages' +export * from './utils/useSlowQueryTableController' +export { default as useSlowQueryTableController } from './utils/useSlowQueryTableController' diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabBasic.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabBasic.tsx new file mode 100644 index 0000000000..b5fdfa225f --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabBasic.tsx @@ -0,0 +1,30 @@ +import React from 'react' +import { SlowqueryModel } from '@lib/client' +import { DateTime } from '@lib/components' +import { getValueFormat } from '@baurine/grafana-value-formats' + +export const tabBasicItems = (data: SlowqueryModel) => [ + { + key: 'timestamp', + value: , + }, + { key: 'digest', value: data.digest }, + { key: 'is_internal', value: data.is_internal }, + { key: 'is_success', value: data.success }, + { key: 'db', value: data.db }, + { key: 'index_names', value: data.index_names }, + { key: 'stats', value: data.stats }, + { key: 'backoff_types', value: data.backoff_types }, + { + key: 'memory_max', + value: getValueFormat('bytes')(data.memory_max || 0, 1), + }, + { + key: 'disk_max', + value: getValueFormat('bytes')(data.disk_max || 0, 1), + }, + { key: 'instance', value: data.instance }, + { key: 'connection_id', value: data.connection_id }, + { key: 'user', value: data.user }, + { key: 'host', value: data.host }, +] diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx new file mode 100644 index 0000000000..ff338f5164 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx @@ -0,0 +1,51 @@ +import React from 'react' + +import { SlowqueryModel } from '@lib/client' +import { ValueWithTooltip } from '@lib/components' + +export const tabCoprItems = (data: SlowqueryModel) => [ + { + key: 'request_count', + value: , + }, + { + key: 'process_keys', + value: , + }, + { + key: 'total_keys', + value: , + }, + { + key: 'cop_proc_addr', + value: data.cop_proc_addr, + }, + { + key: 'cop_wait_addr', + value: data.cop_wait_addr, + }, + { + key: 'rocksdb_block_cache_hit_count', + value: ( + + ), + }, + { + key: 'rocksdb_block_read_byte', + value: ( + + ), + }, + { + key: 'rocksdb_block_read_count', + value: , + }, + { + key: 'rocksdb_delete_skipped_count', + value: , + }, + { + key: 'rocksdb_key_skipped_count', + value: , + }, +] diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTime.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTime.tsx new file mode 100644 index 0000000000..6379eac410 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTime.tsx @@ -0,0 +1,119 @@ +import React from 'react' +import { SlowqueryModel } from '@lib/client' +import { Typography } from 'antd' +import { TFunction } from 'i18next' + +export const tabTimeItems = (data: SlowqueryModel, t: TFunction) => { + return [ + { + key: 'query_time2', + keyDisplay: ( + + {t('slow_query.fields.query_time2')} + + ), + value: data.query_time! * 10e8, + indentLevel: 0, + }, + { + key: 'parse_time', + value: data.parse_time! * 10e8, + indentLevel: 1, + }, + { + key: 'compile_time', + value: data.compile_time! * 10e8, + indentLevel: 1, + }, + { + key: 'rewrite_time', + value: data.rewrite_time! * 10e8, + indentLevel: 2, + }, + { + key: 'preproc_subqueries_time', + value: data.preproc_subqueries_time! * 10e8, + indentLevel: 3, + }, + { + key: 'optimize_time', + value: data.optimize_time! * 10e8, + indentLevel: 2, + }, + { + key: 'cop_time', + value: data.cop_time! * 10e8, + indentLevel: 1, + }, + { + key: 'wait_time', + value: data.wait_time! * 10e8, + indentLevel: 2, + }, + { + key: 'process_time', + value: data.process_time! * 10e8, + indentLevel: 2, + }, + { + key: 'local_latch_wait_time', + value: data.local_latch_wait_time! * 10e8, + indentLevel: 1, + }, + { + key: 'lock_keys_time', + value: data.lock_keys_time! * 10e8, + indentLevel: 1, + }, + { + key: 'resolve_lock_time', + value: data.resolve_lock_time! * 10e8, + indentLevel: 1, + }, + { + key: 'wait_ts', + value: data.wait_ts! * 10e8, + indentLevel: 1, + }, + { + key: 'get_commit_ts_time', + value: data.get_commit_ts_time! * 10e8, + indentLevel: 1, + }, + { + key: 'prewrite_time', + value: data.prewrite_time! * 10e8, + indentLevel: 1, + }, + { + key: 'commit_time', + value: data.commit_time! * 10e8, + indentLevel: 1, + }, + { + key: 'backoff_time', + value: data.backoff_time! * 10e8, + indentLevel: 1, + }, + { + key: 'commit_backoff_time', + value: data.commit_backoff_time! * 10e8, + indentLevel: 1, + }, + { + key: 'exec_retry_time', + value: data.exec_retry_time! * 10e8, + indentLevel: 1, + }, + { + key: 'write_sql_response_total', + value: data.write_sql_response_total! * 10e8, + indentLevel: 1, + }, + { + key: 'wait_prewrite_binlog_time', + value: data.wait_prewrite_binlog_time! * 10e8, + indentLevel: 1, + }, + ] +} diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTxn.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTxn.tsx new file mode 100644 index 0000000000..880117c7ba --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTxn.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import { SlowqueryModel } from '@lib/client' +import { ValueWithTooltip } from '@lib/components' + +export const tabTxnItems = (data: SlowqueryModel) => [ + { + key: 'txn_start_ts', + value: data.txn_start_ts, + }, + { + key: 'write_keys', + value: , + }, + { + key: 'write_size', + value: getValueFormat('bytes')(data.write_size || 0, 1), + }, + { + key: 'prewrite_region', + value: , + }, + { + key: 'txn_retry', + value: , + }, +] diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabs.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabs.tsx new file mode 100644 index 0000000000..3634d9bb39 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabs.tsx @@ -0,0 +1,88 @@ +import React from 'react' +import { useTranslation } from 'react-i18next' + +import { SlowqueryModel } from '@lib/client' +import { valueColumns, timeValueColumns } from '@lib/utils/tableColumns' +import { CardTabs, CardTable } from '@lib/components' + +import { tabBasicItems } from './DetailTabBasic' +import { tabTimeItems } from './DetailTabTime' +import { tabCoprItems } from './DetailTabCopr' +import { tabTxnItems } from './DetailTabTxn' +import { useSchemaColumns } from '../../utils/useSchemaColumns' + +export default function DetailTabs({ data }: { data: SlowqueryModel }) { + const { t } = useTranslation() + const { schemaColumns } = useSchemaColumns() + const columnsSet = new Set(schemaColumns) + + const tabs = [ + { + key: 'basic', + title: t('slow_query.detail.tabs.basic'), + content: () => { + const items = tabBasicItems(data) + const columns = valueColumns('slow_query.fields.') + return ( + + ) + }, + }, + { + key: 'time', + title: t('slow_query.detail.tabs.time'), + content: () => { + const items = tabTimeItems(data, t) + const columns = timeValueColumns('slow_query.fields.', items) + return ( + + ) + }, + }, + { + key: 'copr', + title: t('slow_query.detail.tabs.copr'), + content: () => { + const items = tabCoprItems(data).filter((item) => + columnsSet.has(item.key) + ) + const columns = valueColumns('slow_query.fields.') + return ( + + ) + }, + }, + { + key: 'txn', + title: t('slow_query.detail.tabs.txn'), + content: () => { + const items = tabTxnItems(data) + const columns = valueColumns('slow_query.fields.') + return ( + + ) + }, + }, + ] + return +} diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/index.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/index.tsx new file mode 100644 index 0000000000..d10193e713 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/Detail/index.tsx @@ -0,0 +1,178 @@ +import React from 'react' +import { Space } from 'antd' +import { useTranslation } from 'react-i18next' +import { Link, useLocation } from 'react-router-dom' +import { ArrowLeftOutlined } from '@ant-design/icons' + +import client from '@lib/client' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { buildQueryFn, parseQueryFn } from '@lib/utils/query' +import formatSql from '@lib/utils/sqlFormatter' +import { + AnimatedSkeleton, + CopyLink, + Descriptions, + ErrorBar, + Expand, + Head, + HighlightSQL, + Pre, + TextWithInfo, +} from '@lib/components' +import { useLocalStorageState } from '@lib/utils/useLocalStorageState' + +import DetailTabs from './DetailTabs' + +export interface IPageQuery { + connectId?: string + digest?: string + timestamp?: number +} + +const SLOW_QUERY_DETAIL_EXPAND = 'slow_query.detail_expand' + +function DetailPage() { + const query = DetailPage.parseQuery(useLocation().search) + + const { t } = useTranslation() + + const { data, isLoading, error } = useClientRequest((reqConfig) => + client + .getInstance() + .slowQueryDetailGet( + query.connectId!, + query.digest!, + query.timestamp!, + reqConfig + ) + ) + + const [detailExpand, setDetailExpand] = useLocalStorageState( + SLOW_QUERY_DETAIL_EXPAND, + { + prev_query: false, + query: false, + plan: false, + } + ) + + const togglePrevQuery = () => + setDetailExpand((prev) => ({ ...prev, prev_query: !prev.prev_query })) + const toggleQuery = () => + setDetailExpand((prev) => ({ ...prev, query: !prev.query })) + const togglePlan = () => + setDetailExpand((prev) => ({ ...prev, plan: !prev.plan })) + + return ( +
+ + {t('slow_query.detail.head.back')} + + } + > + + {error && } + {!!data && ( + <> + + + + + + + + } + > + + } + > + + + + {(() => { + if (!!data.prev_stmt && data.prev_stmt.length !== 0) + return ( + + + + + + + } + > + + } + > + + + + ) + })()} + + + + + + } + > + +
{data.plan}
+
+
+
+ + + + )} +
+ +
+ ) +} + +DetailPage.buildQuery = buildQueryFn() +DetailPage.parseQuery = parseQueryFn() + +export default DetailPage diff --git a/ui-ori/lib/apps/SlowQuery/pages/List/List.module.less b/ui-ori/lib/apps/SlowQuery/pages/List/List.module.less new file mode 100644 index 0000000000..c168b362f3 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/List/List.module.less @@ -0,0 +1,15 @@ +@import '~antd/es/style/themes/default.less'; + +.list { + &_container { + display: flex; + flex-direction: column; + height: 100vh; + } + + &_toolbar { + @media only screen and (max-width: @screen-md) { + flex-direction: column; + } + } +} diff --git a/ui-ori/lib/apps/SlowQuery/pages/List/index.tsx b/ui-ori/lib/apps/SlowQuery/pages/List/index.tsx new file mode 100644 index 0000000000..db10484a39 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/List/index.tsx @@ -0,0 +1,188 @@ +import React, { useContext } from 'react' +import { useTranslation } from 'react-i18next' +import { + Select, + Space, + Tooltip, + Input, + Checkbox, + message, + Menu, + Dropdown, +} from 'antd' +import { + ReloadOutlined, + LoadingOutlined, + ExportOutlined, + MenuOutlined, +} from '@ant-design/icons' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' + +import { + Card, + ColumnsSelector, + TimeRangeSelector, + Toolbar, + MultiSelect, +} from '@lib/components' +import { CacheContext } from '@lib/utils/useCache' +import { useLocalStorageState } from '@lib/utils/useLocalStorageState' + +import SlowQueriesTable from '../../components/SlowQueriesTable' +import useSlowQueryTableController, { + DEF_SLOW_QUERY_COLUMN_KEYS, +} from '../../utils/useSlowQueryTableController' + +import styles from './List.module.less' + +const { Option } = Select +const { Search } = Input + +const SLOW_QUERY_VISIBLE_COLUMN_KEYS = 'slow_query.visible_column_keys' +const SLOW_QUERY_SHOW_FULL_SQL = 'slow_query.show_full_sql' +const LIMITS = [100, 200, 500, 1000] + +function List() { + const { t } = useTranslation() + + const slowQueryCacheMgr = useContext(CacheContext) + + const [visibleColumnKeys, setVisibleColumnKeys] = useLocalStorageState( + SLOW_QUERY_VISIBLE_COLUMN_KEYS, + DEF_SLOW_QUERY_COLUMN_KEYS, + true + ) + const [showFullSQL, setShowFullSQL] = useLocalStorageState( + SLOW_QUERY_SHOW_FULL_SQL, + false + ) + + const controller = useSlowQueryTableController( + slowQueryCacheMgr, + visibleColumnKeys, + showFullSQL + ) + const { + queryOptions, + setQueryOptions, + refresh, + allSchemas, + loadingSlowQueries, + tableColumns, + downloadCSV, + downloading, + } = controller + + function exportCSV() { + const hide = message.loading(t('slow_query.toolbar.exporting') + '...', 0) + downloadCSV().finally(hide) + } + + function menuItemClick({ key }) { + switch (key) { + case 'export': + exportCSV() + break + } + } + + const dropdownMenu = ( + + }> + {downloading + ? t('slow_query.toolbar.exporting') + : t('slow_query.toolbar.export')} + + + ) + + return ( +
+ + + + + setQueryOptions({ + ...queryOptions, + timeRange, + }) + } + /> + + setQueryOptions({ + ...queryOptions, + schemas, + }) + } + items={allSchemas} + /> + + setQueryOptions({ ...queryOptions, searchText }) + } + /> + + + + + {tableColumns.length > 0 && ( + setShowFullSQL(e.target.checked)} + > + {t('slow_query.toolbar.select_columns.show_full_sql')} + + } + /> + )} + + {loadingSlowQueries ? ( + + ) : ( + + )} + + +
+ +
+
+
+
+
+ +
+ + + +
+
+ ) +} + +export default List diff --git a/ui-ori/lib/apps/SlowQuery/pages/index.ts b/ui-ori/lib/apps/SlowQuery/pages/index.ts new file mode 100644 index 0000000000..641e4de57a --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/pages/index.ts @@ -0,0 +1,4 @@ +import List from './List' +import Detail from './Detail' + +export { List, Detail } diff --git a/ui-ori/lib/apps/SlowQuery/translations/en.yaml b/ui-ori/lib/apps/SlowQuery/translations/en.yaml new file mode 100644 index 0000000000..fd858c2d06 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/translations/en.yaml @@ -0,0 +1,133 @@ +slow_query: + nav_title: Slow Queries + fields: + instance: '{{distro.tidb}} Instance' + instance_tooltip: The {{distro.tidb}} address that handles the query + connection_id: Connection ID + connection_id_tooltip: Unique connection ID of the query + sql: Query + query: Query + timestamp: Finish Time + timestamp_tooltip: The time this query finished execution + query_time: Latency + query_time_tooltip: Execution time of the query + memory_max: Max Memory + memory_max_tooltip: Maximum memory usage of the query + disk_max: Max Disk + disk_max_tooltip: Maximum disk usage of the query + digest: Query Template ID + digest_tooltip: a.k.a. Query digest + is_internal: Is Internal? + is_internal_tooltip: Whether this is an internal query + is_success: Is Success? + is_success_tooltip: Whether query is executed successfully + result: Result + result_tooltip: Whether query is executed successfully + index_names: Index Names + index_names_tooltip: The name of the used index + stats: Used Statistics + backoff_types: Backoff Types + user: Execution User + user_tooltip: The user that executes the query + host: Client Address + host_tooltip: The address of the client that sends the query + db: Execution Database + db_tooltip: The database used to execute the query + + query_time2: Query Time + query_time2_tooltip: The elapsed wall time when execution the query + parse_time: Parse Time + parse_time_tooltip: Time consumed when parsing the query + compile_time: Generate Plan Time + rewrite_time: Rewrite Plan Time + preproc_subqueries_time: Preprocess Sub-Query Time + preproc_subqueries_time_tooltip: Time consumed when pre-processing the subquery during the rewrite plan phase + optimize_time: Optimize Plan Time + wait_ts: Get Start Ts Time + wait_ts_tooltip: Time consumed when getting a start timestamp when transaction begins + cop_time: Coprocessor Executor Time + cop_time_tooltip: 'The elapsed wall time when {{distro.tidb}} Coprocessor executor waiting all Coprocessor requests to finish (note: when there are JOIN in SQL statement, multiple {{distro.tidb}} Coprocessor executors may be running in parallel, which may cause this time not being a wall time)' + wait_time: Coprocessor Wait Time + wait_time_tooltip: 'The total time of Coprocessor request is prepared and wait to execute in {{distro.tikv}}, which may happen when retrieving a snapshot though Raft concensus protocol (note: {{distro.tikv}} waits requests in parallel so that this is not a wall time)' + process_time: Coprocessor Process Time + process_time_tooltip: 'The total time of Coprocessor request being executed in {{distro.tikv}} (note: {{distro.tikv}} executes requests in parallel so that this is not a wall time)' + backoff_time: Execution Backoff Time + backoff_time_tooltip: 'The total backoff waiting time before retry when a query encounters errors (note: there may be multiple backoffs in parallel so that this may not be a wall time)' + lock_keys_time: Lock Keys Time + lock_keys_time_tooltip: Time consumed when locking keys in pessimistic transaction + get_commit_ts_time: Get Commit Ts Time + get_commit_ts_time_tooltip: Time consumed when getting a commit timestamp for 2PC commit phase when transaction commits + local_latch_wait_time: Local Latch Wait Time + local_latch_wait_time_tooltip: Time consumed when {{distro.tidb}} waits for the lock in the current {{distro.tidb}} instance before 2PC commit phase when transaction commits + resolve_lock_time: Resolve Lock Time + resolve_lock_time_tooltip: Time consumed when {{distro.tidb}} resolves locks from other transactions in 2PC prewrite phase when transaction commits + prewrite_time: Prewrite Time + prewrite_time_tooltip: Time consumed in 2PC prewrite phase when transaction commits + wait_prewrite_binlog_time: Wait Binlog Prewrite Time + wait_prewrite_binlog_time_tooltip: Time consumed when waiting Binlog prewrite to finish + commit_time: Commit Time + commit_time_tooltip: Time consumed in 2PC commit phase when transaction commits + commit_backoff_time: Commit Backoff Time + commit_backoff_time_tooltip: 'The total backoff waiting time when 2PC commit encounters errors (note: there may be multiple backoffs in parallel so that this may not be a wall time)' + write_sql_response_total: Send response Time + write_sql_response_total_tooltip: Time consumed when sending response to the SQL client + exec_retry_time: Retried execution Time + exec_retry_time_tooltip: Wall time consumed when SQL statement is retried and executed again, except for the last exection + + request_count: Request Count + process_keys: Process Keys + total_keys: Total Keys + cop_proc_addr: Copr Address (Process) + cop_proc_addr_tooltip: The address of the {{distro.tikv}} that takes most time process the Coprocessor request + cop_wait_addr: Copr Address (Wait) + cop_wait_addr_tooltip: The address of the {{distro.tikv}} that takes most time wait the Coprocessor request + + txn_start_ts: Start Timestamp + txn_start_ts_tooltip: Transaction start timestamp, a.k.a. Transaction ID + write_keys: Write Keys + write_size: Write Size + prewrite_region: Prewrite Regions + txn_retry: Transaction Retries + + prev_stmt: Previous Query + plan: Execution Plan + + cop_proc_avg: Mean Cop Proc # ? + cop_wait_avg: Mean Cop Wait # ? + + rocksdb_delete_skipped_count: RocksDB Skipped Deletions + rocksdb_delete_skipped_count_tooltip: Total number of deleted (a.k.a. tombstone) key versions that are skipped during iteration (RocksDB delete_skipped_count) + rocksdb_key_skipped_count: RocksDB Skipped Keys + rocksdb_key_skipped_count_tooltip: Total number of keys skipped during iteration (RocksDB key_skipped_count) + rocksdb_block_cache_hit_count: RocksDB Block Cache Hits + rocksdb_block_cache_hit_count_tooltip: Total number of hits from the block cache (RocksDB block_cache_hit_count) + rocksdb_block_read_count: RocksDB Block Reads + rocksdb_block_read_count_tooltip: Total number of blocks RocksDB read from file (RocksDB block_read_count) + rocksdb_block_read_byte: RocksDB Read Size + rocksdb_block_read_byte_tooltip: Total number of bytes RocksDB read from file (RocksDB block_read_byte) + common: + status: + success: Success + error: Failed + detail: + head: + title: Slow Query Detail + back: List + sql: Query + previous_sql: Previous Query + plan: Plan + tabs: + basic: Basic + time: Time + copr: Coprocessor + txn: Transaction + toolbar: + schemas: + placeholder: All Databases + selected: '{{ n }} Databases' + columnTitle: Execution Database Name + select_columns: + show_full_sql: Show Full Query Text + refresh: Refresh + export: Export + exporting: Exporting diff --git a/ui-ori/lib/apps/SlowQuery/translations/zh.yaml b/ui-ori/lib/apps/SlowQuery/translations/zh.yaml new file mode 100644 index 0000000000..71bb62c336 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/translations/zh.yaml @@ -0,0 +1,136 @@ +slow_query: + nav_title: 慢查询 + fields: + instance: '{{distro.tidb}} 实例' + instance_tooltip: 处理该 SQL 查询的 {{distro.tidb}} 实例地址 + connection_id: 连接号 + connection_id_tooltip: SQL 查询客户端连接 ID + sql: SQL + query: SQL + sql_tooltip: SQL + timestamp: 结束运行时间 + timestamp_tooltip: 该 SQL 查询结束运行时的时间 + query_time: 总执行时间 + query_time_tooltip: 该 SQL 查询总的执行时间 + memory_max: 最大内存 + memory_max_tooltip: 该 SQL 查询执行时占用的最大内存空间 + disk_max: 最大磁盘空间 + disk_max_tooltip: 该 SQL 查询执行时占用的最大磁盘空间 + digest: SQL 模板 ID + digest_tooltip: SQL 模板的唯一标识(SQL 指纹) + is_internal: 是否为内部 SQL 查询 + is_success: 是否执行成功 + is_success_tooltip: SQL 查询是否执行成功 + result: 执行结果 + result_tooltip: SQL 查询是否执行成功 + index_names: 索引名 + index_names_tooltip: SQL 查询执行时使用的索引名称 + stats: 使用的统计信息 + backoff_types: 重试类型 + user: 执行用户名 + user_tooltip: 执行该 SQL 查询的用户名,可能存在多个执行用户,仅显示其中某一个 + host: 客户端地址 + host_tooltip: 发送 SQL 查询的客户端地址 + db: 执行数据库 + db_tooltip: 执行该 SQL 查询时使用的数据库名称 + + query_time2: SQL 执行时间 + query_time2_tooltip: 执行 SQL 耗费的自然时间 + parse_time: 解析耗时 + parse_time_tooltip: 解析该 SQL 查询的耗时 + compile_time: 生成执行计划耗时 + compile_time_tooltip: 生成该 SQL 的执行计划的耗时 + rewrite_time: 重写执行计划耗时 + rewrite_time_tooltip: 重写执行计划的耗时,例如常量折叠等 + preproc_subqueries_time: 子查询预处理耗时 + optimize_time: 优化执行计划耗时 + optimize_time_tooltip: 优化器寻找执行计划的耗时,包括规则优化和物理优化的耗时 + wait_ts: 取事务 Start Ts 耗时 + wait_ts_tooltip: 从 {{distro.pd}} 取事务开始时间戳步骤的耗时 + cop_time: Coprocessor 执行耗时 + cop_time_tooltip: '{{distro.tidb}} Coprocessor 算子等待所有任务在 {{distro.tikv}} 上并行执行完毕耗费的自然时间(注:当 SQL 语句中包含 JOIN 时,多个 {{distro.tidb}} Coprocessor 算子可能会并行执行,此时不再等同于自然时间)' + wait_time: Coprocessor 累计等待耗时 + wait_time_tooltip: '{{distro.tikv}} 准备并等待 Coprocessor 任务执行的累计时间,等待过程中包括通过 Raft 一致性协议取快照等(注:{{distro.tikv}} 会并行等待任务,因此该时间不是自然流逝时间)' + process_time: Coprocessor 累计执行耗时 + process_time_tooltip: '{{distro.tikv}} 执行 Coprocessor 任务的累计处理时间(注:{{distro.tikv}} 会并行处理任务,因此该时间不是自然流逝时间)' + lock_keys_time: 上锁耗时 + lock_keys_time_tooltip: 悲观事务中对相关行数据进行上锁的耗时 + backoff_time: 执行阶段累计 Backoff 耗时 + backoff_time_tooltip: 在执行失败时,Backoff 机制等待一段时间再重试时的 Backoff 累计耗时(注:可能同时存在多个 Backoff,因此该时间可能不是自然流逝时间) + get_commit_ts_time: 取事务 Commit Ts 耗时 + get_commit_ts_time_tooltip: 从 {{distro.pd}} 取提交时间戳(事务号)步骤的耗时 + local_latch_wait_time: '{{distro.tidb}} 本地等锁耗时' + local_latch_wait_time_tooltip: 事务在 {{distro.tidb}} 本地与其他事务产生了锁冲突并等待的耗时 + resolve_lock_time: 解锁耗时 + resolve_lock_time_tooltip: 事务在提交过程中与其他事务产生了锁冲突并处理锁冲突的耗时 + prewrite_time: Prewrite 阶段耗时 + prewrite_time_tooltip: 事务两阶段提交中第一阶段(prewrite 阶段)的耗时 + wait_prewrite_binlog_time: Binlog Prewrite 等待耗时 + wait_prewrite_binlog_time_tooltip: 等待 Binlog Prewrite 完成的耗时 + commit_time: Commit 阶段耗时 + commit_time_tooltip: 事务两阶段提交中第二阶段(commit 阶段)的耗时 + commit_backoff_time: Commit 阶段累计 Backoff 耗时 + commit_backoff_time_tooltip: 事务递交失败时,Backoff 机制等待一段时间再重试时的 Backoff 累计耗时(注:可能同时存在多个 Backoff,因此该时间可能不是自然流逝时间) + write_sql_response_total: 发送结果耗时 + write_sql_response_total_tooltip: 发送 SQL 语句执行结果给客户端的耗时 + exec_retry_time: 前序执行耗时 + exec_retry_time_tooltip: 由于锁冲突或错误,计划可能会执行失败并重试执行多次,该时间是不包含最后一次执行的前序执行自然时间(注:执行计划中的时间不含该前序时间) + + request_count: Coprocessor 请求数 + process_keys: 可见版本数 + total_keys: 遇到版本数 + total_keys_tooltip: 含已删除或覆盖但未 GC 的版本 + cop_proc_addr: 最长处理时间实例 + cop_proc_addr_tooltip: 耗费最长时间处理 Coprocessor 请求的 {{distro.tikv}} 实例地址 + cop_wait_addr: 最长等待时间实例 + cop_wait_addr_tooltip: 耗费最长时间等待 Coprocessor 请求的 {{distro.tikv}} 实例地址 + + txn_start_ts: 事务号 + txn_start_ts_tooltip: 事务开始的时间戳,也即是事务号 + write_keys: 写入 Key 个数 + write_size: 写入数据量 + prewrite_region: Prewrite 涉及 Regions 个数 + txn_retry: 事务重试次数 + + prev_stmt: 前一条 SQL 查询 + plan: 执行计划 + + cop_proc_avg: 平均处理 # ? + cop_wait_avg: 平均等待 # ? + + rocksdb_delete_skipped_count: RocksDB 已删除 Key 扫描数 + rocksdb_delete_skipped_count_tooltip: RocksDB 扫数据时遇到的已删除 (tombstone) Key 数量 (delete_skipped_count) + rocksdb_key_skipped_count: RocksDB Key 扫描数 + rocksdb_key_skipped_count_tooltip: RocksDB 扫数据时所有遇到的 Key 数量 (key_skipped_count) + rocksdb_block_cache_hit_count: RocksDB 缓存读次数 + rocksdb_block_cache_hit_count_tooltip: RocksDB 从 Block Cache 缓存中读数据的次数 (block_cache_hit_count) + rocksdb_block_read_count: RocksDB 文件系统读次数 + rocksdb_block_read_count_tooltip: RocksDB 从文件系统中读数据的次数 (block_read_count) + rocksdb_block_read_byte: RocksDB 文件系统读数据量 + rocksdb_block_read_byte_tooltip: RocksDB 从文件系统中读数据的数据量 (block_read_byte) + common: + status: + success: 成功 + error: 失败 + detail: + head: + title: 慢查询详情 + back: 列表 + sql: SQL 查询 + previous_sql: 上一条 SQL 查询 + plan: 执行计划 + tabs: + basic: 基本信息 + time: 执行时间 + copr: Coprocessor 读取 + txn: 事务 + toolbar: + schemas: + placeholder: 所有数据库 + selected: '{{ n }} 数据库' + columnTitle: 执行数据库名 + select_columns: + show_full_sql: 显示完整 SQL 文本 + refresh: 刷新 + export: 导出 + exporting: 正在导出 diff --git a/ui-ori/lib/apps/SlowQuery/utils/tableColumns.tsx b/ui-ori/lib/apps/SlowQuery/utils/tableColumns.tsx new file mode 100644 index 0000000000..8bbc0ac40f --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/utils/tableColumns.tsx @@ -0,0 +1,126 @@ +import { Badge } from 'antd' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import React from 'react' +import { useTranslation } from 'react-i18next' + +import { SlowqueryModel } from '@lib/client' +import { TableColumnFactory } from '@lib/utils/tableColumnFactory' + +////////////////////////////////////////// + +function ResultStatusBadge({ status }: { status: 'success' | 'error' }) { + const { t } = useTranslation() + return ( + + ) +} + +////////////////////////////////////////// +const TRANS_KEY_PREFIX = 'slow_query.fields' + +export const derivedFields = { + cop_proc_avg: [ + { tooltipPrefix: 'mean', fieldName: 'cop_proc_avg' }, + { tooltipPrefix: 'max', fieldName: 'cop_proc_max' }, + { tooltipPrefix: 'p90', fieldName: 'cop_proc_p90' }, + ], + cop_wait_avg: [ + { tooltipPrefix: 'mean', fieldName: 'cop_wait_avg' }, + { tooltipPrefix: 'max', fieldName: 'cop_wait_max' }, + { tooltipPrefix: 'p90', fieldName: 'cop_wait_p90' }, + ], +} + +////////////////////////////////////////// + +export function slowQueryColumns( + rows: SlowqueryModel[], + tableSchemaColumns: string[], + showFullSQL?: boolean +): IColumn[] { + const tcf = new TableColumnFactory(TRANS_KEY_PREFIX, tableSchemaColumns) + return tcf.columns([ + tcf.sqlText('query', showFullSQL, rows), + tcf.textWithTooltip('digest', rows), + tcf.textWithTooltip('instance', rows), + tcf.textWithTooltip('db', rows), + tcf.textWithTooltip('connection_id', rows), + tcf.timestamp('timestamp', rows), + + tcf.bar.single('query_time', 's', rows), + tcf.bar.single('parse_time', 's', rows), + tcf.bar.single('compile_time', 's', rows), + tcf.bar.single('process_time', 's', rows), + tcf.bar.single('memory_max', 'bytes', rows), + tcf.bar.single('disk_max', 'bytes', rows), + + tcf.textWithTooltip('txn_start_ts', rows), + // success columnn + tcf.textWithTooltip('success', rows).patchConfig({ + name: 'result', + minWidth: 50, + maxWidth: 100, + onRender: (rec) => ( + + ), + }), + + // basic + // is_internal column + tcf.textWithTooltip('is_internal', rows).patchConfig({ + minWidth: 50, + maxWidth: 100, + onRender: (rec) => (rec.is_internal === 1 ? 'Yes' : 'No'), + }), + tcf.textWithTooltip('index_names', rows), + tcf.textWithTooltip('stats', rows), + tcf.textWithTooltip('backoff_types', rows), + // connection + tcf.textWithTooltip('user', rows), + tcf.textWithTooltip('host', rows), + // time + tcf.bar.single('wait_time', 'ns', rows), + tcf.bar.single('backoff_time', 'ns', rows), + tcf.bar.single('get_commit_ts_time', 'ns', rows), + tcf.bar.single('local_latch_wait_time', 'ns', rows), + tcf.bar.single('prewrite_time', 'ns', rows), + tcf.bar.single('commit_time', 'ns', rows), + tcf.bar.single('commit_backoff_time', 'ns', rows), + tcf.bar.single('resolve_lock_time', 'ns', rows), + // cop + tcf.bar.multiple({ sources: derivedFields.cop_proc_avg }, 'ns', rows), + tcf.bar.multiple({ sources: derivedFields.cop_wait_avg }, 'ns', rows), + // transaction + tcf.bar.single('write_keys', 'short', rows), + tcf.bar.single('write_size', 'bytes', rows), + tcf.bar.single('prewrite_region', 'short', rows), + tcf.bar.single('txn_retry', 'short', rows), + // cop? + tcf.bar.single('request_count', 'short', rows), + tcf.bar.single('process_keys', 'short', rows), + tcf.bar.single('total_keys', 'short', rows), + tcf.textWithTooltip('cop_proc_addr', rows), + tcf.textWithTooltip('cop_wait_addr', rows), + // rocksdb + tcf.bar.single('rocksdb_delete_skipped_count', 'short', rows).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + tcf.bar.single('rocksdb_key_skipped_count', 'short', rows).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + tcf.bar.single('rocksdb_block_cache_hit_count', 'short', rows).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + tcf.bar.single('rocksdb_block_read_count', 'short', rows).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + tcf.bar.single('rocksdb_block_read_byte', 'bytes', rows).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + ]) +} diff --git a/ui-ori/lib/apps/SlowQuery/utils/useSchemaColumns.ts b/ui-ori/lib/apps/SlowQuery/utils/useSchemaColumns.ts new file mode 100644 index 0000000000..ab61e0296f --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/utils/useSchemaColumns.ts @@ -0,0 +1,23 @@ +import { useState, useEffect } from 'react' + +import client from '@lib/client' +import { useClientRequest } from '@lib/utils/useClientRequest' + +export const useSchemaColumns = () => { + const [schemaColumns, setSchemaColumns] = useState([]) + const { data, isLoading } = useClientRequest((options) => { + return client.getInstance().slowQueryTableColumnsGet(options) + }) + + useEffect(() => { + if (!data) { + return + } + setSchemaColumns(data.map((d) => d.toLowerCase())) + }, [data]) + + return { + schemaColumns, + isLoading, + } +} diff --git a/ui-ori/lib/apps/SlowQuery/utils/useSlowQueryTableController.ts b/ui-ori/lib/apps/SlowQuery/utils/useSlowQueryTableController.ts new file mode 100644 index 0000000000..dbf80087a7 --- /dev/null +++ b/ui-ori/lib/apps/SlowQuery/utils/useSlowQueryTableController.ts @@ -0,0 +1,277 @@ +import { useEffect, useMemo, useState } from 'react' +import { useSessionStorageState } from 'ahooks' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' + +import client, { ErrorStrategy, SlowqueryModel } from '@lib/client' +import { + calcTimeRange, + TimeRange, + IColumnKeys, + stringifyTimeRange, +} from '@lib/components' +import useOrderState, { IOrderOptions } from '@lib/utils/useOrderState' + +import { getSelectedFields } from '@lib/utils/tableColumnFactory' +import { CacheMgr } from '@lib/utils/useCache' +import useCacheItemIndex from '@lib/utils/useCacheItemIndex' + +import { derivedFields, slowQueryColumns } from './tableColumns' +import { useSchemaColumns } from './useSchemaColumns' + +export const DEF_SLOW_QUERY_COLUMN_KEYS: IColumnKeys = { + query: true, + timestamp: true, + query_time: true, + memory_max: true, +} + +const QUERY_OPTIONS = 'slow_query.query_options' + +const DEF_ORDER_OPTIONS: IOrderOptions = { + orderBy: 'timestamp', + desc: true, +} + +export interface ISlowQueryOptions { + timeRange?: TimeRange + schemas: string[] + searchText: string + limit: number + + digest: string + plans: string[] +} + +export const DEF_SLOW_QUERY_OPTIONS: ISlowQueryOptions = { + timeRange: undefined, + schemas: [], + searchText: '', + limit: 100, + + digest: '', + plans: [], +} + +export interface ISlowQueryTableController { + queryOptions: ISlowQueryOptions + setQueryOptions: (options: ISlowQueryOptions) => void + orderOptions: IOrderOptions + changeOrder: (orderBy: string, desc: boolean) => void + refresh: () => void + + allSchemas: string[] + loadingSlowQueries: boolean + slowQueries: SlowqueryModel[] + queryTimeRange: { beginTime: number; endTime: number } + + errors: Error[] + + tableColumns: IColumn[] + visibleColumnKeys: IColumnKeys + + downloadCSV: () => Promise + downloading: boolean + + saveClickedItemIndex: (idx: number) => void + getClickedItemIndex: () => number +} + +export default function useSlowQueryTableController( + cacheMgr: CacheMgr | null, + visibleColumnKeys: IColumnKeys, + showFullSQL: boolean, + options?: ISlowQueryOptions, + needSave: boolean = true +): ISlowQueryTableController { + const { orderOptions, changeOrder } = useOrderState( + 'slow_query', + needSave, + DEF_ORDER_OPTIONS + ) + + const [memoryQueryOptions, setMemoryQueryOptions] = useState( + options || DEF_SLOW_QUERY_OPTIONS + ) + const [sessionQueryOptions, setSessionQueryOptions] = useSessionStorageState( + QUERY_OPTIONS, + options || DEF_SLOW_QUERY_OPTIONS + ) + const queryOptions = useMemo( + () => (needSave ? sessionQueryOptions : memoryQueryOptions), + [needSave, memoryQueryOptions, sessionQueryOptions] + ) + const queryTimeRange = useMemo(() => { + const [beginTime, endTime] = calcTimeRange(queryOptions.timeRange) + return { beginTime, endTime } + }, [queryOptions]) + + const [allSchemas, setAllSchemas] = useState([]) + const [loadingSlowQueries, setLoadingSlowQueries] = useState(false) + const [slowQueries, setSlowQueries] = useState([]) + const [refreshTimes, setRefreshTimes] = useState(0) + + function setQueryOptions(newOptions: ISlowQueryOptions) { + if (needSave) { + setSessionQueryOptions(newOptions) + } else { + setMemoryQueryOptions(newOptions) + } + } + + const [errors, setErrors] = useState([]) + + const selectedFields = useMemo( + () => getSelectedFields(visibleColumnKeys, derivedFields).join(','), + [visibleColumnKeys] + ) + + const cacheKey = useMemo(() => { + const { schemas, digest, limit, plans, searchText, timeRange } = + queryOptions + const { desc, orderBy } = orderOptions + const cacheKey = `${schemas.join(',')}_${digest}_${limit}_${plans.join( + ',' + )}_${searchText}_${stringifyTimeRange( + timeRange + )}_${desc}_${orderBy}_${selectedFields}` + return cacheKey + }, [queryOptions, orderOptions, selectedFields]) + + function refresh() { + cacheMgr?.remove(cacheKey) + + setErrors([]) + setRefreshTimes((prev) => prev + 1) + } + + useEffect(() => { + async function querySchemas() { + try { + const res = await client.getInstance().infoListDatabases({ + errorStrategy: ErrorStrategy.Custom, + }) + setAllSchemas(res?.data || []) + } catch (e) { + setErrors((prev) => prev.concat(e)) + } + } + + querySchemas() + }, []) + + const { schemaColumns, isLoading: isSchemaLoading } = useSchemaColumns() + + const tableColumns = useMemo( + () => slowQueryColumns(slowQueries, schemaColumns, showFullSQL), + [slowQueries, schemaColumns, showFullSQL] + ) + + useEffect(() => { + if (!selectedFields.length) { + setSlowQueries([]) + setLoadingSlowQueries(false) + return + } + + async function getSlowQueryList() { + const cacheItem = cacheMgr?.get(cacheKey) + if (cacheItem) { + setSlowQueries(cacheItem) + return + } + + setLoadingSlowQueries(true) + try { + const res = await client + .getInstance() + .slowQueryListGet( + queryTimeRange.beginTime, + queryOptions.schemas, + orderOptions.desc, + queryOptions.digest, + queryTimeRange.endTime, + selectedFields, + queryOptions.limit, + orderOptions.orderBy, + queryOptions.plans, + queryOptions.searchText, + { + errorStrategy: ErrorStrategy.Custom, + } + ) + setSlowQueries(res.data || []) + cacheMgr?.set(cacheKey, res.data || []) + setErrors([]) + } catch (e) { + setErrors((prev) => prev.concat(e)) + } + setLoadingSlowQueries(false) + } + + if (isSchemaLoading) { + return + } + getSlowQueryList() + }, [ + queryOptions, + orderOptions, + queryTimeRange, + selectedFields, + refreshTimes, + cacheKey, + cacheMgr, + isSchemaLoading, + ]) + + const [downloading, setDownloading] = useState(false) + + async function downloadCSV() { + try { + setDownloading(true) + const res = await client.getInstance().slowQueryDownloadTokenPost({ + fields: '*', + db: queryOptions.schemas, + digest: queryOptions.digest, + text: queryOptions.searchText, + plans: queryOptions.plans, + orderBy: orderOptions.orderBy, + desc: orderOptions.desc, + end_time: queryTimeRange.endTime, + begin_time: queryTimeRange.beginTime, + }) + const token = res.data + if (token) { + window.location.href = `${client.getBasePath()}/slow_query/download?token=${token}` + } + } finally { + setDownloading(false) + } + } + + const { saveClickedItemIndex, getClickedItemIndex } = + useCacheItemIndex(cacheMgr) + + return { + queryOptions, + setQueryOptions, + orderOptions, + changeOrder, + refresh, + + allSchemas, + loadingSlowQueries, + slowQueries, + queryTimeRange, + + errors, + + tableColumns, + visibleColumnKeys, + + downloading, + downloadCSV, + + saveClickedItemIndex, + getClickedItemIndex, + } +} diff --git a/ui-ori/lib/apps/Statement/components/StatementsTable.tsx b/ui-ori/lib/apps/Statement/components/StatementsTable.tsx new file mode 100644 index 0000000000..cfa4455067 --- /dev/null +++ b/ui-ori/lib/apps/Statement/components/StatementsTable.tsx @@ -0,0 +1,92 @@ +import { usePersistFn } from 'ahooks' +import React, { useCallback } from 'react' +import { useNavigate } from 'react-router-dom' +import { + DetailsRow, + IDetailsListProps, + IDetailsRowStyles, +} from 'office-ui-fabric-react' +import { getTheme } from 'office-ui-fabric-react/lib/Styling' + +import openLink from '@lib/utils/openLink' +import { CardTable, ICardTableProps } from '@lib/components' + +import DetailPage from '../pages/Detail' +import { IStatementTableController } from '../utils/useStatementTableController' + +interface Props extends Partial { + controller: IStatementTableController +} + +const theme = getTheme() + +export default function StatementsTable({ controller, ...restPrpos }: Props) { + const { + orderOptions, + changeOrder, + statementsTimeRange: { begin_time, end_time }, + loadingStatements, + statements, + errors, + tableColumns, + visibleColumnKeys, + + getClickedItemIndex, + saveClickedItemIndex, + } = controller + + const navigate = useNavigate() + const handleRowClick = usePersistFn( + (rec, idx, ev: React.MouseEvent) => { + // the evicted record's digest is empty string + if (!rec.digest) { + return + } + saveClickedItemIndex(idx) + const qs = DetailPage.buildQuery({ + digest: rec.digest, + schema: rec.schema_name, + beginTime: begin_time, + endTime: end_time, + }) + openLink(`/statement/detail?${qs}`, ev, navigate) + } + ) + + const getKey = useCallback((row) => `${row.digest}_${row.schema_name}`, []) + + return ( + + ) +} + +const renderRow: IDetailsListProps['onRenderRow'] = (props) => { + if (!props) { + return null + } + + const customStyles: Partial = {} + // the evicted record's digest is empty string + if (!props.item.digest) { + customStyles.root = { + backgroundColor: theme.palette.neutralLighter, + cursor: 'not-allowed', + } + } + + return +} diff --git a/ui-ori/lib/apps/Statement/components/index.ts b/ui-ori/lib/apps/Statement/components/index.ts new file mode 100644 index 0000000000..2e3e8635f1 --- /dev/null +++ b/ui-ori/lib/apps/Statement/components/index.ts @@ -0,0 +1,3 @@ +import StatementsTable from './StatementsTable' + +export { StatementsTable } diff --git a/ui-ori/lib/apps/Statement/index.meta.ts b/ui-ori/lib/apps/Statement/index.meta.ts new file mode 100644 index 0000000000..cfe7ba8dbf --- /dev/null +++ b/ui-ori/lib/apps/Statement/index.meta.ts @@ -0,0 +1,9 @@ +import { ThunderboltOutlined } from '@ant-design/icons' + +export default { + id: 'statement', + routerPrefix: '/statement', + icon: ThunderboltOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_statement" */ '.'), +} diff --git a/ui-ori/lib/apps/Statement/index.tsx b/ui-ori/lib/apps/Statement/index.tsx new file mode 100644 index 0000000000..d4af59a6c4 --- /dev/null +++ b/ui-ori/lib/apps/Statement/index.tsx @@ -0,0 +1,29 @@ +import React from 'react' +import { HashRouter as Router, Routes, Route } from 'react-router-dom' + +import { Root } from '@lib/components' +import useCache, { CacheContext } from '@lib/utils/useCache' + +import { Detail, List } from './pages' + +export default function () { + const statementCacheMgr = useCache(2) + + return ( + + + + + } /> + } /> + + + + + ) +} + +export * from './components' +export * from './pages' +export * from './utils/useStatementTableController' +export { default as useStatementTableController } from './utils/useStatementTableController' diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetail.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetail.tsx new file mode 100644 index 0000000000..ebc9ef3f6c --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetail.tsx @@ -0,0 +1,182 @@ +import React from 'react' +import { Space } from 'antd' +import { useTranslation } from 'react-i18next' +import { + AnimatedSkeleton, + Card, + CopyLink, + Descriptions, + ErrorBar, + Expand, + HighlightSQL, + Pre, + TextWithInfo, +} from '@lib/components' +import { useClientRequest } from '@lib/utils/useClientRequest' +import client from '@lib/client' +import formatSql from '@lib/utils/sqlFormatter' +import { useLocalStorageState } from '@lib/utils/useLocalStorageState' + +import type { IPageQuery } from '.' +import DetailTabs from './PlanDetailTabs' +import { useSchemaColumns } from '../../utils/useSchemaColumns' + +export interface IQuery extends IPageQuery { + plans: string[] + allPlans: number +} + +export interface IPlanDetailProps { + query: IQuery +} + +const STMT_DETAIL_PLAN_EXPAND = 'statement.detail_plan_expand' + +function PlanDetail({ query }: IPlanDetailProps) { + const { t } = useTranslation() + const { + data, + isLoading: isDataLoading, + error, + } = useClientRequest((reqConfig) => + client + .getInstance() + .statementsPlanDetailGet( + query.beginTime!, + query.digest!, + query.endTime!, + query.plans, + query.schema!, + reqConfig + ) + ) + const { isLoading: isSchemaLoading } = useSchemaColumns() + const isLoading = isDataLoading || isSchemaLoading + + const [detailExpand, setDetailExpand] = useLocalStorageState( + STMT_DETAIL_PLAN_EXPAND, + { + prev_query: false, + query: false, + plan: false, + } + ) + + const togglePrevQuery = () => + setDetailExpand((prev) => ({ ...prev, prev_query: !prev.prev_query })) + const toggleQuery = () => + setDetailExpand((prev) => ({ ...prev, query: !prev.query })) + const togglePlan = () => + setDetailExpand((prev) => ({ ...prev, plan: !prev.plan })) + + let titleKey + if (query.allPlans === 1) { + titleKey = 'one_for_all' + } else if (query.plans.length === query.allPlans) { + titleKey = 'all' + } else { + titleKey = 'some' + } + + return ( + + + {error && } + {data && ( + <> + + + + + + +
+ } + > + + } + > + + + + {data.prev_sample_text ? ( + + + + + + + } + > + + } + > + + + + ) : null} + + + + + + } + > + +
{data.plan}
+
+
+ + + + + )} + + + ) +} + +export default PlanDetail diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabBasic.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabBasic.tsx new file mode 100644 index 0000000000..b01dcc4ddf --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabBasic.tsx @@ -0,0 +1,65 @@ +import { Tooltip } from 'antd' +import React from 'react' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import { StatementModel } from '@lib/client' +import { DateTime, Pre, ValueWithTooltip, TextWrap } from '@lib/components' + +export const tabBasicItems = (data: StatementModel) => [ + { + key: 'table_names', + value: ( + + +
{data.table_names}
+
+
+ ), + }, + { key: 'index_names', value: data.index_names }, + { + key: 'first_seen', + value: data.first_seen && ( + + ), + }, + { + key: 'last_seen', + value: data.last_seen && ( + + ), + }, + { + key: 'exec_count', + value: , + }, + { + key: 'sum_latency', + value: getValueFormat('ns')(data.sum_latency || 0, 1), + }, + { key: 'sample_user', value: data.sample_user }, + { + key: 'sum_errors', + value: , + }, + { + key: 'sum_warnings', + value: , + }, + { + key: 'avg_mem', + value: getValueFormat('bytes')(data.avg_mem || 0, 1), + }, + { + key: 'max_mem', + value: getValueFormat('bytes')(data.max_mem || 0, 1), + }, + { + key: 'avg_disk', + value: getValueFormat('bytes')(data.avg_disk || 0, 1), + }, + { + key: 'max_disk', + value: getValueFormat('bytes')(data.max_disk || 0, 1), + }, +] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx new file mode 100644 index 0000000000..2157258849 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx @@ -0,0 +1,80 @@ +import React from 'react' + +import { StatementModel } from '@lib/client' +import { ValueWithTooltip } from '@lib/components' + +export const tabCoprItems = (data: StatementModel) => [ + { key: 'sum_cop_task_num', value: data.sum_cop_task_num }, + { + key: 'avg_processed_keys', + value: , + }, + { + key: 'max_processed_keys', + value: , + }, + { + key: 'avg_total_keys', + value: , + }, + { + key: 'max_total_keys', + value: , + }, + { + key: 'avg_rocksdb_block_cache_hit_count', + value: ( + + ), + }, + { + key: 'max_rocksdb_block_cache_hit_count', + value: ( + + ), + }, + { + key: 'avg_rocksdb_block_read_byte', + value: ( + + ), + }, + { + key: 'max_rocksdb_block_read_byte', + value: ( + + ), + }, + { + key: 'avg_rocksdb_block_read_count', + value: , + }, + { + key: 'max_rocksdb_block_read_count', + value: , + }, + { + key: 'avg_rocksdb_delete_skipped_count', + value: ( + + ), + }, + { + key: 'max_rocksdb_delete_skipped_count', + value: ( + + ), + }, + { + key: 'avg_rocksdb_key_skipped_count', + value: ( + + ), + }, + { + key: 'max_rocksdb_key_skipped_count', + value: ( + + ), + }, +] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTime.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTime.tsx new file mode 100644 index 0000000000..d644aed867 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTime.tsx @@ -0,0 +1,69 @@ +import React from 'react' +import { StatementModel } from '@lib/client' +import { Typography } from 'antd' +import { TFunction } from 'i18next' + +export const tabTimeItems = (data: StatementModel, t: TFunction) => [ + { + key: 'parse_latency', + avg: data.avg_parse_latency, + max: data.max_parse_latency, + }, + { + key: 'compile_latency', + avg: data.avg_compile_latency, + max: data.max_compile_latency, + }, + { key: 'wait_time', avg: data.avg_wait_time, max: data.max_wait_time }, + { + key: 'process_time', + avg: data.avg_process_time, + max: data.max_process_time, + }, + { + key: 'backoff_time', + avg: data.avg_backoff_time, + max: data.max_backoff_time, + }, + { + key: 'get_commit_ts_time', + avg: data.avg_get_commit_ts_time, + max: data.max_get_commit_ts_time, + }, + { + key: 'local_latch_wait_time', + avg: data.avg_local_latch_wait_time, + max: data.max_local_latch_wait_time, + }, + { + key: 'resolve_lock_time', + avg: data.avg_resolve_lock_time, + max: data.max_resolve_lock_time, + }, + { + key: 'prewrite_time', + avg: data.avg_prewrite_time, + max: data.max_prewrite_time, + }, + { + key: 'commit_time', + avg: data.avg_commit_time, + max: data.max_commit_time, + }, + { + key: 'commit_backoff_time', + avg: data.avg_commit_backoff_time, + max: data.max_commit_backoff_time, + }, + { + key: 'query_time2', + keyDisplay: ( + + {t('statement.fields.query_time2')} + + ), + avg: data.avg_latency, + min: data.min_latency, + max: data.max_latency, + }, +] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTxn.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTxn.tsx new file mode 100644 index 0000000000..7c3fa41ddb --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTxn.tsx @@ -0,0 +1,48 @@ +import React from 'react' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import { StatementModel } from '@lib/client' +import { ValueWithTooltip } from '@lib/components' + +export const tabTxnItems = (data: StatementModel) => [ + { + key: 'avg_affected_rows', + value: , + }, + { + key: 'sum_backoff_times', + value: , + }, + { + key: 'avg_write_keys', + value: , + }, + { + key: 'max_write_keys', + value: , + }, + { + key: 'avg_write_size', + value: getValueFormat('bytes')(data.avg_write_size || 0, 1), + }, + { + key: 'max_write_size', + value: getValueFormat('bytes')(data.max_write_size || 0, 1), + }, + { + key: 'avg_prewrite_regions', + value: , + }, + { + key: 'max_prewrite_regions', + value: , + }, + { + key: 'avg_txn_retry', + value: , + }, + { + key: 'max_txn_retry', + value: , + }, +] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabs.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabs.tsx new file mode 100644 index 0000000000..e9379db1ed --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabs.tsx @@ -0,0 +1,100 @@ +import React from 'react' +import { useTranslation } from 'react-i18next' +import { CardTable, CardTabs } from '@lib/components' +import { StatementModel } from '@lib/client' +import { valueColumns, timeValueColumns } from '@lib/utils/tableColumns' + +import { tabBasicItems } from './PlanDetailTabBasic' +import { tabTimeItems } from './PlanDetailTabTime' +import { tabCoprItems } from './PlanDetailTabCopr' +import { tabTxnItems } from './PlanDetailTabTxn' +import SlowQueryTab from './SlowQueryTab' +import { useSchemaColumns } from '../../utils/useSchemaColumns' +import type { IQuery } from './PlanDetail' + +export default function DetailTabs({ + data, + query, +}: { + data: StatementModel + query: IQuery +}) { + const { t } = useTranslation() + const { schemaColumns } = useSchemaColumns() + const columnsSet = new Set(schemaColumns) + + const tabs = [ + { + key: 'basic', + title: t('statement.pages.detail.tabs.basic'), + content: () => { + const items = tabBasicItems(data) + const columns = valueColumns('statement.fields.') + return ( + + ) + }, + }, + { + key: 'time', + title: t('statement.pages.detail.tabs.time'), + content: () => { + const items = tabTimeItems(data, t) + const columns = timeValueColumns('statement.fields.', items) + return ( + + ) + }, + }, + { + key: 'copr', + title: t('statement.pages.detail.tabs.copr'), + content: () => { + const items = tabCoprItems(data).filter((item) => + columnsSet.has(item.key) + ) + const columns = valueColumns('statement.fields.') + return ( + + ) + }, + }, + { + key: 'txn', + title: t('statement.pages.detail.tabs.txn'), + content: () => { + const items = tabTxnItems(data) + const columns = valueColumns('statement.fields.') + return ( + + ) + }, + }, + { + key: 'slow_query', + title: t('statement.pages.detail.tabs.slow_query'), + content: () => , + }, + ] + return +} diff --git a/ui-ori/lib/apps/Statement/pages/Detail/SlowQueryTab.tsx b/ui-ori/lib/apps/Statement/pages/Detail/SlowQueryTab.tsx new file mode 100644 index 0000000000..5b5fbfe3c5 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/SlowQueryTab.tsx @@ -0,0 +1,33 @@ +import React from 'react' +import SlowQueriesTable from '@lib/apps/SlowQuery/components/SlowQueriesTable' +import { IQuery } from './PlanDetail' +import useSlowQueryTableController, { + DEF_SLOW_QUERY_OPTIONS, + DEF_SLOW_QUERY_COLUMN_KEYS, +} from '@lib/apps/SlowQuery/utils/useSlowQueryTableController' + +export interface ISlowQueryTabProps { + query: IQuery +} + +export default function SlowQueryTab({ query }: ISlowQueryTabProps) { + const controller = useSlowQueryTableController( + null, + DEF_SLOW_QUERY_COLUMN_KEYS, + false, + { + ...DEF_SLOW_QUERY_OPTIONS, + timeRange: { + type: 'absolute', + value: [query.beginTime!, query.endTime!], + }, + schemas: [query.schema!], + limit: 100, + digest: query.digest!, + plans: query.plans, + }, + false + ) + + return +} diff --git a/ui-ori/lib/apps/Statement/pages/Detail/index.tsx b/ui-ori/lib/apps/Statement/pages/Detail/index.tsx new file mode 100644 index 0000000000..484fa76f68 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/Detail/index.tsx @@ -0,0 +1,208 @@ +import { Alert, Space } from 'antd' +import { SelectionMode } from 'office-ui-fabric-react/lib/DetailsList' +import { Selection } from 'office-ui-fabric-react/lib/Selection' +import React, { useEffect, useMemo, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Link, useLocation } from 'react-router-dom' +import { ArrowLeftOutlined } from '@ant-design/icons' + +import client, { StatementModel } from '@lib/client' +import { + AnimatedSkeleton, + CardTable, + DateTime, + Descriptions, + ErrorBar, + Expand, + Head, + HighlightSQL, + TextWithInfo, +} from '@lib/components' +import CopyLink from '@lib/components/CopyLink' +import formatSql from '@lib/utils/sqlFormatter' +import { buildQueryFn, parseQueryFn } from '@lib/utils/query' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { useLocalStorageState } from '@lib/utils/useLocalStorageState' + +import { planColumns as genPlanColumns } from '../../utils/tableColumns' +import PlanDetail from './PlanDetail' + +export interface IPageQuery { + digest?: string + schema?: string + beginTime?: number + endTime?: number +} + +const STMT_DETAIL_EXPAND = 'statement.detail_expand' + +function DetailPage() { + const query = DetailPage.parseQuery(useLocation().search) + const { + data: plans, + isLoading, + error, + } = useClientRequest((reqConfig) => + client + .getInstance() + .statementsPlansGet( + query.beginTime!, + query.digest!, + query.endTime!, + query.schema!, + reqConfig + ) + ) + const { t } = useTranslation() + const planColumns = useMemo(() => genPlanColumns(plans || []), [plans]) + + const [selectedPlans, setSelectedPlans] = useState([]) + const selection = useRef( + new Selection({ + onSelectionChanged: () => { + const s = selection.current.getSelection() as StatementModel[] + setSelectedPlans(s.map((v) => v.plan_digest || '')) + }, + }) + ) + + const [sqlExpanded, setSqlExpanded] = useLocalStorageState( + STMT_DETAIL_EXPAND, + false + ) + const toggleSqlExpanded = () => setSqlExpanded((prev) => !prev) + + useEffect(() => { + if (plans && plans.length > 0) { + selection.current.setAllSelected(true) + } + }, [plans]) + + return ( +
+ + {t('statement.pages.detail.head.back')} + + } + > + + {error && } + {plans && plans.length > 0 && ( + <> + + + + + + + + } + > + + } + > + + + + + + + + } + > + {plans[0].digest} + + + } + > + {' '} + ~{' '} + + + + } + > + {plans.length} + + + + + + } + > + {query.schema!} + + +
1 ? 'block' : 'none', + }} + > + + +
+ + )} +
+ + + {selectedPlans.length > 0 && plans && plans.length > 0 && ( + + )} +
+ ) +} + +DetailPage.buildQuery = buildQueryFn() +DetailPage.parseQuery = parseQueryFn() + +export default DetailPage diff --git a/ui-ori/lib/apps/Statement/pages/List/List.module.less b/ui-ori/lib/apps/Statement/pages/List/List.module.less new file mode 100644 index 0000000000..c168b362f3 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/List/List.module.less @@ -0,0 +1,15 @@ +@import '~antd/es/style/themes/default.less'; + +.list { + &_container { + display: flex; + flex-direction: column; + height: 100vh; + } + + &_toolbar { + @media only screen and (max-width: @screen-md) { + flex-direction: column; + } + } +} diff --git a/ui-ori/lib/apps/Statement/pages/List/StatementSettingForm.tsx b/ui-ori/lib/apps/Statement/pages/List/StatementSettingForm.tsx new file mode 100755 index 0000000000..4229be08cd --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/List/StatementSettingForm.tsx @@ -0,0 +1,211 @@ +import React, { useState, useCallback } from 'react' +import { + Form, + Skeleton, + Switch, + Input, + Slider, + Space, + Button, + Modal, +} from 'antd' +import { ExclamationCircleOutlined } from '@ant-design/icons' +import { useTranslation } from 'react-i18next' +import client, { StatementEditableConfig } from '@lib/client' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { ErrorBar } from '@lib/components' +import { useIsWriteable } from '@lib/utils/store' + +interface Props { + onClose: () => void + onConfigUpdated: () => any +} + +const convertArrToObj = (arr: number[]) => + arr.reduce((acc, cur) => { + acc[cur] = cur + return acc + }, {}) + +function StatementSettingForm({ onClose, onConfigUpdated }: Props) { + const [submitting, setSubmitting] = useState(false) + const { t } = useTranslation() + const isWriteable = useIsWriteable() + + const { + data: initialConfig, + isLoading: loading, + error, + } = useClientRequest((reqConfig) => + client.getInstance().statementsConfigGet(reqConfig) + ) + + const handleSubmit = useCallback( + (values) => { + async function updateConfig(values) { + const newConfig: StatementEditableConfig = { + enable: values.enable, + max_size: values.max_size, + refresh_interval: values.refresh_interval * 60, + history_size: values.history_size, + internal_query: values.internal_query, + } + try { + setSubmitting(true) + await client.getInstance().statementsConfigPost(newConfig) + onClose() + onConfigUpdated() + } finally { + setSubmitting(false) + } + } + + if (!values.enable) { + // warning + Modal.confirm({ + title: t('statement.settings.close_statement'), + icon: , + content: t('statement.settings.close_statement_warning'), + okText: t('statement.settings.actions.close'), + cancelText: t('statement.settings.actions.cancel'), + okButtonProps: { danger: true }, + onOk: () => updateConfig(values), + }) + } else { + updateConfig(values) + } + }, + [t, onClose, onConfigUpdated] + ) + + return ( + <> + {error && } + {loading && } + {!loading && initialConfig && ( +
+ + + + + + prev.enable !== cur.enable} + > + {({ getFieldValue }) => + getFieldValue('enable') && ( + <> + + + + + + + + + + + + + + + + + + + + + + + prev.refresh_interval !== cur.refresh_interval || + prev.history_size !== cur.history_size + } + > + {({ getFieldValue }) => { + const refreshInterval = + getFieldValue('refresh_interval') || 0 + const historySize = getFieldValue('history_size') || 0 + const totalMins = refreshInterval * historySize + const day = Math.floor(totalMins / (24 * 60)) + const hour = Math.floor((totalMins - day * 24 * 60) / 60) + const min = totalMins - day * 24 * 60 - hour * 60 + return `${day} day ${hour} hour ${min} min` + }} + + + + + + ) + } + + + + + + + +
+ )} + + ) +} + +export default StatementSettingForm diff --git a/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.module.less b/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.module.less new file mode 100644 index 0000000000..34f62630a8 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.module.less @@ -0,0 +1,46 @@ +@import '~antd/es/style/themes/default.less'; + +.dropdown_content_container { + background-color: @select-dropdown-bg; + padding: @padding-md; + border-radius: @border-radius-base; + outline: none; + box-shadow: @box-shadow-base; + box-sizing: border-box; + + .usual_time_ranges { + span { + color: @gray-6; + } + + margin-bottom: 16px; + } + + .custom_time_ranges { + span { + color: @gray-6; + } + } + + .time_range_items { + max-width: 360px; + margin-top: 8px; + display: flex; + flex-wrap: wrap; + } + + .time_range_item { + width: 120px; + padding-bottom: 4px; + cursor: pointer; + } + + .time_range_item_disabled { + color: @gray-6; + cursor: not-allowed; + } + + .time_range_item_active { + color: @primary-color; + } +} diff --git a/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.tsx b/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.tsx new file mode 100644 index 0000000000..a4bac9bae8 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.tsx @@ -0,0 +1,272 @@ +import React, { useState, useMemo, useEffect } from 'react' +import { Dropdown, Button, Slider } from 'antd' +import { ClockCircleOutlined, DownOutlined } from '@ant-design/icons' +import { getValueFormat } from '@baurine/grafana-value-formats' +import cx from 'classnames' +import dayjs from 'dayjs' +import { useTranslation } from 'react-i18next' + +import { StatementTimeRange } from '@lib/client' + +import styles from './TimeRangeSelector.module.less' + +// This component looks similar with @lib/component/TimeRangeSelector, +// but they have totally different logic, so it prefers to not reuse their duplicated part + +const RECENT_SECONDS = [ + 15 * 60, + 30 * 60, + 60 * 60, + + 2 * 60 * 60, + 6 * 60 * 60, + 12 * 60 * 60, + + 24 * 60 * 60, + 2 * 24 * 60 * 60, + 3 * 24 * 60 * 60, + + 7 * 24 * 60 * 60, + 14 * 24 * 60 * 60, + 28 * 24 * 60 * 60, +] + +interface RecentSecTime { + type: 'recent' + value: number // unit: seconds +} + +interface RangeTime { + type: 'absolute' + value: [number, number] // unit: seconds +} + +export type TimeRange = RecentSecTime | RangeTime + +export const DEFAULT_TIME_RANGE: TimeRange = { + type: 'recent', + value: 30 * 60, +} + +export function stringifyTimeRange(timeRange?: TimeRange): string { + let t2 = timeRange ?? DEFAULT_TIME_RANGE + if (t2.type === 'absolute') { + return `${t2.type}_${t2.value[0]}_${t2.value[1]}` + } else { + return `${t2.type}_${t2.value}` + } +} + +// timePoints are descent array +function findNearTimePoint(timePoint: number, timePoints: number[]): number { + if (timePoints.length === 0) { + return timePoint + } + if (timePoints.length === 1) { + return timePoints[0] + } + let cur = timePoints[0] + for (let i = 0; i < timePoints.length; i++) { + cur = timePoints[i] + if (cur > timePoint) { + continue + } + // find the first value less than or equal with timePoint + if (i === 0) { + return cur + } + const pre = timePoints[i - 1] + if (pre - timePoint < timePoint - cur) { + return pre + } else { + return cur + } + } + return cur +} + +function calcAllTime(timeRanges: StatementTimeRange[]) { + const allBeginTime = timeRanges.map((t) => t.begin_time!) + const allEndTime = timeRanges.map((t) => t.end_time!) + const minBeginTime: number = allBeginTime[allBeginTime.length - 1] || 0 + const maxBeginTime: number = allBeginTime[0] || 0 + const maxEndTime: number = allEndTime[0] || 0 + return { + allBeginTime, + allEndTime, + minBeginTime, + maxBeginTime, + maxEndTime, + } +} + +export function calcValidStatementTimeRange( + curTimeRange: TimeRange, + timeRanges: StatementTimeRange[] +): StatementTimeRange { + const { allBeginTime, allEndTime, maxEndTime } = calcAllTime(timeRanges) + if (curTimeRange.type === 'recent') { + const beginTime = findNearTimePoint( + maxEndTime - curTimeRange.value, + allBeginTime + ) + return { + begin_time: beginTime, + end_time: maxEndTime, + } + } else { + const nearBeginTime = findNearTimePoint(curTimeRange.value[0], allBeginTime) + const nearEndTime = findNearTimePoint(curTimeRange.value[1], allEndTime) + return { + begin_time: nearBeginTime, + end_time: nearEndTime, + } + } +} + +function calcCommonTimeRange( + minServerDataTime: number, + maxServerDataTime: number +): { enabled: boolean; value: number }[] { + if (!maxServerDataTime) { + return RECENT_SECONDS.map((s) => ({ enabled: false, value: s })) + } + const validTimeRange = maxServerDataTime - minServerDataTime + return RECENT_SECONDS.map((s) => ({ enabled: s <= validTimeRange, value: s })) +} + +export interface ITimeRangeSelectorProps { + value: TimeRange + timeRanges: StatementTimeRange[] + onChange: (val: TimeRange) => void +} + +export default function TimeRangeSelector({ + value: curTimeRange, + timeRanges, + onChange, +}: ITimeRangeSelectorProps) { + const { t } = useTranslation() + const { minBeginTime, maxEndTime } = useMemo( + () => calcAllTime(timeRanges), + [timeRanges] + ) + const [sliderTimeRange, setSliderTimeRange] = useState( + () => calcValidStatementTimeRange(curTimeRange, timeRanges) + ) + const [dropdownVisible, setDropdownVisible] = useState(false) + const commonTimeRange = useMemo( + () => calcCommonTimeRange(minBeginTime, maxEndTime), + [minBeginTime, maxEndTime] + ) + + useEffect(() => { + setSliderTimeRange(calcValidStatementTimeRange(curTimeRange, timeRanges)) + }, [curTimeRange, timeRanges]) + + function handleRecentChange(seconds: number) { + const timeRange: TimeRange = { + type: 'recent', + value: seconds, + } + onChange(timeRange) + + setSliderTimeRange(calcValidStatementTimeRange(timeRange, timeRanges)) + setDropdownVisible(false) + } + + function handleSliderChange(values: [number, number]) { + if (values.every((v) => v === 0)) { + return + } + + const timeRange: TimeRange = { + type: 'absolute', + value: values, + } + setSliderTimeRange(calcValidStatementTimeRange(timeRange, timeRanges)) + } + + function handleSliderAfterChange(values) { + onChange({ + type: 'absolute', + value: values, + }) + } + + const dropdownContent = ( +
+
+ + {t( + 'statement.pages.overview.toolbar.time_range_selector.usual_time_ranges' + )} + +
+ {commonTimeRange.map(({ enabled, value: seconds }) => ( +
enabled && handleRecentChange(seconds)} + > + {t('statement.pages.overview.toolbar.time_range_selector.recent')}{' '} + {getValueFormat('s')(seconds, 0)} +
+ ))} +
+
+
+ + {t( + 'statement.pages.overview.toolbar.time_range_selector.custom_time_ranges' + )} + + dayjs.unix(val!).format('HH:mm')} + /> + + {dayjs.unix(sliderTimeRange.begin_time!).format('MM-DD HH:mm')} ~{' '} + {dayjs.unix(sliderTimeRange.end_time!).format('MM-DD HH:mm')} + +
+
+ ) + + return ( + + + + ) +} diff --git a/ui-ori/lib/apps/Statement/pages/List/index.tsx b/ui-ori/lib/apps/Statement/pages/List/index.tsx new file mode 100644 index 0000000000..517693a5b8 --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/List/index.tsx @@ -0,0 +1,258 @@ +import React, { useState, useContext } from 'react' +import { + Space, + Tooltip, + Drawer, + Button, + Checkbox, + Result, + Input, + Dropdown, + Menu, + message, +} from 'antd' +import { + ReloadOutlined, + LoadingOutlined, + SettingOutlined, + ExportOutlined, + MenuOutlined, +} from '@ant-design/icons' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import { useTranslation } from 'react-i18next' + +import { CacheContext } from '@lib/utils/useCache' +import { Card, ColumnsSelector, Toolbar, MultiSelect } from '@lib/components' +import { useLocalStorageState } from '@lib/utils/useLocalStorageState' + +import { StatementsTable } from '../../components' +import StatementSettingForm from './StatementSettingForm' +import TimeRangeSelector from './TimeRangeSelector' +import useStatementTableController, { + DEF_STMT_COLUMN_KEYS, +} from '../../utils/useStatementTableController' + +import styles from './List.module.less' + +const { Search } = Input + +const STMT_VISIBLE_COLUMN_KEYS = 'statement.visible_column_keys' +const STMT_SHOW_FULL_SQL = 'statement.show_full_sql' + +export default function StatementsOverview() { + const { t } = useTranslation() + + const statementCacheMgr = useContext(CacheContext) + + const [showSettings, setShowSettings] = useState(false) + const [visibleColumnKeys, setVisibleColumnKeys] = useLocalStorageState( + STMT_VISIBLE_COLUMN_KEYS, + DEF_STMT_COLUMN_KEYS, + true + ) + const [showFullSQL, setShowFullSQL] = useLocalStorageState( + STMT_SHOW_FULL_SQL, + false + ) + + const controller = useStatementTableController( + statementCacheMgr, + visibleColumnKeys, + showFullSQL + ) + const { + queryOptions, + setQueryOptions, + refresh, + enable, + allTimeRanges, + allSchemas, + allStmtTypes, + loadingStatements, + tableColumns, + isTimeRangeOutdated, + + downloadCSV, + downloading, + } = controller + + function exportCSV() { + const hide = message.loading( + t('statement.pages.overview.toolbar.exporting') + '...', + 0 + ) + downloadCSV().finally(hide) + } + + function menuItemClick({ key }) { + switch (key) { + case 'export': + exportCSV() + break + } + } + + const dropdownMenu = ( + + }> + {downloading + ? t('statement.pages.overview.toolbar.exporting') + : t('statement.pages.overview.toolbar.export')} + + + ) + + return ( +
+ + + + + setQueryOptions({ + ...queryOptions, + timeRange, + }) + } + /> + + setQueryOptions({ + ...queryOptions, + schemas, + }) + } + items={allSchemas} + /> + + setQueryOptions({ + ...queryOptions, + stmtTypes, + }) + } + items={allStmtTypes} + /> + + setQueryOptions({ ...queryOptions, searchText }) + } + /> + + + + {tableColumns.length > 0 && ( + setShowFullSQL(e.target.checked)} + > + {t( + 'statement.pages.overview.toolbar.select_columns.show_full_sql' + )} + + } + /> + )} + {enable && ( + + {loadingStatements ? ( + + ) : ( + + )} + + )} + + setShowSettings(true)} /> + + +
+ +
+
+
+
+
+ + {enable ? ( +
+ + + +
+ ) : ( + setShowSettings(true)}> + {t('statement.settings.open_setting')} + + } + /> + )} + + setShowSettings(false)} + destroyOnClose={true} + > + setShowSettings(false)} + onConfigUpdated={refresh} + /> + +
+ ) +} + +function RefreshTooltip({ isOutdated, children }) { + const { t } = useTranslation() + return isOutdated ? ( + + {children} + + ) : ( + + {children} + + ) +} diff --git a/ui-ori/lib/apps/Statement/pages/index.ts b/ui-ori/lib/apps/Statement/pages/index.ts new file mode 100644 index 0000000000..641e4de57a --- /dev/null +++ b/ui-ori/lib/apps/Statement/pages/index.ts @@ -0,0 +1,4 @@ +import List from './List' +import Detail from './Detail' + +export { List, Detail } diff --git a/ui-ori/lib/apps/Statement/translations/en.yaml b/ui-ori/lib/apps/Statement/translations/en.yaml new file mode 100755 index 0000000000..c65f5add76 --- /dev/null +++ b/ui-ori/lib/apps/Statement/translations/en.yaml @@ -0,0 +1,160 @@ +statement: + nav_title: SQL Statements + pages: + detail: + head: + back: List + title: Statement Information + desc: + time_range: Selected Time Range + plans: + note: There are multiple execution plans for this kind of SQL statement. You can choose to view one or multiple of them. + title: + one_for_all: Execution Detail + all: Execution Detail of All Plans + some: 'Execution Detail of Selected {{n}} Plans' + tabs: + basic: Basic + time: Time + copr: Coprocessor Read + txn: Transaction + slow_query: Slow Query + overview: + toolbar: + schemas: + placeholder: All Databases + selected: '{{ n }} Databases' + columnTitle: Execution Database Name + statement_types: + placeholder: All Kinds + selected: '{{ n }} Kinds' + columnTitle: Statement Kind + select_columns: + show_full_sql: Show Full Query Text + refresh: Refresh + refresh_outdated: This list is outdated. To see latest data, click "Refresh". + time_range_selector: + name: Select Time Range + recent: Recent + usual_time_ranges: Common + custom_time_ranges: Custom + export: Export + exporting: Exporting + settings: + title: Settings + disabled_result: + title: Feature Not Enabled + sub_title: | + Statement feature is not enabled so that statement history cannot be viewed. + You can modify settings to enable the feature and wait for new data being collected. + open_setting: Open Settings + close_statement: Disable Statement Feature + close_statement_warning: Are you sure want to disable this feature? Current statement history will be cleared. + switch: Enable Feature + switch_tooltip: Whether Statement feature is enabled. When enabled, there will be a small SQL statement execution overhead. + max_size: 'Max # Statement' + max_size_tooltip: Max number of statement to collect. After exceeding, old statement information will be dropped. You may enlarge this setting when memory is sufficient and you discovered that data displayed in UI is incomplete. + refresh_interval: Window Size (min) + refresh_interval_tooltip: By reducing this setting you can select time range more precisely. + history_size: '# Windows' + history_size_tooltip: By enlarging this setting more statement history will be preserved, with larger memory cost. + keep_duration: SQL Statement History Size + keep_duration_tooltip: Window Size × Number of Windows + internal_query: Collect Internal Queries + internal_query_tooltip: After enabled, {{distro.tidb}} internal queries will be collected as well. + actions: + save: Save + close: Disable + cancel: Cancel + fields: + table_names: Table Names + related_schemas: Database + related_schemas_tooltip: Related databases of the statement + plan_digest: Plan ID + plan_digest_tooltip: Different execution plans have different plan ID + digest_text: Statement Template + digest_text_tooltip: Similar queries have same statement template even for different query parameters + sum_latency: Total Latency + sum_latency_tooltip: Total execution time for this kind of statement + exec_count: '# Exec' + exec_count_tooltip: Total execution count for this kind of statement + plan_count: '# Plans' + plan_count_tooltip: Number of distinct execution plans of this statement in current time range + avg_latency: Mean Latency + avg_latency_tooltip: Execution time of single query + avg_mem: Mean Memory + avg_mem_tooltip: Memory usage of single query + max_mem: Max Memory + max_mem_tooltip: Maximum memory usage of single query + avg_disk: Mean Disk + avg_disk_tooltip: Disk usage of single query + max_disk: Max Disk + max_disk_tooltip: Maximum disk usage of single query + index_names: Index Name + index_names_tooltip: The name of the used index + first_seen: First Seen + last_seen: Last Seen + sample_user: Execution User + sample_user_tooltip: The user that executes the query (sampled) + sum_errors: Total Errors + sum_warnings: Total Warnings + errors_warnings: Errors / Warnings + errors_warnings_tooltip: Total Errors and Total Warnings + parse_latency: Parse Time + parse_latency_tooltip: Time consumed when parsing the query + compile_latency: Compile + compile_latency_tooltip: Time consumed when optimizing the query + wait_time: Coprocessor Wait Time + process_time: Coprocessor Execution Time + total_process_time: Total Execution Time + total_wait_time: Total Wait Time + backoff_time: Backoff Retry Time + backoff_time_tooltip: The waiting time before retry when a query encounters errors that require a retry + get_commit_ts_time: Get Commit Ts Time + local_latch_wait_time: Local Latch Wait Time + resolve_lock_time: Resolve Lock Time + prewrite_time: Prewrite Time + commit_time: Commit Time + commit_backoff_time: Commit Backoff Retry Time + latency: Query + query_time2: Query Time + query_time2_tooltip: The execution time of a query (due to the parallel execution, it may be significantly smaller than the above time) + sum_cop_task_num: Total Coprocessor Tasks + avg_processed_keys: Mean Visible Versions Per Query + max_processed_keys: Max Visible Versions Per Query + avg_total_keys: Mean Meet Versions Per Query + avg_total_keys_tooltip: Meet versions contains overwritten or deleted versions + max_total_keys: Max Meet Versions Per Query + avg_affected_rows: Mean Affected Rows + sum_backoff_times: Total Backoff Count + avg_write_keys: Mean Written Keys + max_write_keys: Max Written Keys + avg_write_size: Mean Written Data Size + max_write_size: Max Written Data Size + avg_prewrite_regions: Mean Prewrite Regions + max_prewrite_regions: Max Prewrite Regions + avg_txn_retry: Mean Transaction Retries + max_txn_retry: Max Transaction Retries + digest: Query Template ID + digest_tooltip: a.k.a. Query digest + schema_name: Execution Database + schema_name_tooltip: The database used to execute the query + query_sample_text: Query Sample + prev_sample_text: Previous Query Sample + plan: Execution Plan + + avg_rocksdb_delete_skipped_count: Mean RocksDB Skipped Deletions + avg_rocksdb_delete_skipped_count_tooltip: Total number of deleted (a.k.a. tombstone) key versions that are skipped during iteration (RocksDB delete_skipped_count) + max_rocksdb_delete_skipped_count: Max RocksDB Skipped Deletions + avg_rocksdb_key_skipped_count: Mean RocksDB Skipped Keys + avg_rocksdb_key_skipped_count_tooltip: Total number of keys skipped during iteration (RocksDB key_skipped_count) + max_rocksdb_key_skipped_count: Max RocksDB Skipped Keys + avg_rocksdb_block_cache_hit_count: Mean RocksDB Block Cache Hits + avg_rocksdb_block_cache_hit_count_tooltip: Total number of hits from the block cache (RocksDB block_cache_hit_count) + max_rocksdb_block_cache_hit_count: Max RocksDB Block Cache Hits + avg_rocksdb_block_read_count: Mean RocksDB Block Reads + avg_rocksdb_block_read_count_tooltip: Total number of blocks RocksDB read from file (RocksDB block_read_count) + max_rocksdb_block_read_count: Max RocksDB Block Reads + avg_rocksdb_block_read_byte: Mean RocksDB FS Read Size + avg_rocksdb_block_read_byte_tooltip: Total number of bytes RocksDB read from file (RocksDB block_read_byte) + max_rocksdb_block_read_byte: Max RocksDB FS Read Size diff --git a/ui-ori/lib/apps/Statement/translations/zh.yaml b/ui-ori/lib/apps/Statement/translations/zh.yaml new file mode 100755 index 0000000000..05feca96f8 --- /dev/null +++ b/ui-ori/lib/apps/Statement/translations/zh.yaml @@ -0,0 +1,168 @@ +statement: + nav_title: SQL 语句分析 + pages: + detail: + head: + back: 返回列表 + title: SQL 语句信息 + desc: + time_range: 时间范围 + plans: + note: 该 SQL 模板在选定的时间范围内有多个执行计划,您可以选择查看其中一个或多个执行计划。 + title: + one_for_all: 执行详情 + all: 所有执行计划的执行详情 + some: '{{n}} 个执行计划的执行详情' + tabs: + basic: 基本信息 + time: 执行时间 + copr: Coprocessor 读取 + txn: 事务 + slow_query: 慢查询 + overview: + toolbar: + schemas: + placeholder: 所有数据库 + selected: '{{ n }} 数据库' + columnTitle: 执行数据库名 + statement_types: + placeholder: 所有类型 + selected: '{{ n }} 类型' + columnTitle: SQL 语句类型 + select_columns: + show_full_sql: 显示完整 SQL 文本 + refresh: 刷新 + refresh_outdated: 列表数据已非最近数据,刷新以查看最新数据 + time_range_selector: + name: 选择时间段 + recent: 最近 + usual_time_ranges: 常用时间范围 + custom_time_ranges: 自定义时间范围 + export: 导出 + exporting: 正在导出 + settings: + title: 设置 + disabled_result: + title: 该功能未启用 + sub_title: | + SQL 语句分析功能未启用,因此无法查看历史记录。 + 您可以修改设置打开该功能后等待新数据收集。 + open_setting: 打开设置 + close_statement: 关闭 SQL 语句分析功能 + close_statement_warning: 确认要关闭该功能吗?关闭后现有历史记录也将被清空! + switch: 启用功能 + switch_tooltip: 是否启用 SQL 语句分析功能,关闭后将不能使用 SQL 语句分析功能,但能提升少量 {{distro.tidb}} 性能。 + max_size: 最大收集 SQL 语句个数 + max_size_tooltip: 收集的 SQL 语句个数上限,当实际执行的 SQL 语句种类超过设定个数后最早执行的 SQL 语句信息将被丢弃。若您发现界面上呈现的 SQL 语句信息不完整,建议在内存允许的情况下调大本参数。 + refresh_interval: 时间窗大小 (min) + refresh_interval_tooltip: 缩小时间窗大小可以使得选择的时间范围更精细。 + history_size: 时间窗个数 + history_size_tooltip: 扩大时间窗个数可以保留更长时间的执行历史,但也会引入更大的内存开销。 + keep_duration: SQL 语句历史保留时长 + keep_duration_tooltip: 时间窗大小 × 时间窗个数 + internal_query: 收集内部查询 + internal_query_tooltip: 开启后 {{distro.tidb}} 内部执行的 SQL 语句信息也将被收集。 + actions: + save: 保存 + close: 确认 + cancel: 取消 + fields: + related_schemas: 数据库 + related_schemas_tooltip: SQL 语句涉及的数据库 + plan_digest: 执行计划 ID + plan_digest_tooltip: 不同的执行计划有不同的 ID + digest_text: SQL 模板 + digest_text_tooltip: 相似的 SQL 查询即使查询参数不一样也具有相同的 SQL 模板 + sum_latency: 累计耗时 + sum_latency_tooltip: 该类 SQL 语句在时间段内的累计执行时间 + exec_count: 执行次数 + exec_count_tooltip: 该类 SQL 语句在时间段内被执行的总次数 + plan_count: 计划数 + plan_count_tooltip: 该类 SQL 语句在时间段内的不同执行计划数量 + avg_latency: 平均耗时 + avg_latency_tooltip: 单条 SQL 查询的执行时间 + avg_mem: 平均内存 + avg_mem_tooltip: 单条 SQL 查询的消耗内存大小 + max_mem: 最大内存 + max_mem_tooltip: 最大单条 SQL 查询消耗内存大小 + avg_disk: 平均磁盘空间 + avg_disk_tooltip: 单条 SQL 查询占用的磁盘空间大小 + max_disk: 最大磁盘空间 + max_disk_tooltip: 最大单条 SQL 查询占用的磁盘空间大小 + table_names: 表名 + index_names: 索引名 + index_names_tooltip: SQL 执行时使用的索引名称 + first_seen: 首次出现时间 + last_seen: 最后出现时间 + sample_user: 执行用户名 + sample_user_tooltip: 执行该类 SQL 的用户名,可能存在多个执行用户,仅显示其中某一个 + sum_errors: 累计 Error 个数 + sum_warnings: 累计 Warning 个数 + errors_warnings: 错误 / 警告 + errors_warnings_tooltip: 累计错误和警告个数 + parse_latency: 解析耗时 + parse_latency_tooltip: 解析 SQL 查询的耗时 + compile_latency: 优化耗时 + compile_latency_tooltip: 编译并优化 SQL 查询的耗时 + wait_time: Coprocessor 等待耗时 + wait_time_tooltip: SQL 查询在 {{distro.tikv}} Coprocessor 上被等待执行的耗时,单个 SQL 查询所有 Coprocessor 任务累计后计算 + process_time: Coprocessor 执行耗时 + process_time_tooltip: SQL 查询在 {{distro.tikv}} Coprocessor 上的执行耗时,单个 SQL 查询所有 Coprocessor 任务累计后计算 + total_process_time: 所有执行耗时 + total_wait_time: 所有等待耗时 + backoff_time: 重试等待耗时 + backoff_time_tooltip: 单个 SQL 查询所有重试累计后计算 + get_commit_ts_time: 取 Commit Ts 耗时 + get_commit_ts_time_tooltip: 从 {{distro.pd}} 取递交时间戳(事务号)步骤的耗时 + local_latch_wait_time: Local Latch Wait 耗时 + local_latch_wait_time_tooltip: 事务在 {{distro.tidb}} 本地与其他事务产生了锁冲突并等待的耗时 + resolve_lock_time: Resolve Lock 耗时 + resolve_lock_time_tooltip: 事务在 {{distro.tikv}} 与其他事务产生了锁冲突并处理锁冲突的耗时 + prewrite_time: Prewrite 阶段耗时 + commit_time: Commit 阶段耗时 + commit_backoff_time: Commit 重试等待耗时 + latency: 执行耗时 + query_time2: SQL 执行时间 + query_time2_tooltip: 由于存在并行执行,因此 SQL 执行时间可能远小于上述各项时间 + sum_cop_task_num: 累计 Coprocessor 请求数 + sum_cop_task_num_tooltip: 时间段内该类 SQL 语句累计发送的 Coprocessor 请求数 + avg_processed_keys: 单 SQL 查询平均可见版本数 + max_processed_keys: 单 SQL 查询最大可见版本数 + avg_total_keys: 单 SQL 查询平均遇到版本数 + avg_total_keys_tooltip: 含已删除或覆盖但未 GC 的版本 + max_total_keys: 单 SQL 查询最大遇到版本数 + avg_affected_rows: 平均影响行数 + sum_backoff_times: 累计重试次数 + sum_backoff_times_tooltip: 这类 SQL 语句遇到需要重试的错误后的总重试次数 + avg_write_keys: 平均写入 Key 个数 + max_write_keys: 最大写入 Key 个数 + avg_write_size: 平均写入数据量 + max_write_size: 最大写入数据量 + avg_prewrite_regions: Prewrite 平均涉及 Region 个数 + max_prewrite_regions: Prewrite 最大涉及 Region 个数 + avg_txn_retry: 事务平均重试次数 + max_txn_retry: 事务最大重试次数 + digest: SQL 模板 ID + digest_tooltip: SQL 模板的唯一标识(SQL 指纹) + schema_name: 执行数据库 + schema_name_tooltip: 执行该 SQL 查询时使用的数据库名称 + query_sample_text: SQL 查询样例 + prev_sample_text: 前一条 SQL 查询样例 + prev_sample_text_tooltip: 一般来说你可能只需要看 COMMIT 语句的前一条 SQL 查询 + plan: 执行计划 + + avg_rocksdb_delete_skipped_count: RocksDB 已删除 Key 平均扫描数 + avg_rocksdb_delete_skipped_count_tooltip: RocksDB 扫数据时遇到的已删除 (tombstone) Key 数量 (delete_skipped_count) + max_rocksdb_delete_skipped_count: RocksDB 已删除 Key 最大扫描数 + avg_rocksdb_key_skipped_count: RocksDB Key 平均扫描数 + avg_rocksdb_key_skipped_count_tooltip: RocksDB 扫数据时所有遇到的 Key 数量 (key_skipped_count) + max_rocksdb_key_skipped_count: RocksDB Key 最大扫描数 + avg_rocksdb_block_cache_hit_count: RocksDB 缓存平均读次数 + avg_rocksdb_block_cache_hit_count_tooltip: RocksDB 从 Block Cache 缓存中读数据的次数 (block_cache_hit_count) + max_rocksdb_block_cache_hit_count: RocksDB 缓存最大读次数 + avg_rocksdb_block_read_count: RocksDB 文件系统平均读次数 + avg_rocksdb_block_read_count_tooltip: RocksDB 从文件系统中读数据的次数 (block_read_count) + max_rocksdb_block_read_count: RocksDB 文件系统最大读次数 + avg_rocksdb_block_read_byte: RocksDB 文件系统平均读数据量 + avg_rocksdb_block_read_byte_tooltip: RocksDB 从文件系统中读数据的数据量 (block_read_byte) + max_rocksdb_block_read_byte: RocksDB 文件系统最大读数据量 diff --git a/ui-ori/lib/apps/Statement/utils/tableColumns.tsx b/ui-ori/lib/apps/Statement/utils/tableColumns.tsx new file mode 100644 index 0000000000..2c252ffb48 --- /dev/null +++ b/ui-ori/lib/apps/Statement/utils/tableColumns.tsx @@ -0,0 +1,310 @@ +import { Tooltip } from 'antd' +import { max } from 'lodash' +import { + ColumnActionsMode, + IColumn, +} from 'office-ui-fabric-react/lib/DetailsList' +import React from 'react' +import { orange, red } from '@ant-design/colors' + +import { StatementModel } from '@lib/client' +import { Bar, Pre } from '@lib/components' +import { + formatVal, + genDerivedBarSources, + TableColumnFactory, + Column, +} from '@lib/utils/tableColumnFactory' + +/////////////////////////////////////// +// statements order list in local by fieldName of IColumn +// slow query order list in backend by key of IColumn +const TRANS_KEY_PREFIX = 'statement.fields' + +export const derivedFields = { + avg_latency: genDerivedBarSources( + 'avg_latency', + 'max_latency', + 'min_latency' + ), + parse_latency: genDerivedBarSources('avg_parse_latency', 'max_parse_latency'), + compile_latency: genDerivedBarSources( + 'avg_compile_latency', + 'max_compile_latency' + ), + process_time: genDerivedBarSources( + 'avg_cop_process_time', + 'max_cop_process_time' + ), + wait_time: genDerivedBarSources('avg_cop_wait_time', 'max_cop_wait_time'), + total_process_time: genDerivedBarSources( + 'avg_process_time', + 'max_process_time' + ), + total_wait_time: genDerivedBarSources('avg_wait_time', 'max_wait_time'), + backoff_time: genDerivedBarSources('avg_backoff_time', 'max_backoff_time'), + avg_write_keys: genDerivedBarSources('avg_write_keys', 'max_write_keys'), + avg_processed_keys: genDerivedBarSources( + 'avg_processed_keys', + 'max_processed_keys' + ), + avg_total_keys: genDerivedBarSources('avg_total_keys', 'max_total_keys'), + prewrite_time: genDerivedBarSources('avg_prewrite_time', 'max_prewrite_time'), + commit_time: genDerivedBarSources('avg_commit_time', 'max_commit_time'), + get_commit_ts_time: genDerivedBarSources( + 'avg_get_commit_ts_time', + 'max_get_commit_ts_time' + ), + commit_backoff_time: genDerivedBarSources( + 'avg_commit_backoff_time', + 'max_commit_backoff_time' + ), + resolve_lock_time: genDerivedBarSources( + 'avg_resolve_lock_time', + 'max_resolve_lock_time' + ), + local_latch_wait_time: genDerivedBarSources( + 'avg_local_latch_wait_time', + 'max_local_latch_wait_time' + ), + avg_write_size: genDerivedBarSources('avg_write_size', 'max_write_size'), + avg_prewrite_regions: genDerivedBarSources( + 'avg_prewrite_regions', + 'max_prewrite_regions' + ), + avg_txn_retry: genDerivedBarSources('avg_txn_retry', 'max_txn_retry'), + avg_mem: genDerivedBarSources('avg_mem', 'max_mem'), + avg_disk: genDerivedBarSources('avg_disk', 'max_disk'), + sum_errors: ['sum_errors', 'sum_warnings'], + related_schemas: ['table_names'], + avg_rocksdb_delete_skipped_count: genDerivedBarSources( + 'avg_rocksdb_delete_skipped_count', + 'max_rocksdb_delete_skipped_count' + ), + avg_rocksdb_key_skipped_count: genDerivedBarSources( + 'avg_rocksdb_key_skipped_count', + 'max_rocksdb_key_skipped_count' + ), + avg_rocksdb_block_cache_hit_count: genDerivedBarSources( + 'avg_rocksdb_block_cache_hit_count', + 'max_rocksdb_block_cache_hit_count' + ), + avg_rocksdb_block_read_count: genDerivedBarSources( + 'avg_rocksdb_block_read_count', + 'max_rocksdb_block_read_count' + ), + avg_rocksdb_block_read_byte: genDerivedBarSources( + 'avg_rocksdb_block_read_byte', + 'max_rocksdb_block_read_byte' + ), +} + +////////////////////////////////////////// + +function avgMinMaxLatencyColumn( + tcf: TableColumnFactory, + rows?: { max_latency?: number; min_latency?: number; avg_latency?: number }[] +): Column { + return tcf.bar.multiple({ sources: derivedFields.avg_latency }, 'ns', rows) +} + +function errorsWarningsColumn( + tcf: TableColumnFactory, + rows?: { sum_errors?: number; sum_warnings?: number }[] +): Column { + const capacity = rows + ? max(rows.map((v) => v.sum_errors! + v.sum_warnings!)) ?? 0 + : 0 + const key = 'sum_errors' + return tcf.control({ + name: 'errors_warnings', + key, + fieldName: key, + minWidth: 140, + maxWidth: 200, + columnActionsMode: ColumnActionsMode.clickable, + onRender: (rec) => { + const errorsFmtVal = formatVal(rec.sum_errors, 'short') + const warningsFmtVal = formatVal(rec.sum_warnings, 'short') + const tooltipContent = ` +Errors: ${errorsFmtVal} +Warnings: ${warningsFmtVal}` + return ( + {tooltipContent.trim()}}> + + {`${errorsFmtVal} / ${warningsFmtVal}`} + + + ) + }, + }) +} + +//////////////////////////////////////////////// +// util methods + +function avgMaxColumn( + tcf: TableColumnFactory, + displayTransKey: string, + unit: string, + rows?: T[] +): Column { + return tcf.bar.multiple( + { + displayTransKey, + sources: derivedFields[displayTransKey], + }, + unit, + rows + ) +} + +//////////////////////////////////////////////// + +export function statementColumns( + rows: StatementModel[], + tableSchemaColumns: string[], + showFullSQL?: boolean +): IColumn[] { + const tcf = new TableColumnFactory(TRANS_KEY_PREFIX, tableSchemaColumns) + + return tcf.columns([ + evictedRenderColumn( + tcf.sqlText('digest_text', showFullSQL, rows).getConfig() + ), + evictedRenderColumn(tcf.textWithTooltip('digest', rows).getConfig()), + tcf.bar.single('sum_latency', 'ns', rows), + avgMinMaxLatencyColumn(tcf, rows), + tcf.bar.single('exec_count', 'short', rows), + tcf.textWithTooltip('plan_count', rows).patchConfig({ + minWidth: 100, + maxWidth: 300, + columnActionsMode: ColumnActionsMode.clickable, + }), + avgMaxColumn(tcf, 'avg_mem', 'bytes', rows), + avgMaxColumn(tcf, 'avg_disk', 'bytes', rows), + errorsWarningsColumn(tcf, rows), + avgMaxColumn(tcf, 'parse_latency', 'ns', rows), + avgMaxColumn(tcf, 'compile_latency', 'ns', rows), + tcf.bar.single('sum_cop_task_num', 'short', rows), + avgMaxColumn(tcf, 'process_time', 'ns', rows), + avgMaxColumn(tcf, 'wait_time', 'ns', rows), + avgMaxColumn(tcf, 'total_process_time', 'ns', rows), + avgMaxColumn(tcf, 'total_wait_time', 'ns', rows), + avgMaxColumn(tcf, 'backoff_time', 'ns', rows), + avgMaxColumn(tcf, 'avg_write_keys', 'short', rows), + avgMaxColumn(tcf, 'avg_processed_keys', 'short', rows), + avgMaxColumn(tcf, 'avg_total_keys', 'short', rows), + avgMaxColumn(tcf, 'prewrite_time', 'ns', rows), + avgMaxColumn(tcf, 'commit_time', 'ns', rows), + avgMaxColumn(tcf, 'get_commit_ts_time', 'ns', rows), + avgMaxColumn(tcf, 'commit_backoff_time', 'ns', rows), + avgMaxColumn(tcf, 'resolve_lock_time', 'ns', rows), + avgMaxColumn(tcf, 'local_latch_wait_time', 'ns', rows), + avgMaxColumn(tcf, 'avg_write_size', 'bytes', rows), + avgMaxColumn(tcf, 'avg_prewrite_regions', 'short', rows), + avgMaxColumn(tcf, 'avg_txn_retry', 'short', rows), + + tcf.bar.single('sum_backoff_times', 'short', rows), + tcf.bar.single('avg_affected_rows', 'short', rows), + + tcf.timestamp('first_seen', rows), + tcf.timestamp('last_seen', rows), + tcf.textWithTooltip('sample_user', rows), + + tcf.sqlText('query_sample_text', showFullSQL, rows), + tcf.sqlText('prev_sample_text', showFullSQL, rows), + + tcf.textWithTooltip('schema_name', rows), + tcf.textWithTooltip('table_names', rows), + tcf.textWithTooltip('index_names', rows), + + tcf.textWithTooltip('plan_digest', rows), + + tcf.textWithTooltip('related_schemas', rows).patchConfig({ + minWidth: 160, + maxWidth: 240, + }), + + // rocksdb + avgMaxColumn( + tcf, + 'avg_rocksdb_delete_skipped_count', + 'short', + rows + ).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + avgMaxColumn( + tcf, + 'avg_rocksdb_key_skipped_count', + 'short', + rows + ).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + avgMaxColumn( + tcf, + 'avg_rocksdb_block_cache_hit_count', + 'short', + rows + ).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + avgMaxColumn( + tcf, + 'avg_rocksdb_block_read_count', + 'short', + rows + ).patchConfig({ + minWidth: 220, + maxWidth: 250, + }), + avgMaxColumn(tcf, 'avg_rocksdb_block_read_byte', 'bytes', rows).patchConfig( + { + minWidth: 220, + maxWidth: 250, + } + ), + ]) +} + +export function planColumns(rows: StatementModel[]): IColumn[] { + const tcf = new TableColumnFactory(TRANS_KEY_PREFIX) + + return tcf.columns([ + tcf.textWithTooltip('plan_digest').patchConfig({ + minWidth: 100, + maxWidth: 300, + }), + tcf.bar.single('sum_latency', 'ns', rows), + avgMinMaxLatencyColumn(tcf, rows), + tcf.bar.single('exec_count', 'short', rows), + avgMaxColumn(tcf, 'avg_mem', 'bytes', rows), + ]) +} + +export function evictedRenderColumn(defaultRenderColumn: IColumn): IColumn { + return { + ...defaultRenderColumn, + onRender: (...props) => { + const rec = props[0] + // the evicted record's digest is empty string + return rec.digest ? ( + defaultRenderColumn.onRender!(...props) + ) : ( + + Others + + ) + }, + } +} diff --git a/ui-ori/lib/apps/Statement/utils/useSchemaColumns.ts b/ui-ori/lib/apps/Statement/utils/useSchemaColumns.ts new file mode 100644 index 0000000000..67a0317f4b --- /dev/null +++ b/ui-ori/lib/apps/Statement/utils/useSchemaColumns.ts @@ -0,0 +1,23 @@ +import { useEffect, useState } from 'react' + +import client from '@lib/client' +import { useClientRequest } from '@lib/utils/useClientRequest' + +export const useSchemaColumns = () => { + const [schemaColumns, setSchemaColumns] = useState([]) + const { data, isLoading } = useClientRequest((options) => { + return client.getInstance().statementsTableColumnsGet(options) + }) + + useEffect(() => { + if (!data) { + return + } + setSchemaColumns(data.map((d) => d.toLowerCase())) + }, [data]) + + return { + schemaColumns, + isLoading, + } +} diff --git a/ui-ori/lib/apps/Statement/utils/useStatementTableController.ts b/ui-ori/lib/apps/Statement/utils/useStatementTableController.ts new file mode 100644 index 0000000000..3b9fd70626 --- /dev/null +++ b/ui-ori/lib/apps/Statement/utils/useStatementTableController.ts @@ -0,0 +1,317 @@ +import { useEffect, useMemo, useState } from 'react' +import { useSessionStorageState } from 'ahooks' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' + +import client, { + ErrorStrategy, + StatementModel, + StatementTimeRange, +} from '@lib/client' +import { IColumnKeys, stringifyTimeRange } from '@lib/components' +import { getSelectedFields } from '@lib/utils/tableColumnFactory' +import { CacheMgr } from '@lib/utils/useCache' +import useOrderState, { IOrderOptions } from '@lib/utils/useOrderState' +import useCacheItemIndex from '@lib/utils/useCacheItemIndex' + +import { + calcValidStatementTimeRange, + DEFAULT_TIME_RANGE, + TimeRange, +} from '../pages/List/TimeRangeSelector' +import { derivedFields, statementColumns } from './tableColumns' +import { useSchemaColumns } from './useSchemaColumns' +import { useStatements } from './useStatements' + +export const DEF_STMT_COLUMN_KEYS: IColumnKeys = { + digest_text: true, + sum_latency: true, + avg_latency: true, + exec_count: true, + plan_count: true, + related_schemas: true, +} + +const QUERY_OPTIONS = 'statement.query_options' + +const DEF_ORDER_OPTIONS: IOrderOptions = { + orderBy: 'sum_latency', + desc: true, +} + +export interface IStatementQueryOptions { + timeRange: TimeRange + schemas: string[] + stmtTypes: string[] + searchText: string +} + +export const DEF_STMT_QUERY_OPTIONS: IStatementQueryOptions = { + timeRange: DEFAULT_TIME_RANGE, + schemas: [], + stmtTypes: [], + searchText: '', +} + +export interface IStatementTableController { + queryOptions: IStatementQueryOptions + setQueryOptions: (options: IStatementQueryOptions) => void + orderOptions: IOrderOptions + changeOrder: (orderBy: string, desc: boolean) => void + refresh: () => void + + enable: boolean + allTimeRanges: StatementTimeRange[] + allSchemas: string[] + allStmtTypes: string[] + statementsTimeRange: StatementTimeRange + loadingStatements: boolean + statements: StatementModel[] + isTimeRangeOutdated: boolean + + errors: Error[] + + tableColumns: IColumn[] + visibleColumnKeys: IColumnKeys + + downloadCSV: () => Promise + downloading: boolean + + saveClickedItemIndex: (idx: number) => void + getClickedItemIndex: () => number +} + +export default function useStatementTableController( + cacheMgr: CacheMgr | null, + visibleColumnKeys: IColumnKeys, + showFullSQL: boolean, + options?: IStatementQueryOptions, + needSave: boolean = true +): IStatementTableController { + const { orderOptions, changeOrder } = useOrderState( + 'statement', + needSave, + DEF_ORDER_OPTIONS + ) + + const [memoryQueryOptions, setMemoryQueryOptions] = useState( + options || DEF_STMT_QUERY_OPTIONS + ) + const [sessionQueryOptions, setSessionQueryOptions] = useSessionStorageState( + QUERY_OPTIONS, + options || DEF_STMT_QUERY_OPTIONS + ) + const queryOptions = useMemo( + () => (needSave ? sessionQueryOptions : memoryQueryOptions), + [needSave, memoryQueryOptions, sessionQueryOptions] + ) + + const [enable, setEnable] = useState(true) + const [allTimeRanges, setAllTimeRanges] = useState([]) + const [allSchemas, setAllSchemas] = useState([]) + const [allStmtTypes, setAllStmtTypes] = useState([]) + + const validTimeRange = useMemo( + () => calcValidStatementTimeRange(queryOptions.timeRange, allTimeRanges), + [queryOptions, allTimeRanges] + ) + + const [loading, setLoading] = useState(true) + + const [refreshTimes, setRefreshTimes] = useState(0) + + function setQueryOptions(newOptions: IStatementQueryOptions) { + if (needSave) { + setSessionQueryOptions(newOptions) + } else { + setMemoryQueryOptions(newOptions) + } + } + + const [errors, setErrors] = useState([]) + + useEffect(() => { + errors.length && setLoading(false) + }, [errors]) + + const selectedFields = useMemo( + () => getSelectedFields(visibleColumnKeys, derivedFields).join(','), + [visibleColumnKeys] + ) + + const cacheKey = useMemo(() => { + const { schemas, stmtTypes, searchText, timeRange } = queryOptions + const cacheKey = `${schemas.join(',')}_${stmtTypes.join( + ',' + )}_${searchText}_${stringifyTimeRange(timeRange)}_${selectedFields}` + return cacheKey + }, [queryOptions, selectedFields]) + + function refresh() { + cacheMgr?.remove(cacheKey) + + setErrors([]) + setLoading(true) + setRefreshTimes((prev) => prev + 1) + } + + useEffect(() => { + async function queryStatementStatus() { + try { + const res = await client.getInstance().statementsConfigGet({ + errorStrategy: ErrorStrategy.Custom, + }) + setEnable(res?.data.enable!) + } catch (e) { + setErrors((prev) => prev.concat(e)) + } + } + + async function querySchemas() { + try { + const res = await client.getInstance().infoListDatabases({ + errorStrategy: ErrorStrategy.Custom, + }) + setAllSchemas(res?.data || []) + } catch (e) { + setErrors((prev) => prev.concat(e)) + } + } + + async function queryTimeRanges() { + try { + const res = await client.getInstance().statementsTimeRangesGet({ + errorStrategy: ErrorStrategy.Custom, + }) + setAllTimeRanges(res?.data || []) + } catch (e) { + setErrors((prev) => prev.concat(e)) + } + } + + async function queryStmtTypes() { + try { + const res = await client.getInstance().statementsStmtTypesGet({ + errorStrategy: ErrorStrategy.Custom, + }) + setAllStmtTypes(res?.data || []) + } catch (e) { + setErrors((prev) => prev.concat(e)) + } + } + + queryStatementStatus() + querySchemas() + queryTimeRanges() + queryStmtTypes() + }, [refreshTimes]) + + const { statements, setStatements, statementsTimeRange, queryStatements } = + useStatements(cacheKey) + const { schemaColumns, isLoading: isSchemaLoading } = useSchemaColumns() + const tableColumns = useMemo( + () => statementColumns(statements, schemaColumns, showFullSQL), + [statements, schemaColumns, showFullSQL] + ) + + useEffect(() => { + async function queryStatementList() { + if ( + !selectedFields.length || + isSchemaLoading || + allTimeRanges.length === 0 + ) { + setStatements([]) + setLoading(false) + return + } + + setLoading(true) + try { + await queryStatements( + validTimeRange.begin_time!, + validTimeRange.end_time!, + selectedFields, + queryOptions.schemas, + queryOptions.stmtTypes, + queryOptions.searchText, + { + errorStrategy: ErrorStrategy.Custom, + } + ) + } catch (e) { + setErrors((prev) => prev.concat(e)) + } finally { + setLoading(false) + } + } + + queryStatementList() + // eslint-disable-next-line + }, [ + queryOptions, + allTimeRanges, + validTimeRange, + selectedFields, + cacheKey, + isSchemaLoading, + ]) + + const [downloading, setDownloading] = useState(false) + + async function downloadCSV() { + try { + setDownloading(true) + const res = await client.getInstance().statementsDownloadTokenPost({ + begin_time: validTimeRange.begin_time, + end_time: validTimeRange.end_time, + fields: '*', + schemas: queryOptions.schemas, + stmt_types: queryOptions.stmtTypes, + text: queryOptions.searchText, + }) + const token = res.data + if (token) { + window.location.href = `${client.getBasePath()}/statements/download?token=${token}` + } + } finally { + setDownloading(false) + } + } + + const { saveClickedItemIndex, getClickedItemIndex } = + useCacheItemIndex(cacheMgr) + + const isTimeRangeOutdated = + !!statementsTimeRange.begin_time && + !!statementsTimeRange.end_time && + (validTimeRange.begin_time !== statementsTimeRange.begin_time || + validTimeRange.end_time !== statementsTimeRange.end_time) + + return { + queryOptions, + setQueryOptions, + orderOptions, + changeOrder, + refresh, + + enable, + allTimeRanges, + allSchemas, + allStmtTypes, + statementsTimeRange, + loadingStatements: loading, + statements, + isTimeRangeOutdated, + + errors, + + tableColumns, + visibleColumnKeys, + + downloadCSV, + downloading, + + saveClickedItemIndex, + getClickedItemIndex, + } +} diff --git a/ui-ori/lib/apps/Statement/utils/useStatements.ts b/ui-ori/lib/apps/Statement/utils/useStatements.ts new file mode 100644 index 0000000000..e7f81964b7 --- /dev/null +++ b/ui-ori/lib/apps/Statement/utils/useStatements.ts @@ -0,0 +1,76 @@ +// Copyright 2021 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { useCallback, useContext, useState } from 'react' + +import client, { + DefaultApi, + StatementModel, + StatementTimeRange, +} from '@lib/client' +import { CacheContext, CacheMgr } from '@lib/utils/useCache' + +interface StatementCache { + data: StatementModel[] + timeRange: StatementTimeRange +} + +export function useStatements(cacheKey: string) { + const { getCache, setCache } = useCache() + const [statements, setStatements] = useState([]) + const [statementsTimeRange, setStatementsTimeRange] = + useState({}) + const queryStatements = useCallback( + async (...params: Parameters) => { + const cache = getCache(cacheKey) + if (cache) { + setStatements(cache.data) + setStatementsTimeRange(cache.timeRange) + return + } + + const [begin_time, end_time] = params + const timeRange = { begin_time, end_time } + setStatementsTimeRange(timeRange) + + const res = await client.getInstance().statementsListGet(...params) + const data = res?.data || [] + setStatements(data) + setCache(cacheKey, { data, timeRange }) + }, + [cacheKey, getCache, setCache] + ) + + return { statements, setStatements, statementsTimeRange, queryStatements } +} + +function useCache() { + const cacheMgr = useContext(CacheContext) + const getCache = ( + ...params: Parameters + ): StatementCache | undefined => { + if (!cacheMgr) { + return + } + return cacheMgr.get(...params) + } + const setCache = (...params: Parameters) => { + if (!cacheMgr) { + return + } + return cacheMgr.set(...params) + } + + return { getCache, setCache } +} diff --git a/ui-ori/lib/apps/SystemReport/components/ReportHistory.tsx b/ui-ori/lib/apps/SystemReport/components/ReportHistory.tsx new file mode 100644 index 0000000000..7a9dbb1de6 --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/components/ReportHistory.tsx @@ -0,0 +1,120 @@ +import { Badge } from 'antd' +import dayjs from 'dayjs' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import React, { useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { useNavigate } from 'react-router-dom' +import { usePersistFn } from 'ahooks' +import type { TFunction } from 'i18next' + +import client, { DiagnoseReport } from '@lib/client' +import { CardTable, DateTime } from '@lib/components' +import openLink from '@lib/utils/openLink' +import { useClientRequest } from '@lib/utils/useClientRequest' + +const tableColumns = (t: TFunction): IColumn[] => [ + { + name: t('system_report.list_table.id'), + key: 'id', + fieldName: 'id', + minWidth: 200, + maxWidth: 350, + }, + { + name: t('system_report.list_table.report_create_time'), + key: 'created_at', + minWidth: 100, + maxWidth: 200, + onRender: (rec: DiagnoseReport) => ( + + ), + }, + { + name: t('system_report.list_table.status'), + key: 'progress', + minWidth: 100, + maxWidth: 150, + onRender: (rec: DiagnoseReport) => { + if (rec.progress! < 100) { + return ( + + ) + } else { + return ( + + ) + } + }, + }, + { + name: t('system_report.list_table.range'), + key: 'start_time', + minWidth: 200, + maxWidth: 350, + onRender: (rec: DiagnoseReport) => { + return ( + + {' '} + ~{' '} + + + ) + }, + }, + { + name: t('system_report.list_table.compare_range'), + key: 'compare_start_time', + minWidth: 200, + maxWidth: 350, + onRender: (rec: DiagnoseReport) => + rec.compare_start_time && ( + + {' '} + ~{' '} + + + ), + }, +] + +export default function ReportHistory() { + const navigate = useNavigate() + const { t } = useTranslation() + const { data, isLoading, error } = useClientRequest((reqConfig) => + client.getInstance().diagnoseReportsGet(reqConfig) + ) + const columns = useMemo(() => tableColumns(t), [t]) + + const handleRowClick = usePersistFn( + (rec, _idx, ev: React.MouseEvent) => { + openLink(`/system_report/detail?id=${rec.id}`, ev, navigate) + } + ) + + return ( + + ) +} diff --git a/ui-ori/lib/apps/SystemReport/index.meta.ts b/ui-ori/lib/apps/SystemReport/index.meta.ts new file mode 100644 index 0000000000..c795ebe6b5 --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/index.meta.ts @@ -0,0 +1,9 @@ +import { SnippetsOutlined } from '@ant-design/icons' + +export default { + id: 'system_report', + routerPrefix: '/system_report', + icon: SnippetsOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_system_report" */ '.'), +} diff --git a/ui-ori/lib/apps/SystemReport/index.tsx b/ui-ori/lib/apps/SystemReport/index.tsx new file mode 100644 index 0000000000..fe5c63879d --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/index.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import { HashRouter as Router, Route, Routes } from 'react-router-dom' + +import { ParamsPageWrapper, Root } from '@lib/components' +import { ReportGenerator, ReportStatus } from './pages' + +const App = () => ( + + + + } /> + + + + } + /> + + + +) + +export default App diff --git a/ui-ori/lib/apps/SystemReport/pages/ReportGenerator.tsx b/ui-ori/lib/apps/SystemReport/pages/ReportGenerator.tsx new file mode 100644 index 0000000000..1d99f935be --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/pages/ReportGenerator.tsx @@ -0,0 +1,151 @@ +import { Button, Form, Input, InputNumber, Select, Switch } from 'antd' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { useNavigate } from 'react-router-dom' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import client from '@lib/client' +import { Card } from '@lib/components' +import { DatePicker } from '@lib/components' + +import ReportHistory from '../components/ReportHistory' + +const useFinishHandler = (navigate) => { + return async (fieldsValue) => { + const start_time = fieldsValue['rangeBegin'].unix() + let range_duration = fieldsValue['rangeDuration'] + if (fieldsValue['rangeDuration'] === 0) { + range_duration = fieldsValue['rangeDurationCustom'] + } + const is_compare = fieldsValue['isCompare'] + const compare_range_begin = fieldsValue['compareRangeBegin'] + + const end_time = start_time + range_duration * 60 + const compare_start_time = is_compare ? compare_range_begin.unix() : 0 + const compare_end_time = is_compare + ? compare_start_time + range_duration * 60 + : 0 + + const res = await client.getInstance().diagnoseReportsPost({ + start_time, + end_time, + compare_start_time, + compare_end_time, + }) + navigate(`/system_report/detail?id=${res.data}`) + } +} + +const DURATIONS = [5, 10, 30, 60, 24 * 60] + +export default function ReportGenerator() { + const { t } = useTranslation() + const navigate = useNavigate() + const handleFinish = useFinishHandler(navigate) + + return ( +
+ +
+ + + + + + + + + + prev.rangeDuration !== cur.rangeDuration + } + > + {({ getFieldValue }) => { + return ( + getFieldValue('rangeDuration') === 0 && ( + + `${value} min`} + parser={(value) => value?.replace(/[^\d]/g, '') || ''} + style={{ width: 120 }} + /> + + ) + ) + }} + + + + + + + prev.isCompare !== cur.isCompare} + > + {({ getFieldValue }) => { + return ( + getFieldValue('isCompare') && ( + + + + ) + ) + }} + + + + +
+
+ +
+ + + +
+
+ ) +} diff --git a/ui-ori/lib/apps/SystemReport/pages/ReportStatus.tsx b/ui-ori/lib/apps/SystemReport/pages/ReportStatus.tsx new file mode 100644 index 0000000000..9367777eae --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/pages/ReportStatus.tsx @@ -0,0 +1,87 @@ +import { Button, Descriptions, Progress } from 'antd' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { ArrowLeftOutlined } from '@ant-design/icons' + +import client from '@lib/client' +import publicPathPrefix from '@lib/utils/publicPathPrefix' +import { AnimatedSkeleton, DateTime, ErrorBar, Head } from '@lib/components' +import { useClientRequestWithPolling } from '@lib/utils/useClientRequest' +import useQueryParams from '@lib/utils/useQueryParams' + +function ReportStatus() { + const { id } = useQueryParams() + const { t } = useTranslation() + + const { + data: report, + isLoading, + error, + } = useClientRequestWithPolling( + (reqConfig) => + client.getInstance().diagnoseReportsIdStatusGet(id, reqConfig), + { + shouldPoll: (data) => data?.progress! < 100, + } + ) + + return ( + + {t('system_report.status.head.back')} + + } + titleExtra={ + report && ( + + ) + } + > + + {error && } + {report && ( + + + + + + + + {report.compare_start_time && ( + + + + )} + + + + + )} + + + ) +} + +export default ReportStatus diff --git a/ui-ori/lib/apps/SystemReport/pages/index.ts b/ui-ori/lib/apps/SystemReport/pages/index.ts new file mode 100644 index 0000000000..793643cb0b --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/pages/index.ts @@ -0,0 +1,4 @@ +import ReportGenerator from './ReportGenerator' +import ReportStatus from './ReportStatus' + +export { ReportGenerator, ReportStatus } diff --git a/ui-ori/lib/apps/SystemReport/translations/en.yaml b/ui-ori/lib/apps/SystemReport/translations/en.yaml new file mode 100644 index 0000000000..8de4716f7b --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/translations/en.yaml @@ -0,0 +1,28 @@ +system_report: + nav_title: System Report + generate: + title: New System Report + range_begin: Range Start Time + range_duration: Range Duration + is_compare: Compare by Baseline + compare_range_begin: Baseline Range Start Time + submit: Start + list_table: + id: Report ID + report_create_time: Report At + status: Status + status_running: Running + status_finish: Finish + range: Range + compare_range: Baseline Range + status: + head: + title: Report Status + back: New System Report + view: View Full System Report + range_begin: Range Start Time + range_end: Range End Time + baseline_begin: Baseline Range Start Time + progress: Progress + time_duration: + custom: Custom diff --git a/ui-ori/lib/apps/SystemReport/translations/zh.yaml b/ui-ori/lib/apps/SystemReport/translations/zh.yaml new file mode 100644 index 0000000000..57dd594707 --- /dev/null +++ b/ui-ori/lib/apps/SystemReport/translations/zh.yaml @@ -0,0 +1,28 @@ +system_report: + nav_title: 系统报告 + generate: + title: 生成系统报告 + range_begin: 区间起始时间 + range_duration: 区间长度 + is_compare: 与基线区间对比 + compare_range_begin: 基线区间起始时间 + submit: 开始 + list_table: + id: 报告 ID + report_create_time: 报告时间 + status: 状态 + status_running: 诊断中 + status_finish: 完成 + range: 报告区间 + compare_range: 对比区间 + status: + head: + title: 报告状态 + back: 生成系统报告 + view: 查看完整系统报告 + range_begin: 区间起始时间 + range_end: 区间结束时间 + baseline_begin: 基线区间起始时间 + progress: 生成进度 + time_duration: + custom: 自定义 diff --git a/ui-ori/lib/apps/UserProfile/Form.Language.tsx b/ui-ori/lib/apps/UserProfile/Form.Language.tsx new file mode 100644 index 0000000000..8bd019c103 --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/Form.Language.tsx @@ -0,0 +1,33 @@ +import { Form, Select } from 'antd' +import React, { useCallback } from 'react' +import { DEFAULT_FORM_ITEM_STYLE } from './constants' +import { ALL_LANGUAGES } from '@lib/utils/i18n' +import _ from 'lodash' +import { useTranslation } from 'react-i18next' + +export function LanguageForm() { + const { t, i18n } = useTranslation() + + const handleLanguageChange = useCallback( + (langKey) => { + i18n.changeLanguage(langKey) + }, + [i18n] + ) + + return ( +
+ + + +
+ ) +} diff --git a/ui-ori/lib/apps/UserProfile/Form.PrometheusAddr.tsx b/ui-ori/lib/apps/UserProfile/Form.PrometheusAddr.tsx new file mode 100644 index 0000000000..732c136700 --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/Form.PrometheusAddr.tsx @@ -0,0 +1,142 @@ +import client from '@lib/client' +import { AnimatedSkeleton, Blink, ErrorBar } from '@lib/components' +import { useIsWriteable } from '@lib/utils/store' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { Button, Form, Input, Radio, Space, Typography } from 'antd' +import React from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { DEFAULT_FORM_ITEM_STYLE } from './constants' + +export function PrometheusAddressForm() { + const { t } = useTranslation() + const isWriteable = useIsWriteable() + const [isChanged, setIsChanged] = useState(false) + const [isPosting, setIsPosting] = useState(false) + const handleValuesChange = useCallback(() => setIsChanged(true), []) + const { error, isLoading, data } = useClientRequest((reqConfig) => + client.getInstance().metricsGetPromAddress(reqConfig) + ) + const isInitialLoad = useRef(true) + const initialForm = useRef(null) // Used for "Cancel" behaviour + const [form] = Form.useForm() + + useEffect(() => { + if (data && isInitialLoad.current) { + isInitialLoad.current = false + form.setFieldsValue({ + sourceType: + (data.customized_addr?.length ?? 0) > 0 ? 'custom' : 'deployment', + customAddr: data.customized_addr, + }) + initialForm.current = { ...form.getFieldsValue() } + } + }, [data, form]) + + const handleFinish = useCallback( + async (values) => { + let address = '' + if (values.sourceType === 'custom') { + address = values.customAddr || '' + } + try { + setIsPosting(true) + const resp = await client.getInstance().metricsSetCustomPromAddress({ + address, + }) + const customAddr = resp?.data?.normalized_address ?? '' + form.setFieldsValue({ customAddr }) + initialForm.current = { ...form.getFieldsValue() } + setIsChanged(false) + } finally { + setIsPosting(false) + } + }, + [form] + ) + + const handleCancel = useCallback(() => { + form.setFieldsValue({ ...initialForm.current }) + setIsChanged(false) + }, [form]) + + return ( + +
+ + + + + {error && } + + + + {t( + 'user_profile.service_endpoints.prometheus.form.deployed' + )} + + + {(data?.deployed_addr?.length ?? 0) > 0 && + `(${data!.deployed_addr})`} + {data && data.deployed_addr?.length === 0 && ( + + ( + {t( + 'user_profile.service_endpoints.prometheus.form.not_deployed' + )} + ) + + )} + + + + + {t('user_profile.service_endpoints.prometheus.form.custom')} + + + + + + + {(f) => + f.getFieldValue('sourceType') === 'custom' && ( + + + + ) + } + + {isChanged && ( + + + + + + + )} +
+
+ ) +} diff --git a/ui-ori/lib/apps/UserProfile/Form.SSO.tsx b/ui-ori/lib/apps/UserProfile/Form.SSO.tsx new file mode 100755 index 0000000000..ea582b490d --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/Form.SSO.tsx @@ -0,0 +1,319 @@ +import { CheckCircleFilled } from '@ant-design/icons' +import client, { SsoSSOImpersonationModel } from '@lib/client' +import { AnimatedSkeleton, ErrorBar } from '@lib/components' +import { useIsFeatureSupport, useIsWriteable } from '@lib/utils/store' +import { useClientRequest } from '@lib/utils/useClientRequest' +import { + Alert, + Button, + Checkbox, + Form, + Input, + Modal, + Space, + Switch, + Typography, +} from 'antd' +import React from 'react' +import { useEffect } from 'react' +import { useCallback, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { DEFAULT_FORM_ITEM_STYLE } from './constants' + +interface IUserAuthInputProps { + value?: SsoSSOImpersonationModel + onChange?: (value: SsoSSOImpersonationModel) => void +} + +function isImpersonationNotFailed(imp?: SsoSSOImpersonationModel) { + return Boolean( + imp && + imp.last_impersonate_status !== 'auth_fail' && + imp.last_impersonate_status !== 'insufficient_privileges' + ) +} + +function UserAuthInput({ value, onChange }: IUserAuthInputProps) { + const { t } = useTranslation() + const [modalVisible, setModalVisible] = useState(false) + const [isPosting, setIsPosting] = useState(false) + const isWriteable = useIsWriteable() + const handleClose = useCallback(() => { + setModalVisible(false) + }, []) + + const handleAuthnClick = useCallback(() => { + setModalVisible(true) + }, []) + + const supportNonRootLogin = useIsFeatureSupport('nonRootLogin') + + const handleFinish = useCallback( + async (data) => { + setIsPosting(true) + try { + const resp = await client.getInstance().userSSOCreateImpersonation({ + sql_user: data.user, + password: data.password, + }) + setModalVisible(false) + onChange?.(resp.data) + } finally { + setIsPosting(false) + } + }, + [onChange] + ) + + return ( + <> + {Boolean(!value) && ( + + + + )} + {Boolean(value) && ( + + {value!.sql_user} + + {isImpersonationNotFailed(value) && ( + + {' '} + {t('user_profile.sso.form.user.authn_status.ok')} + + )} + {value?.last_impersonate_status === 'auth_fail' && ( + + {' '} + {t('user_profile.sso.form.user.authn_status.auth_failed')} + + )} + {value?.last_impersonate_status === 'insufficient_privileges' && ( + + {' '} + {t( + 'user_profile.sso.form.user.authn_status.insufficient_privileges' + )} + + )} + + + + )} + +
+ + + + + + + + + + + + + + + +
+
+ + ) +} + +const UserAuthInputMemo = React.memo(UserAuthInput) + +export function SSOForm() { + const { t } = useTranslation() + const [isChanged, setIsChanged] = useState(false) + const [isPosting, setIsPosting] = useState(false) + const handleValuesChange = useCallback(() => setIsChanged(true), []) + const [form] = Form.useForm() + const { + error, + isLoading, + data: config, + sendRequest, + } = useClientRequest((reqConfig) => + client.getInstance().userSSOGetConfig(reqConfig) + ) + const { + error: impError, + isLoading: impIsLoading, + data: impData, + sendRequest: impSendRequest, + } = useClientRequest((reqConfig) => + client.getInstance().userSSOListImpersonations(reqConfig) + ) + const initialForm = useRef(null) // Used for "Cancel" behaviour + const isWriteable = useIsWriteable() + + useEffect(() => { + if (config) { + form.setFieldsValue(config) + initialForm.current = { ...config } + } + // ignore form + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [config]) + + useEffect(() => { + if (impData) { + let rootImp: SsoSSOImpersonationModel | undefined = impData[0] + const update = { user_authenticated: rootImp } + form.setFieldsValue(update) + initialForm.current = { + ...initialForm.current, + ...update, + } + } + // ignore form + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [impData]) + + // TODO: Extract common logic + const handleCancel = useCallback(() => { + form.setFieldsValue({ ...initialForm.current }) + setIsChanged(false) + }, [form]) + + const handleFinish = useCallback( + async (data) => { + setIsPosting(true) + try { + await client.getInstance().userSSOSetConfig({ config: data }) + sendRequest() + setIsChanged(false) + } finally { + setIsPosting(false) + } + }, + [sendRequest] + ) + + const handleAuthStateChange = useCallback(() => { + impSendRequest() + }, [impSendRequest]) + + return ( +
+ + {(error || impError) && } + + + + + {(f) => + f.getFieldValue('enabled') && ( + <> + + + + + + + + + + + + + + ) + } + + {isChanged && ( + + + + + + + )} + +
+ ) +} diff --git a/ui-ori/lib/apps/UserProfile/Form.Session.tsx b/ui-ori/lib/apps/UserProfile/Form.Session.tsx new file mode 100644 index 0000000000..cc5d5c8a92 --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/Form.Session.tsx @@ -0,0 +1,221 @@ +import { CopyToClipboard } from 'react-copy-to-clipboard' +import { + CheckOutlined, + CopyOutlined, + LogoutOutlined, + QuestionCircleOutlined, + ShareAltOutlined, +} from '@ant-design/icons' +import client from '@lib/client' +import { + Alert, + Button, + Divider, + Form, + Modal, + Select, + Space, + Tooltip, +} from 'antd' +import React from 'react' +import { useCallback, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Pre } from '@lib/components' +import { getValueFormat } from '@baurine/grafana-value-formats' +import * as auth from '@lib/utils/auth' +import ReactMarkdown from 'react-markdown' +import Checkbox from 'antd/lib/checkbox/Checkbox' +import { store } from '@lib/utils/store' + +const SHARE_SESSION_EXPIRY_HOURS = [ + 0.25, + 0.5, + 1, + 2, + 3, + 6, + 12, + 24, + 24 * 3, + 24 * 7, + 24 * 30, +] + +function ShareSessionButton() { + const { t } = useTranslation() + const [visible, setVisible] = useState(false) + const [isPosting, setIsPosting] = useState(false) + const [code, setCode] = useState(undefined) + const [isCopied, setIsCopied] = useState(false) + const whoAmI = store.useState((s) => s.whoAmI) + + const handleOpen = useCallback(() => { + setVisible(true) + }, []) + + const handleClose = useCallback(() => { + setVisible(false) + setCode(undefined) + setIsPosting(false) + setIsCopied(false) + }, []) + + const handleFinish = useCallback(async (values) => { + try { + setIsPosting(true) + const r = await client.getInstance().userShareSession({ + expire_in_sec: values.expire * 60 * 60, + revoke_write_priv: !!values.read_only, + }) + setCode(r.data.code) + } finally { + setIsPosting(false) + } + }, []) + + const handleCopy = useCallback(() => { + setIsCopied(true) + }, []) + + let button = ( + + ) + + if (whoAmI && !whoAmI.is_shareable) { + button = ( + + {button} + + ) + } + + return ( + <> + {button} + + + + + + + } + visible={!!code} + > + {code}} + type="success" + showIcon + /> + + + + + +
+ + + + + + + + + + + + +
+
+ + ) +} + +export function SessionForm() { + const { t } = useTranslation() + + const handleLogout = useCallback(async () => { + let signOutURL: string | undefined = undefined + try { + const resp = await client + .getInstance() + .userGetSignOutInfo( + `${window.location.protocol}//${window.location.host}${window.location.pathname}` + ) + signOutURL = resp.data.end_session_url + } catch (e) { + console.error(e) + } + + auth.clearAuthToken() + if (signOutURL) { + window.location.href = signOutURL + } else { + window.location.reload() + } + }, []) + + return ( + + + + + ) +} diff --git a/ui-ori/lib/apps/UserProfile/Form.Version.tsx b/ui-ori/lib/apps/UserProfile/Form.Version.tsx new file mode 100644 index 0000000000..f075dcf8c2 --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/Form.Version.tsx @@ -0,0 +1,66 @@ +import { CopyLink, Descriptions, TextWithInfo } from '@lib/components' +import { store } from '@lib/utils/store' +import { Space } from 'antd' +import React from 'react' + +export function VersionForm() { + const info = store.useState((s) => s.appInfo) + + return ( + <> + {Boolean(info) && ( + + + + + + } + > + {info!.version?.internal_version} + + + + + + } + > + {info!.version?.build_git_hash} + + + } + > + {info!.version?.build_time} + + + } + > + {info!.version?.standalone} + + + + + + } + > + {info!.version?.pd_version} + + + )} + + ) +} diff --git a/ui-ori/lib/apps/UserProfile/constants.tsx b/ui-ori/lib/apps/UserProfile/constants.tsx new file mode 100644 index 0000000000..2afed22bb4 --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/constants.tsx @@ -0,0 +1 @@ +export const DEFAULT_FORM_ITEM_STYLE = { width: 200 } diff --git a/ui-ori/lib/apps/UserProfile/index.meta.ts b/ui-ori/lib/apps/UserProfile/index.meta.ts new file mode 100644 index 0000000000..f935559aab --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/index.meta.ts @@ -0,0 +1,9 @@ +import { UserOutlined } from '@ant-design/icons' + +export default { + id: 'user_profile', + routerPrefix: '/user_profile', + icon: UserOutlined, + translations: require.context('./translations/', false, /\.yaml$/), + reactRoot: () => import(/* webpackChunkName: "app_user_profile" */ '.'), +} diff --git a/ui-ori/lib/apps/UserProfile/index.tsx b/ui-ori/lib/apps/UserProfile/index.tsx new file mode 100644 index 0000000000..d9773715a4 --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/index.tsx @@ -0,0 +1,36 @@ +import React from 'react' +import { useTranslation } from 'react-i18next' +import { HashRouter as Router } from 'react-router-dom' +import { Card, Root } from '@lib/components' +import { SSOForm } from './Form.SSO' +import { SessionForm } from './Form.Session' +import { PrometheusAddressForm } from './Form.PrometheusAddr' +import { VersionForm } from './Form.Version' +import { LanguageForm } from './Form.Language' + +function App() { + const { t } = useTranslation() + return ( + + + + + + + + + + + + + + + + + + + + ) +} + +export default App diff --git a/ui-ori/lib/apps/UserProfile/translations/en.yaml b/ui-ori/lib/apps/UserProfile/translations/en.yaml new file mode 100755 index 0000000000..4058dec6ea --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/translations/en.yaml @@ -0,0 +1,78 @@ +user_profile: + sso: + title: Single Sign-On (SSO) + switch: + label: Enable to use SSO when sign into {{distro.tidb}} Dashboard + extra: OIDC based SSO is supported + form: + client_id: OIDC Client ID + discovery_url: OIDC Discovery URL + is_read_only: Sign in as read-only privilege + user: + label: Impersonate SQL User + extra: The SSO signed-in user will be using {{distro.tidb}} Dashboard on behalf of this SQL user and shares its permissions. + must_auth: You must authorize to continue + authn_button: Authorize Impersonation + modify_authn_button: Modify Authorization + authn_dialog: + title: Authorize Impersonation + user: SQL User to Impersonate + password: SQL User Password + info: The password of the SQL user will be stored encrypted. The impersonation will fail after SQL user changes the password. + submit: Authorize and Save + close: Cancel + authn_status: + ok: Authorized + auth_failed: 'Cannot impersonate: SQL user password is changed.' + insufficient_privileges: 'Cannot impersonate: Has no sufficient privileges to accsss {{distro.tidb}} dashboard.' + update: Update + cancel: Cancel + service_endpoints: + title: Service Endpoints + prometheus: + title: Prometheus Data Source + form: + deployed: Use deployed address + not_deployed: Prometheus is not deployed + custom: Use customized address + update: Update + cancel: Cancel + custom_form: + address: Customize Prometheus Address + i18n: + title: Language & Localization + language: Language + session: + title: Session + sign_out: Sign Out + share: Share Current Session + share_unavailable_tooltip: Current session is not allowed to be shared + share_session: + text: > + You can invite others to access this {{distro.tidb}} Dashboard by sharing your + current session via an **Authorization Code**: + + - The Authorization Code can be used multiple times. + + - The shared session will be invalidated after the expiry time you specified. + + - The shared session has the same privilege as your current session. + warning: > + Warning: Shared session will remain valid and cannot be revoked until it is expired. + Keep the Authorization Code safe! + form: + expire: Expire in + read_only: Share as read-only privilege + submit: Generate Authorization Code + close: Close + success_dialog: + title: Authorization Code Generated + copy: Copy + copied: Copied + version: + title: Version Information + internal_version: '{{distro.tidb}} Dashboard Internal Version' + build_git_hash: '{{distro.tidb}} Dashboard Build Git Hash' + build_time: '{{distro.tidb}} Dashboard Build Time' + standalone: '{{distro.tidb}} Dashboard Run in Standalone Mode' + pd_version: '{{distro.pd}} Version' diff --git a/ui-ori/lib/apps/UserProfile/translations/zh.yaml b/ui-ori/lib/apps/UserProfile/translations/zh.yaml new file mode 100755 index 0000000000..27961124d3 --- /dev/null +++ b/ui-ori/lib/apps/UserProfile/translations/zh.yaml @@ -0,0 +1,76 @@ +user_profile: + sso: + title: 单点登录 (SSO) + switch: + label: 允许使用 SSO 登录到 {{distro.tidb}} Dashboard + extra: 支持基于 OIDC 的 SSO 登录 + form: + client_id: OIDC Client ID + discovery_url: OIDC Discovery URL + is_read_only: 以只读权限登录 + user: + label: 实际登录 SQL 用户 + extra: SSO 登录成功后将被视为使用该 SQL 用户登录使用 {{distro.tidb}} Dashboard,并具有该用户对应的操作权限。 + must_auth: 必须完成授权后才能继续 + authn_button: 授权登录 + modify_authn_button: 修改授权 + authn_dialog: + title: SSO 登录授权 + user: 实际被登录的 SQL 用户 + password: SQL 用户的登录密码 + info: 登录密码将被加密存储;在 SQL 用户修改密码后 SSO 登录将失败(可重新进行登录授权)。 + submit: 授权并保存 + close: 取消 + authn_status: + ok: 已授权 + auth_failed: 授权失败:SQL 用户密码已变更 + insufficient_privileges: 授权失败:缺少访问 {{distro.tidb}} Dashboard 所需的权限 + update: 更新 + cancel: 取消 + service_endpoints: + title: 服务端点 + prometheus: + title: Prometheus 数据源 + form: + deployed: 使用已部署的组件地址 + not_deployed: 未部署 Prometheus 组件 + custom: 使用自定义地址 + update: 更新 + cancel: 取消 + custom_form: + address: 自定义 Prometheus 数据源地址 + i18n: + title: 语言和本地化 + language: 语言 + session: + title: 会话 + sign_out: 登出 + share: 分享当前会话 + share_unavailable_tooltip: 当前会话被禁止分享 + share_session: + text: > + 您可以生成一个**授权码**来将您当前的会话分享给其他人、邀请他们使用该 {{distro.tidb}} Dashboard: + + - 授权码可以被重复使用。 + + - 分享的会话将在您指定的有效时间后过期。 + + - 分享的会话和您当前会话具有相同权限。 + warning: > + 警告:已分享的会话无法被提前注销,将保持有效直到有效时间过期,因此请妥善保管授权码。 + form: + expire: 有效时间 + read_only: 以只读权限分享 + submit: 生成授权码 + close: 关闭 + success_dialog: + title: 授权码已生成 + copy: 复制 + copied: 已复制 + version: + title: 版本信息 + internal_version: '{{distro.tidb}} Dashboard 内部版本号' + build_git_hash: '{{distro.tidb}} Dashboard 编译 Git Hash' + build_time: '{{distro.tidb}} Dashboard 编译时间' + standalone: '{{distro.tidb}} Dashboard 运行于独立模式' + pd_version: '{{distro.pd}} 版本号' diff --git a/ui-ori/lib/client/api/.gitignore b/ui-ori/lib/client/api/.gitignore new file mode 100644 index 0000000000..1a3a5aef43 --- /dev/null +++ b/ui-ori/lib/client/api/.gitignore @@ -0,0 +1,3 @@ +* +!.openapi-generator-ignore +!.gitignore diff --git a/ui-ori/lib/client/api/.openapi-generator-ignore b/ui-ori/lib/client/api/.openapi-generator-ignore new file mode 100644 index 0000000000..3fbf70c8ae --- /dev/null +++ b/ui-ori/lib/client/api/.openapi-generator-ignore @@ -0,0 +1,2 @@ +git_push.sh +.gitignore diff --git a/ui-ori/lib/client/baseUrl.ts b/ui-ori/lib/client/baseUrl.ts new file mode 100644 index 0000000000..b7b36b3a94 --- /dev/null +++ b/ui-ori/lib/client/baseUrl.ts @@ -0,0 +1,20 @@ +import publicPathPrefix from '@lib/utils/publicPathPrefix' + +export const API_HOST = (function getApiHost(): string { + let apiPrefix + if (process.env.NODE_ENV === 'development') { + if (process.env.REACT_APP_DASHBOARD_API_URL) { + apiPrefix = `${process.env.REACT_APP_DASHBOARD_API_URL}/dashboard` + } else { + apiPrefix = 'http://127.0.0.1:12333/dashboard' + } + } else { + apiPrefix = publicPathPrefix + } + + return apiPrefix +})() + +export function getApiBasePath(): string { + return `${API_HOST}/api` +} diff --git a/ui-ori/lib/client/index.tsx b/ui-ori/lib/client/index.tsx new file mode 100755 index 0000000000..e7aec83246 --- /dev/null +++ b/ui-ori/lib/client/index.tsx @@ -0,0 +1,143 @@ +import React from 'react' +import i18next from 'i18next' +import axios, { AxiosInstance } from 'axios' +import { message, Modal, notification } from 'antd' +import * as singleSpa from 'single-spa' + +import * as auth from '@lib/utils/auth' +import * as routing from '@lib/utils/routing' +import * as i18n from '@lib/utils/i18n' +import { reportError } from '@lib/utils/sentryHelpers' + +import { DefaultApi } from './api' +import { getApiBasePath } from './baseUrl' + +export * from './api' + +////////////////////////////// + +let basePath: string +let apiClientInstance: DefaultApi +let rawAxiosInstance: AxiosInstance + +function save( + instanceBasePath: string, + instance: DefaultApi, + axiosInstace: AxiosInstance +) { + basePath = instanceBasePath + apiClientInstance = instance + rawAxiosInstance = axiosInstace +} + +function getInstance(): DefaultApi { + return apiClientInstance +} + +function getBasePath(): string { + return basePath +} + +function getAxiosInstance(): AxiosInstance { + return rawAxiosInstance +} + +export default { getInstance, getBasePath, getAxiosInstance } + +////////////////////////////// + +export enum ErrorStrategy { + Default = 'default', + Custom = 'custom', +} + +const ERR_CODE_OTHER = 'error.api.other' + +function applyErrorHandlerInterceptor(instance: AxiosInstance) { + instance.interceptors.response.use(undefined, async function (err) { + const { response, config } = err + const errorStrategy = config.errorStrategy as ErrorStrategy + const method = (config.method as string).toLowerCase() + + let errCode: string + let content: string + if (err.message === 'Network Error') { + errCode = 'error.network' + } else { + errCode = response?.data?.code + } + if (errCode !== ERR_CODE_OTHER && i18next.exists(errCode ?? '')) { + content = i18next.t(errCode) + } else { + content = + response?.data?.message || err.message || i18next.t(ERR_CODE_OTHER) + } + err.message = content + err.errCode = errCode + + if (errCode === 'error.api.unauthorized') { + // Handle unauthorized error in a unified way + if (!routing.isLocationMatch('/') && !routing.isSignInPage()) { + message.error({ content, key: errCode }) + } + auth.clearAuthToken() + singleSpa.navigateToUrl('#' + routing.signInRoute) + err.handled = true + } else if (errorStrategy === ErrorStrategy.Default) { + if (method === 'get') { + const fullUrl = config.url as string + const API = fullUrl.replace(getBasePath(), '').split('?')[0] + notification.error({ + key: API, + message: i18next.t('error.title'), + description: ( + + API: {API} +
+ {content} +
+ ), + }) + } else if (['post', 'put', 'delete', 'patch'].includes(method)) { + Modal.error({ + title: i18next.t('error.title'), + content: content, + zIndex: 2000, // higher than popover + }) + } + err.handled = true + } + + reportError(err) + return Promise.reject(err) + }) +} + +function initAxios() { + i18n.addTranslations(require.context('./translations/', false, /\.yaml$/)) + + const instance = axios.create() + applyErrorHandlerInterceptor(instance) + + return instance +} + +function init() { + const basePath = getApiBasePath() + const axiosInstance = initAxios() + const dashboardClient = new DefaultApi( + { + basePath, + apiKey: () => auth.getAuthTokenAsBearer() || '', + baseOptions: { + errorStrategy: ErrorStrategy.Default, + }, + }, + undefined, + axiosInstance + ) + + save(basePath, dashboardClient, axiosInstance) +} + +init() diff --git a/ui-ori/lib/client/translations/en.yaml b/ui-ori/lib/client/translations/en.yaml new file mode 100755 index 0000000000..435af99de7 --- /dev/null +++ b/ui-ori/lib/client/translations/en.yaml @@ -0,0 +1,28 @@ +error: + title: Error + network: Network connection error + api: + unauthorized: Session is expired. Please sign in again. + insufficient_privilege: You don't have sufficient privilege to perform this action. + user: + signin: + invalid_code: Authorization Code is invalid or expired + insufficient_privileges: 'The user does not have sufficient privileges to access {{distro.tidb}} Dashboard. ' + slow_query: + export_no_data: No slow queires can be exported + statement: + export_no_data: No statements can be exported + continuous_profiling: + ng_monitoring_not_deploy: | + To use or learn more about "Continuous Profiling" feature, please search for "Continuous Profiling" in the {{distro.tidb}} official docs for more information. + If it doesn't resove the issue, please contact the product's technical support. + ng_monitoring_not_start: | + To use or learn more about "Continuous Profiling" feature, please search for "Continuous Profiling" in the {{distro.tidb}} official docs for more information. + If it doesn't resove the issue, please contact the product's technical support. + feature_not_supported: The cluster of this version doesn't support or can't use this feature, please contact with technical support to get more information. + other: Other error + tidb: + no_alive_tidb: No alive {{distro.tidb}} instance + pd_access_failed: Failed to access {{distro.pd}} node + tidb_conn_failed: Failed to connect to {{distro.tidb}} + tidb_auth_failed: '{{distro.tidb}} authentication failed' diff --git a/ui-ori/lib/client/translations/zh.yaml b/ui-ori/lib/client/translations/zh.yaml new file mode 100755 index 0000000000..49eaf957f2 --- /dev/null +++ b/ui-ori/lib/client/translations/zh.yaml @@ -0,0 +1,28 @@ +error: + title: 错误 + network: 网络连接失败 + api: + unauthorized: 会话已过期,请重新登录 + insufficient_privilege: 您没有足够的权限进行该操作 + user: + signin: + invalid_code: 授权码无效或已过期 + insufficient_privileges: 此用户缺少访问 {{distro.tidb}} Dashboard 所需的权限。 + slow_query: + export_no_data: 没有可导出的慢查询日志 + statement: + export_no_data: 没有可导出的语句 + continuous_profiling: + ng_monitoring_not_deploy: | + 想使用或深入了解“持续性能分析”功能,请在 {{distro.tidb}} 官方文档搜索“持续性能分析”查看更多内容。 + 若未能解决问题,请联系本产品技术支持。 + ng_monitoring_not_start: | + 想使用或深入了解“持续性能分析”功能,请在 {{distro.tidb}} 官方文档搜索“持续性能分析”查看更多内容。 + 若未能解决问题,请联系本产品技术支持。 + feature_not_supported: 当前版本的集群不支持或无法使用该功能,请联系技术支持了解详细情况。 + other: 其他错误 + tidb: + no_alive_tidb: 没有正在运行的 {{distro.tidb}} 实例 + pd_access_failed: 无法访问 {{distro.pd}} 节点 + tidb_conn_failed: 无法连接到 {{distro.tidb}} + tidb_auth_failed: '{{distro.tidb}} 登录验证失败' diff --git a/ui-ori/lib/components/AnimatedSkeleton/index.module.less b/ui-ori/lib/components/AnimatedSkeleton/index.module.less new file mode 100644 index 0000000000..f6014fe661 --- /dev/null +++ b/ui-ori/lib/components/AnimatedSkeleton/index.module.less @@ -0,0 +1,19 @@ +@import '~antd/es/style/mixins/motion.less'; + +.container :global { + .skeletonAnimationFirstTime { + animation: 0.5s linear 0.5s antFadeIn; + animation-fill-mode: both; + animation-iteration-count: 1; + } + .skeletonAnimationNotFirstTime { + animation: 0.5s linear 0 antFadeIn; + animation-fill-mode: both; + animation-iteration-count: 1; + } + + .contentAnimation { + animation: 0.2s linear 0s antFadeIn; + animation-fill-mode: both; + } +} diff --git a/ui-ori/lib/components/AnimatedSkeleton/index.tsx b/ui-ori/lib/components/AnimatedSkeleton/index.tsx new file mode 100644 index 0000000000..6b1b990c94 --- /dev/null +++ b/ui-ori/lib/components/AnimatedSkeleton/index.tsx @@ -0,0 +1,53 @@ +import React, { useEffect, useState } from 'react' +import cx from 'classnames' +import { Skeleton } from 'antd' +import { SkeletonProps } from 'antd/lib/skeleton' +import { AppearAnimate } from '..' + +import styles from './index.module.less' + +export interface IAnimatedSkeletonProps extends SkeletonProps { + showSkeleton?: boolean + children?: React.ReactNode + style?: React.CSSProperties +} + +function AnimatedSkeleton({ + showSkeleton, + children, + style, + ...restProps +}: IAnimatedSkeletonProps) { + const [skeletonAppears, setSkeletonAppears] = useState(0) + + useEffect(() => { + if (showSkeleton) { + setSkeletonAppears((v) => v + 1) + } + }, [showSkeleton]) + + return ( +
+ {showSkeleton && ( +
1, + })} + > + +
+ )} + {!showSkeleton && ( + {children} + )} +
+ ) +} + +export default React.memo(AnimatedSkeleton) diff --git a/ui-ori/lib/components/AppearAnimate/index.tsx b/ui-ori/lib/components/AppearAnimate/index.tsx new file mode 100644 index 0000000000..4130321bf7 --- /dev/null +++ b/ui-ori/lib/components/AppearAnimate/index.tsx @@ -0,0 +1,33 @@ +import cx from 'classnames' +import React, { useState, useCallback, useRef } from 'react' +import { useEventListener } from 'ahooks' + +export interface IAppearAnimateProps + extends React.HTMLAttributes { + motionName: string +} + +// A component similar to CSSMotion but is simpler, and avoids some edge case bugs. +// It simply removes the animation class after animation completes. +function AppearAnimate({ + className, + motionName, + children, +}: IAppearAnimateProps) { + const [isFirst, setIsFirst] = useState(true) + + const handleAnimationEnd = useCallback(() => { + setIsFirst(false) + }, []) + + const ref = useRef(null) + useEventListener('animationend', handleAnimationEnd, { target: ref }) + + return ( +
+ {children} +
+ ) +} + +export default React.memo(AppearAnimate) diff --git a/ui-ori/lib/components/Bar/Bar.module.less b/ui-ori/lib/components/Bar/Bar.module.less new file mode 100644 index 0000000000..3739dd3df3 --- /dev/null +++ b/ui-ori/lib/components/Bar/Bar.module.less @@ -0,0 +1,67 @@ +@import '~antd/es/style/themes/default.less'; + +@bar-height: 8px; +@bar-color: lighten(@primary-color, 10%); +@bar-stack-color: @gray-3; +@error-bar-height: 6px; +@error-bar-color: @gold-5; +@error-line-width: 2px; + +.container { + display: flex; + flex-direction: row; + align-items: center; + min-height: 1em; + height: unit(@line-height-base, em); +} + +.text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding-right: 5px; +} + +.bar_container { + flex-grow: 1; + position: relative; + height: @bar-height; + background: @bar-stack-color; +} + +.bar { + position: absolute; + top: 0; + height: 100%; + background-color: @bar-color; +} + +.error_bar { + position: absolute; + top: 50%; + height: @error-line-width; + margin-top: -@error-line-width / 2; + background-color: @error-bar-color; + + &::before { + content: ''; + position: absolute; + height: @error-bar-height; + width: @error-line-width; + margin-top: -@error-bar-height / 2; + background-color: @error-bar-color; + top: 50%; + } + + &.min_bar { + &::before { + left: 0; + } + } + + &.max_bar { + &::before { + right: 0; + } + } +} diff --git a/ui-ori/lib/components/Bar/Bar.tsx b/ui-ori/lib/components/Bar/Bar.tsx new file mode 100644 index 0000000000..b7338205f7 --- /dev/null +++ b/ui-ori/lib/components/Bar/Bar.tsx @@ -0,0 +1,112 @@ +import React, { useMemo } from 'react' +import cx from 'classnames' +import clamp from 'lodash/clamp' +import sum from 'lodash/sum' + +import styles from './Bar.module.less' + +export interface IBarProps { + value: number[] | number + colors?: (string | null)[] + capacity: number + min?: number + max?: number + className?: string + children?: React.ReactNode + textWidth?: number | string +} + +function Bar({ + value, + colors, + capacity, + min, + max, + className, + children, + textWidth, + ...rest +}: IBarProps) { + const clampedValues = useMemo(() => { + if (value instanceof Array) { + const r: [number, number][] = [] + let sum = 0 + value.forEach((value) => { + let v: number + if (sum + value <= capacity) { + v = value + } else if (sum < capacity) { + v = capacity - sum + } else { + v = 0 + } + r.push([sum, v]) + sum += v + }) + return r + } else { + return [[0, clamp(value, 0, capacity)]] + } + }, [value, capacity]) + + const valuesSum = useMemo( + () => sum(clampedValues.map(([_s, v]) => v)), + [clampedValues] + ) + + if (min != null) { + min = clamp(min, 0, valuesSum) + if ((valuesSum - min) / capacity < 0.01) { + min = undefined + } + } + if (max != null) { + max = clamp(max, valuesSum, capacity) + if ((max - valuesSum) / capacity < 0.01) { + max = undefined + } + } + + return ( +
+ {children && ( +
+ {children} +
+ )} +
+ {clampedValues.map(([offset, value], idx) => ( +
+ ))} + {min != null && ( +
+ )} + {max != null && ( +
+ )} +
+
+ ) +} + +export default Bar diff --git a/ui-ori/lib/components/Bar/index.tsx b/ui-ori/lib/components/Bar/index.tsx new file mode 100644 index 0000000000..4d74d167f8 --- /dev/null +++ b/ui-ori/lib/components/Bar/index.tsx @@ -0,0 +1,3 @@ +import Bar from './Bar' +export * from './Bar' +export default Bar diff --git a/ui-ori/lib/components/BaseSelect/index.module.less b/ui-ori/lib/components/BaseSelect/index.module.less new file mode 100644 index 0000000000..b0572755bc --- /dev/null +++ b/ui-ori/lib/components/BaseSelect/index.module.less @@ -0,0 +1,102 @@ +@import '~antd/es/style/themes/default.less'; +@import '~antd/es/style/mixins/index'; +@import '~antd/es/input/style/mixin'; +@import '~antd/es/select/style/index'; + +.baseSelect { + .reset-component; + position: relative; + display: inline-block; +} + +.baseSelectInner { + position: relative; + background-color: @select-background; + border: @border-width-base @border-style-base @select-border-color; + border-radius: @border-radius-base; + transition: all 0.3s @ease-in-out; + display: flex; + width: 100%; + height: @input-height-base; + padding: 0 @input-padding-horizontal-base; + cursor: pointer; + color: @text-color; + + &.focused { + .active(); + } + + &.disabled { + color: @disabled-color; + background: @input-disabled-bg; + cursor: not-allowed; + + .baseSelectInput { + cursor: not-allowed; + } + } + + &:not(.disabled):hover { + .hover(); + } +} + +:global(.ant-form-item-has-error) { + .baseSelectInner { + border-color: @error-color !important; + &.focused { + .active(@error-color); + } + } +} + +.baseSelectInput { + opacity: 0; + position: absolute; + top: 0; + left: 0; + background: transparent; + border: none; + outline: none; + cursor: pointer; + width: 100%; + height: @select-height-without-border; +} + +.baseSelectValueDisplay { + position: relative; + display: block; + padding-right: @selection-item-padding; + font-weight: normal; + font-size: @select-dropdown-font-size; + line-height: @select-height-without-border; + transition: all 0.3s; + pointer-events: none; + width: 100%; + + &.isPlaceholder { + opacity: 0.4; + } +} + +.baseSelectArrow { + position: absolute; + top: 53%; // The same as Ant-design's select + right: @input-padding-horizontal-base; + width: @font-size-sm; + height: @font-size-sm; + margin-top: -@font-size-sm / 2; + color: @disabled-color; + font-size: @font-size-sm; + line-height: 1; + text-align: center; + pointer-events: none; +} + +.baseSelectOverlay { + background-color: @select-dropdown-bg; + border-radius: @border-radius-base; + outline: none; + box-shadow: @box-shadow-base; + box-sizing: border-box; +} diff --git a/ui-ori/lib/components/BaseSelect/index.stories.tsx b/ui-ori/lib/components/BaseSelect/index.stories.tsx new file mode 100644 index 0000000000..94ebf91e1f --- /dev/null +++ b/ui-ori/lib/components/BaseSelect/index.stories.tsx @@ -0,0 +1,33 @@ +import React from 'react' +import { Button } from 'antd' + +import BaseSelect from '.' + +export default { + title: 'Select/Base Select', +} + +export const shortContent = () => ( +
Content
} + valueRender={() => Short} + /> +) + +export const longContent = () => ( +
Content
} + valueRender={() => Very Lonnnnnnnnng Value} + /> +) + +export const disabled = () => ( +
Content
} + valueRender={() => Disabled} + /> +) + +export const antdButton = () => diff --git a/ui-ori/lib/components/BaseSelect/index.tsx b/ui-ori/lib/components/BaseSelect/index.tsx new file mode 100644 index 0000000000..d05460d562 --- /dev/null +++ b/ui-ori/lib/components/BaseSelect/index.tsx @@ -0,0 +1,264 @@ +import React, { useState, useCallback, useRef, useMemo } from 'react' +import cx from 'classnames' +import { useEventListener } from 'ahooks' +import { DownOutlined } from '@ant-design/icons' +import Trigger from 'rc-trigger' +import KeyCode from 'rc-util/lib/KeyCode' +import _ from 'lodash' + +import { TextWrap } from '..' + +import styles from './index.module.less' + +export interface IBaseSelectProps + extends Omit< + React.HTMLAttributes, + 'onChange' | 'placeholder' + > { + dropdownRender: () => React.ReactElement + value?: T + valueRender: (value?: T) => React.ReactNode + placeholder?: React.ReactNode + overlayClassName?: string + disabled?: boolean + tabIndex?: number + autoFocus?: boolean + onOpen?: () => void + onOpened?: () => void + onClose?: () => void + onClosed?: () => void +} + +const builtinPlacements = { + bottomLeft: { + ignoreShake: true, + points: ['tl', 'bl'], + offset: [0, 4], + overflow: { + adjustX: 0, + adjustY: 0, + }, + }, +} + +function BaseSelect({ + dropdownRender, + value, + valueRender, + placeholder, + disabled, + tabIndex, + autoFocus, + className, + overlayClassName, + onFocus, + onBlur, + onKeyDown, + onOpen, + onOpened, + onClose, + onClosed, + ...restProps +}: IBaseSelectProps) { + const [dropdownVisible, setDropdownVisible] = useState(false) + const toggleDropdownVisible = useCallback(() => { + if (disabled) { + return + } + setDropdownVisible((v) => !v) + }, [disabled]) + + const [isFocused, setFocused] = useState(false) + + const handleDebouncedContainerFocus = useCallback( + (ev: React.FocusEvent) => { + setFocused(true) + onFocus && onFocus(ev) + }, + [onFocus] + ) + + const handleDebouncedContainerBlur = useCallback( + (ev: React.FocusEvent) => { + setDropdownVisible(false) + setFocused(false) + onBlur && onBlur(ev) + }, + [onBlur] + ) + + const debouncedFocusOrBlur = useMemo(() => { + return _.debounce( + (isFocus: boolean, ev: React.FocusEvent) => { + if (isFocus) { + handleDebouncedContainerFocus(ev) + } else { + handleDebouncedContainerBlur(ev) + } + }, + 50 + ) + }, [handleDebouncedContainerFocus, handleDebouncedContainerBlur]) + + const handleContainerFocus = useCallback( + (ev) => { + debouncedFocusOrBlur(true, ev) + }, + [debouncedFocusOrBlur] + ) + + const handleContainerBlur = useCallback( + (ev) => { + debouncedFocusOrBlur(false, ev) + }, + [debouncedFocusOrBlur] + ) + + const handleContainerKeyDown = useCallback( + (ev: React.KeyboardEvent) => { + if (ev.which === KeyCode.ENTER) { + toggleDropdownVisible() + } else if (ev.which === KeyCode.ESC) { + setDropdownVisible(false) + } + onKeyDown && onKeyDown(ev) + }, + [toggleDropdownVisible, onKeyDown] + ) + + const handleSelectorMouseDown = useCallback(() => { + toggleDropdownVisible() + }, [toggleDropdownVisible]) + + const handleOverlayMouseDown = useCallback( + (ev: React.MouseEvent) => { + // Prevent dropdown container blur event + ev.preventDefault() + }, + [] + ) + + const handlePopupVisibleChange = useCallback( + (visible: boolean) => { + if (visible) { + onOpen?.() + } else { + onClose?.() + } + }, + [onOpen, onClose] + ) + + const handleAfterPopupVisibleChange = useCallback( + (visible: boolean) => { + if (visible) { + onOpened?.() + } else { + onClosed?.() + } + }, + [onOpened, onClosed] + ) + + const dropdownOverlayRef = useRef(null) + const containerRef = useRef(null) + + const overlay = useMemo(() => { + return ( +
+ {dropdownRender()} +
+ ) + }, [dropdownRender, overlayClassName, handleOverlayMouseDown]) + + useEventListener('mousedown', (ev: MouseEvent) => { + // Close the dropdown if click outside + if (!dropdownVisible) { + return + } + const hitElements = [dropdownOverlayRef.current, containerRef.current] + if ( + hitElements.every( + (e) => + !e || + !ev.target || + (!e.contains(ev.target as HTMLElement) && e !== ev.target) + ) + ) { + setDropdownVisible(false) + } + }) + + // Close dropdown when disabled change + React.useEffect(() => { + setDropdownVisible((v) => { + if (v && !disabled) { + return false + } + return v + }) + }, [disabled]) + + const renderedValue = valueRender(value) + const displayAsPlaceholder = renderedValue == null + + return ( +
+ +
+
+ +
+ + {displayAsPlaceholder ? placeholder : renderedValue} + +
+
+
+ +
+
+
+
+ ) +} + +export default React.memo(BaseSelect) diff --git a/ui-ori/lib/components/Blink/index.module.less b/ui-ori/lib/components/Blink/index.module.less new file mode 100644 index 0000000000..e5c3382429 --- /dev/null +++ b/ui-ori/lib/components/Blink/index.module.less @@ -0,0 +1,17 @@ +@import '~antd/lib/style/themes/default.less'; + +.blinkActive { + animation: blink 0.7s 2 ease-in-out; +} + +@keyframes blink { + 0% { + background-color: transparent; + } + 50% { + background-color: rgba(@gold-5, 0.4); + } + 100% { + background-color: transparent; + } +} diff --git a/ui-ori/lib/components/Blink/index.tsx b/ui-ori/lib/components/Blink/index.tsx new file mode 100644 index 0000000000..cd02933761 --- /dev/null +++ b/ui-ori/lib/components/Blink/index.tsx @@ -0,0 +1,29 @@ +import useQueryParams from '@lib/utils/useQueryParams' +import React from 'react' +import cx from 'classnames' + +import styles from './index.module.less' + +export interface IBlinkProps extends React.HTMLAttributes { + activeId: string +} + +export default function Blink({ + activeId, + children, + className, + ...restProps +}: IBlinkProps) { + const { blink } = useQueryParams() + + return ( +
+ {children} +
+ ) +} diff --git a/ui-ori/lib/components/Card/index.module.less b/ui-ori/lib/components/Card/index.module.less new file mode 100644 index 0000000000..2e997790ad --- /dev/null +++ b/ui-ori/lib/components/Card/index.module.less @@ -0,0 +1,73 @@ +@import '~antd/es/style/themes/default.less'; + +.cardContainer { + // &:before, + // &:after { + // // Handle margin collapse + // content: ' '; + // display: table; + // } +} + +.cardInner { + margin: @padding-page; + + &.noMargin { + margin: 0; + } + + &.noMarginTop { + margin-top: 0; + } + + &.noMarginBottom { + margin-bottom: 0; + } + + &.noMarginLeft { + margin-left: 0; + } + + &.noMarginRight { + margin-right: 0; + } +} + +.cardTitleSection { + margin: @padding-lg 0; + display: flex; + flex-direction: row; + align-items: center; +} + +.cardTitle { + color: @heading-color; + font-size: @heading-4-size; + line-height: 32px; + margin-right: @padding-md; +} + +.cardSubTitle { + margin-left: @padding-md; + margin-right: @padding-md; +} + +.cardTitleSpacer { + flex-grow: 1; +} + +.hasTitle > .cardContent { + margin-top: @padding-lg; +} + +.cardContainer.flexGrow { + display: flex; + flex-grow: 1; + flex-direction: column; + + .cardInner, + .cardContent { + display: flex; + flex-grow: 1; + } +} diff --git a/ui-ori/lib/components/Card/index.tsx b/ui-ori/lib/components/Card/index.tsx new file mode 100644 index 0000000000..13c0500026 --- /dev/null +++ b/ui-ori/lib/components/Card/index.tsx @@ -0,0 +1,61 @@ +import React, { ReactNode } from 'react' +import cx from 'classnames' +import styles from './index.module.less' + +export interface ICardProps + extends Omit, 'title'> { + title?: ReactNode + subTitle?: ReactNode + extra?: ReactNode + noMargin?: boolean + noMarginTop?: boolean + noMarginBottom?: boolean + noMarginLeft?: boolean + noMarginRight?: boolean + flexGrow?: boolean +} + +export default function Card({ + title, + subTitle, + extra, + className, + noMargin, + noMarginTop, + noMarginBottom, + noMarginLeft, + noMarginRight, + flexGrow, + children, + ...rest +}: ICardProps) { + return ( +
+
+ {(title || subTitle || extra) && ( +
+ {title &&
{title}
} + {subTitle &&
{subTitle}
} +
+ {extra &&
{extra}
} +
+ )} + {children &&
{children}
} +
+
+ ) +} diff --git a/ui-ori/lib/components/CardTable/GroupHeader.tsx b/ui-ori/lib/components/CardTable/GroupHeader.tsx new file mode 100644 index 0000000000..5e0532ff98 --- /dev/null +++ b/ui-ori/lib/components/CardTable/GroupHeader.tsx @@ -0,0 +1,115 @@ +// FIXME: This is mostly a clone from https://github.com/microsoft/fluentui/blob/master/packages/office-ui-fabric-react/src/components/GroupedList/GroupHeader.base.tsx, but replaced with Ant'd Checkbox +// Drop it after https://github.com/microsoft/fluentui/issues/13144 is resolved + +import React from 'react' +import { + classNamesFunction, + styled, +} from 'office-ui-fabric-react/lib/Utilities' +import { + IGroupHeaderStyleProps, + IGroupHeaderStyles, + IGroupHeaderProps, + GroupSpacer, +} from 'office-ui-fabric-react/lib/GroupedList' +import { + FocusZone, + FocusZoneDirection, +} from 'office-ui-fabric-react/lib/FocusZone' +import { getStyles } from 'office-ui-fabric-react/lib/components/GroupedList/GroupHeader.styles' + +import { Icon } from 'office-ui-fabric-react/lib/Icon' +import { Checkbox } from 'antd' +import { usePersistFn } from 'ahooks' + +const getClassNames = classNamesFunction< + IGroupHeaderStyleProps, + IGroupHeaderStyles +>() + +function BaseAntCheckboxGroupHeader(props: IGroupHeaderProps) { + const _classNames = getClassNames(props.styles, { + theme: props.theme!, + className: props.className, + selected: props.selected, + isCollapsed: props.group?.isCollapsed, + compact: props.compact, + }) + + const _onHeaderClick = usePersistFn(() => { + if (props.onToggleSelectGroup) { + props.onToggleSelectGroup(props.group!) + } + }) + + const _onToggleSelectGroupClick = usePersistFn( + (ev: React.MouseEvent) => { + if (props.onToggleSelectGroup) { + props.onToggleSelectGroup(props.group!) + } + ev.preventDefault() + ev.stopPropagation() + } + ) + + const _onToggleCollapse = usePersistFn( + (ev: React.MouseEvent) => { + if (props.onToggleCollapse) { + props.onToggleCollapse(props.group!) + } + ev.stopPropagation() + ev.preventDefault() + } + ) + + return ( +
+ + + + + +
+ {props.group?.name} +
+
+
+ ) +} + +export const AntCheckboxGroupHeader: React.FunctionComponent = + styled( + BaseAntCheckboxGroupHeader, + getStyles, + undefined, + { + scope: 'GroupHeader', + } + ) diff --git a/ui-ori/lib/components/CardTable/index.module.less b/ui-ori/lib/components/CardTable/index.module.less new file mode 100644 index 0000000000..af3857d6a5 --- /dev/null +++ b/ui-ori/lib/components/CardTable/index.module.less @@ -0,0 +1,61 @@ +.cardTable { + :global { + .ms-DetailsRow { + > :first-child.ms-DetailsRow-fields { + font-size: 0.8rem; + > :first-child { + padding-left: @padding-page; + } + } + } + } +} + +.cardTable.contentExtended { + :global { + .ms-DetailsRow { + > :first-child.ms-DetailsRow-fields { + > :last-child { + padding-right: @padding-page; + } + } + } + } +} + +.tableHeader { + :global { + .ms-DetailsHeader { + padding-top: 0; + + > :first-child .ms-DetailsHeader-cellTitle { + padding-left: @padding-page; + } + + // FIXME: For sticky headers, when there is `.contentExtended`, we + // need to add padding right. + + // > :nth-last-child(2) .ms-DetailsHeader-cellTitle { + // padding-right: @padding-page; + // } + + // &.is-resizingColumn > :nth-last-child(3) .ms-DetailsHeader-cellTitle { + // // FIXME: This is highly magical + // padding-right: @padding-page; + // } + } + } +} + +.clickableTableRow { + cursor: pointer; +} + +.highlightRow { + border: 1px solid; +} + +.cardTableContent { + margin-left: -@padding-page; + margin-right: -@padding-page; +} diff --git a/ui-ori/lib/components/CardTable/index.tsx b/ui-ori/lib/components/CardTable/index.tsx new file mode 100644 index 0000000000..011bdbf085 --- /dev/null +++ b/ui-ori/lib/components/CardTable/index.tsx @@ -0,0 +1,267 @@ +import { IRenderFunction } from '@uifabric/utilities' +import { usePersistFn } from 'ahooks' +import { Checkbox } from 'antd' +import cx from 'classnames' +import { + ColumnActionsMode, + ConstrainMode, + DetailsList, + DetailsListLayoutMode, + IColumn, + IDetailsList, + IDetailsListProps, + SelectionMode, + IDetailsRowProps, +} from 'office-ui-fabric-react/lib/DetailsList' +import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' +import React, { useCallback, useEffect, useMemo, useRef } from 'react' + +import AnimatedSkeleton from '../AnimatedSkeleton' +import Card from '../Card' +import ErrorBar from '../ErrorBar' + +import styles from './index.module.less' + +export { AntCheckboxGroupHeader } from './GroupHeader' + +DetailsList['whyDidYouRender'] = { + customName: 'DetailsList', +} + +function renderStickyHeader(props, defaultRender) { + if (!props) { + return null + } + return ( + +
{defaultRender!(props)}
+
+ ) +} + +function renderCheckbox(props) { + return +} + +export function ImprovedDetailsList(props: IDetailsListProps) { + return ( + + ) +} + +ImprovedDetailsList.whyDidYouRender = true + +export const MemoDetailsList = React.memo(ImprovedDetailsList) + +function copyAndSort( + items: T[], + columnKey: string, + isSortedDescending?: boolean +): T[] { + const key = columnKey as keyof T + return items + .slice(0) + .sort((a: T, b: T) => + (isSortedDescending ? a[key] < b[key] : a[key] > b[key]) ? 1 : -1 + ) +} + +export interface ICardTableProps extends IDetailsListProps { + title?: React.ReactNode + subTitle?: React.ReactNode + className?: string + style?: object + loading?: boolean + hideLoadingWhenNotEmpty?: boolean // Whether loading animation should not show when data is not empty + errors?: any[] + + cardExtra?: React.ReactNode + cardNoMargin?: boolean + cardNoMarginTop?: boolean + extendLastColumn?: boolean + + // The keys of visible columns. If null, all columns will be shown. + visibleColumnKeys?: { [key: string]: boolean } + visibleItemsCount?: number + + // Handle sort + orderBy?: string + desc?: boolean + onChangeOrder?: (orderBy: string, desc: boolean) => void + + // Event triggered when a row is clicked. + onRowClicked?: ( + item: any, + itemIndex: number, + ev: React.MouseEvent + ) => void + clickedRowIndex?: number +} + +function useRenderClickableRow( + onRowClicked, + clickedRowIdx, + customRender?: IRenderFunction | undefined +) { + return useCallback( + (props, defaultRender) => { + if (!props) { + return null + } + return ( +
onRowClicked?.(props.item, props.itemIndex, ev)} + > + {customRender ? customRender(props) : defaultRender!(props)} +
+ ) + }, + [onRowClicked, clickedRowIdx, customRender] + ) +} + +function dummyColumn(): IColumn { + return { + name: '', + key: 'dummy', + minWidth: 28, + maxWidth: 28, + onRender: (_rec) => null, + } +} + +export default function CardTable(props: ICardTableProps) { + const { + title, + subTitle, + className, + style, + loading = false, + hideLoadingWhenNotEmpty, + errors = [], + cardExtra, + cardNoMargin, + cardNoMarginTop, + extendLastColumn, + visibleColumnKeys, + visibleItemsCount, + orderBy, + desc = true, + onChangeOrder, + onRowClicked, + clickedRowIndex, + columns, + items, + onRenderRow, + ...restProps + } = props + const renderClickableRow = useRenderClickableRow( + onRowClicked, + clickedRowIndex || -1, + onRenderRow + ) + + const onColumnClick = usePersistFn( + (_ev: React.MouseEvent, column: IColumn) => { + if (!onChangeOrder) { + return + } + if (column.key === orderBy) { + onChangeOrder(orderBy, !desc) + } else { + onChangeOrder(column.key, true) + } + } + ) + + const finalColumns = useMemo(() => { + let newColumns: IColumn[] = columns || [] + if (visibleColumnKeys != null) { + newColumns = newColumns.filter((c) => visibleColumnKeys[c.key]) + } + newColumns = newColumns.map((c) => ({ + ...c, + isResizable: c.isResizable ?? true, + isSorted: c.key === orderBy, + isSortedDescending: desc, + onColumnClick, + columnActionsMode: c.columnActionsMode || ColumnActionsMode.disabled, + })) + if (!extendLastColumn) { + newColumns.push(dummyColumn()) + } + return newColumns + }, [ + onColumnClick, + columns, + visibleColumnKeys, + orderBy, + desc, + extendLastColumn, + ]) + + const finalItems = useMemo(() => { + let newItems = items || [] + const curColumn = finalColumns.find((col) => col.key === orderBy) + if (curColumn) { + newItems = copyAndSort( + newItems, + curColumn.fieldName!, + curColumn.isSortedDescending + ) + } + if (visibleItemsCount != null) { + newItems = newItems.slice(0, visibleItemsCount) + } + return newItems + }, [visibleItemsCount, items, orderBy, finalColumns]) + + const tableRef = useRef(null) + useEffect(() => { + if ((clickedRowIndex ?? -1) > 0) { + tableRef.current?.scrollToIndex(clickedRowIndex!) + } + }) + + return ( + + + +
+ +
+
+
+ ) +} diff --git a/ui-ori/lib/components/CardTabs/index.module.less b/ui-ori/lib/components/CardTabs/index.module.less new file mode 100644 index 0000000000..307c039577 --- /dev/null +++ b/ui-ori/lib/components/CardTabs/index.module.less @@ -0,0 +1,9 @@ +.tabs { + margin-left: -@padding-page; + margin-right: -@padding-page; + + .card_tab_navs { + padding-left: @padding-page; + padding-right: @padding-page; + } +} diff --git a/ui-ori/lib/components/CardTabs/index.tsx b/ui-ori/lib/components/CardTabs/index.tsx new file mode 100644 index 0000000000..82cc871826 --- /dev/null +++ b/ui-ori/lib/components/CardTabs/index.tsx @@ -0,0 +1,57 @@ +import React, { useState } from 'react' +import { Tabs } from 'antd' +import cx from 'classnames' +import styles from './index.module.less' +import { TabsProps } from 'antd/es/tabs' + +type Tab = { + key: string + title: string + content: () => React.ReactNode +} + +export interface ICardTabsProps extends TabsProps { + className?: string + tabs: Tab[] +} + +function renderCardTabBar(props, DefaultTabBar) { + return +} + +function CardTabs({ + className, + tabs, + defaultActiveKey, + onChange, + renderTabBar, + ...restProps +}: ICardTabsProps) { + const [tabKey, setTabKey] = useState(defaultActiveKey || tabs[0].key) + const c = cx(styles.tabs, className) + const selectedTab = tabs.find((tab) => tab.key === tabKey) + + function changeTab(tabKey) { + setTabKey(tabKey) + onChange && onChange(tabKey) + } + + return ( + <> + + {tabs.map((tab) => ( + + ))} + + {selectedTab?.content()} + + ) +} + +export default CardTabs diff --git a/ui-ori/lib/components/ColumnsSelector/index.module.less b/ui-ori/lib/components/ColumnsSelector/index.module.less new file mode 100644 index 0000000000..3d9118d274 --- /dev/null +++ b/ui-ori/lib/components/ColumnsSelector/index.module.less @@ -0,0 +1,14 @@ +@import '~antd/es/style/themes/default.less'; + +.title_container { + display: flex; + align-items: center; + justify-content: space-between; + height: 32px; +} + +.foot_container { + border-top: 1px solid @border-color-split; + margin: 0 -@popover-padding-horizontal; + padding: 8px @popover-padding-horizontal 0; +} diff --git a/ui-ori/lib/components/ColumnsSelector/index.tsx b/ui-ori/lib/components/ColumnsSelector/index.tsx new file mode 100644 index 0000000000..fa243f85e3 --- /dev/null +++ b/ui-ori/lib/components/ColumnsSelector/index.tsx @@ -0,0 +1,153 @@ +import React, { ReactNode, useMemo, useState, useEffect } from 'react' +import { Checkbox, Popover, Space, Button } from 'antd' +import { DownOutlined } from '@ant-design/icons' +import { useTranslation } from 'react-i18next' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import { addTranslationResource } from '@lib/utils/i18n' + +import styles from './index.module.less' + +const translations = { + en: { + trigger_text: 'Columns', + select: 'Select', + reset: 'Reset', + }, + zh: { + trigger_text: '选择列', + select: '选择', + reset: '重置', + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + columnsSelector: translations[key], + }, + }) +} + +export interface IColumnKeys { + [key: string]: boolean +} + +export interface IColumnsSelectorProps { + columns: IColumn[] + visibleColumnKeys?: IColumnKeys + defaultVisibleColumnKeys?: IColumnKeys + onChange?: (visibleKeys: IColumnKeys) => void + foot?: ReactNode +} + +export default function ColumnsSelector({ + columns, + visibleColumnKeys, + defaultVisibleColumnKeys, + onChange, + foot, +}: IColumnsSelectorProps) { + const { t } = useTranslation() + const [indeterminate, setIndeterminate] = useState(true) + const [checkedAll, setCheckedAll] = useState(false) + + const filteredColumns = useMemo( + () => columns.filter((c) => c.key !== 'dummy'), + [columns] + ) + + const visibleKeys = useMemo(() => { + if (visibleColumnKeys) { + return visibleColumnKeys + } + return columns.reduce((acc, cur) => { + acc[cur.key] = true + return acc + }, {}) + }, [visibleColumnKeys, columns]) + + useEffect(() => { + function updateCheckAllStatus(columnKeys) { + const checkedKeysCount = Object.keys(columnKeys).filter( + (k) => columnKeys[k] && k !== 'dummy' + ).length + setIndeterminate( + checkedKeysCount > 0 && checkedKeysCount < filteredColumns.length + ) + setCheckedAll(checkedKeysCount === filteredColumns.length) + } + + updateCheckAllStatus(visibleKeys) + }, [visibleKeys, filteredColumns]) + + function handleCheckAllChange(e) { + const checked = e.target.checked + const newVisibleKeys = columns.reduce((acc, cur) => { + acc[cur.key] = checked + return acc + }, {}) + onChange && onChange(newVisibleKeys) + } + + function handleCheckChange(e, column: IColumn) { + const checked = e.target.checked + const newVisibleKeys = { + ...visibleKeys, + [column.key]: checked, + } + onChange && onChange(newVisibleKeys) + } + + const title = ( +
+ + {t('component.columnsSelector.select')} + + {defaultVisibleColumnKeys && ( + + )} +
+ ) + + const content = ( +
+ + {filteredColumns.map((column) => ( + handleCheckChange(e, column)} + > + {column.name} + + ))} + + {foot &&
{foot}
} +
+ ) + + return ( + + + {t('component.columnsSelector.trigger_text')} + + + ) +} diff --git a/ui-ori/lib/components/CopyLink/index.module.less b/ui-ori/lib/components/CopyLink/index.module.less new file mode 100644 index 0000000000..4f3c5735bd --- /dev/null +++ b/ui-ori/lib/components/CopyLink/index.module.less @@ -0,0 +1,5 @@ +@import '~antd/es/style/themes/default.less'; + +.copiedText { + color: @success-color; +} diff --git a/ui-ori/lib/components/CopyLink/index.tsx b/ui-ori/lib/components/CopyLink/index.tsx new file mode 100644 index 0000000000..c17fb4d21e --- /dev/null +++ b/ui-ori/lib/components/CopyLink/index.tsx @@ -0,0 +1,77 @@ +import React, { useState } from 'react' +import { CopyToClipboard } from 'react-copy-to-clipboard' +import { useTranslation } from 'react-i18next' +import { useTimeoutFn } from 'react-use' +import { CheckOutlined, CopyOutlined } from '@ant-design/icons' +import { addTranslationResource } from '@lib/utils/i18n' + +import styles from './index.module.less' + +type DisplayVariant = 'default' | 'original_sql' | 'formatted_sql' +const transKeys: { [K in DisplayVariant]: string } = { + default: 'copy', + original_sql: 'copyOriginal', + formatted_sql: 'copyFormatted', +} + +export interface ICopyLinkProps { + data?: string + displayVariant?: DisplayVariant +} + +const translations = { + en: { + copy: 'Copy', + copyOriginal: 'Copy Original', + copyFormatted: 'Copy Formatted', + success: 'Copied', + }, + zh: { + copy: '复制', + copyOriginal: '复制原始 SQL', + copyFormatted: '复制格式化 SQL', + success: '已复制', + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + copyLink: translations[key], + }, + }) +} + +function CopyLink({ data, displayVariant = 'default' }: ICopyLinkProps) { + const { t } = useTranslation() + const [showCopied, setShowCopied] = useState(false) + + const reset = useTimeoutFn(() => { + setShowCopied(false) + }, 1500)[2] + + const handleCopy = () => { + setShowCopied(true) + reset() + } + + return ( + + {!showCopied && ( + + + {t(`component.copyLink.${transKeys[displayVariant]}`)}{' '} + + + + )} + {showCopied && ( + + {t('component.copyLink.success')} + + )} + + ) +} + +export default React.memo(CopyLink) diff --git a/ui-ori/lib/components/DatePicker/index.tsx b/ui-ori/lib/components/DatePicker/index.tsx new file mode 100644 index 0000000000..63ff7b1b5c --- /dev/null +++ b/ui-ori/lib/components/DatePicker/index.tsx @@ -0,0 +1,8 @@ +import { Dayjs } from 'dayjs' +import dayjsGenerateConfig from 'rc-picker/lib/generate/dayjs' +import generatePicker from 'antd/es/date-picker/generatePicker' +import 'antd/es/date-picker/style/index' + +const DatePicker = generatePicker(dayjsGenerateConfig) + +export default DatePicker diff --git a/ui-ori/lib/components/DateTime/Calendar.tsx b/ui-ori/lib/components/DateTime/Calendar.tsx new file mode 100644 index 0000000000..542f89684a --- /dev/null +++ b/ui-ori/lib/components/DateTime/Calendar.tsx @@ -0,0 +1,72 @@ +import React from 'react' +import { Tooltip } from 'antd' +import dayjs from 'dayjs' +import { useTranslation } from 'react-i18next' +import { addTranslationResource } from '@lib/utils/i18n' +import i18next from 'i18next' +import { format as longFormat } from './Long' +import { IDateTimeProps } from '.' + +import calendar from './calendarPlugin' +import weekOfYear from 'dayjs/plugin/weekOfYear' +import localizedFormat from 'dayjs/plugin/localizedFormat' +import timezone from 'dayjs/plugin/timezone' + +dayjs.extend(calendar) +dayjs.extend(weekOfYear) +dayjs.extend(localizedFormat) +dayjs.extend(timezone) + +const translations = { + en: { + sameDay: '[Today at] h:mm A (z)', + sameWeek: 'dddd h:mm A (z)', + nextDay: '[Tomorrow] h:mm A (z)', + nextWeek: '[Next] dddd h:mm A (z)', + lastDay: '[Yesterday] h:mm A (z)', + lastWeek: '[Last] dddd h:mm A (z)', + sameElse: 'lll (z)', + }, + zh: { + sameDay: '[今天] HH:mm (z)', + sameWeek: 'dddd HH:mm (z)', + nextDay: '[明天] HH:mm (z)', + nextWeek: '[下]dddd HH:mm (z)', + lastDay: '[昨天] HH:mm (z)', + lastWeek: '[上]dddd HH:mm (z)', + sameElse: 'lll (z)', + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + dateTime: { + calendar: translations[key], + }, + }, + }) +} + +function Calendar({ unixTimestampMs, ...rest }: IDateTimeProps) { + useTranslation() // Re-render when language changes + return ( + + {format(unixTimestampMs)} + + ) +} + +export function format(unixTimestampMs: number) { + return dayjs(unixTimestampMs).calendar(undefined, { + sameDay: i18next.t('component.dateTime.calendar.sameDay'), + sameWeek: i18next.t('component.dateTime.calendar.sameWeek'), + nextDay: i18next.t('component.dateTime.calendar.nextDay'), + nextWeek: i18next.t('component.dateTime.calendar.nextWeek'), + lastDay: i18next.t('component.dateTime.calendar.lastDay'), + lastWeek: i18next.t('component.dateTime.calendar.lastWeek'), + sameElse: i18next.t('component.dateTime.calendar.sameElse'), + }) +} + +export default React.memo(Calendar) diff --git a/ui-ori/lib/components/DateTime/Long.tsx b/ui-ori/lib/components/DateTime/Long.tsx new file mode 100644 index 0000000000..1682aa1f0f --- /dev/null +++ b/ui-ori/lib/components/DateTime/Long.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { Tooltip } from 'antd' +import dayjs from 'dayjs' +import { useTranslation } from 'react-i18next' +import { IDateTimeProps } from '.' + +import localizedFormat from 'dayjs/plugin/localizedFormat' + +dayjs.extend(localizedFormat) + +function Long({ unixTimestampMs, ...rest }: IDateTimeProps) { + useTranslation() // Re-render when language changes + return ( + + {format(unixTimestampMs)} + + ) +} + +export function format(unixTimestampMs: number) { + return dayjs(unixTimestampMs).format('ll LTS (z)') +} + +export default React.memo(Long) diff --git a/ui-ori/lib/components/DateTime/calendarPlugin.ts b/ui-ori/lib/components/DateTime/calendarPlugin.ts new file mode 100644 index 0000000000..e69f3ef824 --- /dev/null +++ b/ui-ori/lib/components/DateTime/calendarPlugin.ts @@ -0,0 +1,68 @@ +// Copyright 2021 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Inspired by: +// https://github.com/iamkun/dayjs/issues/1226#issuecomment-768796249 +// https://github.com/iamkun/dayjs/blob/dev/src/plugin/calendar/index.js + +declare module 'dayjs' { + interface Dayjs { + calendar(referenceTime?: ConfigType, formats?: object): string + } +} + +export default (o, c, d) => { + const LT = 'h:mm A' + const L = 'MM/DD/YYYY' + const calendarFormat = { + lastDay: `[Yesterday at] ${LT}`, + sameDay: `[Today at] ${LT}`, + nextDay: `[Tomorrow at] ${LT}`, + sameWeek: `dddd [at] ${LT}`, + nextWeek: `[Next] dddd [at] ${LT}`, + lastWeek: `[Last] dddd [at] ${LT}`, + sameElse: L, + } + const proto = c.prototype + proto.calendar = function (referenceTime, formats) { + const format = formats || this.$locale().calendar || calendarFormat + const referenceStartOfDay = d(referenceTime || undefined).startOf('d') + const diff = this.diff(referenceStartOfDay, 'd', true) + const weekDiff = this.week() - referenceStartOfDay.week() + const sameElse = 'sameElse' + /* eslint-disable no-nested-ternary */ + const retVal = + weekDiff < -1 || weekDiff > 1 + ? sameElse + : diff < -1 + ? weekDiff === 0 + ? 'sameWeek' + : 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : weekDiff === 0 + ? 'sameWeek' + : 'nextWeek' + /* eslint-enable no-nested-ternary */ + const currentFormat = format[retVal] || calendarFormat[retVal] + if (typeof currentFormat === 'function') { + return currentFormat.call(this, d()) + } + return this.format(currentFormat) + } +} diff --git a/ui-ori/lib/components/DateTime/index.tsx b/ui-ori/lib/components/DateTime/index.tsx new file mode 100644 index 0000000000..c350cd1c3a --- /dev/null +++ b/ui-ori/lib/components/DateTime/index.tsx @@ -0,0 +1,8 @@ +import Calendar from './Calendar' +import Long from './Long' + +export interface IDateTimeProps { + unixTimestampMs: number +} + +export default { Calendar, Long } diff --git a/ui-ori/lib/components/Descriptions/index.module.less b/ui-ori/lib/components/Descriptions/index.module.less new file mode 100644 index 0000000000..e24ef434e0 --- /dev/null +++ b/ui-ori/lib/components/Descriptions/index.module.less @@ -0,0 +1,52 @@ +@import '~antd/es/style/themes/default.less'; + +.descriptions { + :global { + .ant-descriptions-row { + line-height: 1; + } + + .ant-descriptions-row > th { + padding: 0; + padding-bottom: @padding-xs; + } + + .ant-descriptions-row > td { + padding: 0; + padding-bottom: @padding-md; + } + + .ant-descriptions-item-label { + color: @text-color-secondary; + } + + .ant-descriptions-item-content { + color: @text-color; + } + } +} + +.item { + // nothing for now +} + +.itemSingleline { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + > span { + display: inline; + } + pre { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} + +.itemMultiline { + overflow-wrap: break-word; + white-space: normal; + text-overflow: inherit; + overflow: auto; +} diff --git a/ui-ori/lib/components/Descriptions/index.tsx b/ui-ori/lib/components/Descriptions/index.tsx new file mode 100644 index 0000000000..17c95e2947 --- /dev/null +++ b/ui-ori/lib/components/Descriptions/index.tsx @@ -0,0 +1,67 @@ +import React from 'react' +import { Descriptions as AntDescriptions } from 'antd' +import type { DescriptionsItemProps } from 'antd/es/descriptions/Item' +import cx from 'classnames' + +import styles from './index.module.less' + +export interface IDescriptionsProps { + className?: string + children?: + | (React.ReactElement | null | undefined)[] + | React.ReactElement + column?: number +} + +export interface IDescriptionsItemProps extends DescriptionsItemProps { + className?: string + children: React.ReactNode + multiline?: boolean +} + +// FIXME: This logic duplicates to +function mapItem(item: React.ReactElement) { + const { props } = item + const { multiline, className, children, ...restProps } = props + const c = cx(className, styles.item, { + [styles.itemMultiline]: multiline, + [styles.itemSingleline]: !multiline, + }) + return ( + + {children} + + ) +} + +function Descriptions({ + className, + children, + column, + ...restProps +}: IDescriptionsProps) { + const c = cx(className, styles.descriptions) + let realChildren + if (children) { + if (Array.isArray(children)) { + realChildren = children.filter((v) => v != null).map((v) => mapItem(v!)) + } else { + realChildren = mapItem(children) + } + } + return ( + + {realChildren} + + ) +} + +Descriptions.Item = AntDescriptions.Item as React.FC + +export default Descriptions diff --git a/ui-ori/lib/components/ErrorBar/index.tsx b/ui-ori/lib/components/ErrorBar/index.tsx new file mode 100644 index 0000000000..8ff81e1b2e --- /dev/null +++ b/ui-ori/lib/components/ErrorBar/index.tsx @@ -0,0 +1,39 @@ +import { Alert } from 'antd' +import _ from 'lodash' +import React, { useMemo } from 'react' + +export interface IErrorBarProps { + errors: any[] +} + +export default function ErrorBar({ errors }: IErrorBarProps) { + // show at most 3 kinds of errors + const errorMsgs = useMemo( + () => + _.uniq(_.map(errors, (err) => err?.message || '')) + .filter((msg) => msg !== '') + .slice(0, 3), + [errors] + ) + + if (errorMsgs.length === 0) { + return null + } else if (errorMsgs.length === 1) { + return + } else { + return ( + + {errorMsgs.map((msg, idx) => ( +
  • {msg}
  • + ))} + + } + /> + ) + } +} diff --git a/ui-ori/lib/components/Expand/index.tsx b/ui-ori/lib/components/Expand/index.tsx new file mode 100644 index 0000000000..53c2564a87 --- /dev/null +++ b/ui-ori/lib/components/Expand/index.tsx @@ -0,0 +1,53 @@ +import React from 'react' +import { useTranslation } from 'react-i18next' +import { addTranslationResource } from '@lib/utils/i18n' + +export interface IExpandProps { + expanded?: boolean + collapsedContent?: React.ReactNode + children: React.ReactNode +} + +function Expand({ collapsedContent, children, expanded }: IExpandProps) { + // FIXME: Animations + return
    {expanded ? children : collapsedContent ?? children}
    +} + +const translations = { + en: { + expandText: 'Expand', + collapseText: 'Collapse', + }, + zh: { + expandText: '展开', + collapseText: '收起', + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + expandLink: translations[key], + }, + }) +} + +export interface IExpandLinkProps + extends React.AnchorHTMLAttributes { + expanded?: boolean +} + +function Link({ expanded, ...restProps }: IExpandLinkProps) { + const { t } = useTranslation() + return ( + + {expanded + ? t('component.expandLink.collapseText') + : t('component.expandLink.expandText')} + + ) +} + +Expand.Link = Link + +export default Expand diff --git a/ui-ori/lib/components/Head/index.module.less b/ui-ori/lib/components/Head/index.module.less new file mode 100644 index 0000000000..dfb3a02860 --- /dev/null +++ b/ui-ori/lib/components/Head/index.module.less @@ -0,0 +1,44 @@ +@import '~antd/es/style/themes/default.less'; + +.headContainer { + // &:before, + // &:after { + // // Handle margin collapse + // content: ' '; + // display: table; + // } +} + +.headInner { + margin-top: @padding-page; +} + +.headTitleSection { + margin: @padding-lg @padding-page; + display: flex; + flex-direction: row; + align-items: center; +} + +.headBack { + margin-right: @padding-lg; + flex-shrink: 0; +} + +.headTitle { + color: @heading-color; + font-size: @heading-4-size; + line-height: 32px; + flex-grow: 1; + margin-right: @padding-lg; +} + +.headContent { + margin: @padding-lg @padding-page; +} + +.headFooter { + margin-top: @padding-lg; + border-bottom: 1px solid @border-color-base; + padding: 0 @padding-page; +} diff --git a/ui-ori/lib/components/Head/index.tsx b/ui-ori/lib/components/Head/index.tsx new file mode 100644 index 0000000000..6079e9bf06 --- /dev/null +++ b/ui-ori/lib/components/Head/index.tsx @@ -0,0 +1,40 @@ +import React, { ReactNode } from 'react' +import cx from 'classnames' +import styles from './index.module.less' + +export interface IHeadProps { + title: string + titleExtra?: ReactNode + back?: ReactNode + footer?: ReactNode + className?: string + children?: ReactNode +} + +function Head({ + title, + titleExtra, + back, + footer, + className, + children, + ...rest +}: IHeadProps) { + return ( +
    +
    + {(title || titleExtra || back) && ( +
    + {back &&
    {back}
    } + {title &&
    {title}
    } + {titleExtra &&
    {titleExtra}
    } +
    + )} + {children &&
    {children}
    } + {footer &&
    {footer}
    } +
    +
    + ) +} + +export default Head diff --git a/ui-ori/lib/components/HighlightSQL/index.tsx b/ui-ori/lib/components/HighlightSQL/index.tsx new file mode 100644 index 0000000000..7e6b2b5e2a --- /dev/null +++ b/ui-ori/lib/components/HighlightSQL/index.tsx @@ -0,0 +1,56 @@ +import React, { useMemo } from 'react' + +import { Light as SyntaxHighlighter } from 'react-syntax-highlighter' +import sql from 'react-syntax-highlighter/dist/esm/languages/hljs/sql' +import lightTheme from 'react-syntax-highlighter/dist/esm/styles/hljs/atom-one-light' +import darkTheme from 'react-syntax-highlighter/dist/esm/styles/hljs/atom-one-dark' +import Pre from '../Pre' +import formatSql from '@lib/utils/sqlFormatter' +import moize from 'moize' + +SyntaxHighlighter.registerLanguage('sql', sql) + +interface Props { + sql: string + compact?: boolean + theme?: 'dark' | 'light' +} + +function simpleSqlMinify(str) { + return str + .replace(/\s{1,}/g, ' ') + .replace(/\{\s{1,}/g, '{') + .replace(/\}\s{1,}/g, '}') + .replace(/;\s{1,}/g, ';') + .replace(/\/\*\s{1,}/g, '/*') + .replace(/\*\/\s{1,}/g, '*/') +} + +function HighlightSQL({ sql, compact, theme = 'light' }: Props) { + const formattedSql = useMemo(() => { + let f = formatSql(sql) + if (compact) { + f = simpleSqlMinify(f) + } + return f + }, [sql, compact]) + + return ( + + {formattedSql} + + ) +} + +export default moize.react(HighlightSQL, { + maxSize: 1000, +}) diff --git a/ui-ori/lib/components/InstanceSelect/DropOverlay.tsx b/ui-ori/lib/components/InstanceSelect/DropOverlay.tsx new file mode 100644 index 0000000000..68805b30f7 --- /dev/null +++ b/ui-ori/lib/components/InstanceSelect/DropOverlay.tsx @@ -0,0 +1,67 @@ +import React, { useState, useMemo } from 'react' +import { AntCheckboxGroupHeader } from '../' +import { IColumn, ISelection } from 'office-ui-fabric-react/lib/DetailsList' +import { + IInstanceTableItem, + filterInstanceTable, +} from '@lib/utils/instanceTable' +import { useTranslation } from 'react-i18next' +import TableWithFilter, { ITableWithFilterRefProps } from './TableWithFilter' + +const groupProps = { + onRenderHeader: (props) => , +} + +export interface IDropOverlayProps { + selection: ISelection + columns: IColumn[] + items: IInstanceTableItem[] + filterTableRef?: React.Ref + containerProps?: React.HTMLAttributes +} + +function DropOverlay({ + selection, + columns, + items, + filterTableRef, + containerProps, +}: IDropOverlayProps) { + const { t } = useTranslation() + const [keyword, setKeyword] = useState('') + + const [finalItems, finalGroups] = useMemo(() => { + return filterInstanceTable(items, keyword) + }, [items, keyword]) + + const { style: containerStyle, ...restContainerProps } = containerProps ?? {} + const finalContainerProps = useMemo(() => { + const style: React.CSSProperties = { + fontSize: '0.8rem', + ...containerStyle, + } + return { + style, + ...restContainerProps, + } as React.HTMLAttributes & Record + }, [containerStyle, restContainerProps]) + + return ( + + ) +} + +export default React.memo(DropOverlay) diff --git a/ui-ori/lib/components/InstanceSelect/TableWithFilter.module.less b/ui-ori/lib/components/InstanceSelect/TableWithFilter.module.less new file mode 100644 index 0000000000..7f87a1f039 --- /dev/null +++ b/ui-ori/lib/components/InstanceSelect/TableWithFilter.module.less @@ -0,0 +1,13 @@ +.tableWithFilterContainer { + :global { + .ms-DetailsHeader { + padding-top: 0; + } + + .ant-input-affix-wrapper { + border: 0; + box-shadow: none; + outline: 0; + } + } +} diff --git a/ui-ori/lib/components/InstanceSelect/TableWithFilter.tsx b/ui-ori/lib/components/InstanceSelect/TableWithFilter.tsx new file mode 100644 index 0000000000..3e8cddedeb --- /dev/null +++ b/ui-ori/lib/components/InstanceSelect/TableWithFilter.tsx @@ -0,0 +1,113 @@ +import React, { useMemo, useCallback, useRef } from 'react' +import cx from 'classnames' +import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' +import { MarqueeSelection } from 'office-ui-fabric-react/lib/MarqueeSelection' +import { SelectionMode } from 'office-ui-fabric-react/lib/Selection' +import { useSize } from 'ahooks' +import { + DetailsListLayoutMode, + ISelection, + IDetailsListProps, +} from 'office-ui-fabric-react/lib/DetailsList' +import { Input } from 'antd' +import { MemoDetailsList } from '../' + +import styles from './TableWithFilter.module.less' + +export interface ITableWithFilterProps extends IDetailsListProps { + selection: ISelection + filterPlaceholder?: string + filter?: string + onFilterChange?: (value: string) => void + tableMaxHeight?: number + tableWidth?: number + containerProps?: React.HTMLAttributes +} + +export interface ITableWithFilterRefProps { + focusFilterInput: () => void +} + +function TableWithFilter( + { + selection, + filterPlaceholder, + filter, + onFilterChange, + tableMaxHeight, + tableWidth, + containerProps, + ...restProps + }: ITableWithFilterProps, + ref: React.Ref +) { + const handleInputChange = useCallback( + (e: React.ChangeEvent) => { + onFilterChange?.(e.target.value) + }, + [onFilterChange] + ) + + const inputRef = useRef(null) + + React.useImperativeHandle(ref, () => ({ + focusFilterInput() { + inputRef.current?.focus() + }, + })) + + // FIXME: We should put Input inside ScrollablePane after https://github.com/microsoft/fluentui/issues/13557 is resolved + + const containerRef = useRef(null) + const containerSize = useSize(containerRef) + + const paneStyle = useMemo( + () => + ({ + position: 'relative', + height: containerSize.height, + maxHeight: tableMaxHeight ?? 400, + width: tableWidth ?? 400, + } as React.CSSProperties), + [containerSize.height, tableMaxHeight, tableWidth] + ) + + const { + className: containerClassName, + style: containerStyle, + ...containerRestProps + } = containerProps ?? {} + + return ( +
    + + +
    + + + +
    +
    +
    + ) +} + +export default React.memo(React.forwardRef(TableWithFilter)) diff --git a/ui-ori/lib/components/InstanceSelect/ValueDisplay.tsx b/ui-ori/lib/components/InstanceSelect/ValueDisplay.tsx new file mode 100644 index 0000000000..50639166ad --- /dev/null +++ b/ui-ori/lib/components/InstanceSelect/ValueDisplay.tsx @@ -0,0 +1,81 @@ +import React, { useMemo } from 'react' +import { + IInstanceTableItem, + InstanceKind, + InstanceKindName, +} from '@lib/utils/instanceTable' +import { useTranslation } from 'react-i18next' + +interface InstanceStat { + all: number + selected: number +} + +function newInstanceStat(): InstanceStat { + return { + all: 0, + selected: 0, + } +} + +export interface IValueDisplayProps { + items: IInstanceTableItem[] + selectedKeys: string[] +} + +export default function ValueDisplay({ + items, + selectedKeys, +}: IValueDisplayProps) { + const { t } = useTranslation() + + const text = useMemo(() => { + const selectedKeysMap = {} + selectedKeys.forEach((key) => (selectedKeysMap[key] = true)) + const instanceStats: { [key in InstanceKind]: InstanceStat } = { + pd: newInstanceStat(), + tidb: newInstanceStat(), + tikv: newInstanceStat(), + tiflash: newInstanceStat(), + } + items.forEach((item) => { + instanceStats[item.instanceKind].all++ + if (selectedKeysMap[item.key]) { + instanceStats[item.instanceKind].selected++ + } + }) + + let hasUnselected = false + const p: string[] = [] + for (const ik in instanceStats) { + const stats = instanceStats[ik] as InstanceStat + if (stats.selected !== stats.all) { + hasUnselected = true + } + if (stats.selected > 0) { + if (stats.all === stats.selected) { + p.push( + t('component.instanceSelect.selected.partial.all', { + component: InstanceKindName[ik], + }) + ) + } else { + p.push( + t('component.instanceSelect.selected.partial.n', { + n: stats.selected, + component: InstanceKindName[ik], + }) + ) + } + } + } + + if (!hasUnselected) { + return t('component.instanceSelect.selected.all') + } + + return p.join(', ') + }, [t, items, selectedKeys]) + + return <>{text} +} diff --git a/ui-ori/lib/components/InstanceSelect/index.stories.tsx b/ui-ori/lib/components/InstanceSelect/index.stories.tsx new file mode 100644 index 0000000000..9495a8b375 --- /dev/null +++ b/ui-ori/lib/components/InstanceSelect/index.stories.tsx @@ -0,0 +1,39 @@ +import React, { useState, useRef } from 'react' +import { Pre } from '@lib/components' + +import InstanceSelect, { IInstanceSelectRefProps } from '.' + +export default { + title: 'Select/Instance Select', +} + +const InstanceSelectRegion = () => { + const [instanceSelectValue, setInstanceSelectValue] = useState([]) + const s = useRef(null) + + return ( + <> + +
    +
    Instance select value = {JSON.stringify(instanceSelectValue)}
    +
    +          Instance select value instances ={' '}
    +          {JSON.stringify(
    +            s.current && s.current.getInstanceByKeys(instanceSelectValue)
    +          )}
    +        
    +
    + + ) +} + +export const uncontrolled = () => ( + +) + +export const controlled = () => diff --git a/ui-ori/lib/components/InstanceSelect/index.tsx b/ui-ori/lib/components/InstanceSelect/index.tsx new file mode 100644 index 0000000000..2783b2e83c --- /dev/null +++ b/ui-ori/lib/components/InstanceSelect/index.tsx @@ -0,0 +1,265 @@ +import React, { useCallback, useRef, useMemo, useEffect } from 'react' +import { useTranslation } from 'react-i18next' +import { useShallowCompareEffect } from 'react-use' +import { Tooltip } from 'antd' +import { + IBaseSelectProps, + BaseSelect, + InstanceStatusBadge, + TextWrap, +} from '../' +import { useClientRequest } from '@lib/utils/useClientRequest' +import client from '@lib/client' +import { addTranslationResource } from '@lib/utils/i18n' +import { usePersistFn, useControllableValue } from 'ahooks' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import { + buildInstanceTable, + IInstanceTableItem, +} from '@lib/utils/instanceTable' +import SelectionWithFilter from '@lib/utils/selectionWithFilter' + +import DropOverlay from './DropOverlay' +import ValueDisplay from './ValueDisplay' +import { ITableWithFilterRefProps } from './TableWithFilter' + +export interface IInstanceSelectProps + extends Omit, 'dropdownRender' | 'valueRender'> { + onChange?: (value: string[]) => void + enableTiFlash?: boolean + defaultSelectAll?: boolean + dropContainerProps?: React.HTMLAttributes +} + +export interface IInstanceSelectRefProps { + getInstanceByKeys: (keys: string[]) => IInstanceTableItem[] + getInstanceByKey: (key: string) => IInstanceTableItem +} + +const translations = { + en: { + placeholder: 'Select Instances', + filterPlaceholder: 'Filter instance', + selected: { + all: 'All Instances', + partial: { + n: '{{n}} {{component}}', + all: 'All {{component}}', + }, + }, + columns: { + key: 'Instance', + status: 'Status', + }, + }, + zh: { + placeholder: '选择实例', + filterPlaceholder: '过滤实例', + selected: { + all: '所有实例', + partial: { + n: '{{n}} {{component}}', + all: '所有 {{component}}', + }, + }, + columns: { + key: '实例', + status: '状态', + }, + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + instanceSelect: translations[key], + }, + }) +} + +function InstanceSelect( + props: IInstanceSelectProps, + ref: React.Ref +) { + const [internalVal, setInternalVal] = useControllableValue(props) + const setInternalValPersist = usePersistFn(setInternalVal) + const { + enableTiFlash, + defaultSelectAll, + dropContainerProps, + value, // only to exclude from restProps + onChange, // only to exclude from restProps + ...restProps + } = props + + const { t } = useTranslation() + + const { data: dataTiDB, isLoading: loadingTiDB } = useClientRequest( + (reqConfig) => client.getInstance().getTiDBTopology(reqConfig) + ) + const { data: dataStores, isLoading: loadingStores } = useClientRequest( + (reqConfig) => client.getInstance().getStoreTopology(reqConfig) + ) + const { data: dataPD, isLoading: loadingPD } = useClientRequest((reqConfig) => + client.getInstance().getPDTopology(reqConfig) + ) + + const columns: IColumn[] = useMemo( + () => [ + { + name: t('component.instanceSelect.columns.key'), + key: 'key', + minWidth: 150, + maxWidth: 150, + onRender: (node: IInstanceTableItem) => { + return ( + + + {node.key} + + + ) + }, + }, + { + name: t('component.instanceSelect.columns.status'), + key: 'status', + minWidth: 100, + maxWidth: 100, + onRender: (node: IInstanceTableItem) => { + return ( + + + + ) + }, + }, + ], + [t] + ) + + const [tableItems] = useMemo(() => { + if (loadingTiDB || loadingStores || loadingPD) { + return [[], []] + } + return buildInstanceTable({ + dataPD, + dataTiDB, + dataTiKV: dataStores?.tikv, + dataTiFlash: dataStores?.tiflash, + includeTiFlash: enableTiFlash, + }) + }, [ + enableTiFlash, + dataTiDB, + dataStores, + dataPD, + loadingTiDB, + loadingStores, + loadingPD, + ]) + + const selection = useRef( + new SelectionWithFilter({ + onSelectionChanged: () => { + const s = selection.current.getAllSelection() as IInstanceTableItem[] + const keys = s.map((v) => v.key) + setInternalValPersist([...keys]) + }, + }) + ) + + useShallowCompareEffect(() => { + selection.current?.resetAllSelection(internalVal ?? []) + }, [internalVal]) + + const dataHasLoaded = useRef(false) + + useEffect(() => { + // When data is loaded for the first time, we need to: + // - Select all if `defaultSelectAll` is set and value is not given. + // - Update selection according to value + if (dataHasLoaded.current) { + return + } + if (tableItems.length === 0) { + return + } + const sel = selection.current + sel.setChangeEvents(false) + sel.setAllItems(tableItems) + if (internalVal && internalVal.length > 0) { + sel.resetAllSelection(internalVal) + } else if (defaultSelectAll) { + sel.setAllSelectionSelected(true) + } + sel.setChangeEvents(true) + dataHasLoaded.current = true + // [defaultSelectAll, internalVal] is not needed + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [tableItems]) + + const getInstanceByKeys = usePersistFn((keys: string[]) => { + const keyToItemMap = {} + for (const item of tableItems) { + keyToItemMap[item.key] = item + } + return keys.map((key) => keyToItemMap[key]) + }) + + const getInstanceByKey = usePersistFn((key: string) => { + return getInstanceByKeys([key])[0] + }) + + React.useImperativeHandle(ref, () => ({ + getInstanceByKey, + getInstanceByKeys, + })) + + const renderValue = useCallback( + (selectedKeys) => { + if ( + tableItems.length === 0 || + !selectedKeys || + selectedKeys.length === 0 + ) { + return null + } + return + }, + [tableItems] + ) + + const filterTableRef = useRef(null) + + const renderDropdown = useCallback( + () => ( + + ), + [columns, tableItems, dropContainerProps] + ) + + const handleOpened = useCallback(() => { + filterTableRef.current?.focusFilterInput() + }, []) + + return ( + + ) +} + +export default React.forwardRef(InstanceSelect) diff --git a/ui-ori/lib/components/InstanceStatusBadge/index.tsx b/ui-ori/lib/components/InstanceStatusBadge/index.tsx new file mode 100644 index 0000000000..06cbde9544 --- /dev/null +++ b/ui-ori/lib/components/InstanceStatusBadge/index.tsx @@ -0,0 +1,90 @@ +import React from 'react' +import { useTranslation } from 'react-i18next' +import { InstanceStatus } from '@lib/utils/instanceTable' +import { Badge } from 'antd' +import { addTranslationResource } from '@lib/utils/i18n' + +const translations = { + en: { + status: { + up: 'Up', + down: 'Down', + tombstone: 'Tombstone', + offline: 'Leaving', + unknown: 'Unknown', + unreachable: 'Unreachable', + }, + }, + zh: { + status: { + up: '在线', + down: '离线', + tombstone: '已缩容下线', + offline: '下线中', + unknown: '未知', + unreachable: '无法访问', + }, + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + instanceStatusBadge: translations[key], + }, + }) +} + +export interface IInstanceStatusBadgeProps { + status?: number +} + +function InstanceStatusBadge({ status }: IInstanceStatusBadgeProps) { + const { t } = useTranslation() + switch (status) { + case InstanceStatus.Down: + return ( + + ) + case InstanceStatus.Unreachable: + return ( + + ) + case InstanceStatus.Up: + return ( + + ) + case InstanceStatus.Tombstone: + return ( + + ) + case InstanceStatus.Offline: + return ( + + ) + default: + return ( + + ) + } +} + +export default React.memo(InstanceStatusBadge) diff --git a/ui-ori/lib/components/LanguageDropdown/index.tsx b/ui-ori/lib/components/LanguageDropdown/index.tsx new file mode 100644 index 0000000000..72686651b1 --- /dev/null +++ b/ui-ori/lib/components/LanguageDropdown/index.tsx @@ -0,0 +1,30 @@ +import { Dropdown, Menu } from 'antd' +import _ from 'lodash' +import React, { ReactNode } from 'react' +import { useTranslation } from 'react-i18next' + +import { ALL_LANGUAGES } from '@lib/utils/i18n' + +function LanguageDropdown({ children }: { children: ReactNode }) { + const { i18n } = useTranslation() + + function handleClick(e) { + i18n.changeLanguage(e.key) + } + + const menu = ( + + {_.map(ALL_LANGUAGES, (name, key) => { + return {name} + })} + + ) + + return ( + + {children} + + ) +} + +export default LanguageDropdown diff --git a/ui-ori/lib/components/MetricChart/index.stories.tsx b/ui-ori/lib/components/MetricChart/index.stories.tsx new file mode 100644 index 0000000000..54422cc1c4 --- /dev/null +++ b/ui-ori/lib/components/MetricChart/index.stories.tsx @@ -0,0 +1,45 @@ +import React from 'react' +import MetricChart from '.' + +export default { + title: 'MetricChart', +} + +export const QPS = () => ( + +) + +export const Latency = () => ( + +) diff --git a/ui-ori/lib/components/MetricChart/index.tsx b/ui-ori/lib/components/MetricChart/index.tsx new file mode 100644 index 0000000000..cf0fba70ea --- /dev/null +++ b/ui-ori/lib/components/MetricChart/index.tsx @@ -0,0 +1,304 @@ +import 'echarts/lib/chart/bar' +import 'echarts/lib/chart/line' +import 'echarts/lib/component/grid' +import 'echarts/lib/component/legend' +import 'echarts/lib/component/tooltip' + +import { Space } from 'antd' +import dayjs from 'dayjs' +import ReactEchartsCore from 'echarts-for-react/lib/core' +import echarts from 'echarts/lib/echarts' +import _ from 'lodash' +import React, { useMemo, useRef } from 'react' +import { useInterval } from 'react-use' +import format from 'string-template' +import { LoadingOutlined, ReloadOutlined } from '@ant-design/icons' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import client from '@lib/client' +import { AnimatedSkeleton, Card } from '@lib/components' +import { useBatchClientRequest } from '@lib/utils/useClientRequest' +import ErrorBar from '../ErrorBar' +import { addTranslationResource } from '@lib/utils/i18n' +import { Link } from 'react-router-dom' +import { useTranslation } from 'react-i18next' + +export type GraphType = 'bar' | 'line' + +const translations = { + en: { + error: { + api: { + metrics: { + prom_not_found: + 'Prometheus is not deployed in the cluster. Metrics are unavailable.', + }, + }, + }, + components: { + metricChart: { + changePromButton: 'Change Prometheus Source', + }, + }, + }, + zh: { + error: { + api: { + metrics: { + prom_not_found: '集群中未部署 Prometheus 组件,监控不可用。', + }, + }, + }, + components: { + metricChart: { + changePromButton: '修改 Prometheus 源', + }, + }, + }, +} + +for (const key in translations) { + addTranslationResource(key, translations[key]) +} + +export interface ISeries { + query: string + name: string +} + +export interface IMetricChartProps { + title: React.ReactNode + + series: ISeries[] + // stepSec: number + // beginTimeSec: number + // endTimeSec: number + unit: string + type: GraphType +} + +const HEIGHT = 250 + +function getSeriesProps(type: GraphType) { + if (type === 'bar') { + return { + stack: 'bar_stack', + } + } else if (type === 'line') { + return { + showSymbol: false, + } + } +} + +// FIXME +function getTimeParams() { + return { + beginTimeSec: Math.floor((Date.now() - 60 * 60 * 1000) / 1000), + endTimeSec: Math.floor(Date.now() / 1000), + } +} + +export default function MetricChart({ + title, + series, + // stepSec, + // beginTimeSec, + // endTimeSec, + unit, + type, +}: IMetricChartProps) { + const timeParams = useRef(getTimeParams()) + const { t } = useTranslation() + + const { isLoading, data, error, sendRequest } = useBatchClientRequest( + series.map( + (s) => (reqConfig) => + client + .getInstance() + .metricsQueryGet( + timeParams.current.endTimeSec, + s.query, + timeParams.current.beginTimeSec, + 30, + reqConfig + ) + ) + ) + + const update = () => { + timeParams.current = getTimeParams() + sendRequest() + } + + useInterval(update, 60 * 1000) + + const valueFormatter = useMemo(() => getValueFormat(unit), [unit]) + + const opt = useMemo(() => { + const s: any[] = [] + data.forEach((dataBySeries, seriesIdx) => { + if (!dataBySeries) { + return + } + if (dataBySeries.status !== 'success') { + return + } + const r = (dataBySeries.data as any)?.result + if (!r) { + return + } + r.forEach((rData) => { + s.push({ + name: format(series[seriesIdx].name, rData.metric), + data: + rData.values.map(([ts, value]) => { + return [ts * 1000, value] + }) ?? [], + type, + ...getSeriesProps(type), + }) + }) + }) + + return { + xAxis: { + type: 'time', + splitLine: { + show: true, + }, + minorSplitLine: { + show: true, + }, + splitNumber: 10, + boundaryGap: false, + axisLabel: { + formatter: (v) => { + return dayjs(v).format('HH:mm') + }, + showMinLabel: false, + showMaxLabel: false, + }, + axisLine: { + lineStyle: { + width: 0, + }, + }, + axisTick: { + lineStyle: { + width: 0, + }, + }, + }, + legend: { + orient: 'horizontal', + x: 'left', // 'center' | 'left' | {number}, + y: 'bottom', + }, + yAxis: { + type: 'value', + axisLabel: { + formatter: (v) => { + return valueFormatter(v, 1) + }, + }, + splitLine: { + show: true, + }, + axisLine: { + lineStyle: { + width: 0, + }, + }, + axisTick: { + lineStyle: { + width: 0, + }, + }, + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'line', + animation: false, + snap: true, + }, + formatter: (series) => { + let tooltip = '' + + const title = dayjs(series[0].axisValue).format('YYYY-MM-DD HH:mm:ss') + tooltip += `
    ${title}
    ` + + series.forEach((s) => { + tooltip += `
    ${s.marker} ${s.seriesName}: ${valueFormatter( + s.value[1], + 1 + )}
    ` + }) + + return tooltip + }, + }, + animation: false, + grid: { + top: 10, + left: 10, + right: 0, + bottom: 60, + containLabel: true, + }, + series: s, + } + }, [data, valueFormatter, series, type]) + + const showSkeleton = isLoading && _.every(data, (d) => d === null) + + let inner + + if (showSkeleton) { + inner = null + } else if ( + _.every( + _.zip(data, error), + ([data, err]) => err || !data || data?.status !== 'success' + ) + ) { + inner = ( +
    + + + + {t('components.metricChart.changePromButton')} + + +
    + ) + } else { + inner = ( + + ) + } + + const subTitle = ( + + + + + {isLoading ? : null} + + ) + + return ( + + + {inner} + + + ) +} diff --git a/ui-ori/lib/components/MultiSelect/DropOverlay.tsx b/ui-ori/lib/components/MultiSelect/DropOverlay.tsx new file mode 100644 index 0000000000..49952292ba --- /dev/null +++ b/ui-ori/lib/components/MultiSelect/DropOverlay.tsx @@ -0,0 +1,63 @@ +import React, { useState, useMemo } from 'react' +import { IColumn, ISelection } from 'office-ui-fabric-react/lib/DetailsList' +import { useTranslation } from 'react-i18next' +import TableWithFilter, { + ITableWithFilterRefProps, +} from '../InstanceSelect/TableWithFilter' +import { IItem } from '.' + +const containerProps: React.HTMLAttributes = { + style: { fontSize: '0.8rem' }, +} + +export interface IDropOverlayProps { + selection: ISelection + columns: IColumn[] + items: T[] + filterFn?: (keyword: string, item: T) => boolean + filterTableRef?: React.Ref +} + +function DropOverlay({ + selection, + columns, + items, + filterFn, + filterTableRef, +}: IDropOverlayProps) { + const { t } = useTranslation() + const [keyword, setKeyword] = useState('') + + const filteredItems = useMemo(() => { + if (keyword.length === 0) { + return items + } + const kw = keyword.toLowerCase() + const filter = + filterFn == null + ? (it: T) => + it.key.toLowerCase().indexOf(kw) > -1 || + (it.label ?? '').toLowerCase().indexOf(kw) > -1 + : (it: T) => filterFn(keyword, it) + return items.filter(filter) + }, [items, keyword, filterFn]) + + return ( + + ) +} + +const typedMemo: (c: T) => T = React.memo + +export default typedMemo(DropOverlay) diff --git a/ui-ori/lib/components/MultiSelect/Plain.tsx b/ui-ori/lib/components/MultiSelect/Plain.tsx new file mode 100644 index 0000000000..ff114b1926 --- /dev/null +++ b/ui-ori/lib/components/MultiSelect/Plain.tsx @@ -0,0 +1,19 @@ +import MultiSelect, { IMultiSelectProps, IItem } from '.' +import { useMemo } from 'react' +import React from 'react' + +export interface IPlainMultiSelectProps + extends Omit, 'items' | 'filterFn'> { + items?: string[] +} + +export default function PlainMultiSelect({ + items, + ...restProps +}: IPlainMultiSelectProps) { + const objectItems = useMemo( + () => items?.map((v) => ({ key: v })) ?? [], + [items] + ) + return +} diff --git a/ui-ori/lib/components/MultiSelect/index.stories.tsx b/ui-ori/lib/components/MultiSelect/index.stories.tsx new file mode 100644 index 0000000000..f9e484936e --- /dev/null +++ b/ui-ori/lib/components/MultiSelect/index.stories.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react' +import { Pre } from '@lib/components' + +import MultiSelect from '.' + +export default { + title: 'Select/Multi Select', +} + +function genItems() { + const items: any[] = [] + const items2: any[] = [] + for (let i = 0; i < 100; i++) { + items.push({ key: String(i), label: `Item ${i}` }) + items2.push({ + key: String(i), + label: `Long Long Long Long Long Long Item ${i}`, + }) + } + return [items, items2] +} +const [items, items2] = genItems() + +const MultiSelectRegion = () => { + const [value, setValue] = useState([]) + + return ( + <> + +
    +
    Value = {JSON.stringify(value)}
    +
    + + ) +} + +export const uncontrolled = () => ( + +) + +export const controlled = () => diff --git a/ui-ori/lib/components/MultiSelect/index.tsx b/ui-ori/lib/components/MultiSelect/index.tsx new file mode 100644 index 0000000000..830f618db9 --- /dev/null +++ b/ui-ori/lib/components/MultiSelect/index.tsx @@ -0,0 +1,166 @@ +import { IBaseSelectProps, BaseSelect, TextWrap } from '..' +import { ITableWithFilterRefProps } from '../InstanceSelect/TableWithFilter' +import React, { useMemo, useRef, useCallback, useEffect } from 'react' +import { useTranslation } from 'react-i18next' +import { usePersistFn, useControllableValue } from 'ahooks' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import SelectionWithFilter from '@lib/utils/selectionWithFilter' +import { useShallowCompareEffect } from 'react-use' +import { addTranslationResource } from '@lib/utils/i18n' +import { Tooltip } from 'antd' + +import DropOverlay from './DropOverlay' +import PlainMultiSelect from './Plain' + +const translations = { + en: { + filterPlaceholder: 'Filter', + selected: '{{n}} selected', + columnTitle: 'Items', + }, + zh: { + filterPlaceholder: '过滤', + selected: '已选择 {{n}} 项', + columnTitle: '选择项', + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + multiSelect: translations[key], + }, + }) +} + +export interface IItem { + key: string + label?: string +} + +export interface IMultiSelectProps + extends Omit, 'dropdownRender' | 'valueRender'> { + items?: T[] + filterFn?: (keyword: string, item: T) => boolean + onChange?: (value: string[]) => void + selectedValueTransKey?: string + columnTitle?: string +} + +function MultiSelect(props: IMultiSelectProps) { + const [internalVal, setInternalVal] = useControllableValue(props) + const setInternalValPersist = usePersistFn(setInternalVal) + const { + items, + filterFn, + selectedValueTransKey, + columnTitle, + placeholder, + value, // only to exclude from restProps + onChange, // only to exclude from restProps + ...restProps + } = props + + const { t } = useTranslation() + + const columns: IColumn[] = useMemo( + () => [ + { + name: columnTitle ?? t('component.multiSelect.columnTitle'), + key: 'name', + minWidth: 180, + onRender: (node: T) => { + let label + if ('label' in node) { + label = node.label + } else { + label = node.key + } + return ( + + + {label} + + + ) + }, + }, + ], + [t, columnTitle] + ) + + const selection = useRef( + new SelectionWithFilter({ + onSelectionChanged: () => { + if (process.env.NODE_ENV === 'development') { + console.groupCollapsed( + 'MultiSelect onSelectionChanged', + Math.random() + ) + console.trace() + console.groupEnd() + } + const s = selection.current.getAllSelection() as T[] + const keys = s.map((v) => v.key) + setInternalValPersist(keys) + }, + }) + ) + + useShallowCompareEffect(() => { + selection.current?.resetAllSelection(internalVal ?? []) + }, [internalVal]) + + useEffect(() => { + selection.current?.setAllItems(items ?? []) + // We may receive value first and then receive items. In this case, we need to re-assign + // the selection according to value after receiving new items, so that values in newly appeared + // items can be selected. + selection.current?.resetAllSelection(internalVal ?? []) + // internalVal is not needed + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [items]) + + const filterTableRef = useRef(null) + + const renderDropdown = useCallback( + () => ( + + columns={columns} + items={items ?? []} + selection={selection.current} + filterFn={filterFn} + filterTableRef={filterTableRef} + /> + ), + [columns, items, filterFn] + ) + + const handleOpened = useCallback(() => { + filterTableRef.current?.focusFilterInput() + }, []) + + const renderValue = useCallback(() => { + if (placeholder && (!internalVal || internalVal.length === 0)) { + return null + } + return t(selectedValueTransKey ?? 'component.multiSelect.selected', { + n: internalVal?.length ?? 0, + }) + }, [t, internalVal, selectedValueTransKey, placeholder]) + + return ( + + ) +} + +MultiSelect.Plain = PlainMultiSelect + +export default MultiSelect diff --git a/ui-ori/lib/components/ParamsPageWrapper/index.tsx b/ui-ori/lib/components/ParamsPageWrapper/index.tsx new file mode 100644 index 0000000000..61f90eff2e --- /dev/null +++ b/ui-ori/lib/components/ParamsPageWrapper/index.tsx @@ -0,0 +1,14 @@ +import React, { ReactNode } from 'react' +import { useLocation } from 'react-router-dom' + +export default function ParamsPageWrapper({ + children, +}: { + children: ReactNode +}) { + const { search } = useLocation() + if (React.isValidElement(children)) { + return React.cloneElement(children, { key: search }) + } + return null +} diff --git a/ui-ori/lib/components/Pre/JetBrainsMonoNL-Regular.woff b/ui-ori/lib/components/Pre/JetBrainsMonoNL-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..0ff1529e28666913af8a924ba5be600e150f176a GIT binary patch literal 51624 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�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
    |&AabI&?z0F1a5~nf-QAO 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 { + noWrap?: boolean +} + +export default function Pre({ + noWrap, + className, + children, + ...rest +}: IPreProps) { + return ( +
    +      {children}
    +    
    + ) +} diff --git a/ui-ori/lib/components/Root/index.tsx b/ui-ori/lib/components/Root/index.tsx new file mode 100644 index 0000000000..b5aa232050 --- /dev/null +++ b/ui-ori/lib/components/Root/index.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import { + ArrowUpOutlined, + ArrowDownOutlined, + DownOutlined, + RightOutlined, +} from '@ant-design/icons' +import { createTheme, registerIcons } from 'office-ui-fabric-react/lib/Styling' +import { Customizations } from 'office-ui-fabric-react/lib/Utilities' + +import { ConfigProvider } from 'antd' +import i18next from 'i18next' +import enUS from 'antd/es/locale/en_US' +import zhCN from 'antd/es/locale/zh_CN' + +registerIcons({ + icons: { + SortUp: , + SortDown: , + chevronrightmed: , + tag: , + }, +}) + +const theme = createTheme({ + defaultFontStyle: { fontFamily: 'inherit', fontSize: '1em' }, +}) + +Customizations.applySettings({ theme }) + +export default function Root({ children }) { + return ( + + {children} + + ) +} diff --git a/ui-ori/lib/components/TextWithInfo/index.tsx b/ui-ori/lib/components/TextWithInfo/index.tsx new file mode 100644 index 0000000000..26fc392e0d --- /dev/null +++ b/ui-ori/lib/components/TextWithInfo/index.tsx @@ -0,0 +1,74 @@ +import React from 'react' +import { Tooltip, Typography } from 'antd' +import type { TooltipPlacement } from 'antd/es/tooltip' +import { InfoCircleOutlined, WarningOutlined } from '@ant-design/icons' +import { useTranslation } from 'react-i18next' + +export interface ITextWithInfoProps { + tooltip?: React.ReactNode + placement?: TooltipPlacement + children: React.ReactNode + type?: 'warning' | 'danger' +} + +function TextWithInfo({ + tooltip, + placement, + children, + type, +}: ITextWithInfoProps) { + let textWithIcon + if (tooltip) { + const Icon = type ? WarningOutlined : InfoCircleOutlined + textWithIcon = ( + + {children} + + ) + } else { + textWithIcon = children + } + + let textWithColor + if (type) { + textWithColor = ( + {textWithIcon} + ) + } else { + textWithColor = textWithIcon + } + + if (!tooltip) { + return textWithColor + } + + return ( + + {textWithColor} + + ) +} + +export interface ITransKeyTextWithInfo { + transKey: string + placement?: TooltipPlacement + type?: 'warning' | 'danger' +} + +function TransKey({ transKey, placement, type }: ITransKeyTextWithInfo) { + const { t } = useTranslation() + const text = t(transKey) + const tooltip = t(`${transKey}_tooltip`, { + defaultValue: '', + fallbackLng: '_', + }) + return ( + + {text} + + ) +} + +TextWithInfo.TransKey = TransKey + +export default TextWithInfo diff --git a/ui-ori/lib/components/TextWrap/index.module.less b/ui-ori/lib/components/TextWrap/index.module.less new file mode 100644 index 0000000000..3d2c3ada8a --- /dev/null +++ b/ui-ori/lib/components/TextWrap/index.module.less @@ -0,0 +1,20 @@ +.singleLine { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + > span { + display: inline; + } + pre { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} + +.multiLine { + overflow-wrap: break-word; + white-space: normal; + text-overflow: inherit; + overflow: auto; +} diff --git a/ui-ori/lib/components/TextWrap/index.tsx b/ui-ori/lib/components/TextWrap/index.tsx new file mode 100644 index 0000000000..0f1a3cce54 --- /dev/null +++ b/ui-ori/lib/components/TextWrap/index.tsx @@ -0,0 +1,27 @@ +import React from 'react' +import cx from 'classnames' + +import styles from './index.module.less' + +export interface ITextWrapProps extends React.HTMLAttributes { + // When multiline enabled, text will be wrapped. When multiline disabled, + // overflow texts will be truncated with ellipsis. + multiline?: boolean +} + +export default function TextWrap({ + multiline, + className, + children, + ...rest +}: ITextWrapProps) { + const c = cx(className, { + [styles.multiLine]: multiline, + [styles.singleLine]: !multiline, + }) + return ( +
    + {children} +
    + ) +} diff --git a/ui-ori/lib/components/TimeRangeSelector/index.module.less b/ui-ori/lib/components/TimeRangeSelector/index.module.less new file mode 100644 index 0000000000..221df0905e --- /dev/null +++ b/ui-ori/lib/components/TimeRangeSelector/index.module.less @@ -0,0 +1,41 @@ +@import '~antd/es/style/themes/default.less'; + +.dropdown_content_container { + background-color: @select-dropdown-bg; + padding: @padding-md; + border-radius: @border-radius-base; + outline: none; + box-shadow: @box-shadow-base; + box-sizing: border-box; + + .usual_time_ranges { + span { + color: @gray-6; + } + + margin-bottom: 16px; + } + + .custom_time_ranges { + span { + color: @gray-6; + } + } + + .time_range_items { + max-width: 360px; + margin-top: 8px; + display: flex; + flex-wrap: wrap; + } + + .time_range_item { + width: 120px; + padding-bottom: 4px; + cursor: pointer; + } + + .time_range_item_active { + color: @primary-color; + } +} diff --git a/ui-ori/lib/components/TimeRangeSelector/index.tsx b/ui-ori/lib/components/TimeRangeSelector/index.tsx new file mode 100644 index 0000000000..d811bbae5a --- /dev/null +++ b/ui-ori/lib/components/TimeRangeSelector/index.tsx @@ -0,0 +1,190 @@ +import React, { useState, useMemo, useCallback, useEffect } from 'react' +import { Dropdown, Button } from 'antd' +import DatePicker from '../DatePicker' +import { ClockCircleOutlined, DownOutlined } from '@ant-design/icons' +import { getValueFormat } from '@baurine/grafana-value-formats' +import cx from 'classnames' +import dayjs, { Dayjs } from 'dayjs' +import { useTranslation } from 'react-i18next' + +import styles from './index.module.less' + +const { RangePicker } = DatePicker + +const RECENT_SECONDS = [ + 15 * 60, + 30 * 60, + 60 * 60, + + 2 * 60 * 60, + 6 * 60 * 60, + 12 * 60 * 60, + + 24 * 60 * 60, + 2 * 24 * 60 * 60, + 3 * 24 * 60 * 60, + + 7 * 24 * 60 * 60, + 14 * 24 * 60 * 60, + 28 * 24 * 60 * 60, +] + +const DEFAULT_TIME_RANGE: TimeRange = { + type: 'recent', + value: 30 * 60, +} + +interface RecentSecTime { + type: 'recent' + value: number // unit: seconds +} + +interface RangeTime { + type: 'absolute' + value: [number, number] // unit: seconds +} + +export type TimeRange = RecentSecTime | RangeTime + +export function calcTimeRange(timeRange?: TimeRange): [number, number] { + let t2 = timeRange ?? DEFAULT_TIME_RANGE + if (t2.type === 'absolute') { + return t2.value + } else { + const now = dayjs().unix() + return [now - t2.value, now] + } +} + +export function stringifyTimeRange(timeRange?: TimeRange): string { + let t2 = timeRange ?? DEFAULT_TIME_RANGE + if (t2.type === 'absolute') { + return `${t2.type}_${t2.value[0]}_${t2.value[1]}` + } else { + return `${t2.type}_${t2.value}` + } +} + +export interface ITimeRangeSelectorProps { + value?: TimeRange + onChange?: (val: TimeRange) => void +} + +function TimeRangeSelector({ value, onChange }: ITimeRangeSelectorProps) { + const { t } = useTranslation() + const [dropdownVisible, setDropdownVisible] = useState(false) + + useEffect(() => { + if (!value) { + onChange?.(DEFAULT_TIME_RANGE) + } + // ignore [onChange] + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [value]) + + const rangePickerValue = useMemo(() => { + if (value?.type !== 'absolute') { + return null + } + return value.value.map((sec) => dayjs(sec * 1000)) as [Dayjs, Dayjs] + }, [value]) + + const handleRecentChange = useCallback( + (seconds: number) => { + onChange?.({ + type: 'recent', + value: seconds, + }) + setDropdownVisible(false) + }, + [onChange] + ) + + const handleRangePickerChange = useCallback( + (values) => { + if (values === null) { + onChange?.(DEFAULT_TIME_RANGE) + } else { + onChange?.({ + type: 'absolute', + value: values.map((v) => v.unix()), + }) + } + setDropdownVisible(false) + }, + [onChange] + ) + + const dropdownContent = ( +
    +
    + + {t( + 'statement.pages.overview.toolbar.time_range_selector.usual_time_ranges' + )} + +
    + {RECENT_SECONDS.map((seconds) => ( +
    handleRecentChange(seconds)} + data-e2e={`timerange-${seconds}`} + > + {t('statement.pages.overview.toolbar.time_range_selector.recent')}{' '} + {getValueFormat('s')(seconds, 0)} +
    + ))} +
    +
    +
    + + {t( + 'statement.pages.overview.toolbar.time_range_selector.custom_time_ranges' + )} + +
    + +
    +
    +
    + ) + + return ( + + + + ) +} + +export default React.memo(TimeRangeSelector) diff --git a/ui-ori/lib/components/Toolbar/index.module.less b/ui-ori/lib/components/Toolbar/index.module.less new file mode 100644 index 0000000000..23fda8eca8 --- /dev/null +++ b/ui-ori/lib/components/Toolbar/index.module.less @@ -0,0 +1,18 @@ +.toolbar_container { + display: flex; + + :global(.ant-space-item) { + margin-bottom: 8px; + } + + .left_space { + flex: 1; + display: flex; + flex-wrap: wrap; + } + + .right_space { + align-self: flex-start; + margin-top: 6px; + } +} diff --git a/ui-ori/lib/components/Toolbar/index.tsx b/ui-ori/lib/components/Toolbar/index.tsx new file mode 100644 index 0000000000..b8576ea039 --- /dev/null +++ b/ui-ori/lib/components/Toolbar/index.tsx @@ -0,0 +1,33 @@ +import React from 'react' +import cx from 'classnames' +import { Space } from 'antd' + +import styles from './index.module.less' + +export default function Toolbar(props: React.HTMLAttributes) { + const { className, children, ...rest } = props + const c = cx(className, styles.toolbar_container) + + // https://stackoverflow.com/questions/27366077 + React.Children.forEach(children, (child) => { + if (!React.isValidElement(child) || child.type !== Space) { + console.error('Toolbar children only can be Space component') + } + }) + + return ( +
    + {React.Children.map(children, (child, idx) => { + // https://stackoverflow.com/questions/42261783 + if (React.isValidElement(child) && child.type === Space) { + const extraClassName = + idx === 0 ? styles.left_space : styles.right_space + return React.cloneElement(child, { + className: cx(child.props.className, extraClassName), + size: child.props.size || 'middle', + }) + } + })} +
    + ) +} diff --git a/ui-ori/lib/components/ValueWithTooltip/index.tsx b/ui-ori/lib/components/ValueWithTooltip/index.tsx new file mode 100644 index 0000000000..434c19b77a --- /dev/null +++ b/ui-ori/lib/components/ValueWithTooltip/index.tsx @@ -0,0 +1,58 @@ +import React from 'react' +import { Tooltip } from 'antd' +import { getValueFormat, scaledUnits } from '@baurine/grafana-value-formats' + +interface IValueWithTooltip extends IInternalValueWithTooltip { + Short: typeof ShortValueWithTooltip + ScaledBytes: typeof ScaledBytesWithTooltip +} + +interface IInternalValueWithTooltip { + title: string + value: any +} + +function InternalValueWithTooltip({ title, value }: IValueWithTooltip) { + return ( + + {value} + + ) +} + +export interface IValueWithTooltipProps { + value?: number + scaledDecimal?: number +} + +function ShortValueWithTooltip({ + value = 0, + scaledDecimal = 1, +}: IValueWithTooltipProps) { + return ( + + {getValueFormat('short')(value || 0, 0, scaledDecimal)} + + ) +} + +const bytesScaler = scaledUnits(1024, ['', 'K', 'M', 'B', 'T']) + +function ScaledBytesWithTooltip({ + value = 0, + scaledDecimal = 2, +}: IValueWithTooltipProps) { + return ( + + {bytesScaler(value || 0, 0, scaledDecimal)} + + ) +} + +const ValueWithTooltip = + InternalValueWithTooltip as unknown as IValueWithTooltip + +ValueWithTooltip.Short = ShortValueWithTooltip +ValueWithTooltip.ScaledBytes = ScaledBytesWithTooltip + +export { ValueWithTooltip } diff --git a/ui-ori/lib/components/index.ts b/ui-ori/lib/components/index.ts new file mode 100644 index 0000000000..174a34e264 --- /dev/null +++ b/ui-ori/lib/components/index.ts @@ -0,0 +1,58 @@ +export * from './Root' +export { default as Root } from './Root' +export * from './Head' +export { default as Head } from './Head' +export * from './Card' +export { default as Card } from './Card' +export * from './CardTabs' +export { default as CardTabs } from './CardTabs' +export * from './CardTable' +export { default as CardTable } from './CardTable' +export * from './Bar' +export { default as Bar } from './Bar' +export * from './HighlightSQL' +export { default as HighlightSQL } from './HighlightSQL' +export * from './TextWrap' +export { default as TextWrap } from './TextWrap' +export * from './Pre' +export { default as Pre } from './Pre' +export * from './Descriptions' +export { default as Descriptions } from './Descriptions' +export * from './TextWithInfo' +export { default as TextWithInfo } from './TextWithInfo' +export * from './DateTime' +export { default as DateTime } from './DateTime' +export * from './Expand' +export { default as Expand } from './Expand' +export * from './CopyLink' +export { default as CopyLink } from './CopyLink' +export * from './MetricChart' +export { default as MetricChart } from './MetricChart' +export * from './ColumnsSelector' +export { default as ColumnsSelector } from './ColumnsSelector' +export * from './Toolbar' +export { default as Toolbar } from './Toolbar' +export * from './TimeRangeSelector' +export { default as TimeRangeSelector } from './TimeRangeSelector' +export * from './AnimatedSkeleton' +export { default as AnimatedSkeleton } from './AnimatedSkeleton' +export * from './InstanceStatusBadge' +export { default as InstanceStatusBadge } from './InstanceStatusBadge' +export * from './BaseSelect' +export { default as BaseSelect } from './BaseSelect' +export * from './InstanceSelect' +export { default as InstanceSelect } from './InstanceSelect' +export * from './MultiSelect' +export { default as MultiSelect } from './MultiSelect' +export * from './ValueWithTooltip' +export * from './DatePicker' +export { default as DatePicker } from './DatePicker' +export * from './ErrorBar' +export { default as ErrorBar } from './ErrorBar' +export * from './AppearAnimate' +export { default as AppearAnimate } from './AppearAnimate' +export * from './Blink' +export { default as Blink } from './Blink' + +export { default as LanguageDropdown } from './LanguageDropdown' +export { default as ParamsPageWrapper } from './ParamsPageWrapper' diff --git a/ui-ori/lib/utils/appOptions.ts b/ui-ori/lib/utils/appOptions.ts new file mode 100644 index 0000000000..b0f0759233 --- /dev/null +++ b/ui-ori/lib/utils/appOptions.ts @@ -0,0 +1,27 @@ +export type AppOptions = { + hideNav: boolean + lang: string +} + +const defAppOptions: AppOptions = { + hideNav: false, + lang: '', +} + +const optionsKey = 'dashboard_app_options' + +export function saveAppOptions(options: AppOptions) { + localStorage.setItem(optionsKey, JSON.stringify(options)) +} + +export function loadAppOptions(): AppOptions { + const s = localStorage.getItem(optionsKey) + if (s === null) { + return defAppOptions + } + const opt = JSON.parse(s) + if (!!opt && opt.constructor === Object) { + return opt + } + return defAppOptions +} diff --git a/ui-ori/lib/utils/auth.ts b/ui-ori/lib/utils/auth.ts new file mode 100644 index 0000000000..f397e1be22 --- /dev/null +++ b/ui-ori/lib/utils/auth.ts @@ -0,0 +1,41 @@ +import { EventEmitter2 } from 'eventemitter2' + +const tokenKey = 'dashboard_auth_token' + +export const authEvents = new EventEmitter2() + +export const EVENT_TOKEN_CHANGED = 'tokenChanged' + +export function getAuthToken() { + return localStorage.getItem(tokenKey) +} + +export function setAuthToken(token) { + const lastToken = getAuthToken() + if (lastToken !== token) { + localStorage.setItem(tokenKey, token) + authEvents.emit(EVENT_TOKEN_CHANGED, token) + } +} + +export function clearAuthToken() { + const lastToken = getAuthToken() + if (lastToken) { + localStorage.removeItem(tokenKey) + authEvents.emit(EVENT_TOKEN_CHANGED, null) + } +} + +export function getAuthTokenAsBearer() { + const token = getAuthToken() + if (!token) { + return null + } + return `Bearer ${token}` +} + +export enum AuthTypes { + SQLUser = 0, + SharingCode = 1, + SSO = 2, +} diff --git a/ui-ori/lib/utils/authSSO.ts b/ui-ori/lib/utils/authSSO.ts new file mode 100644 index 0000000000..ffab77d150 --- /dev/null +++ b/ui-ori/lib/utils/authSSO.ts @@ -0,0 +1,78 @@ +import client, { ErrorStrategy } from '@lib/client' +import { Modal } from 'antd' +import * as auth from './auth' +import { AuthTypes } from './auth' + +function newRandomString(length: number) { + let text = '' + const possible = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + for (let i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)) + } + return text +} + +function getBaseURL() { + return `${window.location.protocol}//${window.location.host}${window.location.pathname}` +} + +function getRedirectURL() { + return `${getBaseURL()}?sso_callback=1` +} + +export async function getAuthURL() { + const codeVerifier = newRandomString(128) + const state = newRandomString(32) + + sessionStorage.setItem('sso.codeVerifier', codeVerifier) + sessionStorage.setItem('sso.state', state) + const resp = await client + .getInstance() + .userSSOGetAuthURL(codeVerifier, getRedirectURL(), state) + return resp.data +} + +export function isSSOCallback() { + const p = new URLSearchParams(window.location.search) + return p.has('sso_callback') +} + +async function handleSSOCallbackInner() { + const p = new URLSearchParams(window.location.search) + if (p.get('state') !== sessionStorage.getItem('sso.state')) { + throw new Error( + 'Invalid OIDC state: You may see this error when your SSO sign in is outdated.' + ) + } + const r = await client.getInstance().userLogin( + { + type: AuthTypes.SSO, + extra: JSON.stringify({ + code: p.get('code'), + code_verifier: sessionStorage.getItem('sso.codeVerifier'), + redirect_url: getRedirectURL(), + }), + }, + { errorStrategy: ErrorStrategy.Custom } + ) + + sessionStorage.removeItem('sso.codeVerifier') + sessionStorage.removeItem('sso.state') + + auth.setAuthToken(r.data.token) + window.location.replace(getBaseURL()) +} + +export async function handleSSOCallback() { + try { + await handleSSOCallbackInner() + } catch (e) { + Modal.error({ + title: 'SSO Sign In Failed', + content: '' + e, + okText: 'Sign In Again', + onOk: () => window.location.replace(getBaseURL()), + }) + } +} diff --git a/ui-ori/lib/utils/i18n.ts b/ui-ori/lib/utils/i18n.ts new file mode 100755 index 0000000000..d9cb3e56db --- /dev/null +++ b/ui-ori/lib/utils/i18n.ts @@ -0,0 +1,65 @@ +import 'dayjs/locale/zh' + +import dayjs from 'dayjs' +import i18next from 'i18next' +import LanguageDetector from 'i18next-browser-languagedetector' +import { initReactI18next } from 'react-i18next' + +import distro from '@lib/distribution.json' + +i18next.on('languageChanged', function (lng) { + dayjs.locale(lng.toLowerCase()) +}) + +export function addTranslations(requireContext) { + if (typeof requireContext === 'object') { + Object.keys(requireContext).forEach((key) => { + const translations = requireContext[key] + addTranslationResource(key, translations) + }) + return + } + + const keys = requireContext.keys() + keys.forEach((key) => { + const m = key.match(/\/(.+)\.yaml/) + if (!m) { + return + } + const lang = m[1] + const translations = requireContext(key) + addTranslationResource(lang, translations) + }) +} + +export function addTranslationResource(lang, translations) { + i18next.addResourceBundle(lang, 'translation', translations, true, false) +} + +export const ALL_LANGUAGES = { + zh: '简体中文', + en: 'English', +} + +i18next + .use(LanguageDetector) + .use(initReactI18next) + .init({ + resources: { + en: { + translation: { + distro, + }, + }, + }, + fallbackLng: 'en', // fallbackLng won't change the detected language + whitelist: ['zh', 'en'], // whitelist will change the detected lanuage + interpolation: { + escapeValue: false, + defaultVariables: { distro }, + }, + }) + +const isDistro = process.env.REACT_APP_DISTRO_BUILD_TAG !== undefined + +export { distro, isDistro } diff --git a/ui-ori/lib/utils/instanceTable.ts b/ui-ori/lib/utils/instanceTable.ts new file mode 100644 index 0000000000..1ac6b5467d --- /dev/null +++ b/ui-ori/lib/utils/instanceTable.ts @@ -0,0 +1,133 @@ +import { + TopologyPDInfo, + TopologyTiDBInfo, + TopologyStoreInfo, +} from '@lib/client' +import { IGroup } from 'office-ui-fabric-react/lib/DetailsList' +import _ from 'lodash' +import i18next from 'i18next' + +export type InstanceKind = 'pd' | 'tidb' | 'tikv' | 'tiflash' + +export const InstanceStatus = { + Unreachable: 0, + Up: 1, + Tombstone: 2, + Offline: 3, + Down: 4, +} + +export const InstanceKindName: { [key in InstanceKind]: string } = { + pd: i18next.t('distro.pd'), + tidb: i18next.t('distro.tidb'), + tikv: i18next.t('distro.tikv'), + tiflash: i18next.t('distro.tiflash'), +} + +export const InstanceKinds = Object.keys(InstanceKindName) as InstanceKind[] + +export interface IInstanceTableItem + extends TopologyPDInfo, + TopologyTiDBInfo, + TopologyStoreInfo { + key: string + instanceKind: InstanceKind +} + +export interface IBuildInstanceTableProps { + dataPD?: TopologyPDInfo[] + dataTiDB?: TopologyTiDBInfo[] + dataTiKV?: TopologyStoreInfo[] + dataTiFlash?: TopologyStoreInfo[] + includeTiFlash?: boolean +} + +export function buildInstanceTable({ + dataPD, + dataTiDB, + dataTiKV, + dataTiFlash, + includeTiFlash, +}: IBuildInstanceTableProps): [IInstanceTableItem[], IGroup[]] { + const tableData: IInstanceTableItem[] = [] + const groupData: IGroup[] = [] + let startIndex = 0 + + const kinds: { + [key in InstanceKind]?: + | TopologyPDInfo[] + | TopologyTiDBInfo[] + | TopologyStoreInfo[] + | undefined + } = {} + kinds.pd = dataPD + kinds.tidb = dataTiDB + kinds.tikv = dataTiKV + if (includeTiFlash) { + kinds.tiflash = dataTiFlash + } + + for (const ik of InstanceKinds) { + const instances = kinds[ik] + if (!instances || instances.length === 0) { + continue + } + groupData.push({ + key: ik, + name: InstanceKindName[ik], + startIndex: startIndex, + count: instances.length, + level: 0, + }) + startIndex += instances.length + instances.forEach((instance) => { + const key = `${instance.ip}:${instance.port}` + tableData.push({ + key: key, + instanceKind: ik, + ...instance, + }) + }) + } + return [tableData, groupData] +} + +export function filterInstanceTable( + items: IInstanceTableItem[], + filterKeyword: string +): [IInstanceTableItem[], IGroup[]] { + const tableData: IInstanceTableItem[] = [] + const groupData: IGroup[] = [] + let startIndex = 0 + + const kw = filterKeyword.toLowerCase() + const filteredItems = items.filter((i) => { + if (filterKeyword.length === 0) { + return true + } + return ( + i.key.toLowerCase().indexOf(kw) > -1 || i.instanceKind.indexOf(kw) > -1 + ) + }) + const itemsByIk = _.groupBy(filteredItems, 'instanceKind') as { + [key in InstanceKind]: IInstanceTableItem[] + } + for (const ik of InstanceKinds) { + const instances = itemsByIk[ik] + if (!instances || instances.length === 0) { + continue + } + groupData.push({ + key: ik, + name: InstanceKindName[ik], + startIndex: startIndex, + count: instances.length, + level: 0, + }) + startIndex += instances.length + instances.forEach((instance) => { + tableData.push(instance) + }) + } + return [tableData, groupData] +} diff --git a/ui-ori/lib/utils/openLink.ts b/ui-ori/lib/utils/openLink.ts new file mode 100644 index 0000000000..1ce1961df3 --- /dev/null +++ b/ui-ori/lib/utils/openLink.ts @@ -0,0 +1,22 @@ +import { NavigateFunction } from 'react-router' +import React from 'react' + +// the url param starts with '/', for example: '/statement/detail' +export default function openLink( + url: string, + ev: React.MouseEvent, + navigate: NavigateFunction +) { + const { origin, pathname } = window.location + const fullUrl = `${origin}${pathname}#${url}` + + if (ev.metaKey || ev.altKey || ev.ctrlKey) { + // open in a new tab + window.open(fullUrl, '_blank') + } else if (ev.shiftKey) { + // open in a new window + window.open(fullUrl) + } else { + navigate(url) + } +} diff --git a/ui-ori/lib/utils/publicPathPrefix.ts b/ui-ori/lib/utils/publicPathPrefix.ts new file mode 100644 index 0000000000..e3cc3f5a3e --- /dev/null +++ b/ui-ori/lib/utils/publicPathPrefix.ts @@ -0,0 +1,9 @@ +let prefix = document + .querySelector('meta[name="x-public-path-prefix"]') + ?.getAttribute('content') + +if (prefix === '__PUBLIC_PATH_PREFIX__') { + prefix = '/dashboard' +} + +export default prefix diff --git a/ui-ori/lib/utils/query.ts b/ui-ori/lib/utils/query.ts new file mode 100644 index 0000000000..bbe42e3bf9 --- /dev/null +++ b/ui-ori/lib/utils/query.ts @@ -0,0 +1,31 @@ +export interface IQueryParams { + [key: string]: any +} + +export function parseQueryFn() { + return (qs: string): T => { + const p = new URLSearchParams(qs) + const json = p.get('query') + if (json == null) { + return {} as T + } + const r = JSON.parse(json) + if (!!r && r.constructor === Object) { + return r as T + } + return {} as T + } +} + +export function buildQueryFn() { + return (q: T): string => { + const json = JSON.stringify(q) + const p = new URLSearchParams() + p.set('query', json) + return p.toString() + } +} + +export function stripQueryString(url: string) { + return url.split('?')[0] +} diff --git a/ui-ori/lib/utils/registry.ts b/ui-ori/lib/utils/registry.ts new file mode 100644 index 0000000000..e0c1b9b24e --- /dev/null +++ b/ui-ori/lib/utils/registry.ts @@ -0,0 +1,94 @@ +import React from 'react' +import ReactDOM from 'react-dom' +import singleSpaReact from 'single-spa-react' +import * as singleSpa from 'single-spa' +import * as i18n from './i18n' +import * as routing from './routing' +import { AppOptions } from './appOptions' + +export default class AppRegistry { + public defaultRouter = '' + public apps = {} + public constructor(public appOptions: AppOptions) {} + + static newReactSpaApp = function (rootComponentAsyncLoader, targetDomId) { + const reactLifecycles = singleSpaReact({ + React, + ReactDOM, + loadRootComponent: async () => { + const component = await rootComponentAsyncLoader() + if (component.default) { + return component.default + } + return component + }, + domElementGetter: () => document.getElementById(targetDomId), + }) + return { + bootstrap: [reactLifecycles.bootstrap], + mount: [reactLifecycles.mount], + unmount: [reactLifecycles.unmount], + } + } + + /** + * Register a TiDB Dashboard application. + * + * This function is a light encapsulation over single-spa's registerApplication + * which provides some extra registry capabilities. + * + * @param {{ + * id: string, + * reactRoot: Function, + * routerPrefix: string, + * indexRoute: string, + * isDefaultRouter: boolean, + * icon: string, + * }} app + */ + register(app) { + if (app.translations) { + i18n.addTranslations(app.translations) + } + + singleSpa.registerApplication( + app.id, + AppRegistry.newReactSpaApp(app.reactRoot, '__spa_content__'), + () => { + return routing.isLocationMatchPrefix(app.routerPrefix) + }, + { + registry: this, + app, + } + ) + if (!app.indexRoute) { + app.indexRoute = app.routerPrefix + } + if (!this.defaultRouter || app.isDefaultRouter) { + this.defaultRouter = app.indexRoute + } + this.apps[app.id] = app + return this + } + + /** + * Get the default router for initial routing. + */ + getDefaultRouter() { + return this.defaultRouter || '/' + } + + /** + * Get the registry of the current active app. + */ + getActiveApp() { + const mountedApps = singleSpa.getMountedApps() + for (let i = 0; i < mountedApps.length; i++) { + const app = mountedApps[i] + if (this.apps[app] !== undefined) { + return this.apps[app] + } + } + } +} diff --git a/ui-ori/lib/utils/routing.ts b/ui-ori/lib/utils/routing.ts new file mode 100644 index 0000000000..523ca6fbc0 --- /dev/null +++ b/ui-ori/lib/utils/routing.ts @@ -0,0 +1,35 @@ +export const signInRoute = '/signin' +export const portalRoute = '/portal' + +export function isLocationMatch(s, matchPrefix = false): boolean { + let hash = window.location.hash + if (!hash || hash === '#') { + hash = '#/' + } + if (matchPrefix) { + return hash.indexOf(`#${s}`) === 0 + } else { + return hash.trim() === `#${s}` + } +} + +export function isLocationMatchPrefix(s): boolean { + return isLocationMatch(s, true) +} + +export function isSignInPage(): boolean { + return isLocationMatchPrefix(signInRoute) +} + +export function isPortalPage(): boolean { + return isLocationMatchPrefix(portalRoute) +} + +export function getPathInLocationHash(): string { + const hash = window.location.hash + const pos = hash.indexOf('?') + if (pos === -1) { + return hash + } + return hash.substring(0, pos) +} diff --git a/ui-ori/lib/utils/selectionWithFilter.ts b/ui-ori/lib/utils/selectionWithFilter.ts new file mode 100644 index 0000000000..f7d230dc72 --- /dev/null +++ b/ui-ori/lib/utils/selectionWithFilter.ts @@ -0,0 +1,291 @@ +import { + ISelection, + IObjectWithKey, + Selection, + SelectionMode, + ISelectionOptions, + ISelectionOptionsWithRequiredGetKey, + EventGroup, + SELECTION_CHANGE, +} from 'office-ui-fabric-react/lib/Utilities' + +export default class SelectionWithFilter + implements ISelection +{ + private _inner: Selection + + private _allItems: T[] = [] + private _allItemsMap: Map = new Map() + private _allSelectedKeysSet: Set = new Set() + private _itemKeysSet: Set = new Set() + + private _allSelectionCache: T[] | null = null + private _onSelectionChangedOriginal?: () => void + + get count(): number { + return this._inner.count + } + set count(v: number) { + this._inner.count = v + } + get mode(): SelectionMode { + return this._inner.mode + } + canSelectItem(item: T, index?: number): boolean { + return this._inner.canSelectItem(item, index) + } + setChangeEvents(isEnabled: boolean, suppressChange?: boolean) { + return this._inner.setChangeEvents(isEnabled, suppressChange) + } + getItems(): T[] { + return this._inner.getItems() + } + getSelection(): T[] { + return this._inner.getSelection() + } + getSelectedIndices(): number[] { + return this._inner.getSelectedIndices() + } + getSelectedCount(): number { + return this._inner.getSelectedCount() + } + isRangeSelected(fromIndex: number, count: number): boolean { + return this._inner.isRangeSelected(fromIndex, count) + } + isAllSelected(): boolean { + return this._inner.isAllSelected() + } + isKeySelected(key: string): boolean { + return this._inner.isKeySelected(key) + } + isIndexSelected(index: number): boolean { + return this._inner.isIndexSelected(index) + } + setKeySelected( + key: string, + isSelected: boolean, + shouldAnchor: boolean + ): void { + this._inner.setKeySelected(key, isSelected, shouldAnchor) + } + setIndexSelected( + index: number, + isSelected: boolean, + shouldAnchor: boolean + ): void { + this._inner.setIndexSelected(index, isSelected, shouldAnchor) + } + selectToKey(key: string, clearSelection?: boolean | undefined): void { + this._inner.selectToKey(key, clearSelection) + } + selectToIndex(index: number, clearSelection?: boolean | undefined): void { + this._inner.selectToIndex(index, clearSelection) + } + toggleAllSelected(): void { + this.setAllSelected(!this._inner.isAllSelected()) + } + toggleKeySelected(key: string): void { + this._inner.toggleKeySelected(key) + } + toggleIndexSelected(index: number): void { + this._inner.toggleIndexSelected(index) + } + toggleRangeSelected(fromIndex: number, count: number): void { + this._inner.toggleRangeSelected(fromIndex, count) + } + // Override + setItems(items: T[], shouldClear?: boolean) { + this._allSelectionCache = null + if (shouldClear) { + this._allSelectedKeysSet.clear() + } + + // Only items in AllItems can be added + const itemSubset: T[] = [] + this._itemKeysSet.clear() + for (const item of items) { + const key = this._inner.getKey(item) + if (this._allItemsMap.has(key)) { + this._itemKeysSet.add(key) + itemSubset.push(item) + } else { + if (process.env.NODE_ENV === 'development') { + console.warn( + 'Warning: SelectionWithFilter::setItems is called with an item not in allItems', + item, + key + ) + } + } + } + + this._inner.setChangeEvents(false) + this._inner.setItems(itemSubset, shouldClear) + // Re-select if newly added items are selected in allSelected + for (const key of this._allSelectedKeysSet) { + if (this._itemKeysSet.has(key)) { + this._inner.setKeySelected(key, true, false) + } + } + this._inner.setChangeEvents(true) + } + // Override + setAllSelected(isAllSelected: boolean) { + if (isAllSelected && this._itemKeysSet.size !== this._allItemsMap.size) { + // If items is a true subset of allItems, we emulate a selectAll by selecting one by one. + this._inner.setChangeEvents(false) + for (const key of this._itemKeysSet) { + this._inner.setKeySelected(key, true, false) + } + this._inner.setChangeEvents(true) + } else { + this._inner.setAllSelected(isAllSelected) + } + } + + constructor( + ...options: T extends IObjectWithKey + ? [] | [ISelectionOptions] + : [ISelectionOptionsWithRequiredGetKey] + ) { + const { onSelectionChanged, ...rest } = + options[0] || ({} as ISelectionOptions) + this._onSelectionChangedOriginal = onSelectionChanged + this._inner = new (Selection as any)({ + onSelectionChanged: () => this._handleSelectionChanged(), + ...rest, + }) + } + + private _handleSelectionChanged() { + this._triggerSelectionChanged() + } + + private _triggerSelectionChanged() { + this._allSelectionCache = null + EventGroup.raise(this, SELECTION_CHANGE) + if (this._onSelectionChangedOriginal) { + this._onSelectionChangedOriginal() + } + } + + setAllItems(items: T[]) { + this._allSelectionCache = null + this._allItems = items + this._allItemsMap.clear() + for (const item of items) { + const key = this._inner.getKey(item) + this._allItemsMap.set(key, item) + } + // Ensure `items` is a subset of `alllItems`. If not, update `items`. + const filteredItems = this._inner.getItems() + const newItems: T[] = [] + for (const item of filteredItems) { + const key = this._inner.getKey(item) + if (this._allItemsMap.has(key)) { + newItems.push(item) + } else { + if (process.env.NODE_ENV === 'development') { + console.log( + 'Note: SelectionWithFilter::setAllItems is filtering away an item previously in items but not in allItems', + item, + key + ) + } + } + } + if (filteredItems.length !== newItems.length) { + this.setItems(newItems) + } + } + + getAllItems(): T[] { + return this._allItems + } + + getAllSelection(): T[] { + if (!this._allSelectionCache) { + this._allSelectionCache = [] + for (const [key, item] of this._allItemsMap) { + // Selected state of the internal Selection takes precedence + if (this._itemKeysSet.has(key)) { + if (this._inner.isKeySelected(key)) { + this._allSelectionCache.push(item) + } + } else { + if (this._allSelectedKeysSet.has(key)) { + this._allSelectionCache.push(item) + } + } + } + // Sync current selection to _allSelectedKeysSet. This is optional but + // can avoid unnecessary selectionChanged event when calling `resetAllSelection` + // again with the same selection. + this._allSelectedKeysSet.clear() + for (const key of this._allSelectionCache) { + this._allSelectedKeysSet.add(this._inner.getKey(key)) + } + } + + return this._allSelectionCache + } + + resetAllSelection(selectedKeys: string[]) { + if (process.env.NODE_ENV === 'development') { + console.groupCollapsed('SelectionWithFilter.resetAllSelection') + console.log('selectedKeys', selectedKeys) + console.log('_allSelectedKeysSet', this._allSelectedKeysSet) + console.groupEnd() + } + // Check whether update can be avoided + let unChanged = true + let validSelectedKeysCount = 0 + for (const key of selectedKeys) { + if (this._allItemsMap.has(key)) { + validSelectedKeysCount++ + if (!this._allSelectedKeysSet.has(key)) { + unChanged = false + break + } + } + } + if (validSelectedKeysCount !== this._allSelectedKeysSet.size) { + unChanged = false + } + if (unChanged) { + return + } + + this._allSelectedKeysSet.clear() + for (const key of selectedKeys) { + if (this._allItemsMap.has(key)) { + this._allSelectedKeysSet.add(key) + } + } + // Update selection subset + this._inner.setChangeEvents(false) + this._inner.setAllSelected(false) + for (const key of selectedKeys) { + if (this._itemKeysSet.has(key)) { + this._inner.setKeySelected(key, true, false) + } + } + this._inner.setChangeEvents(true, true) + this._triggerSelectionChanged() // Force trigger a selection change anyway + } + + setAllSelectionSelected(isAllSelected: boolean) { + this._inner.setChangeEvents(false) + if (!isAllSelected) { + this._allSelectedKeysSet.clear() + this._inner.setAllSelected(false) + } else { + for (const key of this._allItemsMap.keys()) { + this._allSelectedKeysSet.add(key) + } + this._inner.setAllSelected(true) + } + this._inner.setChangeEvents(true, true) + this._triggerSelectionChanged() // Force trigger a selection change anyway + } +} diff --git a/ui-ori/lib/utils/sentryHelpers.ts b/ui-ori/lib/utils/sentryHelpers.ts new file mode 100644 index 0000000000..09883bc082 --- /dev/null +++ b/ui-ori/lib/utils/sentryHelpers.ts @@ -0,0 +1,109 @@ +import * as url from 'url' +import { AxiosInstance } from 'axios' +import * as Sentry from '@sentry/react' +import { stripQueryString } from './query' + +const firstMountTransaction = Sentry.startTransaction({ name: 'first mount' }) +const transactionHub = new Map() + +export const sentryEnabled = process.env.REACT_APP_SENTRY_ENABLED === 'true' + +export function markStart(name: string, op?: string) { + const transaction = Sentry.startTransaction({ name, op }) + transactionHub.set(transaction.name, transaction) + transactionHub.set(transaction.traceId, transaction) + return transaction +} + +export function markEnd(name: string, traceId?: string) { + const transaction = traceId + ? transactionHub.get(traceId) + : transactionHub.get(name) + if (transaction) { + transaction.finish() + transactionHub.delete(name) + if (traceId) { + transactionHub.delete(traceId) + } + } +} + +export function markTag(key: string, value: string | number, traceId: string) { + const transaction = transactionHub.get(traceId) + if (transaction) { + transaction.setTag(key, value) + } +} + +export const reportError: typeof Sentry.captureException = (...args) => { + if (sentryEnabled) { + return Sentry.captureException(...args) + } + return '' +} + +export function initSentryRoutingInstrument() { + window.addEventListener('single-spa:first-mount', () => { + firstMountTransaction.finish() + }) + + window.addEventListener('single-spa:before-routing-event', (e: any) => { + const { hash: newUrlHash } = url.parse(e.detail.newUrl) + const { hash: oldUrlHash } = url.parse(e.detail.oldUrl) + + if (!newUrlHash) return + + const from = stripQueryString(oldUrlHash || '/') + const to = stripQueryString(newUrlHash) + const transaction = markStart(to, 'routing') + transaction.setTag('routing.from', from) + transaction.setTag('routing.to', to) + transaction.setTag( + 'routing.mount', + e.detail.appsByNewStatus.MOUNTED.join(',') + ) + transaction.setTag( + 'routing.unmount', + e.detail.appsByNewStatus.NOT_MOUNTED.join(',') + ) + }) + + window.addEventListener('single-spa:routing-event', (e: any) => { + const { hash: newUrlHash } = url.parse(e.detail.newUrl) + markEnd(stripQueryString(newUrlHash!)) + }) +} + +export function applySentryTracingInterceptor(instance: AxiosInstance) { + instance.interceptors.request.use((config) => { + if (config.url && config.method) { + const { pathname } = url.parse(config.url) + const transaction = markStart(pathname!, 'http') + transaction.setTag('http.method', config.method.toUpperCase()) + config.headers['x-sentry-trace'] = transaction.traceId + } + return config + }) + + instance.interceptors.response.use( + (response) => { + const id = response.config?.headers['x-sentry-trace'] + if (id) { + const { pathname } = url.parse(response.config.url!) + markTag('http.status', response.status, id) + markEnd(pathname!, id) + } + return response + }, + (error) => { + const id = error?.config?.headers['x-sentry-trace'] + if (id) { + const { pathname } = url.parse(error.config.url) + markTag(id, 'error', error.message) + markEnd(pathname!, id) + } + + return Promise.reject(error) + } + ) +} diff --git a/ui-ori/lib/utils/sqlFormatter/TiDBSQLFormatter.ts b/ui-ori/lib/utils/sqlFormatter/TiDBSQLFormatter.ts new file mode 100644 index 0000000000..e91656fe87 --- /dev/null +++ b/ui-ori/lib/utils/sqlFormatter/TiDBSQLFormatter.ts @@ -0,0 +1,371 @@ +// This file is copied from 'sql-formatter-plus-plus/src/languages/StandardSqlFormatter.js'. +// And changed the following lines: +// `namedPlaceholderTypes: ['@', ':'],` => `namedPlaceholderTypes: [':'],` +// Add the following line which copied from Db2Formatter.js: +// `specialWordChars: ['@'],` + +import Formatter from 'sql-formatter-plus-plus/src/core/Formatter' +import Tokenizer from 'sql-formatter-plus-plus/src/core/Tokenizer' + +const reservedWords = [ + 'ACCESSIBLE', + 'ACTION', + 'AGAINST', + 'AGGREGATE', + 'ALGORITHM', + 'ALL', + 'ALTER', + 'ANALYSE', + 'ANALYZE', + 'AS', + 'ASC', + 'AUTOCOMMIT', + 'AUTO_INCREMENT', + 'BACKUP', + 'BEGIN', + 'BETWEEN', + 'BINLOG', + 'BOTH', + 'CASCADE', + 'CASE', + 'CHANGE', + 'CHANGED', + 'CHARACTER SET', + 'CHARSET', + 'CHECK', + 'CHECKSUM', + 'COLLATE', + 'COLLATION', + 'COLUMN', + 'COLUMNS', + 'COMMENT', + 'COMMIT', + 'COMMITTED', + 'COMPRESSED', + 'CONCURRENT', + 'CONSTRAINT', + 'CONTAINS', + 'CONVERT', + 'CREATE', + 'CROSS', + 'CURRENT_TIMESTAMP', + 'DATABASE', + 'DATABASES', + 'DAY', + 'DAY_HOUR', + 'DAY_MINUTE', + 'DAY_SECOND', + 'DEFAULT', + 'DEFINER', + 'DELAYED', + 'DELETE', + 'DESC', + 'DESCRIBE', + 'DETERMINISTIC', + 'DISTINCT', + 'DISTINCTROW', + 'DIV', + 'DO', + 'DROP', + 'DUMPFILE', + 'DUPLICATE', + 'DYNAMIC', + 'ELSE', + 'ENCLOSED', + 'END', + 'ENGINE', + 'ENGINES', + 'ENGINE_TYPE', + 'ESCAPE', + 'ESCAPED', + 'EVENTS', + 'EXEC', + 'EXECUTE', + 'EXISTS', + 'EXPLAIN', + 'EXTENDED', + 'FAST', + 'FETCH', + 'FIELDS', + 'FILE', + 'FIRST', + 'FIXED', + 'FLUSH', + 'FOR', + 'FORCE', + 'FOREIGN', + 'FULL', + 'FULLTEXT', + 'FUNCTION', + 'GLOBAL', + 'GRANT', + 'GRANTS', + 'GROUP_CONCAT', + 'HEAP', + 'HIGH_PRIORITY', + 'HOSTS', + 'HOUR', + 'HOUR_MINUTE', + 'HOUR_SECOND', + 'IDENTIFIED', + 'IF', + 'IFNULL', + 'IGNORE', + 'IN', + 'INDEX', + 'INDEXES', + 'INFILE', + 'INSERT', + 'INSERT_ID', + 'INSERT_METHOD', + 'INTERVAL', + 'INTO', + 'INVOKER', + 'IS', + 'ISOLATION', + 'KEY', + 'KEYS', + 'KILL', + 'LAST_INSERT_ID', + 'LEADING', + 'LEVEL', + 'LIKE', + 'LINEAR', + 'LINES', + 'LOAD', + 'LOCAL', + 'LOCK', + 'LOCKS', + 'LOGS', + 'LOW_PRIORITY', + 'MARIA', + 'MASTER', + 'MASTER_CONNECT_RETRY', + 'MASTER_HOST', + 'MASTER_LOG_FILE', + 'MATCH', + 'MAX_CONNECTIONS_PER_HOUR', + 'MAX_QUERIES_PER_HOUR', + 'MAX_ROWS', + 'MAX_UPDATES_PER_HOUR', + 'MAX_USER_CONNECTIONS', + 'MEDIUM', + 'MERGE', + 'MINUTE', + 'MINUTE_SECOND', + 'MIN_ROWS', + 'MODE', + 'MODIFY', + 'MONTH', + 'MRG_MYISAM', + 'MYISAM', + 'NAMES', + 'NATURAL', + 'NOT', + 'NOW()', + 'NULL', + 'OFFSET', + 'ON DELETE', + 'ON UPDATE', + 'ON', + 'ONLY', + 'OPEN', + 'OPTIMIZE', + 'OPTION', + 'OPTIONALLY', + 'OUTFILE', + 'PACK_KEYS', + 'PAGE', + 'PARTIAL', + 'PARTITION', + 'PARTITIONS', + 'PASSWORD', + 'PRIMARY', + 'PRIVILEGES', + 'PROCEDURE', + 'PROCESS', + 'PROCESSLIST', + 'PURGE', + 'QUICK', + 'RAID0', + 'RAID_CHUNKS', + 'RAID_CHUNKSIZE', + 'RAID_TYPE', + 'RANGE', + 'READ', + 'READ_ONLY', + 'READ_WRITE', + 'REFERENCES', + 'REGEXP', + 'RELOAD', + 'RENAME', + 'REPAIR', + 'REPEATABLE', + 'REPLACE', + 'REPLICATION', + 'RESET', + 'RESTORE', + 'RESTRICT', + 'RETURN', + 'RETURNS', + 'REVOKE', + 'RLIKE', + 'ROLLBACK', + 'ROW', + 'ROWS', + 'ROW_FORMAT', + 'SECOND', + 'SECURITY', + 'SEPARATOR', + 'SERIALIZABLE', + 'SESSION', + 'SHARE', + 'SHOW', + 'SHUTDOWN', + 'SLAVE', + 'SONAME', + 'SOUNDS', + 'SQL', + 'SQL_AUTO_IS_NULL', + 'SQL_BIG_RESULT', + 'SQL_BIG_SELECTS', + 'SQL_BIG_TABLES', + 'SQL_BUFFER_RESULT', + 'SQL_CACHE', + 'SQL_CALC_FOUND_ROWS', + 'SQL_LOG_BIN', + 'SQL_LOG_OFF', + 'SQL_LOG_UPDATE', + 'SQL_LOW_PRIORITY_UPDATES', + 'SQL_MAX_JOIN_SIZE', + 'SQL_NO_CACHE', + 'SQL_QUOTE_SHOW_CREATE', + 'SQL_SAFE_UPDATES', + 'SQL_SELECT_LIMIT', + 'SQL_SLAVE_SKIP_COUNTER', + 'SQL_SMALL_RESULT', + 'SQL_WARNINGS', + 'START', + 'STARTING', + 'STATUS', + 'STOP', + 'STORAGE', + 'STRAIGHT_JOIN', + 'STRING', + 'STRIPED', + 'SUPER', + 'TABLE', + 'TABLES', + 'TEMPORARY', + 'TERMINATED', + 'THEN', + 'TO', + 'TRAILING', + 'TRANSACTIONAL', + 'TRUE', + 'TRUNCATE', + 'TYPE', + 'TYPES', + 'UNCOMMITTED', + 'UNIQUE', + 'UNLOCK', + 'UNSIGNED', + 'USAGE', + 'USE', + 'USING', + 'VARIABLES', + 'VIEW', + 'WHEN', + 'WITH', + 'WORK', + 'WRITE', + 'YEAR_MONTH', +] + +const reservedTopLevelWords = [ + 'ADD', + 'AFTER', + 'ALTER COLUMN', + 'ALTER TABLE', + 'DELETE FROM', + 'EXCEPT', + 'FETCH FIRST', + 'FROM', + 'GROUP BY', + 'GO', + 'HAVING', + 'INSERT INTO', + 'INSERT', + 'LIMIT', + 'MODIFY', + 'ORDER BY', + 'SELECT', + 'SET CURRENT SCHEMA', + 'SET SCHEMA', + 'SET', + 'UPDATE', + 'VALUES', + 'WHERE', +] + +const reservedTopLevelWordsNoIndent = [ + 'INTERSECT', + 'INTERSECT ALL', + 'MINUS', + 'UNION', + 'UNION ALL', +] + +const reservedNewlineWords = [ + 'AND', + 'CROSS APPLY', + 'CROSS JOIN', + 'ELSE', + 'INNER JOIN', + 'JOIN', + 'LEFT JOIN', + 'LEFT OUTER JOIN', + 'OR', + 'OUTER APPLY', + 'OUTER JOIN', + 'RIGHT JOIN', + 'RIGHT OUTER JOIN', + 'WHEN', + 'XOR', +] + +let tokenizer + +export default class TiDBSQLFormatter { + /** + * @param {Object} cfg Different set of configurations + */ + constructor(public cfg) { + this.cfg = cfg + } + + /** + * Format the whitespace in a Standard SQL string to make it easier to read + * + * @param {String} query The Standard SQL string + * @return {String} formatted string + */ + format(query) { + if (!tokenizer) { + tokenizer = new Tokenizer({ + reservedWords, + reservedTopLevelWords, + reservedNewlineWords, + reservedTopLevelWordsNoIndent, + stringTypes: [`""`, "N''", "''", '``', '[]'], + openParens: ['(', 'CASE'], + closeParens: [')', 'END'], + indexedPlaceholderTypes: ['?'], + namedPlaceholderTypes: [':'], + lineCommentTypes: ['#', '--'], + specialWordChars: ['@'], + }) + } + return new Formatter(this.cfg, tokenizer).format(query) + } +} diff --git a/ui-ori/lib/utils/sqlFormatter/index.ts b/ui-ori/lib/utils/sqlFormatter/index.ts new file mode 100644 index 0000000000..9405055f5f --- /dev/null +++ b/ui-ori/lib/utils/sqlFormatter/index.ts @@ -0,0 +1,7 @@ +import TiDBSQLFormatter from './TiDBSQLFormatter' + +const mySqlFormatter = new TiDBSQLFormatter({ uppercase: true }) + +export default function formatSql(sql?: string): string { + return mySqlFormatter.format(sql || '') +} diff --git a/ui-ori/lib/utils/store.ts b/ui-ori/lib/utils/store.ts new file mode 100644 index 0000000000..91a46ca347 --- /dev/null +++ b/ui-ori/lib/utils/store.ts @@ -0,0 +1,58 @@ +import client, { + ErrorStrategy, + InfoInfoResponse, + InfoWhoAmIResponse, +} from '@lib/client' +import { Store } from 'pullstate' +import { authEvents, EVENT_TOKEN_CHANGED, getAuthToken } from './auth' + +interface StoreState { + whoAmI?: InfoWhoAmIResponse + appInfo?: InfoInfoResponse +} + +export const store = new Store({}) + +export const useIsWriteable = () => + store.useState((s) => Boolean(s.whoAmI && s.whoAmI.is_writeable)) + +export const useIsFeatureSupport = (feature: string) => + store.useState( + (s) => (s.appInfo?.supported_features?.indexOf(feature) ?? -1) !== -1 + ) + +export async function reloadWhoAmI() { + if (!getAuthToken()) { + store.update((s) => { + s.whoAmI = undefined + }) + return + } + + try { + const resp = await client.getInstance().infoWhoami({ + errorStrategy: ErrorStrategy.Custom, + }) + store.update((s) => { + s.whoAmI = resp.data + }) + } catch (ex) { + store.update((s) => { + s.whoAmI = undefined + }) + } +} + +export async function mustLoadAppInfo(): Promise { + const resp = await client.getInstance().infoGet({ + errorStrategy: ErrorStrategy.Custom, + }) + store.update((s) => { + s.appInfo = resp.data + }) + return resp.data +} + +authEvents.on(EVENT_TOKEN_CHANGED, async () => { + await reloadWhoAmI() +}) diff --git a/ui-ori/lib/utils/tableColumnFactory.tsx b/ui-ori/lib/utils/tableColumnFactory.tsx new file mode 100644 index 0000000000..bb2e7e0dba --- /dev/null +++ b/ui-ori/lib/utils/tableColumnFactory.tsx @@ -0,0 +1,335 @@ +import { Tooltip } from 'antd' +import { max as _max, capitalize } from 'lodash' +import { + IColumn, + ColumnActionsMode, +} from 'office-ui-fabric-react/lib/DetailsList' +import React from 'react' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import { + Bar, + Pre, + TextWithInfo, + TextWrap, + DateTime, + HighlightSQL, + IColumnKeys, +} from '@lib/components' + +export type DerivedField = { + displayTransKey?: string // it is same as avg field name default + sources: T[] +} + +export type DerivedBar = DerivedField<{ + tooltipPrefix: string + fieldName: string +}> + +export type DerivedCol = DerivedField + +export function formatVal(val: number, unit: string, decimals: number = 1) { + const formatFn = getValueFormat(unit) + return unit === 'short' ? formatFn(val, 0, decimals) : formatFn(val, decimals) +} + +export function TranslatedColumnName( + transPrefix: string, + fieldName: string +): any { + const fullTransKey = `${transPrefix}.${fieldName}` + return +} + +export class Column { + constructor( + private config: IColumn, + private options: { transPrefix?: string } = {} + ) {} + + getConfig(): IColumn { + const { transPrefix } = this.options + return { + ...this.config, + name: transPrefix + ? TranslatedColumnName(transPrefix, this.config.name) + : this.config.name, + } + } + + setConfig(config: IColumn) { + this.config = config + return this + } + + patchConfig(config: Partial) { + this.config = { ...this.config, ...config } + return this + } +} + +export class ColumnArray { + controls: Column[] + + // could be IColumn or Column mixed array type, not (IColumn | Column)[] type + constructor(controlsConfig: any[]) { + this.controls = controlsConfig.map((c) => + c instanceof Column ? c : new Column(c) + ) + } + + getConfig(): IColumn[] { + return this.controls.map((c) => c.getConfig()) + } +} + +export class TableColumnFactory { + bar: BarColumn = new BarColumn(this) + + private allowColumnsMap: { [f: string]: boolean } + + constructor( + private transPrefix: string, + private allowColumns: string[] = [] + ) { + this.allowColumnsMap = allowColumns.reduce((prev, f) => { + prev[f] = true + return prev + }, {} as { [f: string]: boolean }) + } + + control(config: IColumn): Column { + return new Column(config, { transPrefix: this.transPrefix }) + } + + array(controlsConfig: any[]): ColumnArray { + return new ColumnArray(controlsConfig) + } + + columns(controlsConfig: any[]): IColumn[] { + const columns = this.array(controlsConfig).getConfig() + const needFilterColumn = this.allowColumns.length + if (!needFilterColumn) { + return columns + } + return columns.filter((c) => this.allowColumnsMap[c.fieldName!]) + } + + textWithTooltip( + fieldName: T, + _rows?: U[] + ): Column { + return this.control({ + ...this.getDefaultColumnConfig(fieldName), + maxWidth: 150, + onRender: (rec: U) => ( + + {rec[fieldName]} + + ), + }) + } + + singleBar( + fieldName: T, + unit: string, + rows?: U[] + ): Column { + const capacity = rows ? _max(rows.map((v) => v[fieldName])) ?? 0 : 0 + return this.control({ + ...this.getDefaultColumnConfig(fieldName), + minWidth: 140, + maxWidth: 200, + columnActionsMode: ColumnActionsMode.clickable, + onRender: (rec: U) => { + const fmtVal = formatVal(rec[fieldName]!, unit) + return ( + + {fmtVal} + + ) + }, + }) + } + + multipleBar(barsConfig: DerivedBar, unit: string, rows?: T[]): Column { + const { + displayTransKey, + sources: [avg, max, min], + } = barsConfig + + const tooltipPrefixLens: number[] = [] + + tooltipPrefixLens.push(avg.tooltipPrefix.length) + tooltipPrefixLens.push(max.tooltipPrefix.length) + if (min) { + tooltipPrefixLens.push(min.tooltipPrefix.length) + } + + const maxTooltipPrefixLen = _max(tooltipPrefixLens) || 0 + + const capacity = rows ? _max(rows.map((v) => v[max.fieldName])) ?? 0 : 0 + + return this.control({ + ...this.getDefaultColumnConfig(avg.fieldName), + name: displayTransKey || avg.fieldName, + minWidth: 140, + maxWidth: 200, + columnActionsMode: ColumnActionsMode.clickable, + onRender: (rec) => { + const avgVal = rec[avg.fieldName] + const maxVal = rec[max.fieldName] + const minVal = min ? rec[min.fieldName] : undefined + const tooltips = [avg, min, max] + .filter((el) => el !== undefined) + .map((bar) => { + const prefix = capitalize(bar!.tooltipPrefix + ':').padEnd( + maxTooltipPrefixLen + 2 + ) + const fmtVal = formatVal(rec[bar!.fieldName], unit) + return `${prefix}${fmtVal}` + }) + .join('\n') + return ( + {tooltips.trim()}}> + + {formatVal(avgVal, unit)} + + + ) + }, + }) + } + + timestamp( + fieldName: T, + _rows?: U[] + ): Column { + return this.control({ + ...this.getDefaultColumnConfig(fieldName), + maxWidth: 150, + columnActionsMode: ColumnActionsMode.clickable, + onRender: (rec: U) => ( + + + + ), + }) + } + + sqlText( + fieldName: T, + showFullSQL?: boolean, + _rows?: U[] + ): Column { + return this.control({ + ...this.getDefaultColumnConfig(fieldName), + maxWidth: 500, + isMultiline: showFullSQL, + onRender: (rec: U) => + showFullSQL ? ( + + + + ) : ( + } + placement="right" + > + + + + + ), + }) + } + + private getDefaultColumnConfig(fieldName: string) { + return { + name: fieldName, + key: fieldName, + fieldName: fieldName, + minWidth: 100, + } + } +} + +export class BarColumn { + constructor(public factory: TableColumnFactory) {} + + single( + fieldName: T, + unit: string, + rows?: U[] + ) { + return this.factory.singleBar(fieldName, unit, rows) + } + + multiple(bars: DerivedBar, unit: string, rows?: T[]) { + return this.factory.multipleBar(bars, unit, rows) + } +} + +//////////////////////////////////////////// + +export type DerivedFields = Record< + string, + DerivedBar['sources'] | DerivedCol['sources'] +> + +export function genDerivedBarSources( + avg: string, + max: string, + min?: string +): DerivedBar['sources'] { + const res = [ + { + tooltipPrefix: 'mean', + fieldName: avg, + }, + { + tooltipPrefix: 'max', + fieldName: max, + }, + ] + if (min) { + res.push({ + tooltipPrefix: 'min', + fieldName: min, + }) + } + return res +} + +function isDerivedBarSources(v: any): v is DerivedBar['sources'] { + return !!v[0].fieldName +} + +export function getSelectedFields( + visibleColumnKeys: IColumnKeys, + derivedFields: DerivedFields +) { + let fields: string[] = [] + let sources: DerivedFields[keyof DerivedFields] + for (const columnKey in visibleColumnKeys) { + if (visibleColumnKeys[columnKey]) { + if ((sources = derivedFields[columnKey])) { + if (isDerivedBarSources(sources)) { + fields.push(...sources.map((b) => b.fieldName)) + } else { + fields.push(...sources) + } + } else { + fields.push(columnKey) + } + } + } + return fields +} diff --git a/ui-ori/lib/utils/tableColumns.tsx b/ui-ori/lib/utils/tableColumns.tsx new file mode 100644 index 0000000000..e1be90c17b --- /dev/null +++ b/ui-ori/lib/utils/tableColumns.tsx @@ -0,0 +1,173 @@ +import { Tooltip } from 'antd' +import { max } from 'lodash' +import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' +import React from 'react' +import { useTranslation } from 'react-i18next' +import { getValueFormat } from '@baurine/grafana-value-formats' + +import { Bar, Pre } from '@lib/components' +import { addTranslationResource } from './i18n' +import { TranslatedColumnName } from './tableColumnFactory' + +const translations = { + en: { + name: 'Name', + value: 'Value', + time: 'Time', + desc: 'Description', + }, + zh: { + name: '名称', + value: '值', + time: '时间', + desc: '描述', + }, +} + +for (const key in translations) { + addTranslationResource(key, { + component: { + commonColumn: translations[key], + }, + }) +} + +function TransText({ + transKey, + noFallback, +}: { + transKey: string + noFallback?: boolean +}) { + const { t } = useTranslation() + let opt + if (noFallback) { + opt = { + defaultValue: '', + fallbackLng: '_', + } + } + return {t(transKey, opt)} +} + +//////////////////////////////////// +const TRANS_KEY_PREFIX = 'component.commonColumn' + +function fieldsKeyColumn(transKeyPrefix: string): IColumn { + return { + name: TranslatedColumnName(TRANS_KEY_PREFIX, 'name'), + key: 'key', + minWidth: 150, + maxWidth: 250, + onRender: (rec) => { + return ( +
    + {rec.keyDisplay ?? ( + + )} +
    + ) + }, + } +} + +function fieldsValueColumn(): IColumn { + return { + name: TranslatedColumnName(TRANS_KEY_PREFIX, 'value'), + key: 'value', + fieldName: 'value', + minWidth: 150, + maxWidth: 250, + } +} + +function fieldsTimeValueColumn( + rows?: { avg?: number; min?: number; max?: number; value?: number }[] +): IColumn { + const capacity = rows + ? max(rows.map((v) => max([v.max, v.min, v.avg, v.value]))) ?? 0 + : 0 + return { + name: TranslatedColumnName(TRANS_KEY_PREFIX, 'time'), + key: 'time', + minWidth: 150, + maxWidth: 200, + onRender: (rec) => { + const tooltipContent: string[] = [] + if (rec.avg) { + tooltipContent.push(`Mean: ${getValueFormat('ns')(rec.avg, 1)}`) + } + if (rec.min) { + tooltipContent.push(`Min: ${getValueFormat('ns')(rec.min, 1)}`) + } + if (rec.max) { + tooltipContent.push(`Max: ${getValueFormat('ns')(rec.max, 1)}`) + } + const bar = ( + + {rec.avg != null + ? getValueFormat('ns')(rec.avg, 1) + : getValueFormat('ns')(rec.value, 1)} + + ) + if (tooltipContent.length > 0) { + return ( + {tooltipContent.join('\n').trim()}}> + {bar} + + ) + } else { + return bar + } + }, + } +} + +function fieldsDescriptionColumn(transKeyPrefix: string): IColumn { + return { + name: TranslatedColumnName(TRANS_KEY_PREFIX, 'desc'), + key: 'description', + minWidth: 150, + maxWidth: 300, + onRender: (rec) => { + const content = ( + + ) + return ( + + {content} + + ) + }, + } +} + +//////////////////////////////////////////// + +export function valueColumns(transKeyPrefix: string) { + return [ + fieldsKeyColumn(transKeyPrefix), + fieldsValueColumn(), + fieldsDescriptionColumn(transKeyPrefix), + ] +} + +export function timeValueColumns( + transKeyPrefix: string, + items?: { avg?: number; min?: number; max?: number; value?: number }[] +) { + return [ + fieldsKeyColumn(transKeyPrefix), + fieldsTimeValueColumn(items), + fieldsDescriptionColumn(transKeyPrefix), + ] +} diff --git a/ui-ori/lib/utils/useCache.ts b/ui-ori/lib/utils/useCache.ts new file mode 100644 index 0000000000..a3506edd20 --- /dev/null +++ b/ui-ori/lib/utils/useCache.ts @@ -0,0 +1,69 @@ +import { useRef, createContext } from 'react' + +type CacheItem = { + expireAt: number + data: any +} + +type Cache = Record + +const ONE_HOUR_TIME = 1 * 60 * 60 * 1000 + +export type CacheMgr = { + get: (key: string) => any + set: (key: string, val: any, expire?: number) => void + remove: (key: string) => void +} + +export const CacheContext = createContext(null) + +export default function useCache( + capacity: number = 1, + globalExpire: number = ONE_HOUR_TIME +): CacheMgr { + const cache = useRef({}) + const cacheItemKeys = useRef([]) + + function get(key: string): any { + const item = cache.current[key] + if (item === undefined) { + return undefined + } + if (item.expireAt < new Date().valueOf()) { + remove(key) + return undefined + } + return item.data + } + + function set(key: string, val: any, expire?: number) { + const curTime = new Date().valueOf() + let expireAt: number + if (expire) { + expireAt = curTime + expire + } else { + expireAt = curTime + globalExpire + } + cache.current[key] = { + expireAt, + data: val, + } + + // put the latest key in the end of cacheItemKeys + cacheItemKeys.current = cacheItemKeys.current + .filter((k) => k !== key) + .concat(key) + // if size beyonds the capacity + // remove the old ones + while (capacity > 0 && cacheItemKeys.current.length > capacity) { + remove(cacheItemKeys.current[0]) + } + } + + function remove(key: string) { + delete cache.current[key] + cacheItemKeys.current = cacheItemKeys.current.filter((k) => k !== key) + } + + return { get, set, remove } +} diff --git a/ui-ori/lib/utils/useCacheItemIndex.ts b/ui-ori/lib/utils/useCacheItemIndex.ts new file mode 100644 index 0000000000..cde12ccff0 --- /dev/null +++ b/ui-ori/lib/utils/useCacheItemIndex.ts @@ -0,0 +1,16 @@ +import { CacheMgr } from './useCache' + +export default function useCacheItemIndex(cacheMgr: CacheMgr | null) { + const CLICKED_ITEM_INDEX = 'clicked_item_index' + function saveClickedItemIndex(idx: number) { + cacheMgr?.set(CLICKED_ITEM_INDEX, idx) + } + function getClickedItemIndex(): number { + return cacheMgr?.get(CLICKED_ITEM_INDEX) || -1 + } + + return { + saveClickedItemIndex, + getClickedItemIndex, + } +} diff --git a/ui-ori/lib/utils/useClientRequest.ts b/ui-ori/lib/utils/useClientRequest.ts new file mode 100644 index 0000000000..cdcfd4bbc6 --- /dev/null +++ b/ui-ori/lib/utils/useClientRequest.ts @@ -0,0 +1,288 @@ +import { useMount, useUnmount, usePersistFn } from 'ahooks' +import { useState, useRef, useEffect } from 'react' +import axios, { CancelToken, AxiosPromise, CancelTokenSource } from 'axios' + +import { ErrorStrategy } from '@lib/client' + +export interface ReqConfig { + cancelToken: CancelToken + errorStrategy: ErrorStrategy +} + +export interface RequestFactory { + (reqConfig: ReqConfig): AxiosPromise +} + +interface Options { + immediate?: boolean + afterRequest?: () => void + beforeRequest?: () => void +} + +interface State { + isLoading: boolean + data?: T + error?: any +} + +export function useClientRequest( + reqFactory: RequestFactory, + options?: Options +) { + const { + immediate = true, + afterRequest = null, + beforeRequest = null, + } = options || {} + + const [state, setState] = useState>({ + isLoading: immediate, + }) + + // If `cancelTokenSource` is null, it means there is no running requests. + const cancelTokenSource = useRef(null) + const mounted = useRef(false) + + const sendRequest = usePersistFn(async () => { + if (!mounted.current) { + return + } + if (cancelTokenSource.current) { + return + } + + beforeRequest && beforeRequest() + + cancelTokenSource.current = axios.CancelToken.source() + + setState((s) => ({ + ...s, + isLoading: true, + error: undefined, + })) + + try { + const reqConfig: ReqConfig = { + cancelToken: cancelTokenSource.current.token, + errorStrategy: ErrorStrategy.Custom, // handle the error by component self + } + const resp = await reqFactory(reqConfig) + if (mounted.current) { + setState({ + data: resp.data, + isLoading: false, + }) + } + } catch (e) { + if (mounted.current) { + setState({ + error: e, + isLoading: false, + }) + } + } + + cancelTokenSource.current = null + + afterRequest && afterRequest() + }) + + useMount(() => { + mounted.current = true + if (immediate) { + sendRequest() + } + }) + + useUnmount(() => { + mounted.current = false + if (cancelTokenSource.current != null) { + cancelTokenSource.current.cancel() + cancelTokenSource.current = null + } + }) + + return { + ...state, + sendRequest, + } +} + +export interface BatchState { + isLoading: boolean + data: (T | null)[] + error: (any | null)[] +} + +export function useBatchClientRequest( + reqFactories: RequestFactory[], + options?: Options +) { + const { + immediate = true, + afterRequest = null, + beforeRequest = null, + } = options || {} + + const [state, setState] = useState>({ + isLoading: immediate, + data: reqFactories.map((_) => null), + error: reqFactories.map((_) => null), + }) + + const cancelTokenSource = useRef(null) + const mounted = useRef(false) + + const sendRequestEach = async (idx) => { + try { + const reqConfig: ReqConfig = { + cancelToken: cancelTokenSource.current![idx].token, + errorStrategy: ErrorStrategy.Custom, + } + const resp = await reqFactories[idx](reqConfig) + if (mounted.current) { + setState((s) => { + s.data[idx] = resp.data + return { ...s, data: [...s.data] } + }) + } + } catch (e) { + if (mounted.current) { + setState((s) => { + s.error[idx] = e + return { ...s, error: [...s.error] } + }) + } + } + } + + const sendRequest = usePersistFn(async () => { + if (!mounted.current) { + return + } + if (cancelTokenSource.current) { + return + } + + beforeRequest && beforeRequest() + + cancelTokenSource.current = reqFactories.map((_) => + axios.CancelToken.source() + ) + setState((s) => ({ + ...s, + isLoading: true, + error: reqFactories.map((_) => null), + })) + + const p = reqFactories.map((_, idx) => sendRequestEach(idx)) + await Promise.all(p) + if (mounted.current) { + setState((s) => ({ + ...s, + isLoading: false, + })) + } + + cancelTokenSource.current = null + + afterRequest && afterRequest() + }) + + useMount(() => { + mounted.current = true + if (immediate) { + sendRequest() + } + }) + + useUnmount(() => { + mounted.current = false + if (cancelTokenSource.current != null) { + cancelTokenSource.current.forEach((c) => c.cancel()) + cancelTokenSource.current = null + } + }) + + return { + ...state, + sendRequest, + } +} + +interface OptionsWithPolling extends Options { + pollingInterval?: number + shouldPoll?: ((data: T) => boolean) | null +} + +export function useClientRequestWithPolling( + reqFactory: RequestFactory, + options?: OptionsWithPolling +) { + const { + pollingInterval = 1000, + shouldPoll = null, + afterRequest = null, + beforeRequest = null, + immediate = true, + } = options || {} + const mounted = useRef(false) + const pollingTimer = useRef | null>(null) + + const scheduleNextPoll = () => { + if (pollingTimer.current == null && mounted.current) { + pollingTimer.current = setTimeout(() => { + retRef.current.sendRequest() + pollingTimer.current = null + }, pollingInterval) + } + } + + const cancelNextPoll = () => { + if (pollingTimer.current != null) { + clearTimeout(pollingTimer.current) + pollingTimer.current = null + } + } + + const myBeforeRequest = () => { + beforeRequest?.() + cancelNextPoll() + } + + const myAfterRequest = () => { + let triggerPoll = true + if (retRef.current.error) { + triggerPoll = false + } else if (retRef.current.data && shouldPoll) { + triggerPoll = shouldPoll(retRef.current.data) + } + if (triggerPoll) { + scheduleNextPoll() + } + afterRequest?.() + } + + const ret = useClientRequest(reqFactory, { + immediate, + beforeRequest: myBeforeRequest, + afterRequest: myAfterRequest, + }) + + const retRef = useRef(ret) + + useEffect(() => { + retRef.current = ret + }, [ret]) + + useMount(() => { + mounted.current = true + }) + + useUnmount(() => { + mounted.current = false + cancelNextPoll() + }) + + return ret +} diff --git a/ui-ori/lib/utils/useLocalStorageState.ts b/ui-ori/lib/utils/useLocalStorageState.ts new file mode 100644 index 0000000000..a600c163f0 --- /dev/null +++ b/ui-ori/lib/utils/useLocalStorageState.ts @@ -0,0 +1,14 @@ +import { useLocalStorageState as useAhooksLocalStorageState } from 'ahooks' + +// attachVersion will use the version field in package.json as the postfix for the localstorage key +// we can **update version field in package.json** to upgrade local storage version key +export function useLocalStorageState( + key: string, + defaultValue: T | (() => T), + attachVersion = false +) { + return useAhooksLocalStorageState( + attachVersion ? `${key}.v${process.env.REACT_APP_VERSION}` : key, + defaultValue + ) +} diff --git a/ui-ori/lib/utils/useOrderState.ts b/ui-ori/lib/utils/useOrderState.ts new file mode 100644 index 0000000000..469abae414 --- /dev/null +++ b/ui-ori/lib/utils/useOrderState.ts @@ -0,0 +1,45 @@ +import { useState, useMemo } from 'react' + +import { useLocalStorageState } from './useLocalStorageState' + +export interface IOrderOptions { + orderBy: string + desc: boolean +} + +export default function useOrderState( + storeKeyPrefix: string, + needSave: boolean, + options: IOrderOptions +) { + const storeKey = `${storeKeyPrefix}.order_options` + const [memoryOrderOptions, setMemoryOrderOptions] = useState(options) + const [localOrderOptions, setLocalOrderOptions] = useLocalStorageState( + storeKey, + options, + true + ) + const orderOptions = useMemo( + () => (needSave ? localOrderOptions : memoryOrderOptions), + [needSave, memoryOrderOptions, localOrderOptions] + ) + + function changeOrder(orderBy: string, desc: boolean) { + if (needSave) { + setLocalOrderOptions({ + orderBy, + desc, + }) + } else { + setMemoryOrderOptions({ + orderBy, + desc, + }) + } + } + + return { + orderOptions, + changeOrder, + } +} diff --git a/ui-ori/lib/utils/useQueryParams.ts b/ui-ori/lib/utils/useQueryParams.ts new file mode 100644 index 0000000000..4718326ee7 --- /dev/null +++ b/ui-ori/lib/utils/useQueryParams.ts @@ -0,0 +1,19 @@ +import { useMemo } from 'react' +import { useLocation } from 'react-router' + +export default function useQueryParams() { + // Note: seems that history.location can be outdated sometimes. + + const { search } = useLocation() + + const params = useMemo(() => { + const searchParams = new URLSearchParams(search) + let _params: { [k: string]: any } = {} + for (const [k, v] of searchParams) { + _params[k] = v + } + return _params + }, [search]) + + return params +} diff --git a/ui-ori/lib/utils/wdyr.ts b/ui-ori/lib/utils/wdyr.ts new file mode 100644 index 0000000000..50003057ed --- /dev/null +++ b/ui-ori/lib/utils/wdyr.ts @@ -0,0 +1,7 @@ +import React from 'react' + +if (process.env.NODE_ENV === 'development') { + console.log('Development mode, enable render trackers') + const whyDidYouRender = require('@welldone-software/why-did-you-render') + whyDidYouRender(React) +} diff --git a/ui-ori/package.json b/ui-ori/package.json new file mode 100644 index 0000000000..806068af55 --- /dev/null +++ b/ui-ori/package.json @@ -0,0 +1,123 @@ +{ + "name": "tidb-dashboard-ui", + "version": "0.1.0", + "private": true, + "engines": { + "node": ">=12.0.0" + }, + "dependencies": { + "@ant-design/icons": "^4.2.1", + "@baurine/grafana-value-formats": "^1.0.0", + "@fortawesome/fontawesome-free": "^5.14.0", + "@g07cha/flexbox-react": "^5.0.0", + "@sentry/react": "^6.3.2", + "@sentry/tracing": "^6.3.2", + "@welldone-software/why-did-you-render": "^4.2.7", + "ace-builds": "^1.4.12", + "ahooks": "^2.9.2", + "antd": "~4.8.5", + "axios": "^0.21.1", + "bulma": "^0.9.0", + "classnames": "^2.2.6", + "d3": "^5.16.0", + "dayjs": "^1.9.6", + "echarts": "^4.8.0", + "echarts-for-react": "^2.0.16", + "esbuild": "^0.13.13", + "eventemitter2": "^6.4.4", + "history": "^5.0.0", + "i18next": "^19.6.3", + "i18next-browser-languagedetector": "^5.0.0", + "lodash": "^4.17.21", + "moize": "^5.4.7", + "nprogress": "^0.2.0", + "office-ui-fabric-react": "^7.123.10", + "pullstate": "^1.22.1", + "rc-animate": "^3.1.0", + "react": "^16.13.1", + "react-ace": "^9.1.1", + "react-copy-to-clipboard": "^5.0.2", + "react-dom": "^16.13.1", + "react-highlight-words": "^0.16.0", + "react-i18next": "^11.7.0", + "react-router": "^6.0.0-alpha.3", + "react-router-dom": "^6.0.0-alpha.3", + "react-split": "^2.0.9", + "react-spring": "^8.0.27", + "react-syntax-highlighter": "^13.0.0", + "react-use": "^15.3.3", + "single-spa": "^5.9.2", + "single-spa-react": "^3.0.1", + "sql-formatter-plus-plus": "^1.4.0", + "string-template": "^1.0.0" + }, + "scripts": { + "start": "gulp dev", + "build": "gulp build", + "test": "react-app-rewired test", + "fmt": "prettier --write .", + "gen:browserlist": "gulp gen:browserlist", + "storybook": "start-storybook -p 9009 -s public" + }, + "husky": { + "hooks": { + "pre-commit": "pretty-quick --staged" + } + }, + "homepage": "/dashboard", + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@babel/plugin-proposal-decorators": "^7.10.5", + "@openapitools/openapi-generator-cli": "^1.0.15-4.3.1", + "@storybook/addon-actions": "^6.0.0-rc.3", + "@storybook/addon-links": "^6.0.0-rc.3", + "@storybook/addons": "^6.0.0-rc.3", + "@storybook/preset-create-react-app": "^3.1.4", + "@storybook/react": "^6.0.0-rc.3", + "@types/d3": "^5.7.2", + "@types/live-server": "^1.2.1", + "@types/lodash": "^4.14.158", + "@types/node": "^14.0.27", + "@types/react": "^16.9.43", + "@types/react-copy-to-clipboard": "^5.0.1", + "@types/react-dom": "^16.9.8", + "@types/webpack-env": "^1.15.2", + "babel-plugin-dynamic-import-node": "^2.3.0", + "babel-plugin-import": "^1.13.0", + "browserslist-useragent-regexp": "^2.1.0", + "chokidar": "^3.5.2", + "customize-cra": "^1.0.0", + "esm": "^3.2.25", + "gulp": "^4.0.2", + "gulp-cli": "^2.3.0", + "gulp-shell": "^0.8.0", + "http-proxy-middleware": "^1.0.5", + "husky": "^4.2.5", + "less": "^3.12.2", + "less-loader": "^5.0.0", + "live-server": "^1.2.1", + "prettier": "2.4.1", + "pretty-quick": "^2.0.1", + "react-app-rewire-alias": "^0.1.6", + "react-app-rewire-html-webpack-plugin": "^1.0.3", + "react-app-rewire-multiple-entry": "^2.1.0", + "react-app-rewire-yaml": "^1.1.0", + "react-app-rewired": "^2.1.5", + "react-markdown": "^4.3.1", + "react-scripts": "3.4.1", + "typescript": "^3.9.7", + "webpack-bundle-analyzer": "^3.7.0", + "webpackbar": "^4.0.0" + } +} diff --git a/ui-ori/public/compat.js b/ui-ori/public/compat.js new file mode 100644 index 0000000000..cff5812340 --- /dev/null +++ b/ui-ori/public/compat.js @@ -0,0 +1,64 @@ +// Consider this js file must run normally in the old browsers likes IE 6, +// so we can't use the new grammars and APIs (likes let/const, string interpolator, querySelector, etc) in this file. +// We need to handle the compatibility carefully. + +// This line code is auto generated by `yarn gen:browserlist` command. +// Don't edit it. +var __SUPPORTED_BROWSERS__ = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(9[_\.]3|9[_\.]([4-9]|\d{2,})|([1-9]\d|\d{3,})[_\.]\d+|11[_\.]3|11[_\.]([4-9]|\d{2,})|(1[2-9]|[2-9]\d|\d{3,})[_\.]\d+|12[_\.]0|12[_\.]([1-9]|\d{2,})|12[_\.]4|12[_\.]([5-9]|\d{2,})|(1[3-9]|[2-9]\d|\d{3,})[_\.]\d+|13[_\.]0|13[_\.]([1-9]|\d{2,})|13[_\.]3|13[_\.]([4-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})[_\.]\d+)(?:[_\.]\d+)?)|(CFNetwork\/8.* Darwin\/16\.5\.\d+)|(CFNetwork\/8.* Darwin\/16\.6\.\d+)|(CFNetwork\/8.* Darwin\/16\.7\.\d+)|(SamsungBrowser\/(10\.1|10\.([2-9]|\d{2,})|(1[1-9]|[2-9]\d|\d{3,})\.\d+))|(Edge\/(18(?:\.0)?|18(?:\.([1-9]|\d{2,}))?|(19|[2-9]\d|\d{3,})(?:\.\d+)?))|((Chromium|Chrome)\/(49\.0|49\.([1-9]|\d{2,})|([5-9]\d|\d{3,})\.\d+|79\.0|79\.([1-9]|\d{2,})|([8-9]\d|\d{3,})\.\d+)(?:\.\d+)?([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$)))|(Version\/(12\.1|12\.([2-9]|\d{2,})|(1[3-9]|[2-9]\d|\d{3,})\.\d+|13\.0|13\.([1-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)? Safari\/)|(Trident\/7\.0)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|74\.0|74\.([1-9]|\d{2,})|(7[5-9]|[8-9]\d|\d{3,})\.\d+)\.\d+)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|74\.0|74\.([1-9]|\d{2,})|(7[5-9]|[8-9]\d|\d{3,})\.\d+)(pre|[ab]\d+[a-z]*)?)|(([MS]?IE) (11\.0|11\.([1-9]|\d{2,})|(1[2-9]|[2-9]\d|\d{3,})\.\d+))/ + +function browserLang() { + // https://zzz.buzz/2016/01/13/detect-browser-language-in-javascript/ + // https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a3d78aaf-9f70-4826-954d-19183173c1c3/how-to-change-navigatoruserlanguage-in-ie11 + return ( + (navigator.languages && navigator.languages[0]) || + navigator.language || + navigator.browserLanguage || + navigator.userLanguage || + 'en' + ) +} + +function checkBrowser() { + if (!__SUPPORTED_BROWSERS__.test(navigator.userAgent)) { + var text + if (browserLang().indexOf('zh') === 0) { + text = + '一些功能在此浏览器上可能无法工作,请使用最新版本的 Chrome/Edge/Firefox/Safari 浏览器。' + } else { + text = + 'Some features may not work in your browser. Please use latest Chrome/Edge/Firefox/Safari browsers.' + } + + const content = + '
    ' + + '' + + text + + 'X
    ' + + var d = document.createElement('div') + d.innerHTML = content + d.getElementsByTagName('a')[0].onclick = function () { + d.getElementsByTagName('div')[0].style.top = '-60px' + } + document.body.insertBefore(d, document.body.firstChild) + } +} + +checkBrowser() + +// Dealing with compatibility issues manually for special cases + +// Object.entries +// see https://github.com/pingcap/tidb-dashboard/issues/770 +// polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries +if (!Object.entries) { + Object.entries = function( obj ){ + var ownProps = Object.keys( obj ), + i = ownProps.length, + resArray = new Array(i); // preallocate the Array + while (i--) + resArray[i] = [ownProps[i], obj[ownProps[i]]]; + + return resArray; + }; +} diff --git a/ui-ori/public/diagnoseReport.html b/ui-ori/public/diagnoseReport.html new file mode 100644 index 0000000000..07ef29efed --- /dev/null +++ b/ui-ori/public/diagnoseReport.html @@ -0,0 +1,21 @@ + + + + + + + + + <%= htmlWebpackPlugin.options.distro_tidb %> Dashboard Diagnosis Report + + + + + + +
    + + diff --git a/ui-ori/public/favicon.ico b/ui-ori/public/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..9d5d2b14e13a2802cf3d0da548c89c751a4aa180 GIT binary patch literal 15406 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 + + + + + + + + + <%= htmlWebpackPlugin.options.distro_tidb %> Dashboard + + + + +
    +
    + + diff --git a/ui-ori/public/robots.txt b/ui-ori/public/robots.txt new file mode 100644 index 0000000000..01b0f9a107 --- /dev/null +++ b/ui-ori/public/robots.txt @@ -0,0 +1,2 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * diff --git a/ui-ori/src/index.ts b/ui-ori/src/index.ts new file mode 100644 index 0000000000..431457d34d --- /dev/null +++ b/ui-ori/src/index.ts @@ -0,0 +1,4 @@ +import './publicPath' +import './sentry' + +import '@dashboard' diff --git a/ui-ori/src/publicPath.ts b/ui-ori/src/publicPath.ts new file mode 100644 index 0000000000..a5bc5bd8fb --- /dev/null +++ b/ui-ori/src/publicPath.ts @@ -0,0 +1,2 @@ +import publicPathPrefix from '@lib/utils/publicPathPrefix' +__webpack_public_path__ = publicPathPrefix + '/' diff --git a/ui-ori/src/react-app-env.d.ts b/ui-ori/src/react-app-env.d.ts new file mode 100644 index 0000000000..fd6e7f08fc --- /dev/null +++ b/ui-ori/src/react-app-env.d.ts @@ -0,0 +1,11 @@ +/// + +declare module '*.module.css' { + const classes: { readonly [key: string]: string } + export default classes +} + +declare module '*.module.less' { + const classes: { readonly [key: string]: string } + export default classes +} diff --git a/ui-ori/src/sentry.ts b/ui-ori/src/sentry.ts new file mode 100644 index 0000000000..5f8e300e03 --- /dev/null +++ b/ui-ori/src/sentry.ts @@ -0,0 +1,24 @@ +import * as Sentry from '@sentry/react' +import { Integrations } from '@sentry/tracing' + +import { sentryEnabled } from '@lib/utils/sentryHelpers' + +if (sentryEnabled) { + const release = process.env.REACT_APP_RELEASE_VERSION + + // this is on purpose + console.log('current release: ', release) + + const SAMPLE_RATE_PROD = 0.6 + + // sentry also provides a beforeSend hook, but it intentionally ignores transactions. + // see https://github.com/getsentry/sentry-javascript/blob/de87032dbe0dc4720400e92f673c5292d452f51c/packages/core/src/baseclient.ts#L510-L512 + Sentry.init({ + dsn: process.env.REACT_APP_SENTRY_DSN, + integrations: [new Integrations.BrowserTracing()], + tracesSampleRate: + process.env.NODE_ENV === 'production' ? SAMPLE_RATE_PROD : 1.0, + release, + environment: process.env.NODE_ENV, + }) +} diff --git a/ui-ori/src/setupProxy.js b/ui-ori/src/setupProxy.js new file mode 100644 index 0000000000..aa14ca8cba --- /dev/null +++ b/ui-ori/src/setupProxy.js @@ -0,0 +1,30 @@ +const { paths } = require('react-app-rewired') +const { createProxyMiddleware } = require('http-proxy-middleware') + +const dashboardApiPrefix = + process.env.REACT_APP_DASHBOARD_API_URL || 'http://127.0.0.1:12333' + +// The diagnose report will be served via WebpackDevServer. + +// In debug mode, frontend host is localhost:3001, while the backend is 127.0.0.1:12333 +// In productio mode, frontend and backend host is the same +module.exports = function (app) { + // Proxy the `data.js` trick to the backend server. + // Proxy http://localhost:3001/dashboard/api/diagnose/reports/*/data.js to + // http://127.0.0.1:12333/dashboard/api/diagnose/reports/*/data.js + app.use( + '/', + createProxyMiddleware('/dashboard/api/diagnose/reports/*/data.js', { + target: dashboardApiPrefix, + changeOrigin: true, + }) + ) + + // Rewrite the webpage to our static HTML. + // Rewrite http://localhost:3001/dashboard/api/diagnose/reports/*/detail + // to http://localhost:3001/dashboard/diagnoseReport.html + app.use('/dashboard/api/diagnose/reports/:id/detail', function (req, res) { + req.url = paths.publicUrlOrPath + 'diagnoseReport.html' + app.handle(req, res) + }) +} diff --git a/ui-ori/tests/config-portal-test.html b/ui-ori/tests/config-portal-test.html new file mode 100755 index 0000000000..5a9568925f --- /dev/null +++ b/ui-ori/tests/config-portal-test.html @@ -0,0 +1,58 @@ + + + + + + + TiDB Dashboard iframe Test + + + +
    +

    iframe test

    + +
    + +
    +
    + + diff --git a/ui-ori/tests/e2e/_config.ts b/ui-ori/tests/e2e/_config.ts new file mode 100644 index 0000000000..384c05c1aa --- /dev/null +++ b/ui-ori/tests/e2e/_config.ts @@ -0,0 +1,4 @@ +export const SERVER_URL = + (process.env.SERVER_URL || 'http://localhost:3001/dashboard') + '#' +export const LOGIN_URL = SERVER_URL + '/signin' +export const OVERVIEW_URL = SERVER_URL + '/overview' diff --git a/ui-ori/tests/e2e/_preset.js b/ui-ori/tests/e2e/_preset.js new file mode 100644 index 0000000000..b65d085471 --- /dev/null +++ b/ui-ori/tests/e2e/_preset.js @@ -0,0 +1,4 @@ +const ts_preset = require('ts-jest/jest-preset') +const puppeteer_preset = require('jest-puppeteer/jest-preset') + +module.exports = Object.assign(ts_preset, puppeteer_preset) diff --git a/ui-ori/tests/e2e/_setup.js b/ui-ori/tests/e2e/_setup.js new file mode 100644 index 0000000000..719a473b6e --- /dev/null +++ b/ui-ori/tests/e2e/_setup.js @@ -0,0 +1 @@ +jest.setTimeout(10000) diff --git a/ui-ori/tests/e2e/search_log.test.ts b/ui-ori/tests/e2e/search_log.test.ts new file mode 100644 index 0000000000..e8ab6635c8 --- /dev/null +++ b/ui-ori/tests/e2e/search_log.test.ts @@ -0,0 +1,39 @@ +import 'expect-puppeteer' +import { do_sign_in } from './utils/sign_in' + +describe('Search Logs', () => { + it( + 'should search correct logs', + async () => { + await do_sign_in() + + await Promise.all([page.waitForNavigation(), page.click('a#search_logs')]) + + // Fill keyword + await expect(page).toFill('[data-e2e="log_search_keywords"]', 'Welcome') + + // Deselect PD instance + await page.click('[data-e2e="log_search_instances"]') + await expect(page).toClick( + '[data-e2e="log_search_instances_drop"] .ms-GroupHeader-title', + { + text: 'PD', + } + ) + await page.click('[data-e2e="log_search_instances"]') + + // Start search + await page.click('[data-e2e="log_search_submit"]') + + await page.waitForSelector('[data-e2e="log_search_result"]') + await page.waitForFunction( + `document + .querySelector('[data-e2e="log_search_result"]') + .innerText + .includes("Welcome to TiDB")`, + { timeout: 5000 } + ) + }, + 30 * 1000 + ) +}) diff --git a/ui-ori/tests/e2e/sign_in.test.ts b/ui-ori/tests/e2e/sign_in.test.ts new file mode 100644 index 0000000000..5e20fae316 --- /dev/null +++ b/ui-ori/tests/e2e/sign_in.test.ts @@ -0,0 +1,28 @@ +import 'expect-puppeteer' +import { do_sign_in } from './utils/sign_in' +import { LOGIN_URL, OVERVIEW_URL } from './_config' + +describe('Sign In', () => { + it('should fail to sign in using incorrect password', async () => { + await page.goto(LOGIN_URL) + + await expect(page).toFill( + '[data-e2e="signin_password_input"]', + 'incorrect_password' + ) + await expect(page).toClick('[data-e2e="signin_submit"]') + await page.waitForFunction( + `document + .querySelector('[data-e2e="signin_password_form_item"]') + .innerText + .includes("TiDB authentication failed")`, + { timeout: 5000 } + ) + }) + + it('should sign in using correct password', async () => { + await do_sign_in() + const url = await page.url() + expect(url).toBe(OVERVIEW_URL) + }) +}) diff --git a/ui-ori/tests/e2e/utils/sign_in.ts b/ui-ori/tests/e2e/utils/sign_in.ts new file mode 100644 index 0000000000..e358fc6e84 --- /dev/null +++ b/ui-ori/tests/e2e/utils/sign_in.ts @@ -0,0 +1,11 @@ +import { LOGIN_URL } from '../_config' + +export async function do_sign_in() { + await page.goto(LOGIN_URL) + await page.waitForSelector('[data-e2e="signin_submit"]') + + await Promise.all([ + page.waitForNavigation(), + page.click('[data-e2e="signin_submit"]'), + ]) +} diff --git a/ui-ori/tests/jest-puppeteer.config.js b/ui-ori/tests/jest-puppeteer.config.js new file mode 100644 index 0000000000..c52e6f49c5 --- /dev/null +++ b/ui-ori/tests/jest-puppeteer.config.js @@ -0,0 +1,5 @@ +module.exports = { + launch: { + headless: process.env.HEADLESS !== 'false', + }, +} diff --git a/ui-ori/tests/jest.config.js b/ui-ori/tests/jest.config.js new file mode 100644 index 0000000000..1fb0901893 --- /dev/null +++ b/ui-ori/tests/jest.config.js @@ -0,0 +1,4 @@ +module.exports = { + preset: './e2e/_preset.js', + setupFilesAfterEnv: ['expect-puppeteer', './e2e/_setup.js'], +} diff --git a/ui-ori/tests/package.json b/ui-ori/tests/package.json new file mode 100644 index 0000000000..f37afc0cef --- /dev/null +++ b/ui-ori/tests/package.json @@ -0,0 +1,20 @@ +{ + "name": "tests", + "version": "1.0.0", + "license": "MIT", + "scripts": { + "test": "jest --runInBand" + }, + "devDependencies": { + "@types/expect-puppeteer": "^4.4.0", + "@types/jest": "^25.1.4", + "@types/jest-environment-puppeteer": "^4.4.0", + "@types/puppeteer": "^2.0.1", + "expect-puppeteer": "^4.4.0", + "jest": "^25.1.0", + "jest-puppeteer": "^4.4.0", + "puppeteer": "^2.1.1", + "ts-jest": "^25.2.1", + "typescript": "^3.7.4" + } +} diff --git a/ui-ori/tests/tsconfig.json b/ui-ori/tests/tsconfig.json new file mode 100644 index 0000000000..09ccb2c636 --- /dev/null +++ b/ui-ori/tests/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig.json", + "include": ["e2e"], + "exclude": ["node_modules"] +} diff --git a/ui-ori/tests/yarn.lock b/ui-ori/tests/yarn.lock new file mode 100644 index 0000000000..f02b7e1528 --- /dev/null +++ b/ui-ori/tests/yarn.lock @@ -0,0 +1,4101 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/core@^7.1.0", "@babel/core@^7.7.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" + integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== + dependencies: + "@babel/types" "^7.9.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@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" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@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" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@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" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + +"@babel/plugin-syntax-bigint@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/template@^7.7.4", "@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" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + 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.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.3": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@jest/console@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.1.0.tgz#1fc765d44a1e11aec5029c08e798246bd37075ab" + integrity sha512-3P1DpqAMK/L07ag/Y9/Jup5iDEG9P4pRAuZiMQnU0JB3UOvCyYCjCoxr7sIA80SeyUCUKrr24fKAxVpmBgQonA== + dependencies: + "@jest/source-map" "^25.1.0" + chalk "^3.0.0" + jest-util "^25.1.0" + slash "^3.0.0" + +"@jest/core@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.1.0.tgz#3d4634fc3348bb2d7532915d67781cdac0869e47" + integrity sha512-iz05+NmwCmZRzMXvMo6KFipW7nzhbpEawrKrkkdJzgytavPse0biEnCNr2wRlyCsp3SmKaEY+SGv7YWYQnIdig== + dependencies: + "@jest/console" "^25.1.0" + "@jest/reporters" "^25.1.0" + "@jest/test-result" "^25.1.0" + "@jest/transform" "^25.1.0" + "@jest/types" "^25.1.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + exit "^0.1.2" + graceful-fs "^4.2.3" + jest-changed-files "^25.1.0" + jest-config "^25.1.0" + jest-haste-map "^25.1.0" + jest-message-util "^25.1.0" + jest-regex-util "^25.1.0" + jest-resolve "^25.1.0" + jest-resolve-dependencies "^25.1.0" + jest-runner "^25.1.0" + jest-runtime "^25.1.0" + jest-snapshot "^25.1.0" + jest-util "^25.1.0" + jest-validate "^25.1.0" + jest-watcher "^25.1.0" + micromatch "^4.0.2" + p-each-series "^2.1.0" + realpath-native "^1.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.1.0.tgz#4a97f64770c9d075f5d2b662b5169207f0a3f787" + integrity sha512-cTpUtsjU4cum53VqBDlcW0E4KbQF03Cn0jckGPW/5rrE9tb+porD3+hhLtHAwhthsqfyF+bizyodTlsRA++sHg== + dependencies: + "@jest/fake-timers" "^25.1.0" + "@jest/types" "^25.1.0" + jest-mock "^25.1.0" + +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.1.0.tgz#a1e0eff51ffdbb13ee81f35b52e0c1c11a350ce8" + integrity sha512-Eu3dysBzSAO1lD7cylZd/CVKdZZ1/43SF35iYBNV1Lvvn2Undp3Grwsv8PrzvbLhqwRzDd4zxrY4gsiHc+wygQ== + dependencies: + "@jest/types" "^25.1.0" + jest-message-util "^25.1.0" + jest-mock "^25.1.0" + jest-util "^25.1.0" + lolex "^5.0.0" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/reporters@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.1.0.tgz#9178ecf136c48f125674ac328f82ddea46e482b0" + integrity sha512-ORLT7hq2acJQa8N+NKfs68ZtHFnJPxsGqmofxW7v7urVhzJvpKZG9M7FAcgh9Ee1ZbCteMrirHA3m5JfBtAaDg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^25.1.0" + "@jest/environment" "^25.1.0" + "@jest/test-result" "^25.1.0" + "@jest/transform" "^25.1.0" + "@jest/types" "^25.1.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.0" + jest-haste-map "^25.1.0" + jest-resolve "^25.1.0" + jest-runtime "^25.1.0" + jest-util "^25.1.0" + jest-worker "^25.1.0" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^3.1.0" + terminal-link "^2.0.0" + v8-to-istanbul "^4.0.1" + optionalDependencies: + node-notifier "^6.0.0" + +"@jest/source-map@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.1.0.tgz#b012e6c469ccdbc379413f5c1b1ffb7ba7034fb0" + integrity sha512-ohf2iKT0xnLWcIUhL6U6QN+CwFWf9XnrM2a6ybL9NXxJjgYijjLSitkYHIdzkd8wFliH73qj/+epIpTiWjRtAA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.3" + source-map "^0.6.0" + +"@jest/test-result@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.1.0.tgz#847af2972c1df9822a8200457e64be4ff62821f7" + integrity sha512-FZzSo36h++U93vNWZ0KgvlNuZ9pnDnztvaM7P/UcTx87aPDotG18bXifkf1Ji44B7k/eIatmMzkBapnAzjkJkg== + dependencies: + "@jest/console" "^25.1.0" + "@jest/transform" "^25.1.0" + "@jest/types" "^25.1.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.1.0.tgz#4df47208542f0065f356fcdb80026e3c042851ab" + integrity sha512-WgZLRgVr2b4l/7ED1J1RJQBOharxS11EFhmwDqknpknE0Pm87HLZVS2Asuuw+HQdfQvm2aXL2FvvBLxOD1D0iw== + dependencies: + "@jest/test-result" "^25.1.0" + jest-haste-map "^25.1.0" + jest-runner "^25.1.0" + jest-runtime "^25.1.0" + +"@jest/transform@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.1.0.tgz#221f354f512b4628d88ce776d5b9e601028ea9da" + integrity sha512-4ktrQ2TPREVeM+KxB4zskAT84SnmG1vaz4S+51aTefyqn3zocZUnliLLm5Fsl85I3p/kFPN4CRp1RElIfXGegQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^25.1.0" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.3" + jest-haste-map "^25.1.0" + jest-regex-util "^25.1.0" + jest-util "^25.1.0" + micromatch "^4.0.2" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@>=24 && <=26", "@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395" + integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@sinonjs/commons@^1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" + integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@types/babel__core@^7.1.0": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" + integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" + integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/expect-puppeteer@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@types/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz#8e1ee1e7ed7e12f36efcfe81c17d4d6b817cb3d2" + integrity sha512-j2zKlMms/qrdr5clPWWnhTqFGc2HFWv465gowMmCfBkorrFhDXpYgTduJRFSAwYcmNOopK5pgNXKb7dwon8pqQ== + dependencies: + "@types/jest" "*" + "@types/puppeteer" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest-environment-puppeteer@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@types/jest-environment-puppeteer/-/jest-environment-puppeteer-4.4.0.tgz#8d343035934610accdbfd4582e765823b948aa94" + integrity sha512-BjJWUmaui6CZE449y/xGVPPvOcNwlHZXxWekv38kZqu1Pda+Jn90pKaxWtxM5NAC2HaUEabsCWlTeHiJvno/hg== + dependencies: + "@jest/types" ">=24 && <=26" + "@types/puppeteer" "*" + jest-environment-node ">=24 && <=26" + +"@types/jest@*", "@types/jest@^25.1.4": + version "25.1.4" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760" + integrity sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw== + dependencies: + jest-diff "^25.1.0" + pretty-format "^25.1.0" + +"@types/mime-types@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" + integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= + +"@types/node@*": + version "13.9.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d" + integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA== + +"@types/puppeteer@*", "@types/puppeteer@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-2.0.1.tgz#83a1d7f0a1c2e0edbbb488b4d8fb54b14ec9d455" + integrity sha512-G8vEyU83Bios+dzs+DZGpAirDmMqRhfFBJCkFrg+A5+6n5EPPHxwBLImJto3qjh0mrBXbLBCyuahhhtTrAfR5g== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^15.0.0": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" + integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + dependencies: + "@types/yargs-parser" "*" + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +acorn-globals@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^6.0.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + +ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +babel-jest@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.1.0.tgz#206093ac380a4b78c4404a05b3277391278f80fb" + integrity sha512-tz0VxUhhOE2y+g8R2oFrO/2VtVjA1lkJeavlhExuRBg3LdNJY9gwQ+Vcvqt9+cqy71MCTJhewvTB7Qtnnr9SWg== + dependencies: + "@jest/transform" "^25.1.0" + "@jest/types" "^25.1.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.1.0" + chalk "^3.0.0" + slash "^3.0.0" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.1.0.tgz#fb62d7b3b53eb36c97d1bc7fec2072f9bd115981" + integrity sha512-oIsopO41vW4YFZ9yNYoLQATnnN46lp+MZ6H4VvPKFkcc2/fkl3CfE/NZZSmnEIEsJRmJAgkVEK0R7Zbl50CpTw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-preset-jest@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.1.0.tgz#d0aebfebb2177a21cde710996fce8486d34f1d33" + integrity sha512-eCGn64olaqwUMaugXsTtGAM2I0QTahjEtnRu0ql8Ie+gDWAc1N6wqN0k2NilnyTunM69Pad7gJY7LOtwLimoFQ== + dependencies: + "@babel/plugin-syntax-bigint" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^25.1.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@1.x, buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +collect-v8-coverage@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" + integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + 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== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssom@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" + integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== + dependencies: + cssom "~0.3.6" + +cwd@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" + integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= + dependencies: + find-pkg "^0.1.2" + fs-exists-sync "^0.1.0" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32" + integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= + dependencies: + os-homedir "^1.0.1" + +expect-puppeteer@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz#1c948af08acdd6c8cbdb7f90e617f44d86888886" + integrity sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA== + +expect@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.1.0.tgz#7e8d7b06a53f7d66ec927278db3304254ee683ee" + integrity sha512-wqHzuoapQkhc3OKPlrpetsfueuEiMf3iWh0R8+duCu9PIjXoP7HgD5aeypwTnXUAjC8aMsiVDaWwlbJ1RlQ38g== + dependencies: + "@jest/types" "^25.1.0" + ansi-styles "^4.0.0" + jest-get-type "^25.1.0" + jest-matcher-utils "^25.1.0" + jest-message-util "^25.1.0" + jest-regex-util "^25.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-zip@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" + integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= + dependencies: + concat-stream "1.6.2" + debug "2.6.9" + mkdirp "0.5.1" + yauzl "2.4.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= + dependencies: + pend "~1.2.0" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-file-up@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" + integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= + dependencies: + fs-exists-sync "^0.1.0" + resolve-dir "^0.1.0" + +find-pkg@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" + integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= + dependencies: + find-file-up "^0.1.2" + +find-process@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.4.tgz#52820561162fda0d1feef9aed5d56b3787f0fd6e" + integrity sha512-rRSuT1LE4b+BFK588D2V8/VG9liW0Ark1XJgroxZXI0LtwmQJOb490DvDYvbm+Hek9ETFzTutGfJ90gumITPhQ== + dependencies: + chalk "^4.0.0" + commander "^5.1.0" + debug "^4.1.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +homedir-polyfill@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-escaper@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" + integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== + dependencies: + agent-base "5" + debug "4" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" + integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== + dependencies: + "@babel/core" "^7.7.5" + "@babel/parser" "^7.7.5" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.0.tgz#d4d16d035db99581b6194e119bbf36c963c5eb70" + integrity sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.1.0.tgz#73dae9a7d9949fdfa5c278438ce8f2ff3ec78131" + integrity sha512-bdL1aHjIVy3HaBO3eEQeemGttsq1BDlHgWcOjEOIAcga7OOEGWHD2WSu8HhL7I1F0mFFyci8VKU4tRNk+qtwDA== + dependencies: + "@jest/types" "^25.1.0" + execa "^3.2.0" + throat "^5.0.0" + +jest-cli@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.1.0.tgz#75f0b09cf6c4f39360906bf78d580be1048e4372" + integrity sha512-p+aOfczzzKdo3AsLJlhs8J5EW6ffVidfSZZxXedJ0mHPBOln1DccqFmGCoO8JWd4xRycfmwy1eoQkMsF8oekPg== + dependencies: + "@jest/core" "^25.1.0" + "@jest/test-result" "^25.1.0" + "@jest/types" "^25.1.0" + chalk "^3.0.0" + exit "^0.1.2" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^25.1.0" + jest-util "^25.1.0" + jest-validate "^25.1.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^15.0.0" + +jest-config@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.1.0.tgz#d114e4778c045d3ef239452213b7ad3ec1cbea90" + integrity sha512-tLmsg4SZ5H7tuhBC5bOja0HEblM0coS3Wy5LTCb2C8ZV6eWLewHyK+3qSq9Bi29zmWQ7ojdCd3pxpx4l4d2uGw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^25.1.0" + "@jest/types" "^25.1.0" + babel-jest "^25.1.0" + chalk "^3.0.0" + glob "^7.1.1" + jest-environment-jsdom "^25.1.0" + jest-environment-node "^25.1.0" + jest-get-type "^25.1.0" + jest-jasmine2 "^25.1.0" + jest-regex-util "^25.1.0" + jest-resolve "^25.1.0" + jest-util "^25.1.0" + jest-validate "^25.1.0" + micromatch "^4.0.2" + pretty-format "^25.1.0" + realpath-native "^1.1.0" + +jest-dev-server@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/jest-dev-server/-/jest-dev-server-4.4.0.tgz#557113faae2877452162696aa94c1e44491ab011" + integrity sha512-STEHJ3iPSC8HbrQ3TME0ozGX2KT28lbT4XopPxUm2WimsX3fcB3YOptRh12YphQisMhfqNSNTZUmWyT3HEXS2A== + dependencies: + chalk "^3.0.0" + cwd "^0.10.0" + find-process "^1.4.3" + prompts "^2.3.0" + spawnd "^4.4.0" + tree-kill "^1.2.2" + wait-on "^3.3.0" + +jest-diff@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.1.0.tgz#58b827e63edea1bc80c1de952b80cec9ac50e1ad" + integrity sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.1.0" + jest-get-type "^25.1.0" + pretty-format "^25.1.0" + +jest-docblock@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.1.0.tgz#0f44bea3d6ca6dfc38373d465b347c8818eccb64" + integrity sha512-370P/mh1wzoef6hUKiaMcsPtIapY25suP6JqM70V9RJvdKLrV4GaGbfUseUVk4FZJw4oTZ1qSCJNdrClKt5JQA== + dependencies: + detect-newline "^3.0.0" + +jest-each@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.1.0.tgz#a6b260992bdf451c2d64a0ccbb3ac25e9b44c26a" + integrity sha512-R9EL8xWzoPySJ5wa0DXFTj7NrzKpRD40Jy+zQDp3Qr/2QmevJgkN9GqioCGtAJ2bW9P/MQRznQHQQhoeAyra7A== + dependencies: + "@jest/types" "^25.1.0" + chalk "^3.0.0" + jest-get-type "^25.1.0" + jest-util "^25.1.0" + pretty-format "^25.1.0" + +jest-environment-jsdom@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.1.0.tgz#6777ab8b3e90fd076801efd3bff8e98694ab43c3" + integrity sha512-ILb4wdrwPAOHX6W82GGDUiaXSSOE274ciuov0lztOIymTChKFtC02ddyicRRCdZlB5YSrv3vzr1Z5xjpEe1OHQ== + dependencies: + "@jest/environment" "^25.1.0" + "@jest/fake-timers" "^25.1.0" + "@jest/types" "^25.1.0" + jest-mock "^25.1.0" + jest-util "^25.1.0" + jsdom "^15.1.1" + +"jest-environment-node@>=24 && <=26": + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-environment-node@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.1.0.tgz#797bd89b378cf0bd794dc8e3dca6ef21126776db" + integrity sha512-U9kFWTtAPvhgYY5upnH9rq8qZkj6mYLup5l1caAjjx9uNnkLHN2xgZy5mo4SyLdmrh/EtB9UPpKFShvfQHD0Iw== + dependencies: + "@jest/environment" "^25.1.0" + "@jest/fake-timers" "^25.1.0" + "@jest/types" "^25.1.0" + jest-mock "^25.1.0" + jest-util "^25.1.0" + +jest-environment-puppeteer@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-puppeteer/-/jest-environment-puppeteer-4.4.0.tgz#d82a37e0e0c51b63cc6b15dea101d53967508860" + integrity sha512-iV8S8+6qkdTM6OBR/M9gKywEk8GDSOe05hspCs5D8qKSwtmlUfdtHfB4cakdc68lC6YfK3AUsLirpfgodCHjzQ== + dependencies: + chalk "^3.0.0" + cwd "^0.10.0" + jest-dev-server "^4.4.0" + merge-deep "^3.0.2" + +jest-get-type@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876" + integrity sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw== + +jest-haste-map@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.1.0.tgz#ae12163d284f19906260aa51fd405b5b2e5a4ad3" + integrity sha512-/2oYINIdnQZAqyWSn1GTku571aAfs8NxzSErGek65Iu5o8JYb+113bZysRMcC/pjE5v9w0Yz+ldbj9NxrFyPyw== + dependencies: + "@jest/types" "^25.1.0" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.3" + jest-serializer "^25.1.0" + jest-util "^25.1.0" + jest-worker "^25.1.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.1.0.tgz#681b59158a430f08d5d0c1cce4f01353e4b48137" + integrity sha512-GdncRq7jJ7sNIQ+dnXvpKO2MyP6j3naNK41DTTjEAhLEdpImaDA9zSAZwDhijjSF/D7cf4O5fdyUApGBZleaEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^25.1.0" + "@jest/source-map" "^25.1.0" + "@jest/test-result" "^25.1.0" + "@jest/types" "^25.1.0" + chalk "^3.0.0" + co "^4.6.0" + expect "^25.1.0" + is-generator-fn "^2.0.0" + jest-each "^25.1.0" + jest-matcher-utils "^25.1.0" + jest-message-util "^25.1.0" + jest-runtime "^25.1.0" + jest-snapshot "^25.1.0" + jest-util "^25.1.0" + pretty-format "^25.1.0" + throat "^5.0.0" + +jest-leak-detector@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.1.0.tgz#ed6872d15aa1c72c0732d01bd073dacc7c38b5c6" + integrity sha512-3xRI264dnhGaMHRvkFyEKpDeaRzcEBhyNrOG5oT8xPxOyUAblIAQnpiR3QXu4wDor47MDTiHbiFcbypdLcLW5w== + dependencies: + jest-get-type "^25.1.0" + pretty-format "^25.1.0" + +jest-matcher-utils@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220" + integrity sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ== + dependencies: + chalk "^3.0.0" + jest-diff "^25.1.0" + jest-get-type "^25.1.0" + pretty-format "^25.1.0" + +jest-message-util@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.1.0.tgz#702a9a5cb05c144b9aa73f06e17faa219389845e" + integrity sha512-Nr/Iwar2COfN22aCqX0kCVbXgn8IBm9nWf4xwGr5Olv/KZh0CZ32RKgZWMVDXGdOahicM10/fgjdimGNX/ttCQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^25.1.0" + "@jest/types" "^25.1.0" + "@types/stack-utils" "^1.0.1" + chalk "^3.0.0" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^1.0.1" + +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.1.0.tgz#411d549e1b326b7350b2e97303a64715c28615fd" + integrity sha512-28/u0sqS+42vIfcd1mlcg4ZVDmSUYuNvImP4X2lX5hRMLW+CN0BeiKVD4p+ujKKbSPKd3rg/zuhCF+QBLJ4vag== + dependencies: + "@jest/types" "^25.1.0" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-puppeteer@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/jest-puppeteer/-/jest-puppeteer-4.4.0.tgz#4b906e638a5e3782ed865e7b673c82047b85952e" + integrity sha512-ZaiCTlPZ07B9HW0erAWNX6cyzBqbXMM7d2ugai4epBDKpKvRDpItlRQC6XjERoJELKZsPziFGS0OhhUvTvQAXA== + dependencies: + expect-puppeteer "^4.4.0" + jest-environment-puppeteer "^4.4.0" + +jest-regex-util@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.1.0.tgz#efaf75914267741838e01de24da07b2192d16d87" + integrity sha512-9lShaDmDpqwg+xAd73zHydKrBbbrIi08Kk9YryBEBybQFg/lBWR/2BDjjiSE7KIppM9C5+c03XiDaZ+m4Pgs1w== + +jest-resolve-dependencies@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.1.0.tgz#8a1789ec64eb6aaa77fd579a1066a783437e70d2" + integrity sha512-Cu/Je38GSsccNy4I2vL12ZnBlD170x2Oh1devzuM9TLH5rrnLW1x51lN8kpZLYTvzx9j+77Y5pqBaTqfdzVzrw== + dependencies: + "@jest/types" "^25.1.0" + jest-regex-util "^25.1.0" + jest-snapshot "^25.1.0" + +jest-resolve@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.1.0.tgz#23d8b6a4892362baf2662877c66aa241fa2eaea3" + integrity sha512-XkBQaU1SRCHj2Evz2Lu4Czs+uIgJXWypfO57L7JYccmAXv4slXA6hzNblmcRmf7P3cQ1mE7fL3ABV6jAwk4foQ== + dependencies: + "@jest/types" "^25.1.0" + browser-resolve "^1.11.3" + chalk "^3.0.0" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.1.0.tgz#fef433a4d42c89ab0a6b6b268e4a4fbe6b26e812" + integrity sha512-su3O5fy0ehwgt+e8Wy7A8CaxxAOCMzL4gUBftSs0Ip32S0epxyZPDov9Znvkl1nhVOJNf4UwAsnqfc3plfQH9w== + dependencies: + "@jest/console" "^25.1.0" + "@jest/environment" "^25.1.0" + "@jest/test-result" "^25.1.0" + "@jest/types" "^25.1.0" + chalk "^3.0.0" + exit "^0.1.2" + graceful-fs "^4.2.3" + jest-config "^25.1.0" + jest-docblock "^25.1.0" + jest-haste-map "^25.1.0" + jest-jasmine2 "^25.1.0" + jest-leak-detector "^25.1.0" + jest-message-util "^25.1.0" + jest-resolve "^25.1.0" + jest-runtime "^25.1.0" + jest-util "^25.1.0" + jest-worker "^25.1.0" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.1.0.tgz#02683218f2f95aad0f2ec1c9cdb28c1dc0ec0314" + integrity sha512-mpPYYEdbExKBIBB16ryF6FLZTc1Rbk9Nx0ryIpIMiDDkOeGa0jQOKVI/QeGvVGlunKKm62ywcioeFVzIbK03bA== + dependencies: + "@jest/console" "^25.1.0" + "@jest/environment" "^25.1.0" + "@jest/source-map" "^25.1.0" + "@jest/test-result" "^25.1.0" + "@jest/transform" "^25.1.0" + "@jest/types" "^25.1.0" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.3" + jest-config "^25.1.0" + jest-haste-map "^25.1.0" + jest-message-util "^25.1.0" + jest-mock "^25.1.0" + jest-regex-util "^25.1.0" + jest-resolve "^25.1.0" + jest-snapshot "^25.1.0" + jest-util "^25.1.0" + jest-validate "^25.1.0" + realpath-native "^1.1.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.0.0" + +jest-serializer@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.1.0.tgz#73096ba90e07d19dec4a0c1dd89c355e2f129e5d" + integrity sha512-20Wkq5j7o84kssBwvyuJ7Xhn7hdPeTXndnwIblKDR2/sy1SUm6rWWiG9kSCgJPIfkDScJCIsTtOKdlzfIHOfKA== + +jest-snapshot@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.1.0.tgz#d5880bd4b31faea100454608e15f8d77b9d221d9" + integrity sha512-xZ73dFYN8b/+X2hKLXz4VpBZGIAn7muD/DAg+pXtDzDGw3iIV10jM7WiHqhCcpDZfGiKEj7/2HXAEPtHTj0P2A== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^25.1.0" + chalk "^3.0.0" + expect "^25.1.0" + jest-diff "^25.1.0" + jest-get-type "^25.1.0" + jest-matcher-utils "^25.1.0" + jest-message-util "^25.1.0" + jest-resolve "^25.1.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^25.1.0" + semver "^7.1.1" + +jest-util@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.1.0.tgz#7bc56f7b2abd534910e9fa252692f50624c897d9" + integrity sha512-7did6pLQ++87Qsj26Fs/TIwZMUFBXQ+4XXSodRNy3luch2DnRXsSnmpVtxxQ0Yd6WTipGpbhh2IFP1mq6/fQGw== + dependencies: + "@jest/types" "^25.1.0" + chalk "^3.0.0" + is-ci "^2.0.0" + mkdirp "^0.5.1" + +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.1.0.tgz#1469fa19f627bb0a9a98e289f3e9ab6a668c732a" + integrity sha512-kGbZq1f02/zVO2+t1KQGSVoCTERc5XeObLwITqC6BTRH3Adv7NZdYqCpKIZLUgpLXf2yISzQ465qOZpul8abXA== + dependencies: + "@jest/types" "^25.1.0" + camelcase "^5.3.1" + chalk "^3.0.0" + jest-get-type "^25.1.0" + leven "^3.1.0" + pretty-format "^25.1.0" + +jest-watcher@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.1.0.tgz#97cb4a937f676f64c9fad2d07b824c56808e9806" + integrity sha512-Q9eZ7pyaIr6xfU24OeTg4z1fUqBF/4MP6J801lyQfg7CsnZ/TCzAPvCfckKdL5dlBBEKBeHV0AdyjFZ5eWj4ig== + dependencies: + "@jest/test-result" "^25.1.0" + "@jest/types" "^25.1.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + jest-util "^25.1.0" + string-length "^3.1.0" + +jest-worker@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" + integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.1.0.tgz#b85ef1ddba2fdb00d295deebbd13567106d35be9" + integrity sha512-FV6jEruneBhokkt9MQk0WUFoNTwnF76CLXtwNMfsc0um0TlB/LG2yxUd0KqaFjEJ9laQmVWQWS0sG/t2GsuI0w== + dependencies: + "@jest/core" "^25.1.0" + import-local "^3.0.2" + jest-cli "^25.1.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^15.1.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== + dependencies: + abab "^2.0.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" + array-equal "^1.0.0" + cssom "^0.4.1" + cssstyle "^2.0.0" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.1" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.2.0" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.7" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^7.0.0" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@2.x, json5@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + dependencies: + minimist "^1.2.5" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash@^4.17.13, lodash@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lolex@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + dependencies: + "@sinonjs/commons" "^1.7.0" + +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +merge-deep@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" + integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +mime-db@1.43.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@^2.1.12, mime-types@^2.1.25, mime-types@~2.1.19: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.0" + +mime@^2.0.3: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mkdirp@0.x, mkdirp@^0.5.1: + version "0.5.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" + integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== + dependencies: + minimist "^1.2.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" + integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== + dependencies: + growly "^1.3.0" + is-wsl "^2.1.1" + semver "^6.3.0" + shellwords "^0.1.1" + which "^1.3.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +p-each-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-limit@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +pretty-format@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8" + integrity sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ== + dependencies: + "@jest/types" "^25.1.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prompts@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +puppeteer@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-2.1.1.tgz#ccde47c2a688f131883b50f2d697bd25189da27e" + integrity sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg== + dependencies: + "@types/mime-types" "^2.1.0" + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + mime-types "^2.1.25" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +react-is@^16.12.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +readable-stream@^2.2.2: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +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== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.x, resolve@^1.3.2: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +semver@^5.4.1, semver@^5.5, semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" + integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +sisteransi@^1.0.4, sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spawnd@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-4.4.0.tgz#bb52c5b34a22e3225ae1d3acb873b2cd58af0886" + integrity sha512-jLPOfB6QOEgMOQY15Z6+lwZEhH3F5ncXxIaZ7WHPIapwNNLyjrs61okj3VJ3K6tmP5TZ6cO0VAu9rEY4MD4YQg== + dependencies: + exit "^0.1.2" + signal-exit "^3.0.2" + tree-kill "^1.2.2" + wait-port "^0.2.7" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +tmpl@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-jest@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.2.1.tgz#49bf05da26a8b7fbfbc36b4ae2fcdc2fef35c85d" + integrity sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "^16.1.0" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.7.4: + version "3.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-to-istanbul@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.2.tgz#387d173be5383dbec209d21af033dcb892e3ac82" + integrity sha512-G9R+Hpw0ITAmPSr47lSlc5A1uekSYzXxTMlFxso2xoffwo4jQnzbv1p9yXIinO8UMZKfAFewaCHwWvnH4Jb4Ug== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +wait-on@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-3.3.0.tgz#9940981d047a72a9544a97b8b5fca45b2170a082" + integrity sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ== + dependencies: + "@hapi/joi" "^15.0.3" + core-js "^2.6.5" + minimist "^1.2.0" + request "^2.88.0" + rx "^4.1.0" + +wait-port@^0.2.7: + version "0.2.9" + resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-0.2.9.tgz#3905cf271b5dbe37a85c03b85b418b81cb24ee55" + integrity sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ== + dependencies: + chalk "^2.4.2" + commander "^3.0.2" + debug "^4.1.1" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.12, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7.0.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.1: + version "18.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" + integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.0.0: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= + dependencies: + fd-slicer "~1.0.1" diff --git a/ui-ori/tsconfig.json b/ui-ori/tsconfig.json new file mode 100644 index 0000000000..b77d76eb4b --- /dev/null +++ b/ui-ori/tsconfig.json @@ -0,0 +1,32 @@ +{ + "extends": "./tsconfig.paths.json", + "compilerOptions": { + "target": "es6", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "noImplicitAny": false, + "noImplicitThis": false, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "experimentalDecorators": true, + "jsx": "react" + }, + "include": [ + "src", + "lib", + "dashboardApp", + "diagnoseReportApp" + ] +} diff --git a/ui-ori/tsconfig.paths.json b/ui-ori/tsconfig.paths.json new file mode 100644 index 0000000000..b3f796dc77 --- /dev/null +++ b/ui-ori/tsconfig.paths.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@lib/*": ["lib/*"], + "@dashboard/*": ["dashboardApp/*"], + "@diagnoseReport/*": ["diagnoseReportApp/*"] + } + } +} diff --git a/ui-ori/yarn.lock b/ui-ori/yarn.lock new file mode 100644 index 0000000000..0e3adf3b7b --- /dev/null +++ b/ui-ori/yarn.lock @@ -0,0 +1,18440 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ahooksjs/use-request@^2.8.1": + version "2.8.1" + resolved "https://registry.yarnpkg.com/@ahooksjs/use-request/-/use-request-2.8.1.tgz#bf06a63368df1859b6b79a946612eb0d2889ab6f" + integrity sha512-+C+5jyRUf45ao8yM333vaYxaNrZOgcboy56aqiBthV0tN18FwxHEhRw9Ddoku/6EU658z7erhPGLksAabIU2bQ== + dependencies: + lodash.debounce "^4.0.8" + lodash.throttle "^4.1.1" + +"@ant-design/colors@^3.1.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-3.2.2.tgz#5ad43d619e911f3488ebac303d606e66a8423903" + integrity sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ== + dependencies: + tinycolor2 "^1.4.1" + +"@ant-design/colors@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-5.0.0.tgz#46b73b4cc6935b35fc8b84555e8e42c8cfc190e6" + integrity sha512-Pe1rYorgVC1v4f+InDXvIlQH715pO1g7BsOhy/ehX/U6ebPKqojmkYJKU3lF+84Zmvyar7ngZ28hesAa1nWjLg== + dependencies: + "@ctrl/tinycolor" "^3.1.6" + +"@ant-design/css-animation@^1.7.2": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.3.tgz#60a1c970014e86b28f940510d69e503e428f1136" + integrity sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA== + +"@ant-design/icons-svg@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c" + integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ== + +"@ant-design/icons@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.2.1.tgz#6f3ea5d98ab782072e4e9cbb70f25e4403ae1a6b" + integrity sha512-245ZI40MOr5GGws+sNSiJIRRoEf/J2xvPSMgwRYf3bv8mVGQZ6XTQI/OMeV16KtiSZ3D+mBKXVYSBz2fhigOXQ== + dependencies: + "@ant-design/colors" "^3.1.0" + "@ant-design/icons-svg" "^4.0.0" + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + insert-css "^2.0.0" + rc-util "^5.0.1" + +"@ant-design/icons@^4.2.2", "@ant-design/icons@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.3.0.tgz#420e0cd527486c0fe57f81310d681950fc4cfacf" + integrity sha512-UoIbw4oz/L/msbkgqs2nls2KP7XNKScOxVR54wRrWwnXOzJaGNwwSdYjHQz+5ETf8C53YPpzMOnRX99LFCdeIQ== + dependencies: + "@ant-design/colors" "^5.0.0" + "@ant-design/icons-svg" "^4.0.0" + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + insert-css "^2.0.0" + rc-util "^5.0.1" + +"@ant-design/react-slick@~0.27.0": + version "0.27.14" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.27.14.tgz#a1082c4734e57c7ba9c41d035375f5bf577f3b5e" + integrity sha512-s6JVexqFmU5rs5Pm828ojtm5rCp8jDXyrc5OxEtCE2z58SIyQlkpnU9BJh98LEeBZyj02WFkGN8CWpSaD+G4PA== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.15" + resize-observer-polyfill "^1.5.0" + +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" + integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/compat-data@^7.9.0", "@babel/compat-data@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" + integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== + dependencies: + browserslist "^4.11.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.7.5", "@babel/core@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" + integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" + integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== + dependencies: + "@babel/types" "^7.10.4" + 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.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== + dependencies: + "@babel/types" "^7.9.6" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@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" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.4.tgz#d0ffb875184d749c63ffe1f4f65be15143ec322d" + integrity sha512-LyacH/kgQPgLAuaWrvvq1+E7f5bLyT8jXCh7nM67sRsy2cpIGfgWJ+FCnAKQXfY+F0tXUaN6FqLkp4JiCzdK8Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" + integrity sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== + dependencies: + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-compilation-targets@^7.8.7", "@babel/helper-compilation-targets@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" + integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== + dependencies: + "@babel/compat-data" "^7.9.6" + browserslist "^4.11.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" + integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-class-features-plugin@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" + integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-class-features-plugin@^7.8.3", "@babel/helper-create-class-features-plugin@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897" + integrity sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow== + dependencies: + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.9.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" + integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.4" + lodash "^4.17.13" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== + dependencies: + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@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" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@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" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" + integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" + integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== + dependencies: + "@babel/types" "^7.10.5" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.0.0", "@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" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-transforms@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" + integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + lodash "^4.17.13" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" + integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" + integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + +"@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" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@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" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + 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" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== + +"@babel/parser@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" + integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== + +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" + integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@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" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-decorators@7.8.3", "@babel/plugin-proposal-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-decorators@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.5.tgz#42898bba478bc4b1ae242a703a953a7ad350ffb4" + integrity sha512-Sc5TAQSZuLzgY0664mMDn24Vw2P8g/VhyLyGPaWiHahhgLqeZvcGeyBZOrJW0oSKIK2mvQ22a1ENXBIQLhrEiQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-default-from@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz#08f66eef0067cbf6a7bc036977dcdccecaf0c6c5" + integrity sha512-G1l00VvDZ7Yk2yRlC5D8Ybvu3gmeHS3rCHoUYdjrqGYUtdeOBoRypnvDZ5KQqxyaiiGHWnVDeSEzA5F9ozItig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-default-from" "^7.10.4" + +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@7.8.3", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0", "@babel/plugin-proposal-object-rest-spread@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" + integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@7.9.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.10.1", "@babel/plugin-proposal-optional-chaining@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" + integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.4", "@babel/plugin-proposal-private-methods@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-decorators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" + integrity sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz#e5494f95006355c10292a0ff1ce42a5746002ec8" + integrity sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-flow@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" + integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" + integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-typescript@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" + integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" + integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + lodash "^4.17.13" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.9.0", "@babel/plugin-transform-classes@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.8.3", "@babel/plugin-transform-destructuring@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" + integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" + integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" + integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-amd@^7.9.0", "@babel/plugin-transform-modules-amd@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" + integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.9.0", "@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" + integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.9.0", "@babel/plugin-transform-modules-systemjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" + integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" + integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-parameters@^7.8.7", "@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz#a75abc936a3819edec42d3386d9f1c93f28d9d9e" + integrity sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-constant-elements@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz#0f485260bf1c29012bb973e7e404749eaac12c9e" + integrity sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" + integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-development@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" + integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" + integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-self@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" + integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.4.tgz#86baf0fcccfe58084e06446a80858e1deae8f291" + integrity sha512-FTK3eQFrPv2aveerUSazFmGygqIdTtvskG50SnGnbEUnRPcGx2ylBhdFIzoVS1ty44hEgcPoCAyw5r3VDEq+Ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" + integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.9.1", "@babel/plugin-transform-react-jsx@^7.9.4": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" + integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-pure-annotations@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" + integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" + integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" + integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz#8b01cb8d77f795422277cc3fcf45af72bc68ba78" + integrity sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.10.4" + +"@babel/plugin-transform-typescript@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.6.tgz#2248971416a506fc78278fc0c0ea3179224af1e9" + integrity sha512-8OvsRdvpt3Iesf2qsAn+YdlwAJD7zJ+vhFZmDCa4b8dTp7MmHtKk5FF2mCsGxjZwuwsy/yIIay/nLmxST1ctVQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.9.6" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/polyfill@^7.7.0": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.7.tgz#151ec24c7135481336168c3bd8b8bf0cf91c032f" + integrity sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.4" + +"@babel/preset-env@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.4.5": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" + integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== + dependencies: + "@babel/compat-data" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.9.5" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.9.6" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.6" + browserslist "^4.11.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.9.5", "@babel/preset-env@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" + integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== + dependencies: + "@babel/compat-data" "^7.10.4" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.4" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-flow@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" + integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.10.4" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.1" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-react@^7.0.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" + integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.4" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-react@^7.8.3", "@babel/preset-react@^7.9.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" + integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx-development" "^7.10.4" + "@babel/plugin-transform-react-jsx-self" "^7.10.4" + "@babel/plugin-transform-react-jsx-source" "^7.10.4" + "@babel/plugin-transform-react-pure-annotations" "^7.10.4" + +"@babel/preset-typescript@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/preset-typescript@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" + integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.10.4" + +"@babel/runtime-corejs3@^7.8.3": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz#67aded13fffbbc2cb93247388cf84d77a4be9a71" + integrity sha512-6toWAfaALQjt3KMZQc6fABqZwUDDuWzz+cAfPhqyEnzxvdWOAkjwPNxgF8xlmo7OWLsSjaKjsskpKHRLaMArOA== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime-corejs3@^7.9.6": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.3.tgz#931ed6941d3954924a7aa967ee440e60c507b91a" + integrity sha512-HA7RPj5xvJxQl429r5Cxr2trJwOfPjKiqhCXcdQPSqO2G0RHPZpXu4fkYmBaTKCp2c/jRaMK9GB/lN+7zvvFPw== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.5.0", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" + integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@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" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" + integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + 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", "@babel/types@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" + integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" + integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@baurine/grafana-value-formats@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@baurine/grafana-value-formats/-/grafana-value-formats-1.0.2.tgz#f1129cf19ca0a887b77451cdefa31f94afc8500a" + integrity sha512-LdT/B7mHGSQ/k+o6B0oEjGpRRqMlLvnTezerp71wWW8Io89eePd1q/Lk0JWj/Vspv2RIdQzhE1Z7HZJtjc3IFg== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@ctrl/tinycolor@^3.1.6": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.1.7.tgz#1585f67629882002a9f8e15a2941c9a4321bf80c" + integrity sha512-/0C6fjXbCwu22k8mMsKRSAo9zgu61d2p75Or9IuIC0Vu5CWN88t2QHK93LhNnxnqHWf5SFwFU28w9cKfTmnfvg== + +"@emotion/cache@^10.0.27": + version "10.0.29" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" + integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== + dependencies: + "@emotion/sheet" "0.9.4" + "@emotion/stylis" "0.8.5" + "@emotion/utils" "0.11.3" + "@emotion/weak-memoize" "0.2.5" + +"@emotion/core@^10.0.20": + version "10.0.28" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.28.tgz#bb65af7262a234593a9e952c041d0f1c9b9bef3d" + integrity sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/cache" "^10.0.27" + "@emotion/css" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +"@emotion/css@^10.0.27": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== + dependencies: + "@emotion/serialize" "^0.11.15" + "@emotion/utils" "0.11.3" + babel-plugin-emotion "^10.0.27" + +"@emotion/hash@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.6": + 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/serialize@^0.11.15", "@emotion/serialize@^0.11.16": + version "0.11.16" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" + integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== + dependencies: + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/unitless" "0.7.5" + "@emotion/utils" "0.11.3" + csstype "^2.5.7" + +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + +"@emotion/styled-base@^10.0.27": + version "10.0.31" + resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.0.31.tgz#940957ee0aa15c6974adc7d494ff19765a2f742a" + integrity sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/is-prop-valid" "0.8.8" + "@emotion/serialize" "^0.11.15" + "@emotion/utils" "0.11.3" + +"@emotion/styled@^10.0.17": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" + integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== + dependencies: + "@emotion/styled-base" "^10.0.27" + babel-plugin-emotion "^10.0.27" + +"@emotion/stylis@0.8.5": + 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.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== + +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + +"@fluentui/date-time-utilities@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@fluentui/date-time-utilities/-/date-time-utilities-7.3.0.tgz#e6ee84a7b5097ca98e1cb8779dd001a1707c5cea" + integrity sha512-VymHB/GFaQM6LebrLHuPrHgk6Ra85CNjMB4+R8MAkna04w3sf07ivTfBUO3eLhAfxuW9YmlB7um8eavHq2xoDw== + dependencies: + "@uifabric/set-version" "^7.0.18" + tslib "^1.10.0" + +"@fluentui/keyboard-key@^0.2.7": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@fluentui/keyboard-key/-/keyboard-key-0.2.7.tgz#5a907d917b7c2ec0c06ca5938c5424f5cb36540e" + integrity sha512-NX6BPT/hXOocYCksnqSw3gTFwaMHaIsaqfe6ZbGZpfBIN4idwhVUYDLwcyjUx0FmUJoWfaVsa61fbelg35USiA== + dependencies: + tslib "^1.10.0" + +"@fluentui/react-focus@^7.12.25": + version "7.12.25" + resolved "https://registry.yarnpkg.com/@fluentui/react-focus/-/react-focus-7.12.25.tgz#fd7c5d371fd79a551d6b8e30f0d7526398230b07" + integrity sha512-NRh5HXNJ7X52I48B+SJGOM0X8vqpoD4NO8KlBpcDJFwN3VV/5Mi5BGRUq87rpbpKdPB2q4Ni3o8E2LB4qQmL0A== + dependencies: + "@fluentui/keyboard-key" "^0.2.7" + "@uifabric/merge-styles" "^7.16.3" + "@uifabric/set-version" "^7.0.18" + "@uifabric/styling" "^7.14.5" + "@uifabric/utilities" "^7.24.5" + tslib "^1.10.0" + +"@fluentui/react-icons@^0.1.40": + version "0.1.40" + resolved "https://registry.yarnpkg.com/@fluentui/react-icons/-/react-icons-0.1.40.tgz#d643c5e982941a31b7c9a64acd9e377f4deae7c6" + integrity sha512-UFGMeQgajjfFwWtoEvk7eHd6Bye4aeVzOVTVKQ9MWxZZQIzP5gzA8Qk8dMfwSrPV5oplsMlTKijl7kULdY+H6g== + dependencies: + "@microsoft/load-themed-styles" "^1.10.26" + "@uifabric/set-version" "^7.0.18" + "@uifabric/utilities" "^7.24.5" + tslib "^1.10.0" + +"@fortawesome/fontawesome-free@^5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.14.0.tgz#a371e91029ebf265015e64f81bfbf7d228c9681f" + integrity sha512-OfdMsF+ZQgdKHP9jUbmDcRrP0eX90XXrsXIdyjLbkmSBzmMXPABB8eobUJtivaupucYaByz6WNe1PI1JuYm3qA== + +"@g07cha/flexbox-react@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@g07cha/flexbox-react/-/flexbox-react-5.0.0.tgz#159b0f8b7c5b8ee41a19256fb0024238abe01b3f" + integrity sha512-OiszZSDH/oZmN/jhpGZhYTtDIEVwT3E4ArWk0mUMPTUaiSDJRykMLuOC6fWuNm1nrti04ihtXPr4Tr4S9kSeyg== + dependencies: + styled-components "^2.0.0" + optionalDependencies: + "@types/react" "^16.0.34" + "@types/react-dom" "^16.0.3" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@icons/material@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@microsoft/load-themed-styles@^1.10.26": + version "1.10.50" + resolved "https://registry.yarnpkg.com/@microsoft/load-themed-styles/-/load-themed-styles-1.10.50.tgz#16b1a7fd82163cceb71796bbd088e44ba7591e54" + integrity sha512-Fl0K/N2hNA++Rg7vQfjcaIen3ol/ZqCvXRlzswKpv5GMBL0zKqpvFCbTXVr344dp2ZFZWcsjxMi4DAvkpCshXA== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@openapitools/openapi-generator-cli@^1.0.15-4.3.1": + version "1.0.15-4.3.1" + resolved "https://registry.yarnpkg.com/@openapitools/openapi-generator-cli/-/openapi-generator-cli-1.0.15-4.3.1.tgz#25ef943eba3c82e82379b30f858bb05ed97dae0b" + integrity sha512-U+sanspDmeBElVNjYHQ4U7BbSEJUQzjNKmiTzXpcEw/r93sgxmzS2Sew5t+Zj6kyN1YTvjhRjJikNcW9/bmTKA== + +"@reach/router@^1.3.3": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" + integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== + dependencies: + create-react-context "0.3.0" + invariant "^2.2.3" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + +"@sentry/browser@6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/browser/download/@sentry/browser-6.3.2.tgz?cache=0&sync_timestamp=1619605243785&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fbrowser%2Fdownload%2F%40sentry%2Fbrowser-6.3.2.tgz#15ae31a0acdbdc5ed60bdadb047643580152bb79" + integrity sha1-Fa4xoKzb3F7WC9rbBHZDWAFSu3k= + dependencies: + "@sentry/core" "6.3.2" + "@sentry/types" "6.3.2" + "@sentry/utils" "6.3.2" + tslib "^1.9.3" + +"@sentry/core@6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/core/download/@sentry/core-6.3.2.tgz?cache=0&sync_timestamp=1619604898016&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fcore%2Fdownload%2F%40sentry%2Fcore-6.3.2.tgz#301b07fae95ac830faa6c2e7ca3a6b9041940704" + integrity sha1-MBsH+ulayDD6psLnyjprkEGUBwQ= + dependencies: + "@sentry/hub" "6.3.2" + "@sentry/minimal" "6.3.2" + "@sentry/types" "6.3.2" + "@sentry/utils" "6.3.2" + tslib "^1.9.3" + +"@sentry/hub@6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/hub/download/@sentry/hub-6.3.2.tgz?cache=0&sync_timestamp=1619605245362&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fhub%2Fdownload%2F%40sentry%2Fhub-6.3.2.tgz#f83101bc8864f47b9d229b6bef5237da5d571b23" + integrity sha1-+DEBvIhk9HudIptr71I32l1XGyM= + dependencies: + "@sentry/types" "6.3.2" + "@sentry/utils" "6.3.2" + tslib "^1.9.3" + +"@sentry/minimal@6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/minimal/download/@sentry/minimal-6.3.2.tgz?cache=0&sync_timestamp=1619605245845&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fminimal%2Fdownload%2F%40sentry%2Fminimal-6.3.2.tgz#fc4ecc4ff33ee7300bba360af21d21ca98fdc909" + integrity sha1-/E7MT/M+5zALujYK8h0hypj9yQk= + dependencies: + "@sentry/hub" "6.3.2" + "@sentry/types" "6.3.2" + tslib "^1.9.3" + +"@sentry/react@^6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/react/download/@sentry/react-6.3.2.tgz?cache=0&sync_timestamp=1619604716385&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Freact%2Fdownload%2F%40sentry%2Freact-6.3.2.tgz#c5465a27176e4483d84785e5d23394ed57cb2e1c" + integrity sha1-xUZaJxduRIPYR4Xl0jOU7VfLLhw= + dependencies: + "@sentry/browser" "6.3.2" + "@sentry/minimal" "6.3.2" + "@sentry/types" "6.3.2" + "@sentry/utils" "6.3.2" + hoist-non-react-statics "^3.3.2" + tslib "^1.9.3" + +"@sentry/tracing@^6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/tracing/download/@sentry/tracing-6.3.2.tgz?cache=0&sync_timestamp=1619604716729&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Ftracing%2Fdownload%2F%40sentry%2Ftracing-6.3.2.tgz#b4f55be0d20cf1a10f7f158fc0434b50872decd2" + integrity sha1-tPVb4NIM8aEPfxWPwENLUIct7NI= + dependencies: + "@sentry/hub" "6.3.2" + "@sentry/minimal" "6.3.2" + "@sentry/types" "6.3.2" + "@sentry/utils" "6.3.2" + tslib "^1.9.3" + +"@sentry/types@6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/types/download/@sentry/types-6.3.2.tgz#7e7bdb253d1d242e97a3eb54610ef27a30675759" + integrity sha1-fnvbJT0dJC6Xo+tUYQ7yejBnV1k= + +"@sentry/utils@6.3.2": + version "6.3.2" + resolved "https://registry.nlark.com/@sentry/utils/download/@sentry/utils-6.3.2.tgz#640851fca3a7d1bebd1b2c11cad6d9cf7fee8148" + integrity sha1-ZAhR/KOn0b69GywRytbZz3/ugUg= + dependencies: + "@sentry/types" "6.3.2" + tslib "^1.9.3" + +"@storybook/addon-actions@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.0.0-rc.3.tgz#2c8d6230bf15c5fcced5b4291a366cc3d8aec631" + integrity sha512-EGX1CzLARZGMbZmfN0CaNssJjrRSofuWVw9m5AMeww6u9OaxUbmGunn+4rP31cTu455MQtsysmJstSFt2t+mdg== + dependencies: + "@storybook/addons" "6.0.0-rc.3" + "@storybook/api" "6.0.0-rc.3" + "@storybook/client-api" "6.0.0-rc.3" + "@storybook/components" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + "@storybook/theming" "6.0.0-rc.3" + core-js "^3.0.1" + fast-deep-equal "^3.1.1" + global "^4.3.2" + lodash "^4.17.15" + polished "^3.4.4" + prop-types "^15.7.2" + react "^16.8.3" + react-inspector "^5.0.1" + regenerator-runtime "^0.13.3" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + uuid "^8.0.0" + +"@storybook/addon-links@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.0.0-rc.3.tgz#7f228ee9dcaff3f7ada1f9c46a46b34410ee7645" + integrity sha512-I5M97fq9rn13YFIo6dDt6O7Sxb+mNEangpvMuRn/VncxfeZx5kH/gEg+elsG0/IZyfO0UHjA46QDSdiyZFaNnQ== + dependencies: + "@storybook/addons" "6.0.0-rc.3" + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + "@storybook/csf" "0.0.1" + "@storybook/router" "6.0.0-rc.3" + "@types/qs" "^6.9.0" + core-js "^3.0.1" + global "^4.3.2" + prop-types "^15.7.2" + qs "^6.6.0" + regenerator-runtime "^0.13.3" + ts-dedent "^1.1.1" + +"@storybook/addons@6.0.0-rc.3", "@storybook/addons@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.0.0-rc.3.tgz#165ae8ba6d36b19133a51aa9f72463f225b6a19c" + integrity sha512-oFGS1mNnNsfNPTvv3IAZSMTzztR4vfbn2CXcWnnA7yPEbo8WsNPql3A8PoumY2HZtZjZEEpCODJtW09Q1bP6Cw== + dependencies: + "@storybook/api" "6.0.0-rc.3" + "@storybook/channels" "6.0.0-rc.3" + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + "@storybook/router" "6.0.0-rc.3" + "@storybook/theming" "6.0.0-rc.3" + core-js "^3.0.1" + global "^4.3.2" + regenerator-runtime "^0.13.3" + +"@storybook/api@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.0.0-rc.3.tgz#5b23ca76c996e863c48cb53f8769bf219ff35219" + integrity sha512-N+DADwbaevSE7C4/bjxtsFzNZ7/jAgRZa0vfiq8Lxwbmj2cYpPn9p8SkPA75TZco6XM/LX6QXl5ghg2zs8f/UQ== + dependencies: + "@reach/router" "^1.3.3" + "@storybook/channels" "6.0.0-rc.3" + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + "@storybook/csf" "0.0.1" + "@storybook/router" "6.0.0-rc.3" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.0.0-rc.3" + "@types/reach__router" "^1.3.5" + core-js "^3.0.1" + fast-deep-equal "^3.1.1" + global "^4.3.2" + lodash "^4.17.15" + memoizerific "^1.11.3" + react "^16.8.3" + regenerator-runtime "^0.13.3" + store2 "^2.7.1" + telejson "^4.0.0" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + +"@storybook/channel-postmessage@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.0.0-rc.3.tgz#bc239f3b8aff4c98e7c9a7de63b05573ff3ad920" + integrity sha512-y/FyknuOYh8f5UgFlVkzWko9JcTlOUTapFPMtV7w52rZMkv0TJVVzn2Az3aDMKNhbyXhMVHP+Cbflj2qxLSyVQ== + dependencies: + "@storybook/channels" "6.0.0-rc.3" + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + core-js "^3.0.1" + global "^4.3.2" + qs "^6.6.0" + telejson "^4.0.0" + +"@storybook/channels@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.0.0-rc.3.tgz#1c7b0356eebad2dc422fd77d7b5e3c82c42786b0" + integrity sha512-kJjdP/Wp1rEOr+Fn9eQyzHml2V7va3wnpgWXYqPZXn/xrUKJg5UeOqvImVQUDfuwSWINZfHsG/yV11pXpWhMKg== + dependencies: + core-js "^3.0.1" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + +"@storybook/client-api@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.0.0-rc.3.tgz#310291e2d1105b1a14aa36404891d52d64bd2d6b" + integrity sha512-juf1IuE/8zAsF+GPidBvofE2mX9jq3mM+wtI9wEl+NmSS7Dj5Eb/Mu94n2UQLG2K/VpLUiFvHsW8GdR1+/HBzA== + dependencies: + "@storybook/addons" "6.0.0-rc.3" + "@storybook/channel-postmessage" "6.0.0-rc.3" + "@storybook/channels" "6.0.0-rc.3" + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + "@storybook/csf" "0.0.1" + "@types/qs" "^6.9.0" + "@types/webpack-env" "^1.15.2" + core-js "^3.0.1" + global "^4.3.2" + lodash "^4.17.15" + memoizerific "^1.11.3" + qs "^6.6.0" + stable "^0.1.8" + store2 "^2.7.1" + ts-dedent "^1.1.1" + util-deprecate "^1.0.2" + +"@storybook/client-logger@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.0.0-rc.3.tgz#113e9d153a97318c7251ba34a90727c36016e7f3" + integrity sha512-wMXEoY6tc7Yx6s/E7jTR8y82Zcc3vgzfmIW/7/UgOvUlsIPTXoV5uChmwWExQ64VlVX36yE/Mctygxr7HwzPkw== + dependencies: + core-js "^3.0.1" + global "^4.3.2" + +"@storybook/components@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.0.0-rc.3.tgz#106279fffec233d28bd98ddfdeba54af6683bf15" + integrity sha512-gXslr3rt+xt08c3ncVBSgG4A4IursP7D9IYrCjiDgNP15//gEdDOq/ciJa3MHNiHQ0rYzS4q5ATcO+zRmuN8LA== + dependencies: + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/csf" "0.0.1" + "@storybook/theming" "6.0.0-rc.3" + "@types/overlayscrollbars" "^1.9.0" + "@types/react-color" "^3.0.1" + "@types/react-syntax-highlighter" "11.0.4" + core-js "^3.0.1" + fast-deep-equal "^3.1.1" + global "^4.3.2" + lodash "^4.17.15" + markdown-to-jsx "^6.11.4" + memoizerific "^1.11.3" + overlayscrollbars "^1.10.2" + polished "^3.4.4" + popper.js "^1.14.7" + react "^16.8.3" + react-color "^2.17.0" + react-dom "^16.8.3" + react-popper-tooltip "^2.11.0" + react-syntax-highlighter "^12.2.1" + react-textarea-autosize "^8.1.1" + ts-dedent "^1.1.1" + +"@storybook/core-events@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.0.0-rc.3.tgz#e3c273feabbaf2180b01e42864aafe228e98afcf" + integrity sha512-J9KUnV/p2zvt0Cg1z4x6dTvqTJKjydNarAgwcNBnh3caIAIPETzO6CV9ns4TidFXyV2400sk+u6ZyCwOUc/hsQ== + dependencies: + core-js "^3.0.1" + +"@storybook/core@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.0.0-rc.3.tgz#d55cbaeba4e263c92c2f6fbb45c77cab1ee6b90b" + integrity sha512-sgjfL5umUP1duz71tv1GEk/2gKeZOQ5foKeZpjq4NEydWQu4VccHBqizc2KnGZXValERKiG+URbyDvFNz4MIhQ== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.8.3" + "@babel/plugin-proposal-decorators" "^7.8.3" + "@babel/plugin-proposal-export-default-from" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" + "@babel/plugin-proposal-optional-chaining" "^7.10.1" + "@babel/plugin-proposal-private-methods" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-destructuring" "^7.9.5" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/preset-env" "^7.9.6" + "@babel/preset-react" "^7.8.3" + "@babel/preset-typescript" "^7.9.0" + "@storybook/addons" "6.0.0-rc.3" + "@storybook/api" "6.0.0-rc.3" + "@storybook/channel-postmessage" "6.0.0-rc.3" + "@storybook/channels" "6.0.0-rc.3" + "@storybook/client-api" "6.0.0-rc.3" + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/components" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + "@storybook/csf" "0.0.1" + "@storybook/node-logger" "6.0.0-rc.3" + "@storybook/router" "6.0.0-rc.3" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.0.0-rc.3" + "@storybook/ui" "6.0.0-rc.3" + "@types/glob-base" "^0.3.0" + "@types/micromatch" "^4.0.1" + "@types/node-fetch" "^2.5.4" + airbnb-js-shims "^2.2.1" + ansi-to-html "^0.6.11" + autoprefixer "^9.7.2" + babel-loader "^8.0.6" + babel-plugin-emotion "^10.0.20" + babel-plugin-macros "^2.8.0" + babel-preset-minify "^0.5.0 || 0.6.0-alpha.5" + better-opn "^2.0.0" + boxen "^4.1.0" + case-sensitive-paths-webpack-plugin "^2.2.0" + chalk "^4.0.0" + cli-table3 "0.6.0" + commander "^5.0.0" + core-js "^3.0.1" + css-loader "^3.5.3" + detect-port "^1.3.0" + dotenv-webpack "^1.7.0" + ejs "^3.1.2" + express "^4.17.0" + file-loader "^6.0.0" + file-system-cache "^1.0.5" + find-up "^4.1.0" + fork-ts-checker-webpack-plugin "^4.1.4" + fs-extra "^9.0.0" + glob "^7.1.6" + glob-base "^0.3.0" + glob-promise "^3.4.0" + global "^4.3.2" + html-webpack-plugin "^4.2.1" + inquirer "^7.0.0" + interpret "^2.0.0" + ip "^1.1.5" + json5 "^2.1.1" + lazy-universal-dotenv "^3.0.1" + micromatch "^4.0.2" + node-fetch "^2.6.0" + pkg-dir "^4.2.0" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "^4.1.0" + postcss-loader "^3.0.0" + pretty-hrtime "^1.0.3" + qs "^6.6.0" + raw-loader "^4.0.1" + react-dev-utils "^10.0.0" + regenerator-runtime "^0.13.3" + resolve-from "^5.0.0" + serve-favicon "^2.5.0" + shelljs "^0.8.3" + stable "^0.1.8" + style-loader "^1.2.1" + terser-webpack-plugin "^3.0.0" + ts-dedent "^1.1.1" + unfetch "^4.1.0" + url-loader "^4.0.0" + util-deprecate "^1.0.2" + webpack "^4.43.0" + webpack-dev-middleware "^3.7.0" + webpack-hot-middleware "^2.25.0" + webpack-virtual-modules "^0.2.2" + +"@storybook/csf@0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" + integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== + dependencies: + lodash "^4.17.15" + +"@storybook/node-logger@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.0.0-rc.3.tgz#789577978e8667178c40ee7d0ca50d3fc983c952" + integrity sha512-E0ak1Gh33fudGd6Ew/mogjrrgxSRjRGDkzhG4draoDdwB0uu008RInLgpQjj+3i2OnlHNLQWAyqwidSf8l2msw== + dependencies: + "@types/npmlog" "^4.1.2" + chalk "^4.0.0" + core-js "^3.0.1" + npmlog "^4.1.2" + pretty-hrtime "^1.0.3" + +"@storybook/preset-create-react-app@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@storybook/preset-create-react-app/-/preset-create-react-app-3.1.4.tgz#64bb674f69fe860ef1a4909e686775adf6c05fdd" + integrity sha512-VwzGCvv+HnEDXxSwF6ITRIZ4EaMhiMu1Mxrwm+nb49XTT2VME8VTzmbDjrdpZXPXUJrwLYmvqzaBT/qGZoMlgA== + dependencies: + "@types/babel__core" "^7.1.7" + "@types/webpack" "^4.41.13" + babel-plugin-react-docgen "^4.1.0" + pnp-webpack-plugin "^1.6.4" + react-docgen-typescript-plugin "^0.5.0" + semver "^7.3.2" + +"@storybook/react@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.0.0-rc.3.tgz#f9102300b869ab596180276706451d1568ae27f1" + integrity sha512-q5Jmq/QpUfVFE3G7FoBGJeBcIv2R5SO5xDJCg271piEKvFTcCmjwLi2IOCndnLn+gBuADcv2reCEk318yiFj2Q== + dependencies: + "@babel/preset-flow" "^7.0.0" + "@babel/preset-react" "^7.0.0" + "@storybook/addons" "6.0.0-rc.3" + "@storybook/core" "6.0.0-rc.3" + "@storybook/node-logger" "6.0.0-rc.3" + "@storybook/semver" "^7.3.2" + "@svgr/webpack" "^5.4.0" + "@types/webpack-env" "^1.15.2" + babel-plugin-add-react-displayname "^0.0.5" + babel-plugin-named-asset-import "^0.3.1" + babel-plugin-react-docgen "^4.1.0" + core-js "^3.0.1" + global "^4.3.2" + lodash "^4.17.15" + prop-types "^15.7.2" + react-dev-utils "^10.0.0" + react-docgen-typescript-plugin "^0.5.1" + regenerator-runtime "^0.13.3" + ts-dedent "^1.1.1" + webpack "^4.43.0" + +"@storybook/router@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.0.0-rc.3.tgz#a227b1c8b052136e91eda6f75a5a70f546091dc9" + integrity sha512-FOpWJCPbiO5RDzjNqjUTZd+DoLslQj3GY+hHzk5Rarrqh9NfzDZ8x7AAs0CVEWbSY89wQeeeulTVA7mMkC/vRQ== + dependencies: + "@reach/router" "^1.3.3" + "@types/reach__router" "^1.3.5" + core-js "^3.0.1" + global "^4.3.2" + memoizerific "^1.11.3" + qs "^6.6.0" + +"@storybook/semver@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" + integrity sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg== + dependencies: + core-js "^3.6.5" + find-up "^4.1.0" + +"@storybook/theming@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.0.0-rc.3.tgz#8989cb3495122b9d91a56f66fe171166a3f9528c" + integrity sha512-QBx50lLv5TtO0+CCSuFY5qjk0GzqhDm8DUukFVUpjfjsANtDVXog8DbAChsUZI+yAI7WtjaS6OA44Mf1/rWejQ== + dependencies: + "@emotion/core" "^10.0.20" + "@emotion/is-prop-valid" "^0.8.6" + "@emotion/styled" "^10.0.17" + "@storybook/client-logger" "6.0.0-rc.3" + core-js "^3.0.1" + deep-object-diff "^1.1.0" + emotion-theming "^10.0.19" + global "^4.3.2" + memoizerific "^1.11.3" + polished "^3.4.4" + resolve-from "^5.0.0" + ts-dedent "^1.1.1" + +"@storybook/ui@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.0.0-rc.3.tgz#b52646e3bc454f0bfe6f4787e47685125a780233" + integrity sha512-OSDn4WIPeA72X2m790bufrp1xsNBqhOCcwhn5+xIM9lsg0rkkVk7Vxk6lTkHUOSwVRjYrN6HCdL2gK59+cvxLQ== + dependencies: + "@emotion/core" "^10.0.20" + "@storybook/addons" "6.0.0-rc.3" + "@storybook/api" "6.0.0-rc.3" + "@storybook/channels" "6.0.0-rc.3" + "@storybook/client-logger" "6.0.0-rc.3" + "@storybook/components" "6.0.0-rc.3" + "@storybook/core-events" "6.0.0-rc.3" + "@storybook/router" "6.0.0-rc.3" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.0.0-rc.3" + "@types/markdown-to-jsx" "^6.11.0" + "@types/rfdc" "^1.1.0" + copy-to-clipboard "^3.0.8" + core-js "^3.0.1" + core-js-pure "^3.0.1" + emotion-theming "^10.0.19" + fuse.js "^3.6.1" + global "^4.3.2" + lodash "^4.17.15" + markdown-to-jsx "^6.11.4" + memoizerific "^1.11.3" + polished "^3.4.4" + react "^16.8.3" + react-dom "^16.8.3" + react-draggable "^4.0.3" + react-helmet-async "^1.0.2" + react-hotkeys "2.0.0" + react-sizeme "^2.6.7" + regenerator-runtime "^0.13.3" + resolve-from "^5.0.0" + rfdc "^1.1.4" + store2 "^2.7.1" + +"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== + +"@svgr/babel-plugin-transform-svg-component@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.4.0.tgz#a2212b4d018e6075a058bb7e220a66959ef7a03c" + integrity sha512-zLl4Fl3NvKxxjWNkqEcpdSOpQ3LGVH2BNFQ6vjaK6sFo2IrSznrhURIPI0HAphKiiIwNYjAfE0TNoQDSZv0U9A== + +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" + "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" + "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" + "@svgr/babel-plugin-transform-svg-component" "^4.2.0" + +"@svgr/babel-preset@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.4.0.tgz#da21854643e1c4ad2279239baa7d5a8b128c1f15" + integrity sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.4.0" + +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== + dependencies: + "@svgr/plugin-jsx" "^4.3.3" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" + +"@svgr/core@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.4.0.tgz#655378ee43679eb94fee3d4e1976e38252dff8e7" + integrity sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ== + dependencies: + "@svgr/plugin-jsx" "^5.4.0" + camelcase "^6.0.0" + cosmiconfig "^6.0.0" + +"@svgr/hast-util-to-babel-ast@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== + dependencies: + "@babel/types" "^7.4.4" + +"@svgr/hast-util-to-babel-ast@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz#bb5d002e428f510aa5b53ec0a02377a95b367715" + integrity sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg== + dependencies: + "@babel/types" "^7.9.5" + +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== + dependencies: + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.3" + "@svgr/hast-util-to-babel-ast" "^4.3.2" + svg-parser "^2.0.0" + +"@svgr/plugin-jsx@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz#ab47504c55615833c6db70fca2d7e489f509787c" + integrity sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw== + dependencies: + "@babel/core" "^7.7.5" + "@svgr/babel-preset" "^5.4.0" + "@svgr/hast-util-to-babel-ast" "^5.4.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== + dependencies: + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" + +"@svgr/plugin-svgo@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz#45d9800b7099a6f7b4d85ebac89ab9abe8592f64" + integrity sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA== + dependencies: + cosmiconfig "^6.0.0" + merge-deep "^3.0.2" + svgo "^1.2.2" + +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.4.5" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" + +"@svgr/webpack@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.4.0.tgz#b68bc86e29cf007292b96ced65f80971175632e0" + integrity sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg== + dependencies: + "@babel/core" "^7.9.0" + "@babel/plugin-transform-react-constant-elements" "^7.9.0" + "@babel/preset-env" "^7.9.5" + "@babel/preset-react" "^7.9.4" + "@svgr/core" "^5.4.0" + "@svgr/plugin-jsx" "^5.4.0" + "@svgr/plugin-svgo" "^5.4.0" + loader-utils "^2.0.0" + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@types/babel__core@^7.1.0": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__core@^7.1.7": + version "7.1.9" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" + integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" + integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== + dependencies: + "@babel/types" "^7.3.0" + +"@types/braces@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb" + integrity sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw== + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/d3-array@*": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-2.0.0.tgz#a0d63a296a2d8435a9ec59393dcac746c6174a96" + integrity sha512-rGqfPVowNDTszSFvwoZIXvrPG7s/qKzm9piCRIH6xwTTRu7pPZ3ootULFnPkTt74B6i5lN0FpLQL24qGOw1uZA== + +"@types/d3-array@^1": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-1.2.7.tgz#34dc654d34fc058c41c31dbca1ed68071a8fcc17" + integrity sha512-51vHWuUyDOi+8XuwPrTw3cFqyh2Slg9y8COYkRfjCPG9TfYqY0hoNPzv/8BrcAy0FeQBzqEo/D/8Nk2caOQJnA== + +"@types/d3-axis@*": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-1.0.12.tgz#8c124edfcc02f3b3a9cdaa2a28b8a20341401799" + integrity sha512-BZISgSD5M8TgURyNtcPAmUB9sk490CO1Thb6/gIn0WZTt3Y50IssX+2Z0vTccoqZksUDTep0b+o4ofXslvNbqg== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-brush@*": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-1.1.0.tgz#3f1f01aa3d4d70aff2a358c49dd3295be10d774c" + integrity sha512-yz5Y94XpUARimOlLk+RWM1cZh1FrtmSGOyDQfCArsMa6kAnhjF3EserSTDnHAuVuNATMoTIOPHa7pjG2iTkPYA== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-1.0.9.tgz#ccc5de03ff079025491b7aa6b750670a140b45ae" + integrity sha512-UA6lI9CVW5cT5Ku/RV4hxoFn4mKySHm7HEgodtfRthAj1lt9rKZEPon58vyYfk+HIAm33DtJJgZwMXy2QgyPXw== + +"@types/d3-collection@*": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-collection/-/d3-collection-1.0.8.tgz#aa9552c570a96e33c132e0fd20e331f64baa9dd5" + integrity sha512-y5lGlazdc0HNO0F3UUX2DPE7OmYvd9Kcym4hXwrJcNUkDaypR5pX+apuMikl9LfTxKItJsY9KYvzBulpCKyvuQ== + +"@types/d3-color@*": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.2.2.tgz#80cf7cfff7401587b8f89307ba36fe4a576bc7cf" + integrity sha512-6pBxzJ8ZP3dYEQ4YjQ+NVbQaOflfgXq/JbDiS99oLobM2o72uAST4q6yPxHv6FOTCRC/n35ktuo8pvw/S4M7sw== + +"@types/d3-contour@*": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-1.3.0.tgz#1a408b121fa5e341f715e3055303ef3079fc7eb0" + integrity sha512-AUCUIjEnC5lCGBM9hS+MryRaFLIrPls4Rbv6ktqbd+TK/RXZPwOy9rtBWmGpbeXcSOYCJTUDwNJuEnmYPJRxHQ== + dependencies: + "@types/d3-array" "*" + "@types/geojson" "*" + +"@types/d3-dispatch@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-1.0.7.tgz#6721aefbb9862ce78c20a87a1490c21f57c3ed7f" + integrity sha512-M+z84G7UKwK6hEPnGCSccOg8zJ3Nk2hgDQ9sCstHXgsFU0sMxlIZVKqKB5oxUDbALqQG6ucg0G9e8cmOSlishg== + +"@types/d3-drag@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-1.2.3.tgz#d8ddccca28e939e9c689bea6f40a937e48c39051" + integrity sha512-rWB5SPvkYVxW3sqUxHOJUZwifD0KqvKwvt1bhNqcLpW6Azsd0BJgRNcyVW8GAferaAk5r8dzeZnf9zKlg9+xMQ== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "1.0.36" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-1.0.36.tgz#e91129d7c02b1b814838d001e921e8b9a67153d0" + integrity sha512-jbIWQ27QJcBNMZbQv0NSQMHnBDCmxghAxePxgyiPH1XPCRkOsTBei7jcdi3fDrUCGpCV3lKrSZFSlOkhUQVClA== + +"@types/d3-ease@*": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-1.0.9.tgz#1dd849bd7edef6426e915e220ed9970db5ea4e04" + integrity sha512-U5ADevQ+W6fy32FVZZC9EXallcV/Mi12A5Tkd0My5MrC7T8soMQEhlDAg88XUWm0zoCQlB4XV0en/24LvuDB4Q== + +"@types/d3-fetch@*": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-1.1.5.tgz#51601f79dd4653b5d84e6a3176d78145e065db5e" + integrity sha512-o9c0ItT5/Gl3wbNuVpzRnYX1t3RghzeWAjHUVLuyZJudiTxC4f/fC0ZPFWLQ2lVY8pAMmxpV8TJ6ETYCgPeI3A== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-1.2.1.tgz#c28803ea36fe29788db69efa0ad6c2dc09544e83" + integrity sha512-jqK+I36uz4kTBjyk39meed5y31Ab+tXYN/x1dn3nZEus9yOHCLc+VrcIYLc/aSQ0Y7tMPRlIhLetulME76EiiA== + +"@types/d3-format@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-1.3.1.tgz#35bf88264bd6bcda39251165bb827f67879c4384" + integrity sha512-KAWvReOKMDreaAwOjdfQMm0HjcUMlQG47GwqdVKgmm20vTd2pucj0a70c3gUSHrnsmo6H2AMrkBsZU2UhJLq8A== + +"@types/d3-geo@*": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.11.1.tgz#e96ec91f16221d87507fec66b2cc889f52d2493e" + integrity sha512-Ox8WWOG3igDRoep/dNsGbOiSJYdUG3ew/6z0ETvHyAtXZVBjOE0S96zSSmzgl0gqQ3RdZjn2eeJOj9oRcMZPkQ== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-1.1.6.tgz#4c017521900813ea524c9ecb8d7985ec26a9ad9a" + integrity sha512-vvSaIDf/Ov0o3KwMT+1M8+WbnnlRiGjlGD5uvk83a1mPCTd/E5x12bUJ/oP55+wUY/4Kb5kc67rVpVGJ2KUHxg== + +"@types/d3-interpolate@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz#1c280511f622de9b0b47d463fa55f9a4fd6f5fc8" + integrity sha512-z8Zmi08XVwe8e62vP6wcA+CNuRhpuUU5XPEfqpG0hRypDE5BWNthQHB1UNWWDB7ojCbGaN4qBdsWp5kWxhT1IQ== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.8.tgz#48e6945a8ff43ee0a1ce85c8cfa2337de85c7c79" + integrity sha512-AZGHWslq/oApTAHu9+yH/Bnk63y9oFOMROtqPAtxl5uB6qm1x2lueWdVEjsjjV3Qc2+QfuzKIwIR5MvVBakfzA== + +"@types/d3-polygon@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-1.0.7.tgz#7b3947aa2d48287ff535230d3d396668ab17bfdf" + integrity sha512-Xuw0eSjQQKs8jTiNbntWH0S+Xp+JyhqxmQ0YAQ3rDu6c3kKMFfgsaGN7Jv5u3zG6yVX/AsLP/Xs/QRjmi9g43Q== + +"@types/d3-quadtree@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-1.0.7.tgz#8e29464ff5b326f6612c1428d9362b4b35de2b70" + integrity sha512-0ajFawWicfjsaCLh6NzxOyVDYhQAmMFbsiI3MPGLInorauHFEh9/Cl6UHNf+kt/J1jfoxKY/ZJaKAoDpbvde5Q== + +"@types/d3-random@*": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-1.1.2.tgz#6f77e8b7bb64ac393f92d33fe8f71038bc4f3cde" + integrity sha512-Jui+Zn28pQw/3EayPKaN4c/PqTvqNbIPjHkgIIFnxne1FdwNjfHtAIsZIBMKlquQNrrMjFzCrlF2gPs3xckqaA== + +"@types/d3-scale-chromatic@*": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#315367557d51b823bec848614fac095325613fc3" + integrity sha512-9/D7cOBKdZdTCPc6re0HeSUFBM0aFzdNdmYggUWT9SRRiYSOa6Ys2xdTwHKgc1WS3gGfwTMatBOdWCS863REsg== + +"@types/d3-scale@*": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-2.2.0.tgz#e5987a2857365823eb26ed5eb21bc566c4dcf1c0" + integrity sha512-oQFanN0/PiR2oySHfj+zAAkK1/p4LD32Nt1TMVmzk+bYHk7vgIg/iTXQWitp1cIkDw4LMdcgvO63wL+mNs47YA== + dependencies: + "@types/d3-time" "*" + +"@types/d3-selection@*": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.4.1.tgz#fa1f8710a6b5d7cfe5c6caa61d161be7cae4a022" + integrity sha512-bv8IfFYo/xG6dxri9OwDnK3yCagYPeRIjTlrcdYJSx+FDWlCeBDepIHUpqROmhPtZ53jyna0aUajZRk0I3rXNA== + +"@types/d3-shape@*": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.3.2.tgz#a41d9d6b10d02e221696b240caf0b5d0f5a588ec" + integrity sha512-LtD8EaNYCaBRzHzaAiIPrfcL3DdIysc81dkGlQvv7WQP3+YXV7b0JJTtR1U3bzeRieS603KF4wUo+ZkJVenh8w== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-2.1.1.tgz#dd2c79ec4575f1355484ab6b10407824668eba42" + integrity sha512-tJSyXta8ZyJ52wDDHA96JEsvkbL6jl7wowGmuf45+fAkj5Y+SQOnz0N7/H68OWmPshPsAaWMQh+GAws44IzH3g== + +"@types/d3-time@*": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-1.0.10.tgz#d338c7feac93a98a32aac875d1100f92c7b61f4f" + integrity sha512-aKf62rRQafDQmSiv1NylKhIMmznsjRN+MnXRXTqHoqm0U/UZzVpdrtRnSIfdiLS616OuC1soYeX1dBg2n1u8Xw== + +"@types/d3-timer@*": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-1.0.9.tgz#aed1bde0cf18920d33f5d44839d73de393633fd3" + integrity sha512-WvfJ3LFxBbWjqRGz9n7GJt08RrTHPJDVsIwwoCMROlqF+iDacYiAFjf9oqnq0mXpb2juA2N/qjKP+MKdal3YNQ== + +"@types/d3-transition@*": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-1.1.6.tgz#7e52da29749d874866cc803fad13925713a372da" + integrity sha512-/F+O2r4oz4G9ATIH3cuSCMGphAnl7VDx7SbENEK0NlI/FE8Jx2oiIrv0uTrpg7yF/AmuWbqp7AGdEHAPIh24Gg== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-voronoi@*": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz#7bbc210818a3a5c5e0bafb051420df206617c9e5" + integrity sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ== + +"@types/d3-zoom@*": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.7.4.tgz#9226ffd2bd3846ec0e4a4e2bff211612d3aafad5" + integrity sha512-5jnFo/itYhJeB2khO/lKe730kW/h2EbKMOvY0uNp3+7NdPm4w63DwPEMxifQZ7n902xGYK5DdU67FmToSoy4VA== + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-5.7.2.tgz#52235eb71a1d3ca171d6dca52a58f5ccbe0254cc" + integrity sha512-7/wClB8ycneWGy3jdvLfXKTd5SoTg9hji7IdJ0RuO9xTY54YpJ8zlcFADcXhY1J3kCBwxp+/1jeN6a5OMwgYOw== + dependencies: + "@types/d3-array" "^1" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-collection" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-voronoi" "*" + "@types/d3-zoom" "*" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/geojson@*": + version "7946.0.7" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" + integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== + +"@types/glob-base@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@types/glob-base/-/glob-base-0.3.0.tgz#a581d688347e10e50dd7c17d6f2880a10354319d" + integrity sha1-pYHWiDR+EOUN18F9byiAoQNUMZ0= + +"@types/glob@*": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/history@*": + version "4.7.6" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.6.tgz#ed8fc802c45b8e8f54419c2d054e55c9ea344356" + integrity sha512-GRTZLeLJ8ia00ZH8mxMO8t0aC9M1N9bN461Z2eaRurJo6Fpa+utgCwLzI4jQHcrdzuzp5WPN9jRwpsCQ1VhJ5w== + +"@types/html-minifier-terser@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" + integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== + +"@types/http-proxy@^1.17.4": + version "1.17.4" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" + integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== + dependencies: + "@types/node" "*" + +"@types/is-function@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.0.tgz#1b0b819b1636c7baf0d6785d030d12edf70c3e83" + integrity sha512-iTs9HReBu7evG77Q4EC8hZnqRt57irBDkK9nvmHroiOIVwYMQc4IvYvdRgwKfYepunIY7Oh/dBuuld+Gj9uo6w== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" + integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/js-cookie@2.2.6", "@types/js-cookie@^2.2.6": + version "2.2.6" + resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" + integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== + +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/json-schema@^7.0.4": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== + +"@types/live-server@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/live-server/-/live-server-1.2.1.tgz#4d6588e1b888b415ed5fe8480224dcd225bc9eba" + integrity sha512-Yind497JdcZT8L9FF7u73nq44KmamiDitsZJEwrAi/pgBhFHThNvtR+2Z/YGNSMjyUoDBFdvhVSQmod06yd1Ng== + +"@types/lodash@^4.14.158": + version "4.14.158" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.158.tgz#b38ea8b6fe799acd076d7a8d7ab71c26ef77f785" + integrity sha512-InCEXJNTv/59yO4VSfuvNrZHt7eeNtWQEgnieIA+mIC+MOWM9arOWG2eQ8Vhk6NbOre6/BidiXhkZYeDY9U35w== + +"@types/markdown-to-jsx@^6.11.0": + version "6.11.1" + resolved "https://registry.yarnpkg.com/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.1.tgz#4d9464aa76337d798b874dd3f2d6b4c86ddd98ad" + integrity sha512-fm/II24OzSx7J7CzXnHjEIf0d+s82bmdcokbyzY7PFMUnhyhnuGJgedt8R+yZgDn1mqhCLHmMjBPMsL8K4Xp9g== + dependencies: + "@types/react" "*" + +"@types/micromatch@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/micromatch/-/micromatch-4.0.1.tgz#9381449dd659fc3823fd2a4190ceacc985083bc7" + integrity sha512-my6fLBvpY70KattTNzYOK6KU1oR1+UCz9ug/JbcF5UrEmeCt9P7DV2t7L8+t18mMPINqGQCE4O8PLOPbI84gxw== + dependencies: + "@types/braces" "*" + +"@types/minimatch@*", "@types/minimatch@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node-fetch@^2.5.4": + version "2.5.7" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" + integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + +"@types/node@*": + version "14.0.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" + integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== + +"@types/node@^14.0.27": + version "14.0.27" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" + integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== + +"@types/node@^14.0.4": + version "14.0.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.13.tgz#ee1128e881b874c371374c1f72201893616417c9" + integrity sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA== + +"@types/npmlog@^4.1.2": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.2.tgz#d070fe6a6b78755d1092a3dc492d34c3d8f871c4" + integrity sha512-4QQmOF5KlwfxJ5IGXFIudkeLCdMABz03RcUXu+LCb24zmln8QW6aDjuGl4d4XPVLf2j+FnjelHTP7dvceAFbhA== + +"@types/overlayscrollbars@^1.9.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@types/overlayscrollbars/-/overlayscrollbars-1.12.0.tgz#98456caceca8ad73bd5bb572632a585074e70764" + integrity sha512-h/pScHNKi4mb+TrJGDon8Yb06ujFG0mSg12wIO0sWMUF3dQIe2ExRRdNRviaNt9IjxIiOfnRr7FsQAdHwK4sMg== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/qs@^6.9.0": + version "6.9.3" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.3.tgz#b755a0934564a200d3efdf88546ec93c369abd03" + integrity sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA== + +"@types/reach__router@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.5.tgz#14e1e981cccd3a5e50dc9e969a72de0b9d472f6d" + integrity sha512-h0NbqXN/tJuBY/xggZSej1SKQEstbHO7J/omt1tYoFGmj3YXOodZKbbqD4mNDh7zvEGYd7YFrac1LTtAr3xsYQ== + dependencies: + "@types/history" "*" + "@types/react" "*" + +"@types/react-color@^3.0.1": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.4.tgz#c63daf012ad067ac0127bdd86725f079d02082bd" + integrity sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw== + dependencies: + "@types/react" "*" + "@types/reactcss" "*" + +"@types/react-copy-to-clipboard@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz#7d9c2c0af52e2e8106ebe2b9fde4f02859af7a3d" + integrity sha512-CDuRrJWEIdfKFC4vbwpXT3vk0O4gA/I/Kxu/1npUvGc2Yey5swPvsgO3JEnQkIUwdnYUbwUYDE/fTFQVgqr4oA== + dependencies: + "@types/react" "*" + +"@types/react-dom@^16.0.3", "@types/react-dom@^16.9.8": + version "16.9.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" + integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== + dependencies: + "@types/react" "*" + +"@types/react-syntax-highlighter@11.0.4": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz#d86d17697db62f98046874f62fdb3e53a0bbc4cd" + integrity sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^16.0.34": + version "16.9.35" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" + integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/react@^16.9.43": + version "16.9.43" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b" + integrity sha512-PxshAFcnJqIWYpJbLPriClH53Z2WlJcVZE+NP2etUtWQs2s7yIMj3/LDKZT/5CHJ/F62iyjVCDu2H3jHEXIxSg== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/reactcss@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/reactcss/-/reactcss-1.2.3.tgz#af28ae11bbb277978b99d04d1eedfd068ca71834" + integrity sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA== + dependencies: + "@types/react" "*" + +"@types/rfdc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/rfdc/-/rfdc-1.1.0.tgz#1fc5ffdc679575e2ca31399d4ee75f353afdd37b" + integrity sha512-Ez0Pc0H6m8C2L3Wif9SR5YlJTB/UnZIq0N9G/dPB2fmGo42oLo95o73hHHtoGvUucMD4OdlquscflSuKCZE8qA== + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/tapable@*", "@types/tapable@^1.0.5": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + +"@types/uglify-js@*": + version "3.9.3" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.3.tgz#d94ed608e295bc5424c9600e6b8565407b6b4b6b" + integrity sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w== + dependencies: + source-map "^0.6.1" + +"@types/webpack-env@^1.15.2": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.15.2.tgz#927997342bb9f4a5185a86e6579a0a18afc33b0a" + integrity sha512-67ZgZpAlhIICIdfQrB5fnDvaKFcDxpKibxznfYRVAT4mQE41Dido/3Ty+E3xGBmTogc5+0Qb8tWhna+5B8z1iQ== + +"@types/webpack-sources@*": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.0.tgz#e58f1f05f87d39a5c64cf85705bdbdbb94d4d57e" + integrity sha512-c88dKrpSle9BtTqR6ifdaxu1Lvjsl3C5OsfvuUbUwdXymshv1TkufUAXBajCCUM/f/TmnkZC/Esb03MinzSiXQ== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.13", "@types/webpack@^4.41.8": + version "4.41.21" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" + integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" + integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" + integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== + dependencies: + "@typescript-eslint/experimental-utils" "2.34.0" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" + integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^2.10.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" + integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" + integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@uifabric/foundation@^7.7.39": + version "7.7.39" + resolved "https://registry.yarnpkg.com/@uifabric/foundation/-/foundation-7.7.39.tgz#d3eb9e0a86a31c631db8eb4c41397304e81d3327" + integrity sha512-dQvUcSbLFPAiLagn8gxPXMVB+I//3pz6QB313mQaNlOgeSw45S8Hm1b/sy/KoMqHl8zCJRmZInX3IYTpmhKrJQ== + dependencies: + "@uifabric/merge-styles" "^7.16.3" + "@uifabric/set-version" "^7.0.18" + "@uifabric/styling" "^7.14.5" + "@uifabric/utilities" "^7.24.5" + tslib "^1.10.0" + +"@uifabric/icons@^7.3.65": + version "7.3.65" + resolved "https://registry.yarnpkg.com/@uifabric/icons/-/icons-7.3.65.tgz#584e5b38cd709504344ef0001472da0707516dd0" + integrity sha512-aDnuRS1+su/slD4pkIzdZfrDQxYfgosGdildvgIAKX9HSShw4BZKH7KkqenAdmhY3iBZoV5htr+kGFZGiCjWTw== + dependencies: + "@uifabric/set-version" "^7.0.18" + "@uifabric/styling" "^7.14.5" + tslib "^1.10.0" + +"@uifabric/merge-styles@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@uifabric/merge-styles/-/merge-styles-7.16.3.tgz#4e55748a7991bbb419240d828c3e18afb4bb4df1" + integrity sha512-MmLPDRVbFENixb77K041y9VlSohcULbYXHlolYedNW+KCr1tyu700GunnBwOnWRhKOoKgStvBZZdy5X7ty41xQ== + dependencies: + "@uifabric/set-version" "^7.0.18" + tslib "^1.10.0" + +"@uifabric/react-hooks@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@uifabric/react-hooks/-/react-hooks-7.6.2.tgz#1685e13b2b40a53a07eca08314f38a8e0419b009" + integrity sha512-ETokkVskutNvaWWGUy6x4bOFyek1/tVfUygG1NyiqNs78S2qfl4Pt8pyZs5PDOcGNfPor5IIKSi519ZmRayCIw== + dependencies: + "@uifabric/set-version" "^7.0.18" + "@uifabric/utilities" "^7.24.5" + tslib "^1.10.0" + +"@uifabric/set-version@^7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@uifabric/set-version/-/set-version-7.0.18.tgz#50860f5b8c2fceaa46ed7e22af0307d4318ca232" + integrity sha512-W/SD7FzukXw1tz8zeD7fy548as1I048dA9tTnfbWMH9iSAbRG1LWmkw2+4BgyoOcEDumcQlpGY2818+atpndyw== + dependencies: + tslib "^1.10.0" + +"@uifabric/styling@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@uifabric/styling/-/styling-7.14.5.tgz#db2b91d403607214a9f37a8e3898779c76316bff" + integrity sha512-9HFZsBMXqW6uilhbL/z9Ih2JwqK0IVM1Z0HYAG9cYOciXvCZ6MUUi08nnkwRq2bkOe6vgaiCovsAh2HkOhb+0Q== + dependencies: + "@microsoft/load-themed-styles" "^1.10.26" + "@uifabric/merge-styles" "^7.16.3" + "@uifabric/set-version" "^7.0.18" + "@uifabric/utilities" "^7.24.5" + tslib "^1.10.0" + +"@uifabric/utilities@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@uifabric/utilities/-/utilities-7.24.5.tgz#b9c59d140133ede887085c41c85db78e4df46daf" + integrity sha512-pg8pzEwNoytofrcTx0LHBm9NZNgyJqTiF6AQV0sRbL1eF27sxGZXb9PD7PBWv0rRJ79Q0xyEr4PiEsLZ2k/d5w== + dependencies: + "@uifabric/merge-styles" "^7.16.3" + "@uifabric/set-version" "^7.0.18" + prop-types "^15.7.2" + tslib "^1.10.0" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webpack-contrib/schema-utils@^1.0.0-beta.0": + version "1.0.0-beta.0" + resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65" + integrity sha512-LonryJP+FxQQHsjGBi6W786TQB1Oym+agTpY0c+Kj8alnIw+DLUJb6SI8Y1GHGhLCH1yPRrucjObUmxNICQ1pg== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chalk "^2.3.2" + strip-ansi "^4.0.0" + text-table "^0.2.0" + webpack-log "^1.1.2" + +"@welldone-software/why-did-you-render@^4.2.7": + version "4.2.7" + resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-4.2.7.tgz#7731bc42ef44e146be3c39f026bc4826dd4e5699" + integrity sha512-La1INHiFnHi9USYGAaRsPhMXMOt2x3qee8cXxRija0h3tQJY1/XmSSelyXDMQkVtDDa61DMfk3H59gxWDmnqsA== + dependencies: + lodash "^4" + +"@xobotyi/scrollbar-width@1.9.5": + version "1.9.5" + resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" + integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +ace-builds@^1.4.12, ace-builds@^1.4.6: + version "1.4.12" + resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.4.12.tgz#888efa386e36f4345f40b5233fcc4fe4c588fae7" + integrity sha512-G+chJctFPiiLGvs3+/Mly3apXTcfgE45dT5yp12BcWZ1kUs+gm0qd3/fv4gsz6fVag4mM0moHVpjHDIgph6Psg== + +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn-walk@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" + integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1, acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" + integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + +add-dom-event-listener@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" + integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== + dependencies: + object-assign "4.x" + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ahooks@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/ahooks/-/ahooks-2.9.2.tgz#b8d9dc0f4d6e8ed64f425714f5e000fa4e9b14bc" + integrity sha512-rylm2FTl3ud9lxi95EZU249fBECLXPC85KRbJiqx3MUR/FoCgf2QQjDfUEJjZQ3VVJmvb6fGL71Sqgk6hca1HA== + dependencies: + "@ahooksjs/use-request" "^2.8.1" + "@types/js-cookie" "^2.2.6" + dayjs "^1.9.1" + intersection-observer "^0.7.0" + js-cookie "^2.2.1" + lodash.debounce "^4.0.8" + lodash.isequal "^4.5.0" + lodash.throttle "^4.1.1" + resize-observer-polyfill "^1.5.1" + screenfull "^5.0.0" + +airbnb-js-shims@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz#db481102d682b98ed1daa4c5baa697a05ce5c040" + integrity sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + array.prototype.flatmap "^1.2.1" + es5-shim "^4.5.13" + es6-shim "^0.35.5" + function.prototype.name "^1.1.0" + globalthis "^1.0.0" + object.entries "^1.1.0" + object.fromentries "^2.0.0 || ^1.0.0" + object.getownpropertydescriptors "^2.0.3" + object.values "^1.1.0" + promise.allsettled "^1.0.0" + promise.prototype.finally "^3.1.0" + string.prototype.matchall "^4.0.0 || ^3.0.1" + string.prototype.padend "^3.0.0" + string.prototype.padstart "^3.0.0" + symbol.prototype.description "^1.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +ansi-to-html@^0.6.11: + version "0.6.14" + resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.14.tgz#65fe6d08bba5dd9db33f44a20aec331e0010dad8" + integrity sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA== + dependencies: + entities "^1.1.2" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +antd@~4.8.5: + version "4.8.5" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.8.5.tgz#eb0af8154a6dffb070c016b344d4b49b6910ce4f" + integrity sha512-QN8//mMToHo1u7gRThbVYKW9rqdN+2x/5PAk5d76MkeALezE3J2Tf4mm2+COUf0qUNiV0ZNtdcLY3weTVlKpDg== + dependencies: + "@ant-design/colors" "^5.0.0" + "@ant-design/css-animation" "^1.7.2" + "@ant-design/icons" "^4.3.0" + "@ant-design/react-slick" "~0.27.0" + "@babel/runtime" "^7.11.2" + array-tree-filter "^2.1.0" + classnames "^2.2.6" + copy-to-clipboard "^3.2.0" + lodash "^4.17.20" + moment "^2.25.3" + omit.js "^2.0.2" + rc-animate "~3.1.0" + rc-cascader "~1.4.0" + rc-checkbox "~2.3.0" + rc-collapse "~2.0.0" + rc-dialog "~8.4.0" + rc-drawer "~4.1.0" + rc-dropdown "~3.2.0" + rc-field-form "~1.17.0" + rc-image "~4.0.0" + rc-input-number "~6.1.0" + rc-mentions "~1.5.0" + rc-menu "~8.10.0" + rc-motion "^2.4.0" + rc-notification "~4.5.2" + rc-pagination "~3.1.0" + rc-picker "~2.4.1" + rc-progress "~3.1.0" + rc-rate "~2.9.0" + rc-resize-observer "^0.2.3" + rc-select "~11.4.0" + rc-slider "~9.6.1" + rc-steps "~4.1.0" + rc-switch "~3.2.0" + rc-table "~7.11.0" + rc-tabs "~11.7.0" + rc-textarea "~0.3.0" + rc-tooltip "~5.0.0" + rc-tree "~3.11.0" + rc-tree-select "~4.1.1" + rc-upload "~3.3.1" + rc-util "^5.1.0" + scroll-into-view-if-needed "^2.2.25" + warning "^4.0.3" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apache-crypt@^1.1.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/apache-crypt/-/apache-crypt-1.2.5.tgz#4eb6b6dbaed2041ce5bc2d802f4421f5fdadc25e" + integrity sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg== + dependencies: + unix-crypt-td-js "^1.1.4" + +apache-md5@^1.0.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.7.tgz#dcef1802700cc231d60c5e08fd088f2f9b36375a" + integrity sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw== + +app-root-dir@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" + integrity sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg= + +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argue-cli@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/argue-cli/-/argue-cli-1.2.1.tgz#27b2304f86370642ad2dcbb69f00fd728215073f" + integrity sha512-Em3HDMlqiVLNOgXUCYz5NG1mx/44aijsxUOO8elmfvAN4/3ar1S3WPTua7WGhsMbeQm8clOwpDZ09sN7C2FnOg== + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.0.0" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +array.prototype.flatmap@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" + integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + +array.prototype.map@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" + integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.4" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +ast-types@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" + integrity sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA== + +ast-types@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" + integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + +async-validator@^3.0.3: + version "3.5.1" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.1.tgz#cd62b9688b2465f48420e27adb47760ab1b5559f" + integrity sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ== + +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" + integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001061" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.30" + postcss-value-parser "^4.1.0" + +autoprefixer@^9.7.2: + version "9.8.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa" + integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001097" + colorette "^1.2.0" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +axobject-query@^2.0.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-helper-evaluate-path@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz#a62fa9c4e64ff7ea5cea9353174ef023a900a67c" + integrity sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA== + +babel-helper-flip-expressions@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz#3696736a128ac18bc25254b5f40a22ceb3c1d3fd" + integrity sha1-NpZzahKKwYvCUlS19AoizrPB0/0= + +babel-helper-is-nodes-equiv@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" + integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ= + +babel-helper-is-void-0@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz#7d9c01b4561e7b95dbda0f6eee48f5b60e67313e" + integrity sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4= + +babel-helper-mark-eval-scopes@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz#d244a3bef9844872603ffb46e22ce8acdf551562" + integrity sha1-0kSjvvmESHJgP/tG4izorN9VFWI= + +babel-helper-remove-or-void@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz#a4f03b40077a0ffe88e45d07010dee241ff5ae60" + integrity sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA= + +babel-helper-to-multiple-sequence-expressions@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" + integrity sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA== + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.1.0, babel-loader@^8.0.6: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-add-react-displayname@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" + integrity sha1-M51M3be2X9YtHfnbn+BN4TQSK9U= + +babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: + version "10.0.33" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" + integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/serialize" "^0.11.16" + babel-plugin-macros "^2.0.0" + babel-plugin-syntax-jsx "^6.18.0" + convert-source-map "^1.5.0" + escape-string-regexp "^1.0.5" + find-root "^1.1.0" + source-map "^0.5.7" + +babel-plugin-import@^1.13.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-import/-/babel-plugin-import-1.13.0.tgz#c532fd533df9db53b47d4d4db3676090fc5c07a5" + integrity sha512-bHU8m0SrY89ub2hBBuYjbennOeH0YUYkVpH6jxKFk0uD8rhN+0jNHIPtXnac+Vn7N/hgkLGGDcIoYK7je3Hhew== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/runtime" "^7.0.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0, babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-minify-builtins@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b" + integrity sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag== + +babel-plugin-minify-constant-folding@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz#f84bc8dbf6a561e5e350ff95ae216b0ad5515b6e" + integrity sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ== + dependencies: + babel-helper-evaluate-path "^0.5.0" + +babel-plugin-minify-dead-code-elimination@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz#1a0c68e44be30de4976ca69ffc535e08be13683f" + integrity sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg== + dependencies: + babel-helper-evaluate-path "^0.5.0" + babel-helper-mark-eval-scopes "^0.4.3" + babel-helper-remove-or-void "^0.4.3" + lodash "^4.17.11" + +babel-plugin-minify-flip-comparisons@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz#00ca870cb8f13b45c038b3c1ebc0f227293c965a" + integrity sha1-AMqHDLjxO0XAOLPB68DyJyk8llo= + dependencies: + babel-helper-is-void-0 "^0.4.3" + +babel-plugin-minify-guarded-expressions@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz#818960f64cc08aee9d6c75bec6da974c4d621135" + integrity sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA== + dependencies: + babel-helper-evaluate-path "^0.5.0" + babel-helper-flip-expressions "^0.4.3" + +babel-plugin-minify-infinity@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz#dfb876a1b08a06576384ef3f92e653ba607b39ca" + integrity sha1-37h2obCKBldjhO8/kuZTumB7Oco= + +babel-plugin-minify-mangle-names@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz#bcddb507c91d2c99e138bd6b17a19c3c271e3fd3" + integrity sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw== + dependencies: + babel-helper-mark-eval-scopes "^0.4.3" + +babel-plugin-minify-numeric-literals@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz#8e4fd561c79f7801286ff60e8c5fd9deee93c0bc" + integrity sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw= + +babel-plugin-minify-replace@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz#d3e2c9946c9096c070efc96761ce288ec5c3f71c" + integrity sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q== + +babel-plugin-minify-simplify@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz#f21613c8b95af3450a2ca71502fdbd91793c8d6a" + integrity sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A== + dependencies: + babel-helper-evaluate-path "^0.5.0" + babel-helper-flip-expressions "^0.4.3" + babel-helper-is-nodes-equiv "^0.0.1" + babel-helper-to-multiple-sequence-expressions "^0.5.0" + +babel-plugin-minify-type-constructors@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz#1bc6f15b87f7ab1085d42b330b717657a2156500" + integrity sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA= + dependencies: + babel-helper-is-void-0 "^0.4.3" + +babel-plugin-named-asset-import@^0.3.1, babel-plugin-named-asset-import@^0.3.6: + version "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-react-docgen@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.1.0.tgz#1dfa447dac9ca32d625a123df5733a9e47287c26" + integrity sha512-vzpnBlfGv8XOhJM2zbPyyqw2OLEbelgZZsaaRRTpVwNKuYuc+pUg4+dy7i9gCRms0uOQn4osX571HRcCJMJCmA== + dependencies: + lodash "^4.17.15" + react-docgen "^5.0.0" + recast "^0.14.7" + +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" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-inline-consecutive-adds@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz#323d47a3ea63a83a7ac3c811ae8e6941faf2b0d1" + integrity sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE= + +babel-plugin-transform-member-expression-literals@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf" + integrity sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8= + +babel-plugin-transform-merge-sibling-variables@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae" + integrity sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4= + +babel-plugin-transform-minify-booleans@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198" + integrity sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-property-literals@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39" + integrity sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk= + dependencies: + esutils "^2.0.2" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-plugin-transform-regexp-constructors@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz#58b7775b63afcf33328fae9a5f88fbd4fb0b4965" + integrity sha1-WLd3W2OvzzMyj66aX4j71PsLSWU= + +babel-plugin-transform-remove-console@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780" + integrity sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A= + +babel-plugin-transform-remove-debugger@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2" + integrity sha1-QrcnYxyXl44estGZp67IShgznvI= + +babel-plugin-transform-remove-undefined@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz#80208b31225766c630c97fa2d288952056ea22dd" + integrity sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ== + dependencies: + babel-helper-evaluate-path "^0.5.0" + +babel-plugin-transform-simplify-comparison-operators@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9" + integrity sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk= + +babel-plugin-transform-undefined-to-void@^6.9.4: + version "6.9.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" + integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= + +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +"babel-preset-minify@^0.5.0 || 0.6.0-alpha.5": + version "0.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz#25f5d0bce36ec818be80338d0e594106e21eaa9f" + integrity sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg== + dependencies: + babel-plugin-minify-builtins "^0.5.0" + babel-plugin-minify-constant-folding "^0.5.0" + babel-plugin-minify-dead-code-elimination "^0.5.1" + babel-plugin-minify-flip-comparisons "^0.4.3" + babel-plugin-minify-guarded-expressions "^0.4.4" + babel-plugin-minify-infinity "^0.4.3" + babel-plugin-minify-mangle-names "^0.5.0" + babel-plugin-minify-numeric-literals "^0.4.3" + babel-plugin-minify-replace "^0.5.0" + babel-plugin-minify-simplify "^0.5.1" + babel-plugin-minify-type-constructors "^0.4.3" + babel-plugin-transform-inline-consecutive-adds "^0.4.3" + babel-plugin-transform-member-expression-literals "^6.9.4" + babel-plugin-transform-merge-sibling-variables "^6.9.4" + babel-plugin-transform-minify-booleans "^6.9.4" + babel-plugin-transform-property-literals "^6.9.4" + babel-plugin-transform-regexp-constructors "^0.4.3" + babel-plugin-transform-remove-console "^6.9.4" + babel-plugin-transform-remove-debugger "^6.9.4" + babel-plugin-transform-remove-undefined "^0.5.0" + babel-plugin-transform-simplify-comparison-operators "^6.9.4" + babel-plugin-transform-undefined-to-void "^6.9.4" + lodash "^4.17.11" + +babel-preset-react-app@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== + dependencies: + "@babel/core" "7.9.0" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-proposal-optional-chaining" "7.9.0" + "@babel/plugin-transform-flow-strip-types" "7.9.0" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.9.0" + "@babel/preset-env" "7.9.0" + "@babel/preset-react" "7.9.1" + "@babel/preset-typescript" "7.9.0" + "@babel/runtime" "7.9.0" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + +batch-processor@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" + integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg= + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bcryptjs@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" + integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= + +better-opn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.0.0.tgz#c70d198e51164bdc220306a28a885d9ac7a14c44" + integrity sha512-PPbGRgO/K0LowMHbH/JNvaV3qY3Vt+A2nH28fzJxy16h/DfR5OsVti6ldGl6S9SMsyUqT13sltikiAVtI6tKLA== + dependencies: + open "^7.0.3" + +bfj@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" + integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== + dependencies: + bluebird "^3.5.5" + check-types "^8.0.3" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.3.5, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bowser@^1.7.3: + version "1.9.4" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" + integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== + +boxen@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist-useragent-regexp@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/browserslist-useragent-regexp/-/browserslist-useragent-regexp-2.1.0.tgz#2485686e08ff9699ce298bb8ab4cc6b1bb4da7d3" + integrity sha512-tp2GxiN2g5/5T5TR5VtPc2bUYyHBrvdnoblJlKiF814kB+/U8++Qk8a/znxNVUNHLqEzjyX1Y2X5QmSrXSZJtQ== + dependencies: + "@babel/runtime-corejs3" "^7.9.6" + "@types/node" "^14.0.4" + argue-cli "^1.2.0" + browserslist "^4.5.6" + chalk "^4.0.0" + easy-table "^1.1.1" + useragent "^2.3.0" + +browserslist@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.5.6, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.12.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" + integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== + dependencies: + caniuse-lite "^1.0.30001043" + electron-to-chromium "^1.3.413" + node-releases "^1.1.53" + pkg-up "^2.0.0" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.0.3: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bulma@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.9.0.tgz#948c5445a49e9d7546f0826cb3820d17178a814f" + integrity sha512-rV75CJkubNUroAt0qCRkjznZLoaXq/ctfMXsMvKSL84UetbSyx5REl96e8GoQ04G4Tkw0XF3STECffTOQrbzOQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cacache@^15.0.4: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" + integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + +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" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: + version "1.0.30001066" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz#0a8a58a10108f2b9bf38e7b65c237b12fd9c5f04" + integrity sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw== + +caniuse-lite@^1.0.30001097: + version "1.0.30001099" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e" + integrity sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0, case-sensitive-paths-webpack-plugin@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-types@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" + integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== + +chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.3.0, chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-table3@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== + dependencies: + object-assign "^4.1.0" + string-width "^4.2.0" + optionalDependencies: + colors "^1.1.2" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +clipboard@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" + integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +cliui@^3.0.3, cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + 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== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "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.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colorette@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +colors@^1.1.2, colors@latest: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +commander@2, commander@^2.11.0, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +compute-scroll-into-view@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" + integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@^3.6.6: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +consola@^2.10.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.12.1.tgz#88e9311a02cb88a7f6f9488239dd30b6ba99cbb0" + integrity sha512-aEkkju9ZcEa9y2MhzNhfmTUws/CEZZ0LKu0FxftSU3HygPfVMMIMSYyYct+xBN6XNRhsaDZjw2HAv3m2ammXSA== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-props@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + +copy-to-clipboard@^3, copy-to-clipboard@^3.0.8, copy-to-clipboard@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" + integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== + dependencies: + toggle-selection "^1.0.6" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js-pure@^3.0.0, core-js-pure@^3.0.1: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.4.0, core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.0.1, core-js@^3.0.4, core-js@^3.5.0, core-js@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cors@latest: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-context@0.3.0, create-react-context@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" + integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== + dependencies: + gud "^1.0.0" + warning "^4.0.3" + +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + 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" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-in-js-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" + integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== + dependencies: + hyphenate-style-name "^1.0.2" + isobject "^3.0.1" + +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-loader@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-to-react-native@^2.0.3: + version "2.3.2" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.2.tgz#e75e2f8f7aa385b4c3611c52b074b70a002f2e7d" + integrity sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^3.3.0" + +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" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@1.0.0-alpha.39, css-tree@^1.0.0-alpha.28: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" + integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + dependencies: + css-tree "1.0.0-alpha.39" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^2.2.0, csstype@^2.5.5: + version "2.6.10" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" + integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== + +csstype@^2.5.7: + version "2.6.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" + integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= + +customize-cra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/customize-cra/-/customize-cra-1.0.0.tgz#73286563631aa08127ad4d30a2e3c89cf4e93c8d" + integrity sha512-DbtaLuy59224U+xCiukkxSq8clq++MOtJ1Et7LED1fLszWe88EoblEYFBJ895sB1mC6B4uu3xPT/IjClELhMbA== + dependencies: + lodash.flow "^3.5.0" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +d3-axis@1: + version "1.0.12" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" + integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== + +d3-brush@1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" + integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== + dependencies: + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" + +d3-chord@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" + integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== + dependencies: + d3-array "1" + d3-path "1" + +d3-collection@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== + +d3-color@1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== + +d3-contour@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" + integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== + dependencies: + d3-array "^1.1.1" + +d3-dispatch@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" + integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== + +d3-drag@1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" + integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== + dependencies: + d3-dispatch "1" + d3-selection "1" + +d3-dsv@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" + integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== + dependencies: + commander "2" + iconv-lite "0.4" + rw "1" + +d3-ease@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" + integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== + +d3-fetch@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz#957c8fbc6d4480599ba191b1b2518bf86b3e1be2" + integrity sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA== + dependencies: + d3-dsv "1" + +d3-force@1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" + integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== + dependencies: + d3-collection "1" + d3-dispatch "1" + d3-quadtree "1" + d3-timer "1" + +d3-format@1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" + integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== + +d3-geo@1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.0.tgz#58ddbdf4d9db5f199db69d1b7c93dca6454a6f24" + integrity sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w== + dependencies: + d3-array "1" + +d3-hierarchy@1: + version "1.1.9" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== + +d3-interpolate@1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== + dependencies: + d3-color "1" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-polygon@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" + integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== + +d3-quadtree@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" + integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== + +d3-random@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" + integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== + +d3-scale-chromatic@1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" + integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== + dependencies: + d3-color "1" + d3-interpolate "1" + +d3-scale@2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" + integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + +d3-selection@1, d3-selection@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" + integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== + +d3-shape@1: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-time-format@2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" + integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== + dependencies: + d3-time "1" + +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + +d3-timer@1: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== + +d3-transition@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" + integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== + dependencies: + d3-color "1" + d3-dispatch "1" + d3-ease "1" + d3-interpolate "1" + d3-selection "^1.1.0" + d3-timer "1" + +d3-voronoi@1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" + integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== + +d3-zoom@1: + version "1.8.3" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" + integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== + dependencies: + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" + +d3@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-5.16.0.tgz#9c5e8d3b56403c79d4ed42fbd62f6113f199c877" + integrity sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw== + dependencies: + d3-array "1" + d3-axis "1" + d3-brush "1" + d3-chord "1" + d3-collection "1" + d3-color "1" + d3-contour "1" + d3-dispatch "1" + d3-drag "1" + d3-dsv "1" + d3-ease "1" + d3-fetch "1" + d3-force "1" + d3-format "1" + d3-geo "1" + d3-hierarchy "1" + d3-interpolate "1" + d3-path "1" + d3-polygon "1" + d3-quadtree "1" + d3-random "1" + d3-scale "2" + d3-scale-chromatic "1" + d3-selection "1" + d3-shape "1" + d3-time "1" + d3-time-format "2" + d3-timer "1" + d3-transition "1" + d3-voronoi "1" + d3-zoom "1" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +date-fns@^2.15.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" + integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== + +dayjs@^1.8.30, dayjs@^1.9.6: + version "1.9.6" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" + integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== + +dayjs@^1.9.1: + version "1.9.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.7.tgz#4b260bb17dceed2d5f29038dfee03c65a6786fc0" + integrity sha512-IC877KBdMhBrCfBfJXHQlo0G8keZ0Opy7YIIq5QKtUbCuHMzim8S4PyiVK4YmihI3iOF9lhfUBW4AQWHTR5WHA== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1, deep-equal@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deep-object-diff@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a" + integrity sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "http://mirrors.cloud.tencent.com/npm/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-match-patch@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" + integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-align@^1.7.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" + integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0, dom-serializer@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domhandler@^3.0, domhandler@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" + integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== + dependencies: + domelementtype "^2.0.1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16" + integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg== + dependencies: + dom-serializer "^0.2.1" + domelementtype "^2.0.1" + domhandler "^3.0.0" + +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv-defaults@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" + integrity sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q== + dependencies: + dotenv "^6.2.0" + +dotenv-expand@5.1.0, dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv-webpack@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz#7ca79cef2497dd4079d43e81e0796bc9d0f68a5e" + integrity sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg== + dependencies: + dotenv-defaults "^1.0.2" + +dotenv@8.2.0, dotenv@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +dotenv@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-props@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + +easy-table@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.1.1.tgz#c1b9b9ad68a017091a1c235e4bcba277540e143f" + integrity sha512-C9Lvm0WFcn2RgxbMnTbXZenMIWcBtkzMr+dWqq/JsVoGFSVUVlPqeOa5LP5kM0I3zoOazFpckOEb2/0LDFfToQ== + dependencies: + ansi-regex "^3.0.0" + optionalDependencies: + wcwidth ">=1.0.1" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +echarts-for-react@^2.0.16: + version "2.0.16" + resolved "https://registry.yarnpkg.com/echarts-for-react/-/echarts-for-react-2.0.16.tgz#8134a53dff90882c1e6a95c45ceab21e00f6c9f5" + integrity sha512-VmHCktay2qKt/+wpL/C7thbvIa7dYBEey0/U4Zaqo+qeA4wx+uiCd5NeCsPIhD/0Pv+2qqNswqiNiUCtcgccOw== + dependencies: + fast-deep-equal "^2.0.1" + size-sensor "^1.0.0" + +echarts@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/echarts/-/echarts-4.8.0.tgz#b2c1cfb9229b13d368ee104fc8eea600b574d4c4" + integrity sha512-YwShpug8fWngj/RlgxDaYrLBoD+LsZUArrusjNPHpAF+is+gGe38xx4W848AwWMGoi745t3OXM52JedNrv+F6g== + dependencies: + zrender "4.3.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +ejs@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.3.tgz#514d967a8894084d18d3d47bd169a1c0560f093d" + integrity sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg== + dependencies: + jake "^10.6.1" + +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413: + version "1.3.452" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.452.tgz#ef6877702722471aa044a2429336cd450629934d" + integrity sha512-IdbjgCEqDvcU/1kUQa6C49I2NZOY3SBmU9Eus7mdFdJJBqn0Lg1Epfi/T4nqVcxTNBEGhcjwMhY1EysMBsXZrw== + +element-resize-detector@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" + integrity sha512-BdFsPepnQr9fznNPF9nF4vQ457U/ZJXQDSNF1zBe7yaga8v9AdZf3/NElYxFdUh7SitSGt040QygiTo6dtatIw== + dependencies: + batch-processor "1.0.0" + +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +emotion-theming@^10.0.19: + version "10.0.27" + resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.0.27.tgz#1887baaec15199862c89b1b984b79806f2b9ab10" + integrity sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/weak-memoize" "0.2.5" + hoist-non-react-statics "^3.3.0" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +endent@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/endent/-/endent-2.0.1.tgz#fb18383a3f37ae3213a5d9f6c4a880d1061eb4c5" + integrity sha512-mADztvcC+vCk4XEZaCz6xIPO2NHQuprv5CAEjuVAu6aZwqAj7nVNlMyl1goPFYqCCpS2OJV9jwpumJLkotZrNw== + dependencies: + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.4" + +enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1, entities@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" + integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-abstract@^1.17.0-next.0, es-abstract@^1.17.4: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-get-iterator@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es5-shim@^4.5.13: + version "4.5.14" + resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.14.tgz#90009e1019d0ea327447cb523deaff8fe45697ef" + integrity sha512-7SwlpL+2JpymWTt8sNLuC2zdhhc+wrfe5cMPI2j0o6WsPdfAiPwmFy2f0AocPB4RQVBOZ9kNTgi5YF7TdhkvEg== + +es6-iterator@2.0.3, es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-shim@^0.35.5: + version "0.35.5" + resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" + integrity sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg== + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +esbuild-android-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.13.tgz#da07b5fb2daf7d83dcd725f7cf58a6758e6e702a" + integrity sha512-T02aneWWguJrF082jZworjU6vm8f4UQ+IH2K3HREtlqoY9voiJUwHLRL6khRlsNLzVglqgqb7a3HfGx7hAADCQ== + +esbuild-darwin-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.13.tgz#e94e9fd3b4b5455a2e675cd084a19a71b6904bbf" + integrity sha512-wkaiGAsN/09X9kDlkxFfbbIgR78SNjMOfUhoel3CqKBDsi9uZhw7HBNHNxTzYUK8X8LAKFpbODgcRB3b/I8gHA== + +esbuild-darwin-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.13.tgz#8c320eafbb3ba2c70d8062128c5b71503e342471" + integrity sha512-b02/nNKGSV85Gw9pUCI5B48AYjk0vFggDeom0S6QMP/cEDtjSh1WVfoIFNAaLA0MHWfue8KBwoGVsN7rBshs4g== + +esbuild-freebsd-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.13.tgz#ce0ca5b8c4c274cfebc9326f9b316834bd9dd151" + integrity sha512-ALgXYNYDzk9YPVk80A+G4vz2D22Gv4j4y25exDBGgqTcwrVQP8rf/rjwUjHoh9apP76oLbUZTmUmvCMuTI1V9A== + +esbuild-freebsd-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.13.tgz#463da17562fdcfdf03b3b94b28497d8d8dcc8f62" + integrity sha512-uFvkCpsZ1yqWQuonw5T1WZ4j59xP/PCvtu6I4pbLejhNo4nwjW6YalqnBvBSORq5/Ifo9S/wsIlVHzkzEwdtlw== + +esbuild-linux-32@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.13.tgz#2035793160da2c4be48a929e5bafb14a31789acc" + integrity sha512-yxR9BBwEPs9acVEwTrEE2JJNHYVuPQC9YGjRfbNqtyfK/vVBQYuw8JaeRFAvFs3pVJdQD0C2BNP4q9d62SCP4w== + +esbuild-linux-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.13.tgz#fbe4802a8168c6d339d0749f977b099449b56f22" + integrity sha512-kzhjlrlJ+6ESRB/n12WTGll94+y+HFeyoWsOrLo/Si0s0f+Vip4b8vlnG0GSiS6JTsWYAtGHReGczFOaETlKIw== + +esbuild-linux-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.13.tgz#f08d98df28d436ed4aad1529615822bb74d4d978" + integrity sha512-KMrEfnVbmmJxT3vfTnPv/AiXpBFbbyExH13BsUGy1HZRPFMi5Gev5gk8kJIZCQSRfNR17aqq8sO5Crm2KpZkng== + +esbuild-linux-arm@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.13.tgz#6f968c3a98b64e30c80b212384192d0cfcb32e7f" + integrity sha512-hXub4pcEds+U1TfvLp1maJ+GHRw7oizvzbGRdUvVDwtITtjq8qpHV5Q5hWNNn6Q+b3b2UxF03JcgnpzCw96nUQ== + +esbuild-linux-mips64le@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.13.tgz#690c78dc4725efe7d06a1431287966fbf7774c7f" + integrity sha512-cJT9O1LYljqnnqlHaS0hdG73t7hHzF3zcN0BPsjvBq+5Ad47VJun+/IG4inPhk8ta0aEDK6LdP+F9299xa483w== + +esbuild-linux-ppc64le@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.13.tgz#7ec9048502de46754567e734aae7aebd2df6df02" + integrity sha512-+rghW8st6/7O6QJqAjVK3eXzKkZqYAw6LgHv7yTMiJ6ASnNvghSeOcIvXFep3W2oaJc35SgSPf21Ugh0o777qQ== + +esbuild-netbsd-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.13.tgz#439bdaefffa03a8fa84324f5d83d636f548a2de3" + integrity sha512-A/B7rwmzPdzF8c3mht5TukbnNwY5qMJqes09ou0RSzA5/jm7Jwl/8z853ofujTFOLhkNHUf002EAgokzSgEMpQ== + +esbuild-openbsd-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.13.tgz#c9958e5291a00a3090c1ec482d6bcdf2d5b5d107" + integrity sha512-szwtuRA4rXKT3BbwoGpsff6G7nGxdKgUbW9LQo6nm0TVCCjDNDC/LXxT994duIW8Tyq04xZzzZSW7x7ttDiw1w== + +esbuild-sunos-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.13.tgz#ac9ead8287379cd2f6d00bd38c5997fda9c1179e" + integrity sha512-ihyds9O48tVOYF48iaHYUK/boU5zRaLOXFS+OOL3ceD39AyHo46HVmsJLc7A2ez0AxNZCxuhu+P9OxfPfycTYQ== + +esbuild-windows-32@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.13.tgz#a3820fc86631ca594cb7b348514b5cc3f058cfd6" + integrity sha512-h2RTYwpG4ldGVJlbmORObmilzL8EECy8BFiF8trWE1ZPHLpECE9//J3Bi+W3eDUuv/TqUbiNpGrq4t/odbayUw== + +esbuild-windows-64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.13.tgz#1da748441f228d75dff474ddb7d584b81887323c" + integrity sha512-oMrgjP4CjONvDHe7IZXHrMk3wX5Lof/IwFEIbwbhgbXGBaN2dke9PkViTiXC3zGJSGpMvATXVplEhlInJ0drHA== + +esbuild-windows-arm64@0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.13.tgz#06dfa52a6b178a5932a9a6e2fdb240c09e6da30c" + integrity sha512-6fsDfTuTvltYB5k+QPah/x7LrI2+OLAJLE3bWLDiZI6E8wXMQU+wLqtEO/U/RvJgVY1loPs5eMpUBpVajczh1A== + +esbuild@^0.13.13: + version "0.13.13" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.13.tgz#0b5399c20f219f663c8c1048436fb0f59ab17a41" + integrity sha512-Z17A/R6D0b4s3MousytQ/5i7mTCbaF+Ua/yPfoe71vdTv4KBvVAvQ/6ytMngM2DwGJosl8WxaD75NOQl2QF26Q== + optionalDependencies: + esbuild-android-arm64 "0.13.13" + esbuild-darwin-64 "0.13.13" + esbuild-darwin-arm64 "0.13.13" + esbuild-freebsd-64 "0.13.13" + esbuild-freebsd-arm64 "0.13.13" + esbuild-linux-32 "0.13.13" + esbuild-linux-64 "0.13.13" + esbuild-linux-arm "0.13.13" + esbuild-linux-arm64 "0.13.13" + esbuild-linux-mips64le "0.13.13" + esbuild-linux-ppc64le "0.13.13" + esbuild-netbsd-64 "0.13.13" + esbuild-openbsd-64 "0.13.13" + esbuild-sunos-64 "0.13.13" + esbuild-windows-32 "0.13.13" + esbuild-windows-64 "0.13.13" + esbuild-windows-arm64 "0.13.13" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== + dependencies: + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" + +eslint-module-utils@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== + dependencies: + lodash "^4.17.15" + +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-jsx-a11y@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-react-hooks@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-stream@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter2@^6.4.4: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== + +eventemitter3@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" + integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +express@^4.16.3, express@^4.17.0, express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fancy-log@^1.3.2, fancy-log@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-equals@^1.6.0: + version "1.6.3" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-1.6.3.tgz#84839a1ce20627c463e1892f2ae316380c81b459" + integrity sha512-4WKW0AL5+WEqO0zWavAfYGY1qwLsBgE//DN4TTcVEN2UlINgkv9b3vm2iHicoenWKSX9mKWmGOsU/iI5IST7pQ== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-shallow-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" + integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== + +fast-stringify@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-stringify/-/fast-stringify-1.1.2.tgz#f109b792d54343aec271b47882598d279402401d" + integrity sha512-SfslXjiH8km0WnRiuPfpUKwlZjW5I878qsOm+2x8x3TgqmElOOLh1rgJFb+PolNdNRK3r8urEefqx0wt7vx1dA== + +fastest-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" + integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= + +fault@^1.0.0, fault@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== + dependencies: + format "^0.2.0" + +faye-websocket@0.11.x: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbjs@^0.8.9: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-loader@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + +file-system-cache@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-1.0.5.tgz#84259b36a2bbb8d3d6eb1021d3132ffe64cfff4f" + integrity sha1-hCWbNqK7uNPW6xAh0xMv/mTP/08= + dependencies: + bluebird "^3.3.5" + fs-extra "^0.30.0" + ramda "^0.21.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filelist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" + integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== + dependencies: + minimatch "^3.0.4" + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2, finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0, follow-redirects@^1.10.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" + integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +fork-ts-checker-webpack-plugin@^4.1.4: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +format@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" + integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + functions-have-names "^1.2.0" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +functions-have-names@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" + integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== + +fuse.js@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.6.1.tgz#7de85fdd6e1b3377c23ce010892656385fd9b10c" + integrity sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-promise@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" + integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== + dependencies: + "@types/glob" "*" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob-watcher@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@^4.3.2, global@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globalthis@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9" + integrity sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw== + dependencies: + define-properties "^1.1.3" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= + dependencies: + delegate "^3.1.2" + +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + +gulp-cli@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.1.tgz#376e427661b7996430a89d71c15df75defa3360a" + integrity sha512-yEMxrXqY8mJFlaauFQxNrCpzWJThu0sH1sqlToaTOT063Hub9s/Nt2C+GSLe6feQ/IMWrHvGOOsyES7CQc9O+A== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + +gulp-cli@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" + integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.4.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.2.0" + yargs "^7.1.0" + +gulp-shell@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/gulp-shell/-/gulp-shell-0.8.0.tgz#0ed4980de1d0c67e5f6cce971d7201fd0be50555" + integrity sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ== + dependencies: + chalk "^3.0.0" + fancy-log "^1.3.3" + lodash.template "^4.5.0" + plugin-error "^1.0.1" + through2 "^3.0.1" + tslib "^1.10.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + +gzip-size@5.1.1, gzip-size@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hast-util-parse-selector@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" + integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== + +hastscript@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" + integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== + dependencies: + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +highlight-words-core@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" + integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== + +highlight.js@^10.1.1, highlight.js@~10.1.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.1.2.tgz#c20db951ba1c22c055010648dfffd7b2a968e00c" + integrity sha512-Q39v/Mn5mfBlMff9r+zzA+gWxRsCRKwEMvYTiisLr/XUiFI/4puWt0Ojdko3R3JCNWGdOWaA5g/Yxqa23kC5AA== + +highlight.js@~9.15.0, highlight.js@~9.15.1: + version "9.15.10" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" + integrity sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw== + +history@5.0.0-beta.9: + version "5.0.0-beta.9" + resolved "https://registry.yarnpkg.com/history/-/history-5.0.0-beta.9.tgz#fe230706c18c5f7f132001e55215e71b4aaab6d6" + integrity sha512-iLpu0fzu3iM041KDMNsawyB6YZjPLB+Bn+Pvq2lMnY7xxpxDIYvEz7r4et3Na8FthWzbYeukjl74ZKGWXcLhIA== + dependencies: + "@babel/runtime" "^7.7.6" + +history@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.0.0.tgz#0cabbb6c4bbf835addb874f8259f6d25101efd08" + integrity sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg== + dependencies: + "@babel/runtime" "^7.7.6" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + integrity sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs= + +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + 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== + dependencies: + react-is "^16.7.0" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.0, html-entities@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-parse-stringify2@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" + integrity sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o= + dependencies: + void-elements "^2.0.1" + +html-to-react@^1.3.4: + version "1.4.3" + resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.3.tgz#1430a1cb581ef29533892ec70a2fdc4554b17ffd" + integrity sha512-txe09A3vxW8yEZGJXJ1is5gGDfBEVACmZDSgwDyH5EsfRdOubBwBCg63ZThZP0xBn0UE4FyvMXZXmohusCxDcg== + dependencies: + domhandler "^3.0" + htmlparser2 "^4.1.0" + lodash.camelcase "^4.3.0" + ramda "^0.27" + +html-webpack-plugin@4.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== + dependencies: + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +html-webpack-plugin@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd" + integrity sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + +http-auth@3.1.x: + version "3.1.3" + resolved "https://registry.yarnpkg.com/http-auth/-/http-auth-3.1.3.tgz#945cfadd66521eaf8f7c84913d377d7b15f24e31" + integrity sha1-lFz63WZSHq+PfISRPTd9exXyTjE= + dependencies: + apache-crypt "^1.1.2" + apache-md5 "^1.0.6" + bcryptjs "^2.3.0" + uuid "^3.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy-middleware@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.0.5.tgz#4c6e25d95a411e3d750bc79ccf66290675176dc2" + integrity sha512-CKzML7u4RdGob8wuKI//H8Ein6wNTEQR7yjVEzPbhBLGdOfkfvgTnp2HLnniKBDP9QW4eG10/724iTWLBeER3g== + dependencies: + "@types/http-proxy" "^1.17.4" + http-proxy "^1.18.1" + is-glob "^4.0.1" + lodash "^4.17.19" + micromatch "^4.0.2" + +http-proxy@^1.17.0, http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +husky@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" + integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== + dependencies: + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^6.0.0" + find-versions "^3.2.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" + +hyphenate-style-name@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" + integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== + +i18next-browser-languagedetector@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-5.0.0.tgz#9e946ed2ea5514a636913fe020a32455e82946e3" + integrity sha512-ekeKbRvTOsSOABSEPHFqyb6Q37JagZXjkISgQKHP84t/VZRW/B3FMVz+tBNQDVdZLsEaOe8fuJpeZsw2TvWeVQ== + dependencies: + "@babel/runtime" "^7.5.5" + +i18next@^19.6.3: + version "19.6.3" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.6.3.tgz#ce2346161b35c4c5ab691b0674119c7b349c0817" + integrity sha512-eYr98kw/C5z6kY21ti745p4IvbOJwY8F2T9tf/Lvy5lFnYRqE45+bppSgMPmcZZqYNT+xO0N0x6rexVR2wtZZQ== + dependencies: + "@babel/runtime" "^7.10.1" + +iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.6.tgz#643194ad4bf2712f37852e386b6998eff0db2106" + integrity sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +immer@^8.0.1: + version "8.0.4" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.4.tgz#3a21605a4e2dded852fb2afd208ad50969737b7a" + integrity sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.0, ini@^1.3.4, ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-prefixer@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz#d390957d26f281255fe101da863158ac6eb60911" + integrity sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg== + dependencies: + bowser "^1.7.3" + css-in-js-utils "^2.0.0" + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +insert-css@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4" + integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ= + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +interpret@^1.0.0, interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +interpret@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +interpret@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +intersection-observer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.7.0.tgz#ee16bee978db53516ead2f0a8154b09b400bbdc9" + integrity sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg== + +invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.4, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +is-dom@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.1.0.tgz#af1fced292742443bb59ca3f76ab5e80907b4e8a" + integrity sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ== + dependencies: + is-object "^1.0.1" + is-window "^1.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" + integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== + dependencies: + has-symbols "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-set@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" + integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.4, is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + +is-window@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" + integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +iterate-iterator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" + integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== + +iterate-value@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" + integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== + dependencies: + es-get-iterator "^1.0.2" + iterate-iterator "^1.0.1" + +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@24.9.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.1" + jest-regex-util "^24.9.0" + jest-watcher "^24.3.0" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^5.0.0" + +jest-watcher@^24.3.0, jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.1.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^26.0.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d" + integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.5.2: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-loader@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= + dependencies: + string-convert "^0.2.0" + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.1, json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.3.0.tgz#edd727794ea284d7fda575015ed1b0cde0289ab6" + integrity sha512-3HNoc7nZ1hpZIKB3hJ7BlFRkzCx2BynRtfSwbkqZdpRdvAPsGMnzclPwrvDBS7/lalHTj21NwIeaEpysHBOudg== + dependencies: + array-includes "^3.1.1" + object.assign "^4.1.0" + +just-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lazy-universal-dotenv@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" + integrity sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ== + dependencies: + "@babel/runtime" "^7.5.0" + app-root-dir "^1.0.2" + core-js "^3.0.4" + dotenv "^8.0.0" + dotenv-expand "^5.1.0" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leprechaun@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/leprechaun/-/leprechaun-0.0.2.tgz#8b96514a9e634c53fbe59a8094f3378c8fb2084d" + integrity sha1-i5ZRSp5jTFP75ZqAlPM3jI+yCE0= + dependencies: + log-symbols "^1.0.2" + +less-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" + integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^4.0.1" + +less@^3.12.2: + version "3.12.2" + resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" + integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== + dependencies: + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + native-request "^1.0.5" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +live-server@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/live-server/-/live-server-1.2.1.tgz#670630dd409d22fe9c513ab1c1894686c757153e" + integrity sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw== + dependencies: + chokidar "^2.0.4" + colors latest + connect "^3.6.6" + cors latest + event-stream "3.3.4" + faye-websocket "0.11.x" + http-auth "3.1.x" + morgan "^1.9.1" + object-assign latest + opn latest + proxy-middleware latest + send latest + serve-index "^1.9.1" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" + integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "^0.5.1" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.flow@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o= + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.6.1: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.4.0, lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4, lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +loglevel@^1.6.6: + version "1.6.8" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" + integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== + +loglevelnext@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" + integrity sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A== + dependencies: + es6-symbol "^3.1.1" + object.assign "^4.1.0" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + +lowlight@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.12.1.tgz#014acf8dd73a370e02ff1cc61debcde3bb1681eb" + integrity sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w== + dependencies: + fault "^1.0.2" + highlight.js "~9.15.0" + +lowlight@^1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.14.0.tgz#83ebc143fec0f9e6c0d3deffe01be129ce56b108" + integrity sha512-N2E7zTM7r1CwbzwspPxJvmjAbxljCPThTFawEX2Z7+P3NGrrvY54u8kyU16IY4qWfoVIxY8SYCS8jTkuG7TqYA== + dependencies: + fault "^1.0.0" + highlight.js "~10.1.0" + +lru-cache@4.1.x: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" + integrity sha1-beJlMXSt+12e3DPGnT6Sobdvrwg= + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +markdown-to-jsx@^6.11.4: + version "6.11.4" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz#b4528b1ab668aef7fe61c1535c27e837819392c5" + integrity sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw== + dependencies: + prop-types "^15.6.2" + unquote "^1.1.0" + +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + +material-colors@^1.2.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdast-add-list-metadata@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf" + integrity sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA== + dependencies: + unist-util-visit-parents "1.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memoize-one@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" + integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== + +memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" + integrity sha1-fIekZGREwy11Q4VwkF8tvRsagFo= + dependencies: + map-or-similar "^1.5.0" + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-deep@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" + integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micro-memoize@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-2.1.2.tgz#0787eeb1a12b4033a0fe162dfc9df4280291cee4" + integrity sha512-COjNutiFgnDHXZEIM/jYuZPwq2h8zMUeScf6Sh6so98a+REqdlpaNS7Cb2ffGfK5I+xfgoA3Rx49NGuNJTJq3w== + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@^2.1.26, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" + integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +mini-store@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/mini-store/-/mini-store-3.0.6.tgz#44b86be5b2877271224ce0689b3a35a2dffb1ca9" + integrity sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ== + dependencies: + hoist-non-react-statics "^3.3.2" + shallowequal "^1.0.2" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" + integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" + integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +moize@^5.4.7: + version "5.4.7" + resolved "https://registry.yarnpkg.com/moize/-/moize-5.4.7.tgz#bffa28806441d9f5cf1c4158b67a29413c438e83" + integrity sha512-7PZH8QFJ51cIVtDv7wfUREBd3gL59JB0v/ARA3RI9zkSRa9LyGjS1Bdldii2J1/NQXRQ/3OOVOSdnZrCcVaZlw== + dependencies: + fast-equals "^1.6.0" + fast-stringify "^1.1.0" + micro-memoize "^2.1.1" + +moment@^2.24.0, moment@^2.25.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + +morgan@^1.9.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + dependencies: + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +mri@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.5.tgz#ce21dba2c69f74a9b7cf8a1ec62307e089e223e0" + integrity sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + +nano-css@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.0.tgz#9d3cd29788d48b6a07f52aa4aec7cf4da427b6b5" + integrity sha512-uM/9NGK9/E9/sTpbIZ/bQ9xOLOIHZwrrb/CRlbDHBU/GFS7Gshl24v/WJhwsVViWkpOXUmiZ66XO7fSB4Wd92Q== + dependencies: + css-tree "^1.0.0-alpha.28" + csstype "^2.5.5" + fastest-stable-stringify "^1.0.1" + inline-style-prefixer "^4.0.0" + rtl-css-js "^1.9.0" + sourcemap-codec "^1.4.1" + stacktrace-js "^2.0.0" + stylis "3.5.0" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-request@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856" + integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +nconf@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/nconf/-/nconf-0.10.0.tgz#da1285ee95d0a922ca6cee75adcf861f48205ad2" + integrity sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q== + dependencies: + async "^1.4.0" + ini "^1.3.0" + secure-keys "^1.0.0" + yargs "^3.19.0" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + +node-dir@^0.1.10: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= + dependencies: + minimatch "^3.0.2" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-releases@^1.1.52, node-releases@^1.1.53: + version "1.1.56" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" + integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== + dependencies: + path-key "^3.0.0" + +npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.0.7, nwsapi@^2.1.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.x, object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1, object-assign@latest: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.0.4, object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + has "^1.0.3" + +"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +objectorarray@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.4.tgz#d69b2f0ff7dc2701903d308bb85882f4ddb49483" + integrity sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +office-ui-fabric-react@^7.123.10: + version "7.123.10" + resolved "https://registry.yarnpkg.com/office-ui-fabric-react/-/office-ui-fabric-react-7.123.10.tgz#9774098c26a49c65e445eab8abd161f1aae04acf" + integrity sha512-EmVZMNOIFRDDsqNjBZb0XfLGcLvBWjIwMAZYfiWZpYpqn3uoK/8AQwKJBR2nGjj1Rg/qgv8WAB7B1S4cAL3Wdw== + dependencies: + "@fluentui/date-time-utilities" "^7.3.0" + "@fluentui/react-focus" "^7.12.25" + "@fluentui/react-icons" "^0.1.40" + "@microsoft/load-themed-styles" "^1.10.26" + "@uifabric/foundation" "^7.7.39" + "@uifabric/icons" "^7.3.65" + "@uifabric/merge-styles" "^7.16.3" + "@uifabric/react-hooks" "^7.6.2" + "@uifabric/set-version" "^7.0.18" + "@uifabric/styling" "^7.14.5" + "@uifabric/utilities" "^7.24.5" + prop-types "^15.7.2" + tslib "^1.10.0" + +omit.js@^2.0.0, omit.js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" + integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2, open@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" + integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opencollective-postinstall@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +opn@latest: + version "6.0.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" + integrity sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +overlayscrollbars@^1.10.2: + version "1.12.0" + resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.12.0.tgz#e3e257bbb8a179760c2c712ad08ac2c78583c9f6" + integrity sha512-zJGYLeBfaPx2VmiDfBMNTPzm9N8w8wZ6M7dm1ee8TGuet8tsK4nxOzGvEEu0SmueqMHQxhLsstf7iTWCGiYa9Q== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-entities@^1.1.0, parse-entities@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.6.4, pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +polished@^3.4.4: + version "3.6.5" + resolved "https://registry.yarnpkg.com/polished/-/polished-3.6.5.tgz#dbefdde64c675935ec55119fe2a2ab627ca82e9c" + integrity sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ== + dependencies: + "@babel/runtime" "^7.9.2" + +popper.js@^1.14.4, popper.js@^1.14.7: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +portfinder@^1.0.25: + version "1.0.26" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" + integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +postcss-flexbugs-fixes@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0, postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.1.1, postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" + integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7.0.26, postcss@^7.0.32: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prettier@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" + integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== + +pretty-bytes@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + +pretty-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-hrtime@^1.0.0, pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +pretty-quick@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-2.0.1.tgz#417ee605ade98ecc686e72f63b5d28a2c35b43e9" + integrity sha512-y7bJt77XadjUr+P1uKqZxFWLddvj3SKY6EU4BuQtMxmmEFSMpbN132pUWdSG1g1mtUfO0noBvn7wBf0BVeomHg== + dependencies: + chalk "^2.4.2" + execa "^2.1.0" + find-up "^4.1.0" + ignore "^5.1.4" + mri "^1.1.4" + multimatch "^4.0.0" + +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +prismjs@^1.20.0, prismjs@^1.8.4, prismjs@~1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.20.0.tgz#9b685fc480a3514ee7198eac6a3bf5024319ff03" + integrity sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ== + optionalDependencies: + clipboard "^2.0.0" + +prismjs@~1.17.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" + integrity sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q== + optionalDependencies: + clipboard "^2.0.0" + +private@^0.1.8, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise.allsettled@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" + integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== + dependencies: + array.prototype.map "^1.0.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + iterate-value "^1.0.0" + +promise.prototype.finally@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067" + integrity sha512-A2HuJWl2opDH0EafgdjwEw7HysI8ff/n4lW4QEVBCUXFk9QeGecBWv0Deph0UmLe3tTNYegz8MOjsVuE6SMoJA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.0" + function-bind "^1.1.1" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +promise@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +property-information@^5.0.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" + integrity sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA== + dependencies: + xtend "^4.0.0" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +proxy-middleware@latest: + version "0.15.0" + resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" + integrity sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY= + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pullstate@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/pullstate/-/pullstate-1.22.1.tgz#ffdde634e8c721907de8e6d37a85c6083137ee8a" + integrity sha512-Xu3umsGOG6qCQ4IWxKSEikQqdR7GDsTHQPE7wquzQENMRZbPeHURA9dZgH/9ktuhDh3D1qnIDI9PyPftabme0A== + dependencies: + fast-deep-equal "^3.1.3" + immer "^8.0.1" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3, pumpify@^1.3.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@^6.6.0: + version "6.9.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" + integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +raf@^3.4.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +ramda@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" + integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU= + +ramda@^0.27: + version "0.27.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.0.tgz#915dc29865c0800bf3f69b8fd6c279898b59de43" + integrity sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-loader@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz#14e1f726a359b68437e183d5a5b7d33a3eba6933" + integrity sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + +rc-align@^4.0.0: + version "4.0.9" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.9.tgz#46d8801c4a139ff6a65ad1674e8efceac98f85f2" + integrity sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + dom-align "^1.7.0" + rc-util "^5.3.0" + resize-observer-polyfill "^1.5.1" + +rc-animate@3.x, rc-animate@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.1.tgz#defdd863f56816c222534e4dc68feddecd081386" + integrity sha512-8wg2Zg3EETy0k/9kYuis30NJNQg1D6/WSQwnCiz6SvyxQXNet/rVraRz3bPngwY6rcU2nlRvoShiYOorXyF7Sg== + dependencies: + "@ant-design/css-animation" "^1.7.2" + classnames "^2.2.6" + raf "^3.4.0" + rc-util "^4.15.3" + +rc-animate@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.0.tgz#051b689c2c7194e4c8ae016d32a0e5f9de6c8baa" + integrity sha512-8FsM+3B1H+0AyTyGggY6JyVldHTs1CyYT8CfTmG/nGHHXlecvSLeICJhcKgRLjUiQlctNnRtB1rwz79cvBVmrw== + dependencies: + "@ant-design/css-animation" "^1.7.2" + classnames "^2.2.6" + raf "^3.4.0" + rc-util "^5.0.1" + +rc-cascader@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.0.tgz#d731ea8e07433558627941036091a2820e895474" + integrity sha512-6kgQljDQEKjVAVRkZtvvoi+2qv4u42M6oLuvt4ZDBa16r3X9ZN8TAq3atVyC840ivbGKlHT50OcdVx/iwiHc1w== + dependencies: + array-tree-filter "^2.1.0" + rc-trigger "^5.0.4" + rc-util "^5.0.1" + warning "^4.0.1" + +rc-checkbox@~2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.1.tgz#2a61bc43017c783bd2e9f1a67553bf8efe7aa4d3" + integrity sha512-i290/iTqmZ0WtI2UPIryqT9rW6O99+an4KeZIyZDH3r+Jbb6YdddaWNdzq7g5m9zaNhJvgjf//wJtC4fvve2Tg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-collapse@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-2.0.1.tgz#99e7655acd9c237b72369a39dcb5c713451e1e92" + integrity sha512-sRNqwQovzQoptTh7dCwj3kfxrdor2oNXrGSBz+QJxSFS7N3Ujgf8X/KlN2ElCkwBKf7nNv36t9dwH0HEku4wJg== + dependencies: + "@ant-design/css-animation" "^1.7.2" + classnames "2.x" + rc-animate "3.x" + rc-util "^5.2.1" + shallowequal "^1.1.0" + +rc-dialog@~8.4.0: + version "8.4.3" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.4.3.tgz#de8650ce7d1fcb6c1f7e065b94a6894b9a5a54a4" + integrity sha512-LHsWXb+2Cy4vEOeJcPvk9M0WSr80Gi438ov5rXt3E6XB4j+53Z+vMFRr+TagnVuOVQRCLmmzT4qutfm2U1OK6w== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.0.1" + +rc-drawer@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.1.0.tgz#d7bf0bc030300b62d282bc04e053b9acad6b08b4" + integrity sha512-kjeQFngPjdzAFahNIV0EvEBoIKMOnvUsAxpkSPELoD/1DuR4nLafom5ryma+TIxGwkFJ92W6yjsMi1U9aiOTeQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.0.1" + +rc-dropdown@^3.1.3, rc-dropdown@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090" + integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-trigger "^5.0.4" + +rc-field-form@~1.17.0: + version "1.17.2" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.17.2.tgz#81b09d320f9b455673867bf3a1f5b2aac0fd0a15" + integrity sha512-+pufRy5x4G5yHxQ3k1nhgQqyqerPVJQ2jaLGojHjNpmZ2Si20o1KniMLsZxe6X8dfq4ePmH6M3IngfDnS+CrMA== + dependencies: + "@babel/runtime" "^7.8.4" + async-validator "^3.0.3" + rc-util "^5.0.0" + +rc-image@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-4.0.1.tgz#b54534684a01dcf8cb477f5ac6dda72545a9541f" + integrity sha512-1GxjwgtONtJjlvd7sM9VSLTAlDQhkqHI0wl72YSDpdm24w5zmDsTYLgTNh/vToFa9qAml10Gaidy03qpkTAQ+A== + dependencies: + "@ant-design/icons" "^4.2.2" + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-dialog "~8.4.0" + rc-util "^5.0.6" + +rc-input-number@~6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-6.1.1.tgz#818c426942d1b4dc4d6d2639d741ca67773a9118" + integrity sha512-9t2xf1G0YEism7FAXAvF1huBk7ZNABPBf6NL+3/aDL123WiT/vhhod4cldiDWTM1Yb2EDKR//ZIa546ScdsUaA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-mentions@~1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.5.2.tgz#94559a369de73e7cc92f343badaf94499fb410a7" + integrity sha512-GqV0tOtHY3pLpOsFCxJ2i6Ad8AVfxFmz0NlD/8rb8IG8pMpthJKcdfnXlNZRx3Fa9O4YEgJpdSY1WEbmlx2DWQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-menu "^8.0.1" + rc-textarea "^0.3.0" + rc-trigger "^5.0.4" + rc-util "^5.0.1" + +rc-menu@^8.0.1, rc-menu@^8.6.1, rc-menu@~8.10.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.10.0.tgz#f14ff6456073bcf29603da818774543a73e44e92" + integrity sha512-mafcLoKtVlH9HDW52NmwenQ9vjvgxtR46NfYAexJEIUTZ9Ze2veZUkEKjhOJlzrUHEYtCoNslpqyy4iVN08Glw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + mini-store "^3.0.1" + omit.js "^2.0.0" + rc-motion "^2.0.1" + rc-trigger "^5.1.2" + rc-util "^5.0.1" + resize-observer-polyfill "^1.5.0" + shallowequal "^1.1.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.1.tgz#323f47c8635e6b2bc0cba2dfad25fc415b58e1dc" + integrity sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.2.1" + +rc-notification@~4.5.2: + version "4.5.4" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.4.tgz#1292e163003db4b9162c856a4630e5d0f1359356" + integrity sha512-VsN0ouF4uglE5g3C9oDsXLNYX0Sz++ZNUFYCswkxhpImYJ9u6nJOpyA71uOYDVCu6bAF54Y5Hi/b+EcnMzkepg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.2.0" + rc-util "^5.0.1" + +rc-pagination@~3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.2.tgz#ab5eacd9c51f869e350d2245064babe91bc1f046" + integrity sha512-KbJvkTvRiD51vTIAi0oTARPUHNb0iV6njbDBe8yLkc3PWYDJaszASfuss6YJ98EIxEeGzuEk6xsUAEKWRJgz2g== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + +rc-picker@~2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.4.2.tgz#e9d53f51cf768bb19f7024d0028f73008fce5163" + integrity sha512-ug5NTZTvaZuVysY9eubFtLoxoPCkEOZ7tY79+e/4N2ZvRVo2nNwyTjB7OQ+p7Xz8tHaYoQPnwLxr2fyDGIkZig== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + date-fns "^2.15.0" + dayjs "^1.8.30" + moment "^2.24.0" + rc-trigger "^5.0.4" + rc-util "^5.4.0" + shallowequal "^1.1.0" + +rc-progress@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.1.tgz#f7ba5eb33cc438862513ab5a71739feaf6b3ef4f" + integrity sha512-1ns3pW7ll9bHfdXtlVLF+vngdvlxiCDtiqwXnZFEdurst11JTiPxVdeqnCNbhWx5hP4kCKkAPqG1N0FVfTSUGA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + +rc-rate@~2.9.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.9.1.tgz#e43cb95c4eb90a2c1e0b16ec6614d8c43530a731" + integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^0.2.0, rc-resize-observer@^0.2.1, rc-resize-observer@^0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.2.6.tgz#c1b642f6d1293e34c4e3715f47f69443a167b825" + integrity sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.0" + resize-observer-polyfill "^1.5.1" + +rc-select@^11.1.1: + version "11.5.0" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.5.0.tgz#360d2762207c2fef2622e7fcc542fc94dfc9d10f" + integrity sha512-izVcxMMo64ZbuYDaB+zsybPjli5Ub6fKM4OeChDqn4MwrHnPjCEsO3bXjeSEXK2LCC2DXQAdr1oYvHGw9QAGVw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-trigger "^5.0.4" + rc-util "^5.0.1" + rc-virtual-list "^3.2.0" + warning "^4.0.3" + +rc-select@~11.4.0: + version "11.4.2" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.4.2.tgz#5b431ee7b2cc6e439886ca855774fc116e6fe6fb" + integrity sha512-DQHYwMcvAajnnlahKkYIW47AVTXgxpGj9CWbe+juXgvxawQRFUdd8T8L2Q05aOkMy02UTG0Qrs7EZfHmn5QHbA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-trigger "^5.0.4" + rc-util "^5.0.1" + rc-virtual-list "^3.2.0" + warning "^4.0.3" + +rc-slider@~9.6.1: + version "9.6.4" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.6.4.tgz#19af39ad22927de2f6d524e0a14f3b1cf17ba659" + integrity sha512-TgmfOh1Jj9fHsW2eDeldFy4mOKwyHn4krl4K6gqbXhGFND7jVRdfA0m7TDUx3gGeX7A17fM1QZymMO/NRJmoLw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-tooltip "^5.0.1" + rc-util "^5.0.0" + shallowequal "^1.1.0" + +rc-steps@~4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.3.tgz#208580e22db619e3830ddb7fa41bc886c65d9803" + integrity sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA== + dependencies: + "@babel/runtime" "^7.10.2" + classnames "^2.2.3" + rc-util "^5.0.1" + +rc-switch@~3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-3.2.2.tgz#d001f77f12664d52595b4f6fb425dd9e66fba8e8" + integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.0.1" + +rc-table@~7.11.0: + version "7.11.2" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.11.2.tgz#07fde8e6323e27c6ed3f534a35dae413e8212d51" + integrity sha512-srOWkqgDQU6OA+gpc4MsaZXFw6TRC9NizbytvFCAg+Ra06cOVnD+MVYimAnjM9GeTPHgU+yc17xr/VkUYCRbYQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-resize-observer "^0.2.0" + rc-util "^5.4.0" + shallowequal "^1.1.0" + +rc-tabs@~11.7.0: + version "11.7.1" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.7.1.tgz#c23fc53e59bd8b7250818a1a29bca1896450d79b" + integrity sha512-ZLQ5ou70j32GKcOKRZvd5JQZOJhcDy62dr9kqiWDvt6g5v8LkpxIGAc0dWtCWOEWkO/QezwuNqWufMborkfrnQ== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + raf "^3.4.1" + rc-dropdown "^3.1.3" + rc-menu "^8.6.1" + rc-resize-observer "^0.2.1" + rc-util "^5.5.0" + +rc-textarea@^0.3.0, rc-textarea@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.1.tgz#e81e1ef6f0e29729f9f80bb266cf6769dd7ab69a" + integrity sha512-bO5Ol5uD6A++aWI6BJ0Pa/8OZcGeacP9LxIGkUqkCwPyOG3kaLOsWb8ya4xCfrsC2P4vDTsHsJmmmG5wuXGFRg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + omit.js "^2.0.0" + rc-resize-observer "^0.2.3" + +rc-tooltip@^5.0.1, rc-tooltip@~5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.0.1.tgz#b82c4259604d2cb62ca610ed7932dd37fc6ef61d" + integrity sha512-3AnxhUS0j74xAV3khrKw8o6rg+Ima3nw09DJBezMPnX3ImQUAnayWsPSlN1mEnihjA43rcFkGM1emiKE+CXyMQ== + dependencies: + "@babel/runtime" "^7.11.2" + rc-trigger "^5.0.0" + +rc-tree-select@~4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.1.3.tgz#1f88b7bf46652f9962ce425f8760a8f891fb5b78" + integrity sha512-vk/T1vHNvuBZyoq8CvOF6iaiyVe6Y8QmQflTYFgabVsTJ1d/obkO9tAXOvJELZgKJ9ljduDVaAZAgcq0Yap+mg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-select "^11.1.1" + rc-tree "^3.8.0" + rc-util "^5.0.5" + +rc-tree@^3.8.0, rc-tree@~3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-3.11.0.tgz#87edf01842bd88a05519e30dd7312bee3f7e2618" + integrity sha512-3RxA6fckbzX7WOk7g4gvO6AOad0znc8QW2nsv1IXSiljQaIMiyx1AK0zhzIEtABgWKbIs9QkhnBvIAHS4Rn9LA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.0.0" + rc-virtual-list "^3.0.1" + +rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.1.2.tgz#f0f89bba2318699e704492bddb20506ecd8f8916" + integrity sha512-A6UdDy95masAEIaNmazPtqHW1EOFDWi2C2bJGDpr9OYpmObDpWKdxyNijVbFb6l1viTkAU9d3FyStgNPddgFzw== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-align "^4.0.0" + rc-motion "^2.0.0" + rc-util "^5.5.0" + +rc-upload@~3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.3.1.tgz#ad8658b2a796031930b35d2b07ab312b7cd4c9ed" + integrity sha512-KWkJbVM9BwU8qi/2jZwmZpAcdRzDkuyfn/yAOLu+nm47dyd6//MtxzQD3XZDFkC6jQ6D5FmlKn6DhmOfV3v43w== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.2.0" + +rc-util@^4.15.3: + version "4.21.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05" + integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg== + dependencies: + add-dom-event-listener "^1.1.0" + prop-types "^15.5.10" + react-is "^16.12.0" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + +rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.1.0, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.5.0.tgz#76321bcb5c12f01f42bff9b971f170ff19506e5a" + integrity sha512-YJB+zZGvCll/bhxXRVLAekr7lOvTgqMlRIhgINoINfUek7wQvi5sft46NOi3yYUYhocpuW4k8+5okW46sBsZAQ== + dependencies: + react-is "^16.12.0" + shallowequal "^1.1.0" + +rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.2.2.tgz#95f8f0c4238e081f4a998354492632eed6d71924" + integrity sha512-OepvZDQGUbQQBFk5m2Ds32rfO/tSj9gZkLbzwaIw/hwGgvatDmW+j97YQvFkUQp/XDgdSGcfFfj/6XTKpz0J4g== + dependencies: + classnames "^2.2.6" + rc-resize-observer "^0.2.3" + rc-util "^5.0.7" + +react-ace@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-9.1.1.tgz#fe27e1c668b0186dc1609c422198d1c2df34d2bf" + integrity sha512-dL0w6GwtnS1opsOoWhJaF7rF7xCM+NOEOfePmDfiaeU+EyZQ6nRWDBgyzKsuiB3hyXH3G9D6FX37ur/LKUdKjA== + dependencies: + ace-builds "^1.4.6" + diff-match-patch "^1.0.4" + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + prop-types "^15.7.2" + +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== + dependencies: + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" + +react-app-rewire-alias@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/react-app-rewire-alias/-/react-app-rewire-alias-0.1.6.tgz#27fd6b47769871d97665393e2e572caf184948ef" + integrity sha512-RWI9danv1hw2YJQ1LrAImmB4g1TpGe56RZUbfyhZGS2dwpz2s1tz9JlA2HszSdNUUqcjat+Qcw544/Wz/zE8kw== + +react-app-rewire-html-webpack-plugin@^1.0.3: + version "1.0.3" + resolved "http://mirrors.cloud.tencent.com/npm/react-app-rewire-html-webpack-plugin/-/react-app-rewire-html-webpack-plugin-1.0.3.tgz#c00a16899071ae6ba17f9af77a0bfed4cb981987" + integrity sha512-cuTzm/oB3nUY7J1N0BYs9gMujFQyDEoNTDUX//823Km7htFayec3UvTASzRAmjw7moG0FAdmE+bQeRaHEczrhg== + dependencies: + deepmerge "^4.2.2" + +react-app-rewire-multiple-entry@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-app-rewire-multiple-entry/-/react-app-rewire-multiple-entry-2.2.0.tgz#76b33488a673d7934b973de26edbca7a23b72e20" + integrity sha512-J91dI4GY0nVdlbTI/EvhI3rper8URbIzas9E+K14kNc5pHgNCjH7ImJzVsCcfB1prCZbBNQV5ygwg/8T17igcg== + dependencies: + xxhashjs "^0.2.2" + +react-app-rewire-yaml@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-app-rewire-yaml/-/react-app-rewire-yaml-1.1.0.tgz#b6e73384c152514fb84e238fa2f13f37167f1126" + integrity sha512-JGz5PUP4zHAPGuLgEc4f4mCr20sHNWFy9Ipjgx7iib3zX840ntUqd+N4yuvZbf6EPOqdG8PXpVfMPZN6uDmQSw== + dependencies: + json-loader "^0.5.7" + yaml-lint-loader "^1.0.0" + yaml-loader "^0.5.0" + +react-app-rewired@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.6.tgz#33ee3076a7f34d6a7c94e649cac67e7c8c580de8" + integrity sha512-06flj0kK5tf/RN4naRv/sn6j3sQd7rsURoRLKLpffXDzJeNiAaTNic+0I8Basojy5WDwREkTqrMLewSAjcb13w== + dependencies: + semver "^5.6.0" + +react-color@^2.17.0: + version "2.18.1" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.1.tgz#2cda8cc8e06a9e2c52ad391a30ddad31972472f4" + integrity sha512-X5XpyJS6ncplZs74ak0JJoqPi+33Nzpv5RYWWxn17bslih+X7OlgmfpmGC1fNvdkK7/SGWYf1JJdn7D2n5gSuQ== + dependencies: + "@icons/material" "^0.2.4" + lodash "^4.17.11" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + +react-copy-to-clipboard@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.3.tgz#2a0623b1115a1d8c84144e9434d3342b5af41ab4" + integrity sha512-9S3j+m+UxDZOM0Qb8mhnT/rMR0NGSrj9A/073yz2DSxPMYhmYFBMYIdI2X4o8AjOjyFsSNxDRnCX6s/gRxpriw== + dependencies: + copy-to-clipboard "^3" + prop-types "^15.5.8" + +react-dev-utils@^10.0.0, react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-docgen-typescript-loader@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript-loader/-/react-docgen-typescript-loader-3.7.2.tgz#45cb2305652c0602767242a8700ad1ebd66bbbbd" + integrity sha512-fNzUayyUGzSyoOl7E89VaPKJk9dpvdSgyXg81cUkwy0u+NBvkzQG3FC5WBIlXda0k/iaxS+PWi+OC+tUiGxzPA== + dependencies: + "@webpack-contrib/schema-utils" "^1.0.0-beta.0" + loader-utils "^1.2.3" + react-docgen-typescript "^1.15.0" + +react-docgen-typescript-plugin@^0.5.0, react-docgen-typescript-plugin@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.5.1.tgz#383a4e92e6da07844aebb0927af7766f827b50bc" + integrity sha512-zBxrg3+N0UgcT3NGnrUEhAjmr3DMQq8XsKZweWpRfDAW9BnvSOoVVbKUvdq0elTokkHABIpk6Q626kwzYr4J3Q== + dependencies: + debug "^4.1.1" + endent "^2.0.1" + micromatch "^4.0.2" + react-docgen-typescript "^1.16.6" + react-docgen-typescript-loader "^3.7.2" + tslib "^2.0.0" + +react-docgen-typescript@^1.15.0, react-docgen-typescript@^1.16.6: + version "1.18.0" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-1.18.0.tgz#7f43b186b0228364cc6583231c3be09fbd3eb5e3" + integrity sha512-nY4bXz44tLzXBVF+cyaL/gZsMxlmYVICaEIXFF4EqvD8PEN1+zL+IgaQ1mNfJ6Zq8jUFAeXDo1Ds7ylxWZtjXQ== + +react-docgen@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.3.0.tgz#9aabde5e69f1993c8ba839fd9a86696504654589" + integrity sha512-hUrv69k6nxazOuOmdGeOpC/ldiKy7Qj/UFpxaQi0eDMrUFUTIPGtY5HJu7BggSmiyAMfREaESbtBL9UzdQ+hyg== + dependencies: + "@babel/core" "^7.7.5" + "@babel/runtime" "^7.7.6" + ast-types "^0.13.2" + commander "^2.19.0" + doctrine "^3.0.0" + neo-async "^2.6.1" + node-dir "^0.1.10" + strip-indent "^3.0.0" + +react-dom@^16.13.1, react-dom@^16.8.3: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" + integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-draggable@^4.0.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.3.tgz#0727f2cae5813e36b0e4962bf11b2f9ef2b406f3" + integrity sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w== + dependencies: + classnames "^2.2.5" + prop-types "^15.6.0" + +react-error-overlay@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" + integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== + +react-fast-compare@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet-async@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.0.6.tgz#11c15c74e79b3f66670c73779bef3e0e352b1d4e" + integrity sha512-t+bhAI4NgxfEv8ez4r77cLfR4O4Z55E/FH2DT+uiE4U7yfWgAk7OAOi7IxHxuYEVLI26bqjZvlVCkpC5/5AoNA== + dependencies: + "@babel/runtime" "^7.9.2" + invariant "^2.2.4" + prop-types "^15.7.2" + react-fast-compare "^3.0.1" + shallowequal "^1.1.0" + +react-highlight-words@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.16.0.tgz#4b4b9824e3d2b98789d3e3b3aedb5e961ae1b7cf" + integrity sha512-q34TwCSJOL+5pVDv6LUj3amaoyXdNDwd7zRqVAvceOrO9g1haWLAglK6WkGLMNUa3PFN8EgGedLg/k8Gpndxqg== + dependencies: + highlight-words-core "^1.2.0" + memoize-one "^4.0.0" + prop-types "^15.5.8" + +react-hotkeys@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-2.0.0.tgz#a7719c7340cbba888b0e9184f806a9ec0ac2c53f" + integrity sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q== + dependencies: + prop-types "^15.6.1" + +react-i18next@^11.7.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.7.0.tgz#f27c4c237a274e007a48ac1210db83e33719908b" + integrity sha512-8tvVkpuxQlubcszZON+jmoCgiA9gCZ74OAYli9KChPhETtq8pJsANBTe9KRLRLmX3ubumgvidURWr0VvKz1tww== + dependencies: + "@babel/runtime" "^7.3.1" + html-parse-stringify2 "2.0.1" + +react-inspector@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.0.1.tgz#8a30f3d488c4f40203624bbe24800f508ae05d3a" + integrity sha512-qRIENuAIcRaytrmg/TL5nN5igYZMzyQqIKlWA8zoYRDltULsZC1bWy2Ua5wYJuwEYnC3gK4FCjcIQnb+5OyLsQ== + dependencies: + "@babel/runtime" "^7.8.7" + is-dom "^1.1.0" + prop-types "^15.6.1" + +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-markdown@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-4.3.1.tgz#39f0633b94a027445b86c9811142d05381300f2f" + integrity sha512-HQlWFTbDxTtNY6bjgp3C3uv1h2xcjCSi1zAEzfBW9OwJJvENSYiLXWNXN5hHLsoqai7RnZiiHzcnWdXk2Splzw== + dependencies: + html-to-react "^1.3.4" + mdast-add-list-metadata "1.0.1" + prop-types "^15.7.2" + react-is "^16.8.6" + remark-parse "^5.0.0" + unified "^6.1.5" + unist-util-visit "^1.3.0" + xtend "^4.0.1" + +react-popper-tooltip@^2.11.0: + version "2.11.1" + resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-2.11.1.tgz#3c4bdfd8bc10d1c2b9a162e859bab8958f5b2644" + integrity sha512-04A2f24GhyyMicKvg/koIOQ5BzlrRbKiAgP6L+Pdj1MVX3yJ1NeZ8+EidndQsbejFT55oW1b++wg2Z8KlAyhfQ== + dependencies: + "@babel/runtime" "^7.9.2" + react-popper "^1.3.7" + +react-popper@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.7.tgz#f6a3471362ef1f0d10a4963673789de1baca2324" + integrity sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww== + dependencies: + "@babel/runtime" "^7.1.2" + create-react-context "^0.3.0" + deep-equal "^1.1.1" + popper.js "^1.14.4" + prop-types "^15.6.1" + typed-styles "^0.0.7" + warning "^4.0.2" + +react-router-dom@^6.0.0-alpha.3: + version "6.0.0-alpha.5" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.0.0-alpha.5.tgz#3c3e22226ee610eb91042a351741ce3f53596323" + integrity sha512-xo3VM55aE563uyZBPoUplfCPOYKJmTP2oA8wamm0k4K07e/6T4x4DDunS5Gu2VIy+m2+5mZp8n0rT6S+tYCb6Q== + dependencies: + history "5.0.0-beta.9" + prop-types "^15.7.2" + +react-router@^6.0.0-alpha.3: + version "6.0.0-alpha.5" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.0.0-alpha.5.tgz#c98805e50dc0e64787aa8aa4fa6753b435f2496b" + integrity sha512-cDj70bTUAgcfx6b5Fx1+wVlBSDVZGo8N+GUDk/yNFDCyGLfAsFlRpS3BhQqx8c49w2cCW+OrXxFhB4cbLZxWJw== + dependencies: + history "5.0.0-beta.9" + prop-types "^15.7.2" + +react-scripts@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.1.tgz#f551298b5c71985cc491b9acf3c8e8c0ae3ada0a" + integrity sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ== + dependencies: + "@babel/core" "7.9.0" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.10.0" + "@typescript-eslint/parser" "^2.10.0" + babel-eslint "10.1.0" + babel-jest "^24.9.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.6" + babel-preset-react-app "^9.1.2" + camelcase "^5.3.1" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "3.4.2" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^6.6.0" + eslint-config-react-app "^5.2.1" + eslint-loader "3.0.3" + eslint-plugin-flowtype "4.6.0" + eslint-plugin-import "2.20.1" + eslint-plugin-jsx-a11y "6.2.3" + eslint-plugin-react "7.19.0" + eslint-plugin-react-hooks "^1.6.1" + file-loader "4.3.0" + fs-extra "^8.1.0" + html-webpack-plugin "4.0.0-beta.11" + identity-obj-proxy "3.0.0" + jest "24.9.0" + jest-environment-jsdom-fourteen "1.0.1" + jest-resolve "24.9.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.9.0" + optimize-css-assets-webpack-plugin "5.0.3" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.1.0" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "4.0.1" + react-app-polyfill "^1.0.6" + react-dev-utils "^10.2.1" + resolve "1.15.0" + resolve-url-loader "3.1.1" + sass-loader "8.0.2" + semver "6.3.0" + style-loader "0.23.1" + terser-webpack-plugin "2.3.5" + ts-pnp "1.1.6" + url-loader "2.3.0" + webpack "4.42.0" + webpack-dev-server "3.10.3" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "4.3.1" + optionalDependencies: + fsevents "2.1.2" + +react-sizeme@^2.6.7: + version "2.6.12" + resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e" + integrity sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw== + dependencies: + element-resize-detector "^1.2.1" + invariant "^2.2.4" + shallowequal "^1.1.0" + throttle-debounce "^2.1.0" + +react-split@^2.0.9: + version "2.0.9" + resolved "https://registry.yarnpkg.com/react-split/-/react-split-2.0.9.tgz#8267b198c6b186857671da94c3feed828e6b2c66" + integrity sha512-IxKtxxmcbNUmWMSd5vlNnlE0jwbgQS1HyQYxt7h8qFgPskSkUTNzMbO838xapmmNf9D+u9B/bdtFnVjt+JC2JA== + dependencies: + prop-types "^15.5.7" + split.js "^1.6.0" + +react-spring@^8.0.27: + version "8.0.27" + resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-8.0.27.tgz#97d4dee677f41e0b2adcb696f3839680a3aa356a" + integrity sha512-nDpWBe3ZVezukNRandTeLSPcwwTMjNVu1IDq9qA/AMiUqHuRN4BeSWvKr3eIxxg1vtiYiOLy4FqdfCP5IoP77g== + dependencies: + "@babel/runtime" "^7.3.1" + prop-types "^15.5.8" + +react-syntax-highlighter@^12.2.1: + version "12.2.1" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz#14d78352da1c1c3f93c6698b70ec7c706b83493e" + integrity sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA== + dependencies: + "@babel/runtime" "^7.3.1" + highlight.js "~9.15.1" + lowlight "1.12.1" + prismjs "^1.8.4" + refractor "^2.4.1" + +react-syntax-highlighter@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.0.0.tgz#7f29b0fae2aef1a4b16fdd309994ee49b94dcc42" + integrity sha512-wwZlztFmZNmE7ZsXYApUpoPhZ/QU6ngWh8fYnh8QkoKnvCxRQ6ZQiNuX+EzFN+NSVpDxpAJjW+faT25XVodX5A== + dependencies: + "@babel/runtime" "^7.3.1" + highlight.js "^10.1.1" + lowlight "^1.14.0" + prismjs "^1.20.0" + refractor "^3.0.0" + +react-textarea-autosize@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.2.0.tgz#fae38653f5ec172a855fd5fffb39e466d56aebdb" + integrity sha512-grajUlVbkx6VdtSxCgzloUIphIZF5bKr21OYMceWPKkniy7H0mRAT/AXPrRtObAe+zUePnNlBwUc4ivVjUGIjw== + dependencies: + "@babel/runtime" "^7.10.2" + use-composed-ref "^1.0.0" + use-latest "^1.0.0" + +react-universal-interface@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" + integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== + +react-use@^15.3.3: + version "15.3.3" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-15.3.3.tgz#f16de7a16286c446388e8bd99680952fc3dc9a95" + integrity sha512-nYb94JbmDCaLZg3sOXmFW8HN+lXWxnl0caspXoYfZG1CON8JfLN9jMOyxRDUpm7dUq7WZ5mIept/ByqBQKJ0wQ== + dependencies: + "@types/js-cookie" "2.2.6" + "@xobotyi/scrollbar-width" "1.9.5" + copy-to-clipboard "^3.2.0" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.2.1" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.0.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^2.1.0" + ts-easing "^0.2.0" + tslib "^2.0.0" + +react@^16.13.1, react@^16.8.3: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +reactcss@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== + dependencies: + lodash "^4.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +"readable-stream@2 || 3", readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +recast@^0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" + integrity sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A== + dependencies: + ast-types "0.11.3" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +refractor@^2.4.1: + version "2.10.1" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-2.10.1.tgz#166c32f114ed16fd96190ad21d5193d3afc7d34e" + integrity sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw== + dependencies: + hastscript "^5.0.0" + parse-entities "^1.1.2" + prismjs "~1.17.0" + +refractor@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.0.0.tgz#7c8072eaf49dbc1b333e7acc64fb52a1c9b17c75" + integrity sha512-eCGK/oP4VuyW/ERqjMZRZHxl2QsztbkedkYy/SxqE/+Gh1gLaAF17tWIOcVJDiyGhar1NZy/0B9dFef7J0+FDw== + dependencies: + hastscript "^5.0.0" + parse-entities "^2.0.0" + prismjs "~1.20.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.3: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +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== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remark-parse@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" + integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +replace-ext@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +replace-ext@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.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== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rfdc@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" + integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +rtl-css-js@^1.9.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" + integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg== + dependencies: + "@babel/runtime" "^7.1.2" + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rw@1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= + +rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5: + version "2.6.6" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" + integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +screenfull@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" + integrity sha512-cCF2b+L/mnEiORLN5xSAz6H3t18i2oHh9BA8+CQlAh5DRw2+NFAGQJOSYbcGw8B2k04g/lVvFcfZ83b3ysH5UQ== + +scroll-into-view-if-needed@^2.2.25: + version "2.2.26" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.26.tgz#e4917da0c820135ff65ad6f7e4b7d7af568c4f13" + integrity sha512-SQ6AOKfABaSchokAmmaxVnL9IArxEnLEX9j4wAZw+x4iUTb40q7irtHG3z4GtAWz5veVZcCnubXDBRyLVQaohw== + dependencies: + compute-scroll-into-view "^1.0.16" + +secure-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/secure-keys/-/secure-keys-1.0.0.tgz#f0c82d98a3b139a8776a8808050b824431087fca" + integrity sha1-8MgtmKOxOah3aogIBQuCRDEIf8o= + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= + +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" + +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +send@0.17.1, send@latest: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-favicon@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" + integrity sha1-k10kDN/g9YBTB/3+ln2IlCosvPA= + dependencies: + etag "~1.8.1" + fresh "0.5.2" + ms "2.1.1" + parseurl "~1.3.2" + safe-buffer "5.1.1" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-harmonic-interval@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" + integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.0.2, shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shelljs@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +single-spa-react@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/single-spa-react/-/single-spa-react-3.0.1.tgz#7e67eaec47bc15b5716d6af6f83f5fbf1a1c05df" + integrity sha512-/toJWeG0UgJuN2CnvP5CewDR5IsH3GYXsFuOQgqkjY3BPUNDFYy4NiEAZE3OWpW+FjTbziGlrqy/u67WtE7tCw== + +single-spa@^5.9.2: + version "5.9.2" + resolved "https://registry.npm.taobao.org/single-spa/download/single-spa-5.9.2.tgz#4bb9a6eb6c90e3198b1549d8cdeb03241401b15b" + integrity sha1-S7mm62yQ4xmLFUnYzesDJBQBsVs= + +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +size-sensor@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/size-sensor/-/size-sensor-1.0.1.tgz#f84e46206d3e259faff1d548e4b3beca93219dbb" + integrity sha512-QTy7MnuugCFXIedXRpUSk9gUnyNiaxIdxGfUjr8xxXOqIB3QvBUYP9+b51oCg2C4dnhaeNk/h57TxjbvoJrJUA== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +sourcemap-codec@^1.4.1: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split.js@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/split.js/-/split.js-1.6.2.tgz#b8c63aeef2b15d84a003ead09e7def6ad166bb40" + integrity sha512-72C7zcQePzlmWqPOKkB2Ro0sUmnWSx+qEWXjLJKk6Qp4jAkFRz1hJgJb+ay6ZQyz/Aw9r8N/PZiCEKbPVpFoDQ== + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sql-formatter-plus-plus@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sql-formatter-plus-plus/-/sql-formatter-plus-plus-1.4.0.tgz#e7b329ed572a4b804fd7f8ceb9960811af0b8656" + integrity sha512-AEXMcq+jwTTS/Ol1cD83eSRMdJje6yb5vWOFtl0drF9sGl7yVjc7tmJnDWaLStAOcalv/9BIk/91KKcw++ZjOA== + dependencies: + "@babel/polyfill" "^7.7.0" + lodash "^4.17.15" + regexpu-core "^4.7.0" + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-generator@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36" + integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q== + dependencies: + stackframe "^1.1.1" + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +stackframe@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" + integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== + +stacktrace-gps@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a" + integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg== + dependencies: + source-map "0.5.6" + stackframe "^1.1.1" + +stacktrace-js@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" + integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== + dependencies: + error-stack-parser "^2.0.6" + stack-generator "^2.0.5" + stacktrace-gps "^3.0.4" + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +std-env@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.2.1.tgz#2ffa0fdc9e2263e0004c1211966e960948a40f6b" + integrity sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ== + dependencies: + ci-info "^1.6.0" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +store2@^2.7.1: + version "2.11.2" + resolved "https://registry.yarnpkg.com/store2/-/store2-2.11.2.tgz#a298e5e97b21b3ce7419b732540bc7c79cb007db" + integrity sha512-TQMKs+C6n9idtzLpxluikmDCYiDJrTbbIGn9LFxMg0BVTu+8JZKSlXTWYRpOFKlfKD5HlDWLVpJJyNGZ2e9l1A== + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-template@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" + integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.padend@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" + integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +string.prototype.padstart@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz#b47c087540d0710be5a49375751a0a627bd4ff90" + integrity sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +string.prototype.trimend@^1.0.0, string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimleft@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" + integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimstart "^1.0.0" + +string.prototype.trimright@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" + integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimend "^1.0.0" + +string.prototype.trimstart@^1.0.0, string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +style-loader@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" + integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.6" + +styled-components@^2.0.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.4.1.tgz#663bd0485d4b6ab46f946210dc03d2398d1ade74" + integrity sha1-ZjvQSF1LarRvlGIQ3APSOY0a3nQ= + dependencies: + buffer "^5.0.3" + css-to-react-native "^2.0.3" + fbjs "^0.8.9" + hoist-non-react-statics "^1.2.0" + is-plain-object "^2.0.1" + prop-types "^15.5.4" + stylis "^3.4.0" + supports-color "^3.2.3" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +stylis@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.0.tgz#016fa239663d77f868fef5b67cf201c4b7c701e1" + integrity sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw== + +stylis@^3.4.0: + version "3.5.4" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" + integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +svg-parser@^2.0.0, svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +symbol.prototype.description@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.2.tgz#f325e1e6ad534b3b29c9c3ca73c136c9ce03c5e2" + integrity sha512-2CW5SU4/Ki1cYOOHcL2cXK4rxSg5hCU1TwZ7X4euKhV9VnfqKslh7T6/UyKkubA8cq2tOmsOv7m3ZUmQslBRuw== + dependencies: + es-abstract "^1.17.0-next.1" + has-symbols "^1.0.1" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" + integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.0" + mkdirp "^1.0.3" + yallist "^4.0.0" + +telejson@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-4.0.0.tgz#91ac1747f1efbc88a58e4344fbd8fe438695f77e" + integrity sha512-xTDEZd7bVIsbnOzTBTlUed+uKPThxMQPYtjN9OhvtsJQLJ7zEEX8bl8G72SlzfvQlTpxv1RTDq7Qfk1hMOw2zA== + dependencies: + "@types/is-function" "^1.0.0" + global "^4.4.0" + is-function "^1.0.2" + is-regex "^1.0.5" + is-symbol "^1.0.3" + isobject "^4.0.0" + lodash "^4.17.15" + memoizerific "^1.11.3" + +term-size@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + +terser-webpack-plugin@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" + integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.2.0" + jest-worker "^25.1.0" + p-limit "^2.2.2" + schema-utils "^2.6.4" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.4.3" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.6.tgz#db0a108bbdd3680d72c9b491fbabad09ba207b99" + integrity sha512-z3HLOOPUHkCNGkeEHqqiMAIy1pjpHwS1o+i6Zn0Ws3EAvHJj46737efNNEvJ0Vx9BdDQM83d56qySDJOSORA0A== + dependencies: + cacache "^15.0.4" + find-cache-dir "^3.3.1" + jest-worker "^26.0.0" + p-limit "^3.0.1" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.8.0" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.4.3, terser@^4.6.3: + version "4.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" + integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +throttle-debounce@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.1.0.tgz#257e648f0a56bd9e54fe0f132c4ab8611df4e1d5" + integrity sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg== + +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + +tinycolor2@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" + integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== + +tmp@0.0.x, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +trim-trailing-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" + integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-dedent@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.1.1.tgz#68fad040d7dbd53a90f545b450702340e17d18f3" + integrity sha512-UGTRZu1evMw4uTPyYF66/KFd22XiU+jMaIuHrkIHQ2GivAXVlLV0v/vHrpOuTRf9BmpNHi/SO7Vd0rLu0y57jg== + +ts-easing@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" + integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== + +ts-essentials@^2.0.3: + version "2.0.12" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" + integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== + +ts-pnp@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1617647074515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= + +tslib@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" + integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + +typed-styles@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" + integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.9.7: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +ua-parser-js@^0.7.18: + version "0.7.28" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" + integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + +unfetch@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.1.0.tgz#6ec2dd0de887e58a4dee83a050ded80ffc4137db" + integrity sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg== + +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unified@^6.1.5: + version "6.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" + integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^2.0.0" + x-is-string "^0.1.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-remove-position@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" + integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" + integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== + +unist-util-visit-parents@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06" + integrity sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q== + +unist-util-visit-parents@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" + integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== + dependencies: + unist-util-is "^3.0.0" + +unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +unix-crypt-td-js@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" + integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@^1.1.0, unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-loader@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.0.tgz#c7d6b0d6b0fccd51ab3ffc58a78d32b8d89a7be2" + integrity sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.26" + schema-utils "^2.6.5" + +url-parse@^1.4.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" + integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use-composed-ref@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.0.0.tgz#bb13e8f4a0b873632cde4940abeb88b92d03023a" + integrity sha512-RVqY3NFNjZa0xrmK3bIMWNmQ01QjKPDc7DeWR3xa/N8aliVppuutOE5bZzPkQfvL+5NRWMMp0DJ99Trd974FIw== + dependencies: + ts-essentials "^2.0.3" + +use-isomorphic-layout-effect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.0.0.tgz#f56b4ed633e1c21cd9fc76fe249002a1c28989fb" + integrity sha512-JMwJ7Vd86NwAt1jH7q+OIozZSIxA4ND0fx6AsOe2q1H8ooBUp5aN6DvVCqZiIaYU6JaMRJGyR0FO7EBCIsb/Rg== + +use-latest@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.1.0.tgz#7bf9684555869c3f5f37e10d0884c8accf4d3aa6" + integrity sha512-gF04d0ZMV3AMB8Q7HtfkAWe+oq1tFXP6dZKwBHQF5nVXtGsh2oAYeeqma5ZzxtlpOcW8Ro/tLcfmEodjDeqtuw== + dependencies: + use-isomorphic-layout-effect "^1.0.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +useragent@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e" + integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +v8flags@^3.0.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + +v8flags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" + integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vfile-location@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" + integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== + +vfile-message@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" + integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== + dependencies: + is-buffer "^1.1.4" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +void-elements@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +warning@^4.0.1, warning@^4.0.2, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.0, watchpack@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@>=1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-bundle-analyzer@^3.7.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16" + integrity sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.15" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + +webpack-dev-middleware@^3.7.0, webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.6" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "12.0.5" + +webpack-hot-middleware@^2.25.0: + version "2.25.0" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" + integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== + dependencies: + ansi-html "0.0.7" + html-entities "^1.2.0" + querystring "^0.2.0" + strip-ansi "^3.0.0" + +webpack-log@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" + integrity sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA== + dependencies: + chalk "^2.1.0" + log-symbols "^2.1.0" + loglevelnext "^1.0.1" + uuid "^3.1.0" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-virtual-modules@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" + integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== + dependencies: + debug "^3.0.0" + +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +webpack@^4.43.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.1" + webpack-sources "^1.4.1" + +webpackbar@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-4.0.0.tgz#ee7a87f16077505b5720551af413c8ecd5b1f780" + integrity sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + consola "^2.10.0" + figures "^3.0.0" + pretty-time "^1.1.0" + std-env "^2.2.1" + text-table "^0.2.0" + wrap-ansi "^6.0.0" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== + dependencies: + workbox-core "^4.3.1" + +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== + dependencies: + workbox-core "^4.3.1" + +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== + dependencies: + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" + +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== + dependencies: + workbox-core "^4.3.1" + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== + dependencies: + workbox-core "^4.3.1" + +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== + dependencies: + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== + dependencies: + workbox-core "^4.3.1" + +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== + dependencies: + workbox-core "^4.3.1" + +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== + dependencies: + workbox-core "^4.3.1" + +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== + dependencies: + workbox-core "^4.3.1" + +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== + dependencies: + workbox-core "^4.3.1" + +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== + dependencies: + workbox-core "^4.3.1" + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== + dependencies: + "@babel/runtime" "^7.0.0" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.0.0, ws@^6.1.2, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xxhashjs@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + +y18n@^3.2.0, y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-lint-loader@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yaml-lint-loader/-/yaml-lint-loader-1.0.0.tgz#70e3d153bc761e4b7626ef852acef98d507910ca" + integrity sha512-gSGAdO+utAbjp+DUT+HyPJVaVJoGu6iP0aZcpb2tcOO5eFwUjvBalo56RJMnP+nUna8Kh8Rj/zLoKfDLLaTabA== + dependencies: + yaml-lint "^1.2.4" + +yaml-lint@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/yaml-lint/-/yaml-lint-1.2.4.tgz#0dec2d1ef4e5ec999bba1e34d618fc60498d1bc5" + integrity sha512-qpKE0szyKsE9TrlVPi+bxKxVAjl30QjNAOyOxy7noQdf/WCCYUlT4xiCRxMG48eyeBzMBtBN6PgGfaB0MJePNw== + dependencies: + glob "^7.1.2" + js-yaml "^3.10.0" + leprechaun "0.0.2" + lodash.merge "^4.6.1" + lodash.snakecase "^4.1.1" + nconf "^0.10.0" + +yaml-loader@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.5.0.tgz#86b1982d84a8e429e6647d93de9a0169e1c15827" + integrity sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A== + dependencies: + js-yaml "^3.5.2" + +yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@5.0.0-security.0: + version "5.0.0-security.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" + integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== + dependencies: + camelcase "^3.0.0" + object.assign "^4.1.0" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^3.19.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + +yargs@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" + integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "5.0.0-security.0" + +zrender@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/zrender/-/zrender-4.3.1.tgz#baf8aa6dc8187a2f819692d7d5f9bedfa2b90fa3" + integrity sha512-CeH2TpJeCdG0TAGYoPSAcFX2ogdug1K7LIn9UO/q9HWqQ54gWhrMAlDP9AwWYMUDhrPe4VeazQ4DW3msD96nUQ== From 6db8e10da2754089d66b3c6c77bb6372c260a226 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Thu, 18 Nov 2021 21:08:56 +0800 Subject: [PATCH 030/100] wip --- ui/builder.js | 117 ++++++++ ui/package.json | 8 +- ui/postcss2-index.js | 235 +++++++++++++++ ui/yarn.lock | 665 ++++++++++++++++++++++++++++++++++--------- 4 files changed, 895 insertions(+), 130 deletions(-) create mode 100644 ui/builder.js create mode 100644 ui/postcss2-index.js diff --git a/ui/builder.js b/ui/builder.js new file mode 100644 index 0000000000..0aa3c20a75 --- /dev/null +++ b/ui/builder.js @@ -0,0 +1,117 @@ +const fs = require('fs') +fs.copyFileSync( + './postcss2-index.js', + './node_modules/esbuild-plugin-postcss2/dist/index.js' +) + +const { start } = require('live-server') +const { watch } = require('chokidar') +const { build } = require('esbuild') +const postCssPlugin = require('esbuild-plugin-postcss2') +const { yamlPlugin } = require('esbuild-plugin-yaml') + +const argv = (key) => { + // Return true if the key exists and a value is defined + if (process.argv.includes(`--${key}`)) return true + + const value = process.argv.find((element) => element.startsWith(`--${key}=`)) + // Return null if the key does not exist and a value is not defined + if (!value) return null + return value.replace(`--${key}=`, '') +} +const isDev = argv('dev') === true + +/** + * Live Server Params + * @link https://www.npmjs.com/package/live-server#usage-from-node + */ +const serverParams = { + port: 8181, // Set the server port. Defaults to 8080. + root: 'dist', // Set root directory that's being served. Defaults to cwd. + open: false, // When false, it won't load your browser by default. + // host: "0.0.0.0", // Set the address to bind to. Defaults to 0.0.0.0 or process.env.IP. + // ignore: 'scss,my/templates', // comma-separated string for paths to ignore + // file: "index.html", // When set, serve this file (server root relative) for every 404 (useful for single-page applications) + // wait: 1000 // Waits for all changes, before reloading. Defaults to 0 sec. + // mount: [['/components', './node_modules']], // Mount a directory to a route. + // logLevel: 2, // 0 = errors only, 1 = some, 2 = lots + // middleware: [function(req, res, next) { next(); }] // Takes an array of Connect-compatible middleware that are injected into the server middleware stack +} + +const lessModifyVars = { + // '@primary-color': '#4394fc', + '@primary-color': '#1DA57A', + '@body-background': '#fff', + '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', + '@tooltip-max-width': '500px', +} +const lessGlobalVars = { + '@padding-page': '48px', + '@gray-1': '#fff', + '@gray-2': '#fafafa', + '@gray-3': '#f5f5f5', + '@gray-4': '#f0f0f0', + '@gray-5': '#d9d9d9', + '@gray-6': '#bfbfbf', + '@gray-7': '#8c8c8c', + '@gray-8': '#595959', + '@gray-9': '#262626', + '@gray-10': '#000', +} + +/** + * ESBuild Params + * @link https://esbuild.github.io/api/#build-api + */ +const buildParams = { + color: true, + entryPoints: ['src/index.ts'], + loader: { '.ts': 'tsx' }, + outdir: 'dist', + minify: !isDev, + format: 'esm', + bundle: true, + sourcemap: true, + logLevel: 'error', + incremental: true, + splitting: true, + loader: { + '.svg': 'dataurl', + }, + plugins: [ + postCssPlugin.default({ + lessOptions: { + // modifyVars: { '@primary-color': '#1DA57A' }, + modifyVars: lessModifyVars, + globalVars: lessGlobalVars, + javascriptEnabled: true, + }, + }), + yamlPlugin(), + ], +} + +async function main() { + // TODO - refine + fs.rmSync('./dist', { force: true, recursive: true }) + fs.mkdirSync('./dist') + // fs.copyFileSync('./public/index.html', './dist/index.html') + // fs.copyFileSync('./public/favicon.ico', './dist/favicon.ico') + // fs.copyFileSync('./public/manifest.json', './dist/manifest.json') + // fs.copyFileSync('./public/logo192.png', './dist/logo192.png') + // fs.copyFileSync('./public/logo512.png', './dist/logo512.png') + + if (isDev) { + const builder = await build(buildParams) + + start(serverParams) + + watch('src/**/*', { ignoreInitial: true }).on('all', () => { + builder.rebuild() + }) + } else { + build(buildParams).finally(() => process.exit(0)) + } +} + +main() diff --git a/ui/package.json b/ui/package.json index 806068af55..9c1446a5e5 100644 --- a/ui/package.json +++ b/ui/package.json @@ -23,7 +23,7 @@ "dayjs": "^1.9.6", "echarts": "^4.8.0", "echarts-for-react": "^2.0.16", - "esbuild": "^0.13.13", + "esbuild": "^0.13.14", "eventemitter2": "^6.4.4", "history": "^5.0.0", "i18next": "^19.6.3", @@ -57,7 +57,9 @@ "test": "react-app-rewired test", "fmt": "prettier --write .", "gen:browserlist": "gulp gen:browserlist", - "storybook": "start-storybook -p 9009 -s public" + "storybook": "start-storybook -p 9009 -s public", + "esbuild-prod": "node builder.js", + "esbuild-dev": "node builder.js --dev" }, "husky": { "hooks": { @@ -98,6 +100,8 @@ "browserslist-useragent-regexp": "^2.1.0", "chokidar": "^3.5.2", "customize-cra": "^1.0.0", + "esbuild-plugin-postcss2": "^0.1.0", + "esbuild-plugin-yaml": "^0.0.1", "esm": "^3.2.25", "gulp": "^4.0.2", "gulp-cli": "^2.3.0", diff --git a/ui/postcss2-index.js b/ui/postcss2-index.js new file mode 100644 index 0000000000..3bf3c44a02 --- /dev/null +++ b/ui/postcss2-index.js @@ -0,0 +1,235 @@ +var __create = Object.create +var __defProp = Object.defineProperty +var __getProtoOf = Object.getPrototypeOf +var __hasOwnProp = Object.prototype.hasOwnProperty +var __getOwnPropNames = Object.getOwnPropertyNames +var __getOwnPropDesc = Object.getOwnPropertyDescriptor +var __markAsModule = (target) => + __defProp(target, '__esModule', { value: true }) +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }) +} +var __exportStar = (target, module2, desc) => { + if ( + (module2 && typeof module2 === 'object') || + typeof module2 === 'function' + ) { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== 'default') + __defProp(target, key, { + get: () => module2[key], + enumerable: + !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable, + }) + } + return target +} +var __toModule = (module2) => { + return __exportStar( + __markAsModule( + __defProp( + module2 != null ? __create(__getProtoOf(module2)) : {}, + 'default', + module2 && module2.__esModule && 'default' in module2 + ? { get: () => module2.default, enumerable: true } + : { value: module2, enumerable: true } + ) + ), + module2 + ) +} +__markAsModule(exports) +__export(exports, { + default: () => src_default, +}) +var import_fs_extra = __toModule(require('fs-extra')) +var import_util = __toModule(require('util')) +var import_path = __toModule(require('path')) +var import_tmp = __toModule(require('tmp')) +var import_postcss2 = __toModule(require('postcss')) +var import_postcss_modules = __toModule(require('postcss-modules')) +var import_less = __toModule(require('less')) +var import_stylus = __toModule(require('stylus')) +var import_resolve_file = __toModule(require('resolve-file')) +const postCSSPlugin = ({ + plugins = [], + modules = true, + rootDir = process.cwd(), + sassOptions = {}, + lessOptions = {}, + stylusOptions = {}, +}) => ({ + name: 'postcss2', + setup(build) { + const tmpDirPath = import_tmp.default.dirSync().name, + modulesMap = [] + const modulesPlugin = (0, import_postcss_modules.default)({ + generateScopedName: '[name]__[local]___[hash:base64:5]', + ...(typeof modules !== 'boolean' ? modules : {}), + getJSON(filepath, json, outpath) { + const mapIndex = modulesMap.findIndex((m) => m.path === filepath) + if (mapIndex !== -1) { + modulesMap[mapIndex].map = json + } else { + modulesMap.push({ + path: filepath, + map: json, + }) + } + if ( + typeof modules !== 'boolean' && + typeof modules.getJSON === 'function' + ) + return modules.getJSON(filepath, json, outpath) + }, + }) + build.onResolve( + { filter: /.\.(css|sass|scss|less|styl)$/ }, + async (args) => { + if (args.namespace !== 'file' && args.namespace !== '') return + let sourceFullPath = (0, import_resolve_file.default)(args.path) + if (!sourceFullPath) + sourceFullPath = import_path.default.resolve( + args.resolveDir, + args.path + ) + const exist = await import_fs_extra.exists(sourceFullPath + '.js') + if (exist) { + return + } + const sourceExt = import_path.default.extname(sourceFullPath) + const sourceBaseName = import_path.default.basename( + sourceFullPath, + sourceExt + ) + const isModule = sourceBaseName.match(/\.module$/) + const sourceDir = import_path.default.dirname(sourceFullPath) + let tmpFilePath + if (args.kind === 'entry-point') { + const sourceRelDir = import_path.default.relative( + import_path.default.dirname(rootDir), + import_path.default.dirname(sourceFullPath) + ) + tmpFilePath = import_path.default.resolve( + tmpDirPath, + sourceRelDir, + `${sourceBaseName}.css` + ) + await (0, import_fs_extra.ensureDir)( + import_path.default.dirname(tmpFilePath) + ) + } else { + const uniqueTmpDir = import_path.default.resolve( + tmpDirPath, + uniqueId() + ) + tmpFilePath = import_path.default.resolve( + uniqueTmpDir, + `${sourceBaseName}.css` + ) + } + await (0, import_fs_extra.ensureDir)( + import_path.default.dirname(tmpFilePath) + ) + const fileContent = await (0, import_fs_extra.readFile)(sourceFullPath) + let css = sourceExt === '.css' ? fileContent : '' + if (sourceExt === '.sass' || sourceExt === '.scss') + css = ( + await renderSass({ ...sassOptions, file: sourceFullPath }) + ).css.toString() + if (sourceExt === '.styl') + css = await renderStylus( + new import_util.TextDecoder().decode(fileContent), + { + ...stylusOptions, + filename: sourceFullPath, + } + ) + if (sourceExt === '.less') + css = ( + await import_less.default.render( + new import_util.TextDecoder().decode(fileContent), + { + ...lessOptions, + filename: sourceFullPath, + rootpath: import_path.default.dirname(args.path), + } + ) + ).css + const result = await (0, import_postcss2.default)( + isModule ? [modulesPlugin, ...plugins] : plugins + ).process(css, { + from: sourceFullPath, + to: tmpFilePath, + }) + await (0, import_fs_extra.writeFile)(tmpFilePath, result.css) + return { + namespace: isModule ? 'postcss-module' : 'file', + path: tmpFilePath, + watchFiles: getFilesRecursive(sourceDir), + pluginData: { + originalPath: sourceFullPath, + }, + } + } + ) + build.onLoad( + { filter: /.*/, namespace: 'postcss-module' }, + async (args) => { + const mod = modulesMap.find( + ({ path: path2 }) => path2 === args?.pluginData?.originalPath + ), + resolveDir = import_path.default.dirname(args.path) + return { + resolveDir, + contents: `import ${JSON.stringify(args.path)}; +export default ${JSON.stringify(mod && mod.map ? mod.map : {})};`, + } + } + ) + }, +}) +function renderSass(options) { + return new Promise((resolve, reject) => { + getSassImpl().render(options, (e, res) => { + if (e) reject(e) + else resolve(res) + }) + }) +} +function renderStylus(str, options) { + return new Promise((resolve, reject) => { + import_stylus.default.render(str, options, (e, res) => { + if (e) reject(e) + else resolve(res) + }) + }) +} +function getSassImpl() { + let impl = 'sass' + try { + require.resolve('sass') + } catch { + try { + require.resolve('node-sass') + impl = 'node-sass' + } catch { + throw new Error('Please install "sass" or "node-sass" package') + } + } + return require(impl) +} +function getFilesRecursive(directory) { + return (0, import_fs_extra.readdirSync)(directory).reduce((files, file) => { + const name = import_path.default.join(directory, file) + return (0, import_fs_extra.statSync)(name).isDirectory() + ? [...files, ...getFilesRecursive(name)] + : [...files, name] + }, []) +} +let idCounter = 0 +function uniqueId() { + return Date.now().toString(16) + (idCounter++).toString(16) +} +var src_default = postCSSPlugin diff --git a/ui/yarn.lock b/ui/yarn.lock index 0e3adf3b7b..b55bd2e5cd 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -4531,6 +4531,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + argue-cli@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/argue-cli/-/argue-cli-1.2.1.tgz#27b2304f86370642ad2dcbb69f00fd728215073f" @@ -4835,6 +4840,18 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^10.2.5: + version "10.4.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" + integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== + dependencies: + browserslist "^4.17.5" + caniuse-lite "^1.0.30001272" + fraction.js "^4.1.1" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.1.0" + autoprefixer@^9.6.1: version "9.8.0" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" @@ -5595,6 +5612,17 @@ browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4 node-releases "^1.1.53" pkg-up "^2.0.0" +browserslist@^4.17.5: + version "4.18.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" + integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== + dependencies: + caniuse-lite "^1.0.30001280" + electron-to-chromium "^1.3.896" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -5829,6 +5857,11 @@ caniuse-lite@^1.0.30001097: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e" integrity sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA== +caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001280: + version "1.0.30001282" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" + integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -5907,6 +5940,21 @@ check-types@^8.0.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -5941,21 +5989,6 @@ chokidar@^3.3.0, chokidar@^3.4.0: optionalDependencies: fsevents "~2.1.2" -chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - chownr@^1.1.1, chownr@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -6399,6 +6432,13 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +copy-anything@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" + integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== + dependencies: + is-what "^3.12.0" + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -6733,6 +6773,15 @@ css@^2.0.0: source-map-resolve "^0.5.2" urix "^0.1.0" +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" @@ -6857,6 +6906,14 @@ customize-cra@^1.0.0: dependencies: lodash.flow "^3.5.0" +cwd@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" + integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= + dependencies: + find-pkg "^0.1.2" + fs-exists-sync "^0.1.0" + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -7168,6 +7225,13 @@ debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: dependencies: ms "^2.1.1" +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -7175,6 +7239,13 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -7636,6 +7707,11 @@ electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.452.tgz#ef6877702722471aa044a2429336cd450629934d" integrity sha512-IdbjgCEqDvcU/1kUQa6C49I2NZOY3SBmU9Eus7mdFdJJBqn0Lg1Epfi/T4nqVcxTNBEGhcjwMhY1EysMBsXZrw== +electron-to-chromium@^1.3.896: + version "1.3.901" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.901.tgz#ce2c3157d61bce9f42f1e83225c17358ae9f4918" + integrity sha512-ToJdV2vzwT2jeAsw8zIggTFllJ4Kxvwghk39AhJEHHlIxor10wsFI3wo69p8nFc0s/ATWBqugPv/k3nW4Y9Mww== + element-resize-detector@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" @@ -7860,113 +7936,141 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -esbuild-android-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.13.tgz#da07b5fb2daf7d83dcd725f7cf58a6758e6e702a" - integrity sha512-T02aneWWguJrF082jZworjU6vm8f4UQ+IH2K3HREtlqoY9voiJUwHLRL6khRlsNLzVglqgqb7a3HfGx7hAADCQ== - -esbuild-darwin-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.13.tgz#e94e9fd3b4b5455a2e675cd084a19a71b6904bbf" - integrity sha512-wkaiGAsN/09X9kDlkxFfbbIgR78SNjMOfUhoel3CqKBDsi9uZhw7HBNHNxTzYUK8X8LAKFpbODgcRB3b/I8gHA== - -esbuild-darwin-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.13.tgz#8c320eafbb3ba2c70d8062128c5b71503e342471" - integrity sha512-b02/nNKGSV85Gw9pUCI5B48AYjk0vFggDeom0S6QMP/cEDtjSh1WVfoIFNAaLA0MHWfue8KBwoGVsN7rBshs4g== - -esbuild-freebsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.13.tgz#ce0ca5b8c4c274cfebc9326f9b316834bd9dd151" - integrity sha512-ALgXYNYDzk9YPVk80A+G4vz2D22Gv4j4y25exDBGgqTcwrVQP8rf/rjwUjHoh9apP76oLbUZTmUmvCMuTI1V9A== - -esbuild-freebsd-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.13.tgz#463da17562fdcfdf03b3b94b28497d8d8dcc8f62" - integrity sha512-uFvkCpsZ1yqWQuonw5T1WZ4j59xP/PCvtu6I4pbLejhNo4nwjW6YalqnBvBSORq5/Ifo9S/wsIlVHzkzEwdtlw== - -esbuild-linux-32@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.13.tgz#2035793160da2c4be48a929e5bafb14a31789acc" - integrity sha512-yxR9BBwEPs9acVEwTrEE2JJNHYVuPQC9YGjRfbNqtyfK/vVBQYuw8JaeRFAvFs3pVJdQD0C2BNP4q9d62SCP4w== - -esbuild-linux-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.13.tgz#fbe4802a8168c6d339d0749f977b099449b56f22" - integrity sha512-kzhjlrlJ+6ESRB/n12WTGll94+y+HFeyoWsOrLo/Si0s0f+Vip4b8vlnG0GSiS6JTsWYAtGHReGczFOaETlKIw== - -esbuild-linux-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.13.tgz#f08d98df28d436ed4aad1529615822bb74d4d978" - integrity sha512-KMrEfnVbmmJxT3vfTnPv/AiXpBFbbyExH13BsUGy1HZRPFMi5Gev5gk8kJIZCQSRfNR17aqq8sO5Crm2KpZkng== - -esbuild-linux-arm@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.13.tgz#6f968c3a98b64e30c80b212384192d0cfcb32e7f" - integrity sha512-hXub4pcEds+U1TfvLp1maJ+GHRw7oizvzbGRdUvVDwtITtjq8qpHV5Q5hWNNn6Q+b3b2UxF03JcgnpzCw96nUQ== - -esbuild-linux-mips64le@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.13.tgz#690c78dc4725efe7d06a1431287966fbf7774c7f" - integrity sha512-cJT9O1LYljqnnqlHaS0hdG73t7hHzF3zcN0BPsjvBq+5Ad47VJun+/IG4inPhk8ta0aEDK6LdP+F9299xa483w== - -esbuild-linux-ppc64le@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.13.tgz#7ec9048502de46754567e734aae7aebd2df6df02" - integrity sha512-+rghW8st6/7O6QJqAjVK3eXzKkZqYAw6LgHv7yTMiJ6ASnNvghSeOcIvXFep3W2oaJc35SgSPf21Ugh0o777qQ== - -esbuild-netbsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.13.tgz#439bdaefffa03a8fa84324f5d83d636f548a2de3" - integrity sha512-A/B7rwmzPdzF8c3mht5TukbnNwY5qMJqes09ou0RSzA5/jm7Jwl/8z853ofujTFOLhkNHUf002EAgokzSgEMpQ== - -esbuild-openbsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.13.tgz#c9958e5291a00a3090c1ec482d6bcdf2d5b5d107" - integrity sha512-szwtuRA4rXKT3BbwoGpsff6G7nGxdKgUbW9LQo6nm0TVCCjDNDC/LXxT994duIW8Tyq04xZzzZSW7x7ttDiw1w== - -esbuild-sunos-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.13.tgz#ac9ead8287379cd2f6d00bd38c5997fda9c1179e" - integrity sha512-ihyds9O48tVOYF48iaHYUK/boU5zRaLOXFS+OOL3ceD39AyHo46HVmsJLc7A2ez0AxNZCxuhu+P9OxfPfycTYQ== - -esbuild-windows-32@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.13.tgz#a3820fc86631ca594cb7b348514b5cc3f058cfd6" - integrity sha512-h2RTYwpG4ldGVJlbmORObmilzL8EECy8BFiF8trWE1ZPHLpECE9//J3Bi+W3eDUuv/TqUbiNpGrq4t/odbayUw== - -esbuild-windows-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.13.tgz#1da748441f228d75dff474ddb7d584b81887323c" - integrity sha512-oMrgjP4CjONvDHe7IZXHrMk3wX5Lof/IwFEIbwbhgbXGBaN2dke9PkViTiXC3zGJSGpMvATXVplEhlInJ0drHA== - -esbuild-windows-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.13.tgz#06dfa52a6b178a5932a9a6e2fdb240c09e6da30c" - integrity sha512-6fsDfTuTvltYB5k+QPah/x7LrI2+OLAJLE3bWLDiZI6E8wXMQU+wLqtEO/U/RvJgVY1loPs5eMpUBpVajczh1A== - -esbuild@^0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.13.tgz#0b5399c20f219f663c8c1048436fb0f59ab17a41" - integrity sha512-Z17A/R6D0b4s3MousytQ/5i7mTCbaF+Ua/yPfoe71vdTv4KBvVAvQ/6ytMngM2DwGJosl8WxaD75NOQl2QF26Q== +esbuild-android-arm64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.14.tgz#c85083ece26be3d67e6c720e088968a98409e023" + integrity sha512-Q+Xhfp827r+ma8/DJgpMRUbDZfefsk13oePFEXEIJ4gxFbNv5+vyiYXYuKm43/+++EJXpnaYmEnu4hAKbAWYbA== + +esbuild-darwin-64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.14.tgz#8e4e237ad847cc54a1d3a5caee26a746b9f0b81f" + integrity sha512-YmOhRns6QBNSjpVdTahi/yZ8dscx9ai7a6OY6z5ACgOuQuaQ2Qk2qgJ0/siZ6LgD0gJFMV8UINFV5oky5TFNQQ== + +esbuild-darwin-arm64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.14.tgz#b3b5ebd40b2cb06ee0f6fb342dd4bdcca54ad273" + integrity sha512-Lp00VTli2jqZghSa68fx3fEFCPsO1hK59RMo1PRap5RUjhf55OmaZTZYnCDI0FVlCtt+gBwX5qwFt4lc6tI1xg== + +esbuild-freebsd-64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.14.tgz#175ecb2fa8141428cf70ea2d5f4c27534bad53e0" + integrity sha512-BKosI3jtvTfnmsCW37B1TyxMUjkRWKqopR0CE9AF2ratdpkxdR24Vpe3gLKNyWiZ7BE96/SO5/YfhbPUzY8wKw== + +esbuild-freebsd-arm64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.14.tgz#a7d64e41d1fa581f8db7775e5200f18e67d70c4d" + integrity sha512-yd2uh0yf+fWv5114+SYTl4/1oDWtr4nN5Op+PGxAkMqHfYfLjFKpcxwCo/QOS/0NWqPVE8O41IYZlFhbEN2B8Q== + +esbuild-linux-32@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.14.tgz#14bdd4f6b6cfd35c65c835894651ba335c2117da" + integrity sha512-a8rOnS1oWSfkkYWXoD2yXNV4BdbDKA7PNVQ1klqkY9SoSApL7io66w5H44mTLsfyw7G6Z2vLlaLI2nz9MMAowA== + +esbuild-linux-64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.14.tgz#7fd56851b2982fdd0cd8447ee9858c2c5711708a" + integrity sha512-yPZSoMs9W2MC3Dw+6kflKt5FfQm6Dicex9dGIr1OlHRsn3Hm7yGMUTctlkW53KknnZdOdcdd5upxvbxqymczVQ== + +esbuild-linux-arm64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.14.tgz#a55634d70679ba509adeafd68eebb9fd1ec5af6c" + integrity sha512-Lvo391ln9PzC334e+jJ2S0Rt0cxP47eoH5gFyv/E8HhOnEJTvm7A+RRnMjjHnejELacTTfYgFGQYPjLsi/jObQ== + +esbuild-linux-arm@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.14.tgz#bb96a99677e608b31ff61f37564326d38e846ca2" + integrity sha512-8chZE4pkKRvJ/M/iwsNQ1KqsRg2RyU5eT/x2flNt/f8F2TVrDreR7I0HEeCR50wLla3B1C3wTIOzQBmjuc6uWg== + +esbuild-linux-mips64le@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.14.tgz#6a55362a8fd1e593dea2ecc41877beed8b8184b9" + integrity sha512-MZhgxbmrWbpY3TOE029O6l5tokG9+Yoj2hW7vdit/d/VnmneqeGrSHADuDL6qXM8L5jaCiaivb4VhsyVCpdAbQ== + +esbuild-linux-ppc64le@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.14.tgz#9e0048587ece0a7f184ab147f20d077098045e7f" + integrity sha512-un7KMwS7fX1Un6BjfSZxTT8L5cV/8Uf4SAhM7WYy2XF8o8TI+uRxxD03svZnRNIPsN2J5cl6qV4n7Iwz+yhhVw== + +esbuild-netbsd-64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.14.tgz#dcab16a4bbcfa16e2e8535dadc5f64fdc891c63b" + integrity sha512-5ekKx/YbOmmlTeNxBjh38Uh5TGn5C4uyqN17i67k18pS3J+U2hTVD7rCxcFcRS1AjNWumkVL3jWqYXadFwMS0Q== + +esbuild-openbsd-64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.14.tgz#3c7453b155ebb68dc34d5aec3bd6505337bdda08" + integrity sha512-9bzvwewHjct2Cv5XcVoE1yW5YTW12Sk838EYfA46abgnhxGoFSD1mFcaztp5HHC43AsF+hQxbSFG/RilONARUA== + +esbuild-plugin-postcss2@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/esbuild-plugin-postcss2/-/esbuild-plugin-postcss2-0.1.0.tgz#0426f0e5b962462cc68b2d3f2ac74b1db04597a8" + integrity sha512-dOmmjmioFfVIqSMuJSBkQkvmgyYqkx2Qq5NAdrTlvKuygKEpz5boJNduOgiyuQ2LVHcbeAUA8wpckYgSgIQG9w== + dependencies: + autoprefixer "^10.2.5" + fs-extra "^9.1.0" + less "^4.x" + postcss "8.x" + postcss-modules "^4.0.0" + resolve-file "^0.3.0" + sass "^1.x" + stylus "^0.x" + tmp "^0.2.1" + +esbuild-plugin-yaml@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/esbuild-plugin-yaml/-/esbuild-plugin-yaml-0.0.1.tgz#660b9ddab78f4c3f488284762d6c01b6738615fb" + integrity sha512-s3jqOeeCd+dUuUsuBqLRgN2SeQjPF2ppIglvV3B//txgQpTDThGvxu6sqiOUOJ0NOzegitmpWCXoCONdRbUS7w== + dependencies: + fs-extra "^9.1.0" + js-yaml "^4.0.0" + +esbuild-sunos-64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.14.tgz#85addf5fef6b5db154a955d4f2e88953359d75ce" + integrity sha512-mjMrZB76M6FmoiTvj/RGWilrioR7gVwtFBRVugr9qLarXMIU1W/pQx+ieEOtflrW61xo8w1fcxyHsVVGRvoQ0w== + +esbuild-windows-32@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.14.tgz#f77f98f30a5c636c44db2428ecdf9bcbbaedb1a7" + integrity sha512-GZa6mrx2rgfbH/5uHg0Rdw50TuOKbdoKCpEBitzmG5tsXBdce+cOL+iFO5joZc6fDVCLW3Y6tjxmSXRk/v20Hg== + +esbuild-windows-64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.14.tgz#bc778674c40d65150d12385e0f23eb3a0badbd0d" + integrity sha512-Lsgqah24bT7ClHjLp/Pj3A9wxjhIAJyWQcrOV4jqXAFikmrp2CspA8IkJgw7HFjx6QrJuhpcKVbCAe/xw0i2yw== + +esbuild-windows-arm64@0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.14.tgz#91a8dad35ab2c4dd27cd83860742955b25a354d7" + integrity sha512-KP8FHVlWGhM7nzYtURsGnskXb/cBCPTfj0gOKfjKq2tHtYnhDZywsUG57nk7TKhhK0fL11LcejHG3LRW9RF/9A== + +esbuild@^0.13.14: + version "0.13.14" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.14.tgz#98a3f7f42809abdc2b57c84565d0f713382dc1a5" + integrity sha512-xu4D+1ji9x53ocuomcY+KOrwAnWzhBu/wTEjpdgZ8I1c8i5vboYIeigMdzgY1UowYBKa2vZgVgUB32bu7gkxeg== optionalDependencies: - esbuild-android-arm64 "0.13.13" - esbuild-darwin-64 "0.13.13" - esbuild-darwin-arm64 "0.13.13" - esbuild-freebsd-64 "0.13.13" - esbuild-freebsd-arm64 "0.13.13" - esbuild-linux-32 "0.13.13" - esbuild-linux-64 "0.13.13" - esbuild-linux-arm "0.13.13" - esbuild-linux-arm64 "0.13.13" - esbuild-linux-mips64le "0.13.13" - esbuild-linux-ppc64le "0.13.13" - esbuild-netbsd-64 "0.13.13" - esbuild-openbsd-64 "0.13.13" - esbuild-sunos-64 "0.13.13" - esbuild-windows-32 "0.13.13" - esbuild-windows-64 "0.13.13" - esbuild-windows-arm64 "0.13.13" + esbuild-android-arm64 "0.13.14" + esbuild-darwin-64 "0.13.14" + esbuild-darwin-arm64 "0.13.14" + esbuild-freebsd-64 "0.13.14" + esbuild-freebsd-arm64 "0.13.14" + esbuild-linux-32 "0.13.14" + esbuild-linux-64 "0.13.14" + esbuild-linux-arm "0.13.14" + esbuild-linux-arm64 "0.13.14" + esbuild-linux-mips64le "0.13.14" + esbuild-linux-ppc64le "0.13.14" + esbuild-netbsd-64 "0.13.14" + esbuild-openbsd-64 "0.13.14" + esbuild-sunos-64 "0.13.14" + esbuild-windows-32 "0.13.14" + esbuild-windows-64 "0.13.14" + esbuild-windows-arm64 "0.13.14" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@~1.0.3: version "1.0.3" @@ -8317,6 +8421,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= + dependencies: + os-homedir "^1.0.1" + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -8675,6 +8786,21 @@ find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-file-up@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" + integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= + dependencies: + fs-exists-sync "^0.1.0" + resolve-dir "^0.1.0" + +find-pkg@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" + integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= + dependencies: + find-file-up "^0.1.2" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -8869,6 +8995,11 @@ forwarded@~0.1.2: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +fraction.js@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" + integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -8894,6 +9025,11 @@ from@~0: resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -8942,6 +9078,16 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -9038,6 +9184,13 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== + dependencies: + loader-utils "^1.1.0" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -9180,6 +9333,14 @@ global-modules@2.0.0: dependencies: global-prefix "^3.0.0" +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -9189,6 +9350,16 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -9559,7 +9730,7 @@ hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -homedir-polyfill@^1.0.1: +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== @@ -9828,13 +9999,18 @@ i18next@^19.6.3: dependencies: "@babel/runtime" "^7.10.1" -iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -9842,6 +10018,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" +icss-utils@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" @@ -10203,6 +10384,13 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" +is-core-module@^2.2.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -10503,6 +10691,11 @@ is-valid-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= +is-what@^3.12.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -10513,6 +10706,11 @@ is-window@^1.0.2: resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -11066,6 +11264,13 @@ js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.5.2: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -11333,6 +11538,13 @@ lazy-cache@^1.0.3: resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= +lazy-cache@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= + dependencies: + set-getter "^0.1.0" + lazy-universal-dotenv@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" @@ -11408,6 +11620,23 @@ less@^3.12.2: native-request "^1.0.5" source-map "~0.6.0" +less@^4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" + integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^2.5.2" + source-map "~0.6.0" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -12106,7 +12335,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -12221,6 +12450,11 @@ nano-css@^5.2.1: stacktrace-js "^2.0.0" stylis "3.5.0" +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -12258,6 +12492,15 @@ nconf@^0.10.0: secure-keys "^1.0.0" yargs "^3.19.0" +needle@^2.5.2: + version "2.9.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -12366,6 +12609,11 @@ node-releases@^1.1.52, node-releases@^1.1.53: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -12731,6 +12979,11 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -12966,7 +13219,7 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" -parse-node-version@^1.0.0: +parse-node-version@^1.0.0, parse-node-version@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== @@ -13124,6 +13377,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -13588,6 +13846,11 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + postcss-modules-local-by-default@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" @@ -13598,6 +13861,15 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.0" +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + postcss-modules-scope@^2.1.1, postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" @@ -13606,6 +13878,13 @@ postcss-modules-scope@^2.1.1, postcss-modules-scope@^2.2.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + postcss-modules-values@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" @@ -13614,6 +13893,27 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-modules@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.2.2.tgz#5e7777c5a8964ea176919d90b2e54ef891321ce5" + integrity sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg== + dependencies: + generic-names "^2.0.1" + icss-replace-symbols "^1.1.0" + lodash.camelcase "^4.3.0" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + string-hash "^1.1.1" + postcss-nesting@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" @@ -13872,6 +14172,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.4: + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-svgo@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" @@ -13919,6 +14227,15 @@ postcss@7.0.21: source-map "^0.6.1" supports-color "^6.1.0" +postcss@8.x: + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^0.6.2" + postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6: version "7.0.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" @@ -15495,6 +15812,14 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -15503,6 +15828,19 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" +resolve-file@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/resolve-file/-/resolve-file-0.3.0.tgz#11e1fb464566d3a7c500cb7e9481e8f0b00a14ef" + integrity sha1-EeH7RkVm06fFAMt+lIHo8LAKFO8= + dependencies: + cwd "^0.10.0" + expand-tilde "^2.0.2" + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + homedir-polyfill "^1.0.1" + lazy-cache "^2.0.2" + resolve "^1.2.0" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -15565,6 +15903,14 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13. dependencies: path-parse "^1.0.6" +resolve@^1.2.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -15625,7 +15971,7 @@ rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: dependencies: glob "^7.1.3" -rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -15698,7 +16044,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -15734,6 +16080,13 @@ sass-loader@8.0.2: schema-utils "^2.6.1" semver "^6.3.0" +sass@^1.x: + version "1.43.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f" + integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg== + dependencies: + chokidar ">=3.0.0 <4.0.0" + sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -15921,6 +16274,13 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-getter@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.1.tgz#a3110e1b461d31a9cfc8c5c9ee2e9737ad447102" + integrity sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw== + dependencies: + to-object-path "^0.3.0" + set-harmonic-interval@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" @@ -16150,6 +16510,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -16161,6 +16526,14 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -16461,6 +16834,11 @@ string-convert@^0.2.0: resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -16721,6 +17099,20 @@ stylis@^3.4.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== +stylus@^0.x: + version "0.55.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" + integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== + dependencies: + css "^3.0.0" + debug "~3.1.0" + glob "^7.1.6" + mkdirp "~1.0.4" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.3.0" + source-map "^0.7.3" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -17000,6 +17392,13 @@ tmp@0.0.x, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + tmpl@1.0.x: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -17147,6 +17546,11 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== +tslib@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -17387,6 +17791,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unix-crypt-td-js@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" @@ -18006,7 +18415,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== From 21ceaf67b145a2fc67ee5d121b1c56deb7167deb Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Thu, 18 Nov 2021 21:09:36 +0800 Subject: [PATCH 031/100] remove ~ when @import antd less --- ui/dashboardApp/layout/main/Sider/Banner.module.less | 2 +- ui/dashboardApp/layout/main/Sider/index.module.less | 2 +- ui/dashboardApp/layout/main/index.module.less | 2 +- ui/dashboardApp/layout/signin/index.module.less | 4 ++-- ui/lib/antd.less | 8 ++++---- ui/lib/apps/ClusterInfo/components/Statistics.module.less | 2 +- .../components/StoreLocationTree/index.module.less | 2 +- ui/lib/apps/ClusterInfo/pages/List.module.less | 2 +- ui/lib/apps/ContinuousProfiling/pages/List.module.less | 2 +- ui/lib/apps/InstanceProfiling/pages/List.module.less | 2 +- ui/lib/apps/KeyViz/components/KeyViz.less | 2 +- ui/lib/apps/QueryEditor/index.module.less | 2 +- ui/lib/apps/SearchLogs/components/Styles.module.less | 2 +- ui/lib/apps/SlowQuery/pages/List/List.module.less | 2 +- ui/lib/apps/Statement/pages/List/List.module.less | 2 +- .../Statement/pages/List/TimeRangeSelector.module.less | 2 +- ui/lib/components/AnimatedSkeleton/index.module.less | 2 +- ui/lib/components/Bar/Bar.module.less | 2 +- ui/lib/components/BaseSelect/index.module.less | 8 ++++---- ui/lib/components/Blink/index.module.less | 2 +- ui/lib/components/Card/index.module.less | 2 +- ui/lib/components/ColumnsSelector/index.module.less | 2 +- ui/lib/components/CopyLink/index.module.less | 2 +- ui/lib/components/Descriptions/index.module.less | 2 +- ui/lib/components/Head/index.module.less | 2 +- ui/lib/components/TimeRangeSelector/index.module.less | 2 +- ui/src/index.ts | 3 ++- 27 files changed, 35 insertions(+), 34 deletions(-) diff --git a/ui/dashboardApp/layout/main/Sider/Banner.module.less b/ui/dashboardApp/layout/main/Sider/Banner.module.less index 766dad10e4..a769c2419e 100644 --- a/ui/dashboardApp/layout/main/Sider/Banner.module.less +++ b/ui/dashboardApp/layout/main/Sider/Banner.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .banner { background: @primary-color; diff --git a/ui/dashboardApp/layout/main/Sider/index.module.less b/ui/dashboardApp/layout/main/Sider/index.module.less index 67dbe8cd8b..bfeb57aa71 100644 --- a/ui/dashboardApp/layout/main/Sider/index.module.less +++ b/ui/dashboardApp/layout/main/Sider/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; @sider-background: #f7f7fa; diff --git a/ui/dashboardApp/layout/main/index.module.less b/ui/dashboardApp/layout/main/index.module.less index 4c050027a6..e239d1efa2 100644 --- a/ui/dashboardApp/layout/main/index.module.less +++ b/ui/dashboardApp/layout/main/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .container { height: 100vh; diff --git a/ui/dashboardApp/layout/signin/index.module.less b/ui/dashboardApp/layout/signin/index.module.less index a58bd5b744..49e6b31e20 100644 --- a/ui/dashboardApp/layout/signin/index.module.less +++ b/ui/dashboardApp/layout/signin/index.module.less @@ -1,5 +1,5 @@ -@import '~antd/es/style/themes/default.less'; -@import '~antd/es/button/style/mixin.less'; +@import 'antd/es/style/themes/default.less'; +@import 'antd/es/button/style/mixin.less'; @content-width: 400px; diff --git a/ui/lib/antd.less b/ui/lib/antd.less index 5a03808516..a691fc7e62 100644 --- a/ui/lib/antd.less +++ b/ui/lib/antd.less @@ -1,11 +1,11 @@ // This file will replace the default ant design style. -@import '~antd/es/style/themes/index'; -@import '~antd/es/style/mixins/index'; +@import 'antd/es/style/themes/index'; +@import 'antd/es/style/mixins/index'; @import './antd.global.less'; -@import '~antd/es/style/core/iconfont'; -@import '~antd/es/style/core/motion'; +@import 'antd/es/style/core/iconfont'; +@import 'antd/es/style/core/motion'; body { @import './antd.override.less'; diff --git a/ui/lib/apps/ClusterInfo/components/Statistics.module.less b/ui/lib/apps/ClusterInfo/components/Statistics.module.less index 6372349792..03f8292a78 100644 --- a/ui/lib/apps/ClusterInfo/components/Statistics.module.less +++ b/ui/lib/apps/ClusterInfo/components/Statistics.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; // FIXME: We should not provide padding for CardTab content, so that user // can control whether a padding is needed. For example, to a . diff --git a/ui/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less b/ui/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less index 5837306b95..29662c90d2 100755 --- a/ui/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less +++ b/ui/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .tooltip { opacity: 0; diff --git a/ui/lib/apps/ClusterInfo/pages/List.module.less b/ui/lib/apps/ClusterInfo/pages/List.module.less index d761c22587..6965ee11ca 100644 --- a/ui/lib/apps/ClusterInfo/pages/List.module.less +++ b/ui/lib/apps/ClusterInfo/pages/List.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .card_tab_navs { padding-left: @padding-page; // 48px diff --git a/ui/lib/apps/ContinuousProfiling/pages/List.module.less b/ui/lib/apps/ContinuousProfiling/pages/List.module.less index 96493788d3..0b6a50b2c3 100644 --- a/ui/lib/apps/ContinuousProfiling/pages/List.module.less +++ b/ui/lib/apps/ContinuousProfiling/pages/List.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .list { &_container { diff --git a/ui/lib/apps/InstanceProfiling/pages/List.module.less b/ui/lib/apps/InstanceProfiling/pages/List.module.less index dab1ce95dc..9fb1866f3a 100644 --- a/ui/lib/apps/InstanceProfiling/pages/List.module.less +++ b/ui/lib/apps/InstanceProfiling/pages/List.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .list { &_container { diff --git a/ui/lib/apps/KeyViz/components/KeyViz.less b/ui/lib/apps/KeyViz/components/KeyViz.less index 46cd9705e5..a18f6c1bb9 100644 --- a/ui/lib/apps/KeyViz/components/KeyViz.less +++ b/ui/lib/apps/KeyViz/components/KeyViz.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .PD-Cluster-Legend { position: relative; diff --git a/ui/lib/apps/QueryEditor/index.module.less b/ui/lib/apps/QueryEditor/index.module.less index c7049c7dda..265c45fd83 100644 --- a/ui/lib/apps/QueryEditor/index.module.less +++ b/ui/lib/apps/QueryEditor/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .container { height: 100vh; diff --git a/ui/lib/apps/SearchLogs/components/Styles.module.less b/ui/lib/apps/SearchLogs/components/Styles.module.less index e8915a0c13..98bd9b15ad 100644 --- a/ui/lib/apps/SearchLogs/components/Styles.module.less +++ b/ui/lib/apps/SearchLogs/components/Styles.module.less @@ -1,4 +1,4 @@ -@import '~antd/lib/style/themes/default.less'; +@import 'antd/lib/style/themes/default.less'; // FIXME: Use .buttons { diff --git a/ui/lib/apps/SlowQuery/pages/List/List.module.less b/ui/lib/apps/SlowQuery/pages/List/List.module.less index c168b362f3..3c6cb35452 100644 --- a/ui/lib/apps/SlowQuery/pages/List/List.module.less +++ b/ui/lib/apps/SlowQuery/pages/List/List.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .list { &_container { diff --git a/ui/lib/apps/Statement/pages/List/List.module.less b/ui/lib/apps/Statement/pages/List/List.module.less index c168b362f3..3c6cb35452 100644 --- a/ui/lib/apps/Statement/pages/List/List.module.less +++ b/ui/lib/apps/Statement/pages/List/List.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .list { &_container { diff --git a/ui/lib/apps/Statement/pages/List/TimeRangeSelector.module.less b/ui/lib/apps/Statement/pages/List/TimeRangeSelector.module.less index 34f62630a8..b395653a17 100644 --- a/ui/lib/apps/Statement/pages/List/TimeRangeSelector.module.less +++ b/ui/lib/apps/Statement/pages/List/TimeRangeSelector.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .dropdown_content_container { background-color: @select-dropdown-bg; diff --git a/ui/lib/components/AnimatedSkeleton/index.module.less b/ui/lib/components/AnimatedSkeleton/index.module.less index f6014fe661..a6dcb3f3bf 100644 --- a/ui/lib/components/AnimatedSkeleton/index.module.less +++ b/ui/lib/components/AnimatedSkeleton/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/mixins/motion.less'; +@import 'antd/es/style/mixins/motion.less'; .container :global { .skeletonAnimationFirstTime { diff --git a/ui/lib/components/Bar/Bar.module.less b/ui/lib/components/Bar/Bar.module.less index 3739dd3df3..cf8ca8a0b4 100644 --- a/ui/lib/components/Bar/Bar.module.less +++ b/ui/lib/components/Bar/Bar.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; @bar-height: 8px; @bar-color: lighten(@primary-color, 10%); diff --git a/ui/lib/components/BaseSelect/index.module.less b/ui/lib/components/BaseSelect/index.module.less index b0572755bc..dc4b4a9ec7 100644 --- a/ui/lib/components/BaseSelect/index.module.less +++ b/ui/lib/components/BaseSelect/index.module.less @@ -1,7 +1,7 @@ -@import '~antd/es/style/themes/default.less'; -@import '~antd/es/style/mixins/index'; -@import '~antd/es/input/style/mixin'; -@import '~antd/es/select/style/index'; +@import 'antd/es/style/themes/default.less'; +@import 'antd/es/style/mixins/index'; +@import 'antd/es/input/style/mixin'; +@import 'antd/es/select/style/index'; .baseSelect { .reset-component; diff --git a/ui/lib/components/Blink/index.module.less b/ui/lib/components/Blink/index.module.less index e5c3382429..520e0f0dad 100644 --- a/ui/lib/components/Blink/index.module.less +++ b/ui/lib/components/Blink/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/lib/style/themes/default.less'; +@import 'antd/lib/style/themes/default.less'; .blinkActive { animation: blink 0.7s 2 ease-in-out; diff --git a/ui/lib/components/Card/index.module.less b/ui/lib/components/Card/index.module.less index 2e997790ad..49185e8699 100644 --- a/ui/lib/components/Card/index.module.less +++ b/ui/lib/components/Card/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .cardContainer { // &:before, diff --git a/ui/lib/components/ColumnsSelector/index.module.less b/ui/lib/components/ColumnsSelector/index.module.less index 3d9118d274..cfde8ece79 100644 --- a/ui/lib/components/ColumnsSelector/index.module.less +++ b/ui/lib/components/ColumnsSelector/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .title_container { display: flex; diff --git a/ui/lib/components/CopyLink/index.module.less b/ui/lib/components/CopyLink/index.module.less index 4f3c5735bd..86305edf0c 100644 --- a/ui/lib/components/CopyLink/index.module.less +++ b/ui/lib/components/CopyLink/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .copiedText { color: @success-color; diff --git a/ui/lib/components/Descriptions/index.module.less b/ui/lib/components/Descriptions/index.module.less index e24ef434e0..f33c09a72f 100644 --- a/ui/lib/components/Descriptions/index.module.less +++ b/ui/lib/components/Descriptions/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .descriptions { :global { diff --git a/ui/lib/components/Head/index.module.less b/ui/lib/components/Head/index.module.less index dfb3a02860..e715e2eac9 100644 --- a/ui/lib/components/Head/index.module.less +++ b/ui/lib/components/Head/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .headContainer { // &:before, diff --git a/ui/lib/components/TimeRangeSelector/index.module.less b/ui/lib/components/TimeRangeSelector/index.module.less index 221df0905e..f21a41fa09 100644 --- a/ui/lib/components/TimeRangeSelector/index.module.less +++ b/ui/lib/components/TimeRangeSelector/index.module.less @@ -1,4 +1,4 @@ -@import '~antd/es/style/themes/default.less'; +@import 'antd/es/style/themes/default.less'; .dropdown_content_container { background-color: @select-dropdown-bg; diff --git a/ui/src/index.ts b/ui/src/index.ts index 431457d34d..0997d5861d 100644 --- a/ui/src/index.ts +++ b/ui/src/index.ts @@ -1,4 +1,5 @@ import './publicPath' import './sentry' -import '@dashboard' +// import '@dashboard' +import '../dashboardApp' From 2e66a1a934e12a9b76aa9400d247e75b231fa2dc Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Thu, 18 Nov 2021 22:14:55 +0800 Subject: [PATCH 032/100] try (ok) --- ui-esbuild/src/index.tsx | 10 +- ui/lib/apps/QueryEditor/index.module.less | 2 +- ui/package.json | 5 +- ui/src/index.ts | 6 +- ui/src/style.less | 19 + ui/tsconfig.json | 13 +- ui/yarn.lock | 602 ++++++++++------------ 7 files changed, 307 insertions(+), 350 deletions(-) create mode 100644 ui/src/style.less diff --git a/ui-esbuild/src/index.tsx b/ui-esbuild/src/index.tsx index b3d051586e..18d638df50 100644 --- a/ui-esbuild/src/index.tsx +++ b/ui-esbuild/src/index.tsx @@ -1,5 +1,7 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import App from './App' +// import React from 'react' +// import ReactDOM from 'react-dom' +// import App from './App' -ReactDOM.render(, document.getElementById('root')) +// ReactDOM.render(, document.getElementById('root')) + +import './style.less' diff --git a/ui/lib/apps/QueryEditor/index.module.less b/ui/lib/apps/QueryEditor/index.module.less index 265c45fd83..98a89934e1 100644 --- a/ui/lib/apps/QueryEditor/index.module.less +++ b/ui/lib/apps/QueryEditor/index.module.less @@ -1,4 +1,4 @@ -@import 'antd/es/style/themes/default.less'; +// @import 'antd/es/style/themes/default.less'; .container { height: 100vh; diff --git a/ui/package.json b/ui/package.json index 9c1446a5e5..3bcac2268d 100644 --- a/ui/package.json +++ b/ui/package.json @@ -15,7 +15,7 @@ "@welldone-software/why-did-you-render": "^4.2.7", "ace-builds": "^1.4.12", "ahooks": "^2.9.2", - "antd": "~4.8.5", + "antd": "^4.16.13", "axios": "^0.21.1", "bulma": "^0.9.0", "classnames": "^2.2.6", @@ -108,8 +108,7 @@ "gulp-shell": "^0.8.0", "http-proxy-middleware": "^1.0.5", "husky": "^4.2.5", - "less": "^3.12.2", - "less-loader": "^5.0.0", + "less": "^4.1.2", "live-server": "^1.2.1", "prettier": "2.4.1", "pretty-quick": "^2.0.1", diff --git a/ui/src/index.ts b/ui/src/index.ts index 0997d5861d..217ffb684a 100644 --- a/ui/src/index.ts +++ b/ui/src/index.ts @@ -1,5 +1,7 @@ +import './style.less' + import './publicPath' import './sentry' -// import '@dashboard' -import '../dashboardApp' +// // import '@dashboard' +// import '../dashboardApp' diff --git a/ui/src/style.less b/ui/src/style.less new file mode 100644 index 0000000000..64043289cb --- /dev/null +++ b/ui/src/style.less @@ -0,0 +1,19 @@ +@import 'antd/dist/antd.less'; + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} + +.test { + color: red; +} diff --git a/ui/tsconfig.json b/ui/tsconfig.json index b77d76eb4b..df5ea1d5cc 100644 --- a/ui/tsconfig.json +++ b/ui/tsconfig.json @@ -2,11 +2,7 @@ "extends": "./tsconfig.paths.json", "compilerOptions": { "target": "es6", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "noImplicitAny": false, @@ -23,10 +19,5 @@ "experimentalDecorators": true, "jsx": "react" }, - "include": [ - "src", - "lib", - "dashboardApp", - "diagnoseReportApp" - ] + "include": ["src", "lib", "dashboardApp", "diagnoseReportApp"] } diff --git a/ui/yarn.lock b/ui/yarn.lock index b55bd2e5cd..7f6dcd265b 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -17,22 +17,22 @@ dependencies: tinycolor2 "^1.4.1" -"@ant-design/colors@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-5.0.0.tgz#46b73b4cc6935b35fc8b84555e8e42c8cfc190e6" - integrity sha512-Pe1rYorgVC1v4f+InDXvIlQH715pO1g7BsOhy/ehX/U6ebPKqojmkYJKU3lF+84Zmvyar7ngZ28hesAa1nWjLg== +"@ant-design/colors@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== dependencies: - "@ctrl/tinycolor" "^3.1.6" + "@ctrl/tinycolor" "^3.4.0" "@ant-design/css-animation@^1.7.2": version "1.7.3" resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.3.tgz#60a1c970014e86b28f940510d69e503e428f1136" integrity sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA== -"@ant-design/icons-svg@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c" - integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ== +"@ant-design/icons-svg@^4.0.0", "@ant-design/icons-svg@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz#8630da8eb4471a4aabdaed7d1ff6a97dcb2cf05a" + integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== "@ant-design/icons@^4.2.1": version "4.2.1" @@ -46,27 +46,26 @@ insert-css "^2.0.0" rc-util "^5.0.1" -"@ant-design/icons@^4.2.2", "@ant-design/icons@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.3.0.tgz#420e0cd527486c0fe57f81310d681950fc4cfacf" - integrity sha512-UoIbw4oz/L/msbkgqs2nls2KP7XNKScOxVR54wRrWwnXOzJaGNwwSdYjHQz+5ETf8C53YPpzMOnRX99LFCdeIQ== +"@ant-design/icons@^4.6.3": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.7.0.tgz#8c3cbe0a556ba92af5dc7d1e70c0b25b5179af0f" + integrity sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g== dependencies: - "@ant-design/colors" "^5.0.0" - "@ant-design/icons-svg" "^4.0.0" + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" "@babel/runtime" "^7.11.2" classnames "^2.2.6" - insert-css "^2.0.0" - rc-util "^5.0.1" + rc-util "^5.9.4" -"@ant-design/react-slick@~0.27.0": - version "0.27.14" - resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.27.14.tgz#a1082c4734e57c7ba9c41d035375f5bf577f3b5e" - integrity sha512-s6JVexqFmU5rs5Pm828ojtm5rCp8jDXyrc5OxEtCE2z58SIyQlkpnU9BJh98LEeBZyj02WFkGN8CWpSaD+G4PA== +"@ant-design/react-slick@~0.28.1": + version "0.28.4" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.28.4.tgz#8b296b87ad7c7ae877f2a527b81b7eebd9dd29a9" + integrity sha512-j9eAHTn7GxbXUFNknJoHS2ceAsqrQi2j8XykjZE1IXCD8kJF+t28EvhBLniDpbOsBk/3kjalnhriTfZcjBHNqg== dependencies: "@babel/runtime" "^7.10.4" classnames "^2.2.5" json2mq "^0.2.0" - lodash "^4.17.15" + lodash "^4.17.21" resize-observer-polyfill "^1.5.0" "@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": @@ -1956,14 +1955,14 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" + integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.5.0", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.5.0", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== @@ -2068,10 +2067,10 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== -"@ctrl/tinycolor@^3.1.6": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.1.7.tgz#1585f67629882002a9f8e15a2941c9a4321bf80c" - integrity sha512-/0C6fjXbCwu22k8mMsKRSAo9zgu61d2p75Or9IuIC0Vu5CWN88t2QHK93LhNnxnqHWf5SFwFU28w9cKfTmnfvg== +"@ctrl/tinycolor@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz#c3c5ae543c897caa9c2a68630bed355be5f9990f" + integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== "@emotion/cache@^10.0.27": version "10.0.29" @@ -4208,13 +4207,6 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== -add-dom-event-listener@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" - integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== - dependencies: - object-assign "4.x" - address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -4408,55 +4400,52 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= -antd@~4.8.5: - version "4.8.5" - resolved "https://registry.yarnpkg.com/antd/-/antd-4.8.5.tgz#eb0af8154a6dffb070c016b344d4b49b6910ce4f" - integrity sha512-QN8//mMToHo1u7gRThbVYKW9rqdN+2x/5PAk5d76MkeALezE3J2Tf4mm2+COUf0qUNiV0ZNtdcLY3weTVlKpDg== +antd@^4.16.13: + version "4.16.13" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.16.13.tgz#e9b9b4a590db28747aae1cab98981649a35880af" + integrity sha512-EMPD3fzKe7oayx9keD/GA1oKatcx7j5CGlkJj5eLS0/eEDDEkxVj3DFmKOPuHYt4BK7ltTzMFS+quSTmqUXPiw== dependencies: - "@ant-design/colors" "^5.0.0" - "@ant-design/css-animation" "^1.7.2" - "@ant-design/icons" "^4.3.0" - "@ant-design/react-slick" "~0.27.0" - "@babel/runtime" "^7.11.2" + "@ant-design/colors" "^6.0.0" + "@ant-design/icons" "^4.6.3" + "@ant-design/react-slick" "~0.28.1" + "@babel/runtime" "^7.12.5" array-tree-filter "^2.1.0" classnames "^2.2.6" copy-to-clipboard "^3.2.0" - lodash "^4.17.20" + lodash "^4.17.21" moment "^2.25.3" - omit.js "^2.0.2" - rc-animate "~3.1.0" rc-cascader "~1.4.0" rc-checkbox "~2.3.0" - rc-collapse "~2.0.0" - rc-dialog "~8.4.0" - rc-drawer "~4.1.0" + rc-collapse "~3.1.0" + rc-dialog "~8.6.0" + rc-drawer "~4.3.0" rc-dropdown "~3.2.0" - rc-field-form "~1.17.0" - rc-image "~4.0.0" - rc-input-number "~6.1.0" - rc-mentions "~1.5.0" - rc-menu "~8.10.0" + rc-field-form "~1.20.0" + rc-image "~5.2.5" + rc-input-number "~7.1.0" + rc-mentions "~1.6.1" + rc-menu "~9.0.12" rc-motion "^2.4.0" - rc-notification "~4.5.2" - rc-pagination "~3.1.0" - rc-picker "~2.4.1" + rc-notification "~4.5.7" + rc-pagination "~3.1.9" + rc-picker "~2.5.10" rc-progress "~3.1.0" rc-rate "~2.9.0" - rc-resize-observer "^0.2.3" - rc-select "~11.4.0" - rc-slider "~9.6.1" + rc-resize-observer "^1.0.0" + rc-select "~12.1.6" + rc-slider "~9.7.1" rc-steps "~4.1.0" rc-switch "~3.2.0" - rc-table "~7.11.0" - rc-tabs "~11.7.0" + rc-table "~7.15.1" + rc-tabs "~11.10.0" rc-textarea "~0.3.0" - rc-tooltip "~5.0.0" - rc-tree "~3.11.0" - rc-tree-select "~4.1.1" - rc-upload "~3.3.1" - rc-util "^5.1.0" + rc-tooltip "~5.1.1" + rc-tree "~4.2.1" + rc-tree-select "~4.3.0" + rc-trigger "^5.2.10" + rc-upload "~4.3.0" + rc-util "^5.13.1" scroll-into-view-if-needed "^2.2.25" - warning "^4.0.3" anymatch@^2.0.0: version "2.0.0" @@ -4804,9 +4793,9 @@ async-settle@^1.0.0: async-done "^1.2.2" async-validator@^3.0.3: - version "3.5.1" - resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.1.tgz#cd62b9688b2465f48420e27adb47760ab1b5559f" - integrity sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ== + version "3.5.2" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500" + integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== async@0.9.x: version "0.9.2" @@ -6034,7 +6023,12 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== + +classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -6333,10 +6327,10 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" -compute-scroll-into-view@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" - integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== concat-map@0.0.1: version "0.0.1" @@ -7196,21 +7190,26 @@ data-urls@^1.0.0, data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -date-fns@^2.15.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" - integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== +date-fns@2.x: + version "2.25.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.25.0.tgz#8c5c8f1d958be3809a9a03f4b742eba894fc5680" + integrity sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w== -dayjs@^1.8.30, dayjs@^1.9.6: - version "1.9.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" - integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== +dayjs@1.x: + version "1.10.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" + integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== dayjs@^1.9.1: version "1.9.7" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.7.tgz#4b260bb17dceed2d5f29038dfee03c65a6786fc0" integrity sha512-IC877KBdMhBrCfBfJXHQlo0G8keZ0Opy7YIIq5QKtUbCuHMzim8S4PyiVK4YmihI3iOF9lhfUBW4AQWHTR5WHA== +dayjs@^1.9.6: + version "1.9.6" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" + integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -7496,9 +7495,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-align@^1.7.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" - integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== + version "1.12.2" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.2.tgz#0f8164ebd0c9c21b0c790310493cd855892acd4b" + integrity sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg== dom-converter@^0.2: version "0.2.0" @@ -7808,7 +7807,14 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -9445,11 +9451,16 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.1.2: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -11596,31 +11607,7 @@ leprechaun@0.0.2: dependencies: log-symbols "^1.0.2" -less-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" - integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== - dependencies: - clone "^2.1.1" - loader-utils "^1.1.0" - pify "^4.0.1" - -less@^3.12.2: - version "3.12.2" - resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" - integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== - dependencies: - tslib "^1.10.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - native-request "^1.0.5" - source-map "~0.6.0" - -less@^4.x: +less@^4.1.2, less@^4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== @@ -11864,7 +11851,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4, lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: +"lodash@>=3.5 <5", lodash@^4, lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.5: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -12230,14 +12217,6 @@ mini-css-extract-plugin@0.9.0: schema-utils "^1.0.0" webpack-sources "^1.1.0" -mini-store@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/mini-store/-/mini-store-3.0.6.tgz#44b86be5b2877271224ce0689b3a35a2dffb1ca9" - integrity sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ== - dependencies: - hoist-non-react-statics "^3.3.2" - shallowequal "^1.0.2" - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -12472,11 +12451,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -native-request@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856" - integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -12719,7 +12693,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.x, object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1, object-assign@latest: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1, object-assign@latest: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -12877,11 +12851,6 @@ office-ui-fabric-react@^7.123.10: prop-types "^15.7.2" tslib "^1.10.0" -omit.js@^2.0.0, omit.js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" - integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -14598,26 +14567,17 @@ raw-loader@^4.0.1: schema-utils "^2.6.5" rc-align@^4.0.0: - version "4.0.9" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.9.tgz#46d8801c4a139ff6a65ad1674e8efceac98f85f2" - integrity sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw== + version "4.0.11" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.11.tgz#8198c62db266bc1b8ef05e56c13275bf72628a5e" + integrity sha512-n9mQfIYQbbNTbefyQnRHZPWuTEwG1rY4a9yKlIWHSTbgwI+XUMGRYd0uJ5pE2UbrNX0WvnMBA1zJ3Lrecpra/A== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" dom-align "^1.7.0" + lodash "^4.17.21" rc-util "^5.3.0" resize-observer-polyfill "^1.5.1" -rc-animate@3.x, rc-animate@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.1.tgz#defdd863f56816c222534e4dc68feddecd081386" - integrity sha512-8wg2Zg3EETy0k/9kYuis30NJNQg1D6/WSQwnCiz6SvyxQXNet/rVraRz3bPngwY6rcU2nlRvoShiYOorXyF7Sg== - dependencies: - "@ant-design/css-animation" "^1.7.2" - classnames "^2.2.6" - raf "^3.4.0" - rc-util "^4.15.3" - rc-animate@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.0.tgz#051b689c2c7194e4c8ae016d32a0e5f9de6c8baa" @@ -14629,54 +14589,55 @@ rc-animate@^3.1.0: rc-util "^5.0.1" rc-cascader@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.0.tgz#d731ea8e07433558627941036091a2820e895474" - integrity sha512-6kgQljDQEKjVAVRkZtvvoi+2qv4u42M6oLuvt4ZDBa16r3X9ZN8TAq3atVyC840ivbGKlHT50OcdVx/iwiHc1w== + version "1.4.3" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.3.tgz#d91b0dcf8157b60ebe9ec3e58b4db054d5299464" + integrity sha512-Q4l9Mv8aaISJ+giVnM9IaXxDeMqHUGLvi4F+LksS6pHlaKlN4awop/L+IMjIXpL+ug/ojaCyv/ixcVopJYYCVA== dependencies: + "@babel/runtime" "^7.12.5" array-tree-filter "^2.1.0" rc-trigger "^5.0.4" rc-util "^5.0.1" warning "^4.0.1" rc-checkbox@~2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.1.tgz#2a61bc43017c783bd2e9f1a67553bf8efe7aa4d3" - integrity sha512-i290/iTqmZ0WtI2UPIryqT9rW6O99+an4KeZIyZDH3r+Jbb6YdddaWNdzq7g5m9zaNhJvgjf//wJtC4fvve2Tg== + version "2.3.2" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.2.tgz#f91b3678c7edb2baa8121c9483c664fa6f0aefc1" + integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" -rc-collapse@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-2.0.1.tgz#99e7655acd9c237b72369a39dcb5c713451e1e92" - integrity sha512-sRNqwQovzQoptTh7dCwj3kfxrdor2oNXrGSBz+QJxSFS7N3Ujgf8X/KlN2ElCkwBKf7nNv36t9dwH0HEku4wJg== +rc-collapse@~3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.1.2.tgz#76028a811b845d03d9460ccc409c7ea8ad09db14" + integrity sha512-HujcKq7mghk/gVKeI6EjzTbb8e19XUZpakrYazu1MblEZ3Hu3WBMSN4A3QmvbF6n1g7x6lUlZvsHZ5shABWYOQ== dependencies: - "@ant-design/css-animation" "^1.7.2" + "@babel/runtime" "^7.10.1" classnames "2.x" - rc-animate "3.x" + rc-motion "^2.3.4" rc-util "^5.2.1" shallowequal "^1.1.0" -rc-dialog@~8.4.0: - version "8.4.3" - resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.4.3.tgz#de8650ce7d1fcb6c1f7e065b94a6894b9a5a54a4" - integrity sha512-LHsWXb+2Cy4vEOeJcPvk9M0WSr80Gi438ov5rXt3E6XB4j+53Z+vMFRr+TagnVuOVQRCLmmzT4qutfm2U1OK6w== +rc-dialog@~8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.6.0.tgz#3b228dac085de5eed8c6237f31162104687442e7" + integrity sha512-GSbkfqjqxpZC5/zc+8H332+q5l/DKUhpQr0vdX2uDsxo5K0PhvaMEVjyoJUTkZ3+JstEADQji1PVLVb/2bJeOQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" rc-motion "^2.3.0" - rc-util "^5.0.1" + rc-util "^5.6.1" -rc-drawer@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.1.0.tgz#d7bf0bc030300b62d282bc04e053b9acad6b08b4" - integrity sha512-kjeQFngPjdzAFahNIV0EvEBoIKMOnvUsAxpkSPELoD/1DuR4nLafom5ryma+TIxGwkFJ92W6yjsMi1U9aiOTeQ== +rc-drawer@~4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.3.1.tgz#356333a7af01b777abd685c96c2ce62efb44f3f3" + integrity sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" - rc-util "^5.0.1" + rc-util "^5.7.0" -rc-dropdown@^3.1.3, rc-dropdown@~3.2.0: +rc-dropdown@^3.2.0, rc-dropdown@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090" integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== @@ -14685,107 +14646,114 @@ rc-dropdown@^3.1.3, rc-dropdown@~3.2.0: classnames "^2.2.6" rc-trigger "^5.0.4" -rc-field-form@~1.17.0: - version "1.17.2" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.17.2.tgz#81b09d320f9b455673867bf3a1f5b2aac0fd0a15" - integrity sha512-+pufRy5x4G5yHxQ3k1nhgQqyqerPVJQ2jaLGojHjNpmZ2Si20o1KniMLsZxe6X8dfq4ePmH6M3IngfDnS+CrMA== +rc-field-form@~1.20.0: + version "1.20.1" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.20.1.tgz#d1c51888107cf075b42704b7b575bef84c359291" + integrity sha512-f64KEZop7zSlrG4ef/PLlH12SLn6iHDQ3sTG+RfKBM45hikwV1i8qMf53xoX12NvXXWg1VwchggX/FSso4bWaA== dependencies: "@babel/runtime" "^7.8.4" async-validator "^3.0.3" - rc-util "^5.0.0" + rc-util "^5.8.0" -rc-image@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-4.0.1.tgz#b54534684a01dcf8cb477f5ac6dda72545a9541f" - integrity sha512-1GxjwgtONtJjlvd7sM9VSLTAlDQhkqHI0wl72YSDpdm24w5zmDsTYLgTNh/vToFa9qAml10Gaidy03qpkTAQ+A== +rc-image@~5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-5.2.5.tgz#44e6ffc842626827960e7ab72e1c0d6f3a8ce440" + integrity sha512-qUfZjYIODxO0c8a8P5GeuclYXZjzW4hV/5hyo27XqSFo1DmTCs2HkVeQObkcIk5kNsJtgsj1KoPThVsSc/PXOw== dependencies: - "@ant-design/icons" "^4.2.2" "@babel/runtime" "^7.11.2" classnames "^2.2.6" - rc-dialog "~8.4.0" + rc-dialog "~8.6.0" rc-util "^5.0.6" -rc-input-number@~6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-6.1.1.tgz#818c426942d1b4dc4d6d2639d741ca67773a9118" - integrity sha512-9t2xf1G0YEism7FAXAvF1huBk7ZNABPBf6NL+3/aDL123WiT/vhhod4cldiDWTM1Yb2EDKR//ZIa546ScdsUaA== +rc-input-number@~7.1.0: + version "7.1.4" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-7.1.4.tgz#9d7410c91ff8dc6384d0233c20df278982989f9a" + integrity sha512-EG4iqkqyqzLRu/Dq+fw2od7nlgvXLEatE+J6uhi3HXE1qlM3C7L6a7o/hL9Ly9nimkES2IeQoj3Qda3I0izj3Q== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" - rc-util "^5.0.1" + rc-util "^5.9.8" -rc-mentions@~1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.5.2.tgz#94559a369de73e7cc92f343badaf94499fb410a7" - integrity sha512-GqV0tOtHY3pLpOsFCxJ2i6Ad8AVfxFmz0NlD/8rb8IG8pMpthJKcdfnXlNZRx3Fa9O4YEgJpdSY1WEbmlx2DWQ== +rc-mentions@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.6.1.tgz#46035027d64aa33ef840ba0fbd411871e34617ae" + integrity sha512-LDzGI8jJVGnkhpTZxZuYBhMz3avcZZqPGejikchh97xPni/g4ht714Flh7DVvuzHQ+BoKHhIjobHnw1rcP8erg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" - rc-menu "^8.0.1" + rc-menu "^9.0.0" rc-textarea "^0.3.0" rc-trigger "^5.0.4" rc-util "^5.0.1" -rc-menu@^8.0.1, rc-menu@^8.6.1, rc-menu@~8.10.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.10.0.tgz#f14ff6456073bcf29603da818774543a73e44e92" - integrity sha512-mafcLoKtVlH9HDW52NmwenQ9vjvgxtR46NfYAexJEIUTZ9Ze2veZUkEKjhOJlzrUHEYtCoNslpqyy4iVN08Glw== +rc-menu@^9.0.0, rc-menu@~9.0.12: + version "9.0.14" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.0.14.tgz#289bda4a2f6c5ebb3248e2e305d52cf0c73cb9d5" + integrity sha512-CIox5mZeLDAi32SlHrV7UeSjv7tmJJhwRyxQtZCKt351w3q59XlL4WMFOmtT9gwIfP9h0XoxdBZUMe/xzkp78A== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" - mini-store "^3.0.1" - omit.js "^2.0.0" - rc-motion "^2.0.1" + rc-motion "^2.4.3" + rc-overflow "^1.2.0" rc-trigger "^5.1.2" - rc-util "^5.0.1" - resize-observer-polyfill "^1.5.0" + rc-util "^5.12.0" shallowequal "^1.1.0" -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.1.tgz#323f47c8635e6b2bc0cba2dfad25fc415b58e1dc" - integrity sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg== +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0, rc-motion@^2.4.3: + version "2.4.4" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.4.tgz#e995d5fa24fc93065c24f714857cf2677d655bb0" + integrity sha512-ms7n1+/TZQBS0Ydd2Q5P4+wJTSOrhIrwNxLXCZpR7Fa3/oac7Yi803HDALc2hLAKaCTQtw9LmQeB58zcwOsqlQ== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" rc-util "^5.2.1" -rc-notification@~4.5.2: - version "4.5.4" - resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.4.tgz#1292e163003db4b9162c856a4630e5d0f1359356" - integrity sha512-VsN0ouF4uglE5g3C9oDsXLNYX0Sz++ZNUFYCswkxhpImYJ9u6nJOpyA71uOYDVCu6bAF54Y5Hi/b+EcnMzkepg== +rc-notification@~4.5.7: + version "4.5.7" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.7.tgz#265e6e6a0c1a0fac63d6abd4d832eb8ff31522f1" + integrity sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" rc-motion "^2.2.0" rc-util "^5.0.1" -rc-pagination@~3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.2.tgz#ab5eacd9c51f869e350d2245064babe91bc1f046" - integrity sha512-KbJvkTvRiD51vTIAi0oTARPUHNb0iV6njbDBe8yLkc3PWYDJaszASfuss6YJ98EIxEeGzuEk6xsUAEKWRJgz2g== +rc-overflow@^1.0.0, rc-overflow@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.2.2.tgz#95b0222016c0cdbdc0db85f569c262e7706a5f22" + integrity sha512-X5kj9LDU1ue5wHkqvCprJWLKC+ZLs3p4He/oxjZ1Q4NKaqKBaYf5OdSzRSgh3WH8kSdrfU8LjvlbWnHgJOEkNQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.5.1" + +rc-pagination@~3.1.9: + version "3.1.12" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.12.tgz#c6528f6bc4dbaa875eb4b2a80a5337c0f0599878" + integrity sha512-sv4++XSwdgkI5HiH14Tw7+UL609pboZpiAw0U5v2IqEpW+tDaAbiE0zB6xT1JII5sDd8xM86fnLhgnMlHUJD3w== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" -rc-picker@~2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.4.2.tgz#e9d53f51cf768bb19f7024d0028f73008fce5163" - integrity sha512-ug5NTZTvaZuVysY9eubFtLoxoPCkEOZ7tY79+e/4N2ZvRVo2nNwyTjB7OQ+p7Xz8tHaYoQPnwLxr2fyDGIkZig== +rc-picker@~2.5.10: + version "2.5.19" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.19.tgz#73d07546fac3992f0bfabf2789654acada39e46f" + integrity sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" - date-fns "^2.15.0" - dayjs "^1.8.30" + date-fns "2.x" + dayjs "1.x" moment "^2.24.0" rc-trigger "^5.0.4" rc-util "^5.4.0" shallowequal "^1.1.0" rc-progress@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.1.tgz#f7ba5eb33cc438862513ab5a71739feaf6b3ef4f" - integrity sha512-1ns3pW7ll9bHfdXtlVLF+vngdvlxiCDtiqwXnZFEdurst11JTiPxVdeqnCNbhWx5hP4kCKkAPqG1N0FVfTSUGA== + version "3.1.4" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.4.tgz#66040d0fae7d8ced2b38588378eccb2864bad615" + integrity sha512-XBAif08eunHssGeIdxMXOmRQRULdHaDdIFENQ578CMb4dyewahmmfJRyab+hw4KH4XssEzzYOkAInTLS7JJG+Q== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" @@ -14799,46 +14767,33 @@ rc-rate@~2.9.0: classnames "^2.2.5" rc-util "^5.0.1" -rc-resize-observer@^0.2.0, rc-resize-observer@^0.2.1, rc-resize-observer@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.2.6.tgz#c1b642f6d1293e34c4e3715f47f69443a167b825" - integrity sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA== +rc-resize-observer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.0.1.tgz#ccd0986543ff1bf49f8a581e8ac4bb714ed24dcd" + integrity sha512-OxO2mJI9e8610CAWBFfm52SPvWib0eNKjaSsRbbKHmLaJIxw944P+D61DlLJ/w2vuOjGNcalJu8VdqyNm/XCRg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" rc-util "^5.0.0" resize-observer-polyfill "^1.5.1" -rc-select@^11.1.1: - version "11.5.0" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.5.0.tgz#360d2762207c2fef2622e7fcc542fc94dfc9d10f" - integrity sha512-izVcxMMo64ZbuYDaB+zsybPjli5Ub6fKM4OeChDqn4MwrHnPjCEsO3bXjeSEXK2LCC2DXQAdr1oYvHGw9QAGVw== +rc-select@^12.0.0, rc-select@~12.1.6: + version "12.1.13" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-12.1.13.tgz#c33560ccb9339d30695b52458f55efc35af35273" + integrity sha512-cPI+aesP6dgCAaey4t4upDbEukJe+XN0DK6oO/6flcCX5o28o7KNZD7JAiVtC/6fCwqwI/kSs7S/43dvHmBl+A== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" rc-motion "^2.0.1" + rc-overflow "^1.0.0" rc-trigger "^5.0.4" - rc-util "^5.0.1" + rc-util "^5.9.8" rc-virtual-list "^3.2.0" - warning "^4.0.3" -rc-select@~11.4.0: - version "11.4.2" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.4.2.tgz#5b431ee7b2cc6e439886ca855774fc116e6fe6fb" - integrity sha512-DQHYwMcvAajnnlahKkYIW47AVTXgxpGj9CWbe+juXgvxawQRFUdd8T8L2Q05aOkMy02UTG0Qrs7EZfHmn5QHbA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - rc-virtual-list "^3.2.0" - warning "^4.0.3" - -rc-slider@~9.6.1: - version "9.6.4" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.6.4.tgz#19af39ad22927de2f6d524e0a14f3b1cf17ba659" - integrity sha512-TgmfOh1Jj9fHsW2eDeldFy4mOKwyHn4krl4K6gqbXhGFND7jVRdfA0m7TDUx3gGeX7A17fM1QZymMO/NRJmoLw== +rc-slider@~9.7.1: + version "9.7.4" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.4.tgz#430c860723bf6445ebf53517b550417a2f25eed1" + integrity sha512-pjLKLiDKiaL7/pNywfIBD+lDo5TtVo05KuIBSWEIoqu6FHh6IMWvthCiaODuYaVs3RLeF2nXOP5AjkD2Lt2Rwg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" @@ -14847,9 +14802,9 @@ rc-slider@~9.6.1: shallowequal "^1.1.0" rc-steps@~4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.3.tgz#208580e22db619e3830ddb7fa41bc886c65d9803" - integrity sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA== + version "4.1.4" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.4.tgz#0ba82db202d59ca52d0693dc9880dd145b19dc23" + integrity sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w== dependencies: "@babel/runtime" "^7.10.2" classnames "^2.2.3" @@ -14864,63 +14819,62 @@ rc-switch@~3.2.0: classnames "^2.2.1" rc-util "^5.0.1" -rc-table@~7.11.0: - version "7.11.2" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.11.2.tgz#07fde8e6323e27c6ed3f534a35dae413e8212d51" - integrity sha512-srOWkqgDQU6OA+gpc4MsaZXFw6TRC9NizbytvFCAg+Ra06cOVnD+MVYimAnjM9GeTPHgU+yc17xr/VkUYCRbYQ== +rc-table@~7.15.1: + version "7.15.2" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.15.2.tgz#f6ab73b2cfb1c76f3cf9682c855561423c6b5b22" + integrity sha512-TAs7kCpIZwc2mtvD8CMrXSM6TqJDUsy0rUEV1YgRru33T8bjtAtc+9xW/KC1VWROJlHSpU0R0kXjFs9h/6+IzQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" - rc-resize-observer "^0.2.0" - rc-util "^5.4.0" + rc-resize-observer "^1.0.0" + rc-util "^5.13.0" shallowequal "^1.1.0" -rc-tabs@~11.7.0: - version "11.7.1" - resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.7.1.tgz#c23fc53e59bd8b7250818a1a29bca1896450d79b" - integrity sha512-ZLQ5ou70j32GKcOKRZvd5JQZOJhcDy62dr9kqiWDvt6g5v8LkpxIGAc0dWtCWOEWkO/QezwuNqWufMborkfrnQ== +rc-tabs@~11.10.0: + version "11.10.3" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.10.3.tgz#171c33b340b5a83ababe53034c569b0422046781" + integrity sha512-rPxsci+76/nnJowNOBO3LTi4eL6trG49cR9yPc4XbuyHXhCHUujN5F4+jFl7trISy+yVN6gCZ/wiTtVnkcR/UA== dependencies: "@babel/runtime" "^7.11.2" classnames "2.x" - raf "^3.4.1" - rc-dropdown "^3.1.3" - rc-menu "^8.6.1" - rc-resize-observer "^0.2.1" + rc-dropdown "^3.2.0" + rc-menu "^9.0.0" + rc-resize-observer "^1.0.0" rc-util "^5.5.0" rc-textarea@^0.3.0, rc-textarea@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.1.tgz#e81e1ef6f0e29729f9f80bb266cf6769dd7ab69a" - integrity sha512-bO5Ol5uD6A++aWI6BJ0Pa/8OZcGeacP9LxIGkUqkCwPyOG3kaLOsWb8ya4xCfrsC2P4vDTsHsJmmmG5wuXGFRg== + version "0.3.5" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.5.tgz#07ed445dddb94e5ae6764676923a49bddad9b2ec" + integrity sha512-qa+k5vDn9ct65qr+SgD2KwJ9Xz6P84lG2z+TDht/RBr71WnM/K61PqHUAcUyU6YqTJD26IXgjPuuhZR7HMw7eA== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" - omit.js "^2.0.0" - rc-resize-observer "^0.2.3" + rc-resize-observer "^1.0.0" + rc-util "^5.7.0" -rc-tooltip@^5.0.1, rc-tooltip@~5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.0.1.tgz#b82c4259604d2cb62ca610ed7932dd37fc6ef61d" - integrity sha512-3AnxhUS0j74xAV3khrKw8o6rg+Ima3nw09DJBezMPnX3ImQUAnayWsPSlN1mEnihjA43rcFkGM1emiKE+CXyMQ== +rc-tooltip@^5.0.1, rc-tooltip@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.1.1.tgz#94178ed162d0252bc4993b725f5dc2ac0fccf154" + integrity sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA== dependencies: "@babel/runtime" "^7.11.2" rc-trigger "^5.0.0" -rc-tree-select@~4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.1.3.tgz#1f88b7bf46652f9962ce425f8760a8f891fb5b78" - integrity sha512-vk/T1vHNvuBZyoq8CvOF6iaiyVe6Y8QmQflTYFgabVsTJ1d/obkO9tAXOvJELZgKJ9ljduDVaAZAgcq0Yap+mg== +rc-tree-select@~4.3.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.3.3.tgz#28eba4d8a8dc8c0f9b61d83ce465842a6915eca4" + integrity sha512-0tilOHLJA6p+TNg4kD559XnDX3PTEYuoSF7m7ryzFLAYvdEEPtjn0QZc5z6L0sMKBiBlj8a2kf0auw8XyHU3lA== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" - rc-select "^11.1.1" - rc-tree "^3.8.0" + rc-select "^12.0.0" + rc-tree "^4.0.0" rc-util "^5.0.5" -rc-tree@^3.8.0, rc-tree@~3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-3.11.0.tgz#87edf01842bd88a05519e30dd7312bee3f7e2618" - integrity sha512-3RxA6fckbzX7WOk7g4gvO6AOad0znc8QW2nsv1IXSiljQaIMiyx1AK0zhzIEtABgWKbIs9QkhnBvIAHS4Rn9LA== +rc-tree@^4.0.0, rc-tree@~4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-4.2.2.tgz#4429187cbbfbecbe989714a607e3de8b3ab7763f" + integrity sha512-V1hkJt092VrOVjNyfj5IYbZKRMHxWihZarvA5hPL/eqm7o2+0SNkeidFYm7LVVBrAKBpOpa0l8xt04uiqOd+6w== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -14928,10 +14882,10 @@ rc-tree@^3.8.0, rc-tree@~3.11.0: rc-util "^5.0.0" rc-virtual-list "^3.0.1" -rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.1.2.tgz#f0f89bba2318699e704492bddb20506ecd8f8916" - integrity sha512-A6UdDy95masAEIaNmazPtqHW1EOFDWi2C2bJGDpr9OYpmObDpWKdxyNijVbFb6l1viTkAU9d3FyStgNPddgFzw== +rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10: + version "5.2.10" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.2.10.tgz#8a0057a940b1b9027eaa33beec8a6ecd85cce2b1" + integrity sha512-FkUf4H9BOFDaIwu42fvRycXMAvkttph9AlbCZXssZDVzz2L+QZ0ERvfB/4nX3ZFPh1Zd+uVGr1DEDeXxq4J1TA== dependencies: "@babel/runtime" "^7.11.2" classnames "^2.2.6" @@ -14939,41 +14893,31 @@ rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2: rc-motion "^2.0.0" rc-util "^5.5.0" -rc-upload@~3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.3.1.tgz#ad8658b2a796031930b35d2b07ab312b7cd4c9ed" - integrity sha512-KWkJbVM9BwU8qi/2jZwmZpAcdRzDkuyfn/yAOLu+nm47dyd6//MtxzQD3XZDFkC6jQ6D5FmlKn6DhmOfV3v43w== +rc-upload@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.3.2.tgz#3b56c8bdf7b25eab357e65453e032b7b10c6f3cc" + integrity sha512-v0HdwC/19xKAn1OYZ4hTMUSqSs/IA0n1v4p/cioSSnKubHrdpcCXC45N+TFMSOZtBlf4+xMNCFo3KDih31lAMg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" rc-util "^5.2.0" -rc-util@^4.15.3: - version "4.21.1" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05" - integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg== - dependencies: - add-dom-event-listener "^1.1.0" - prop-types "^15.5.10" - react-is "^16.12.0" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.1.0, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.5.0.tgz#76321bcb5c12f01f42bff9b971f170ff19506e5a" - integrity sha512-YJB+zZGvCll/bhxXRVLAekr7lOvTgqMlRIhgINoINfUek7wQvi5sft46NOi3yYUYhocpuW4k8+5okW46sBsZAQ== +rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.13.0, rc-util@^5.13.1, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: + version "5.15.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.15.0.tgz#3527bd6c5806cf04476e17a0c7bf094fc8ea4666" + integrity sha512-8RI8sjOCXD3FhD3dzQNBQetpGol6BBd3sHQ/8jSGk9NPT0CH3JGtBfPODnASyE7AdDpCFQMOmgcp9CBs3S/1hg== dependencies: + "@babel/runtime" "^7.12.5" react-is "^16.12.0" shallowequal "^1.1.0" rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.2.2.tgz#95f8f0c4238e081f4a998354492632eed6d71924" - integrity sha512-OepvZDQGUbQQBFk5m2Ds32rfO/tSj9gZkLbzwaIw/hwGgvatDmW+j97YQvFkUQp/XDgdSGcfFfj/6XTKpz0J4g== + version "3.4.2" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.2.tgz#1078327aa7230b5e456d679ed2ce99f3c036ebd1" + integrity sha512-OyVrrPvvFcHvV0ssz5EDZ+7Rf5qLat/+mmujjchNw5FfbJWNDwkpQ99EcVE6+FtNRmX9wFa1LGNpZLUTvp/4GQ== dependencies: classnames "^2.2.6" - rc-resize-observer "^0.2.3" + rc-resize-observer "^1.0.0" rc-util "^5.0.7" react-ace@^9.1.1: @@ -15583,9 +15527,9 @@ regenerator-runtime@^0.13.3: integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== 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.4" @@ -16139,11 +16083,11 @@ screenfull@^5.0.0: integrity sha512-cCF2b+L/mnEiORLN5xSAz6H3t18i2oHh9BA8+CQlAh5DRw2+NFAGQJOSYbcGw8B2k04g/lVvFcfZ83b3ysH5UQ== scroll-into-view-if-needed@^2.2.25: - version "2.2.26" - resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.26.tgz#e4917da0c820135ff65ad6f7e4b7d7af568c4f13" - integrity sha512-SQ6AOKfABaSchokAmmaxVnL9IArxEnLEX9j4wAZw+x4iUTb40q7irtHG3z4GtAWz5veVZcCnubXDBRyLVQaohw== + version "2.2.28" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz#5a15b2f58a52642c88c8eca584644e01703d645a" + integrity sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w== dependencies: - compute-scroll-into-view "^1.0.16" + compute-scroll-into-view "^1.0.17" secure-keys@^1.0.0: version "1.0.0" @@ -16336,7 +16280,7 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shallowequal@^1.0.2, shallowequal@^1.1.0: +shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== @@ -17531,16 +17475,16 @@ ts-pnp@^1.1.6: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1617647074515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= +tslib@^1.8.1, tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + tslib@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" From 7248f20b08ef5321413953020a9ff0100f17fb3a Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Thu, 18 Nov 2021 23:21:54 +0800 Subject: [PATCH 033/100] pass esbuild compile --- ui/.env.development | 1 + ui/builder.js | 20 ++++++++--- ui/dashboardApp/index.ts | 6 ++-- ui/dashboardApp/layout/main/Sider/Banner.tsx | 4 +-- .../layout/signin/index.module.less | 2 +- ui/dashboardApp/layout/signin/index.tsx | 8 ++--- ui/diagnoseReportApp/index.tsx | 2 +- ui/lib/apps/ClusterInfo/index.meta.ts | 2 +- ui/lib/apps/Configuration/index.meta.ts | 2 +- ui/lib/apps/ContinuousProfiling/index.meta.ts | 2 +- ui/lib/apps/DebugAPI/index.meta.ts | 2 +- ui/lib/apps/Diagnose/index.meta.ts | 2 +- ui/lib/apps/InstanceProfiling/index.meta.ts | 2 +- ui/lib/apps/KeyViz/index.meta.ts | 2 +- ui/lib/apps/Overview/index.meta.ts | 2 +- ui/lib/apps/QueryEditor/index.meta.ts | 2 +- ui/lib/apps/QueryEditor/index.module.less | 2 +- ui/lib/apps/SearchLogs/index.meta.ts | 2 +- ui/lib/apps/SlowQuery/index.meta.ts | 2 +- ui/lib/apps/Statement/index.meta.ts | 2 +- ui/lib/apps/SystemReport/index.meta.ts | 2 +- ui/lib/apps/UserProfile/index.meta.ts | 2 +- ui/lib/apps/UserProfile/index.tsx | 1 + ui/lib/client/index.tsx | 2 +- ui/lib/components/BaseSelect/index.tsx | 2 +- ui/lib/components/CopyLink/index.module.less | 2 +- ui/lib/utils/i18n.ts | 35 +++++++++---------- ui/lib/utils/registry.ts | 6 ++-- ui/package.json | 4 +++ ui/public/index.html | 2 ++ ui/src/index.ts | 2 +- ui/src/publicPath.ts | 2 +- ui/yarn.lock | 5 +++ 33 files changed, 80 insertions(+), 56 deletions(-) diff --git a/ui/.env.development b/ui/.env.development index 4ee3e58b3b..adf524a1c0 100644 --- a/ui/.env.development +++ b/ui/.env.development @@ -5,3 +5,4 @@ REACT_APP_SENTRY_DSN=https://10930d3b0a8d427cad2147d6d845be56@o226447.ingest.sen REACT_APP_SENTRY_ENABLED=false # REACT_APP_RELEASE_VERSION is set in config-overrides.js REACT_APP_RELEASE_VERSION=unknown +REACT_APP_DASHBOARD_API_URL='' diff --git a/ui/builder.js b/ui/builder.js index 0aa3c20a75..dd441c546e 100644 --- a/ui/builder.js +++ b/ui/builder.js @@ -10,6 +10,8 @@ const { build } = require('esbuild') const postCssPlugin = require('esbuild-plugin-postcss2') const { yamlPlugin } = require('esbuild-plugin-yaml') +require('dotenv').config() + const argv = (key) => { // Return true if the key exists and a value is defined if (process.argv.includes(`--${key}`)) return true @@ -26,7 +28,7 @@ const isDev = argv('dev') === true * @link https://www.npmjs.com/package/live-server#usage-from-node */ const serverParams = { - port: 8181, // Set the server port. Defaults to 8080. + port: 3001, // Set the server port. Defaults to 8080. root: 'dist', // Set root directory that's being served. Defaults to cwd. open: false, // When false, it won't load your browser by default. // host: "0.0.0.0", // Set the address to bind to. Defaults to 0.0.0.0 or process.env.IP. @@ -39,8 +41,8 @@ const serverParams = { } const lessModifyVars = { - // '@primary-color': '#4394fc', - '@primary-color': '#1DA57A', + '@primary-color': '#4394fc', + // '@primary-color': '#1DA57A', '@body-background': '#fff', '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', '@tooltip-max-width': '500px', @@ -59,6 +61,14 @@ const lessGlobalVars = { '@gray-10': '#000', } +const define = {} +for (const k in process.env) { + if (k.startsWith('REACT_APP_')) { + define[`process.env.${k}`] = JSON.stringify(process.env[k]) + } +} +console.log(define) + /** * ESBuild Params * @link https://esbuild.github.io/api/#build-api @@ -78,6 +88,7 @@ const buildParams = { loader: { '.svg': 'dataurl', }, + platform: 'browser', plugins: [ postCssPlugin.default({ lessOptions: { @@ -89,13 +100,14 @@ const buildParams = { }), yamlPlugin(), ], + define, } async function main() { // TODO - refine fs.rmSync('./dist', { force: true, recursive: true }) fs.mkdirSync('./dist') - // fs.copyFileSync('./public/index.html', './dist/index.html') + fs.copyFileSync('./public/index.html', './dist/index.html') // fs.copyFileSync('./public/favicon.ico', './dist/favicon.ico') // fs.copyFileSync('./public/manifest.json', './dist/manifest.json') // fs.copyFileSync('./public/logo192.png', './dist/logo192.png') diff --git a/ui/dashboardApp/index.ts b/ui/dashboardApp/index.ts index a0c5d00d53..d7d282a60e 100755 --- a/ui/dashboardApp/index.ts +++ b/ui/dashboardApp/index.ts @@ -51,9 +51,9 @@ async function webPageStart() { if (options.lang) { i18next.changeLanguage(options.lang) } - i18n.addTranslations( - require.context('@dashboard/layout/translations/', false, /\.yaml$/) - ) + // i18n.addTranslations( + // require.context('@dashboard/layout/translations/', false, /\.yaml$/) + // ) let info: InfoInfoResponse diff --git a/ui/dashboardApp/layout/main/Sider/Banner.tsx b/ui/dashboardApp/layout/main/Sider/Banner.tsx index 37edf1b06b..9203023a63 100644 --- a/ui/dashboardApp/layout/main/Sider/Banner.tsx +++ b/ui/dashboardApp/layout/main/Sider/Banner.tsx @@ -7,7 +7,7 @@ import { InfoInfoResponse } from '@lib/client' import { useTranslation } from 'react-i18next' import { TFunction } from 'i18next' -import { ReactComponent as Logo } from './logo-icon-light.svg' +// import { ReactComponent as Logo } from './logo-icon-light.svg' import styles from './Banner.module.less' import { store } from '@lib/utils/store' @@ -81,7 +81,7 @@ export default function ToggleBanner({ >
    - + {/* */}
    diff --git a/ui/dashboardApp/layout/signin/index.module.less b/ui/dashboardApp/layout/signin/index.module.less index 49e6b31e20..57953947e0 100644 --- a/ui/dashboardApp/layout/signin/index.module.less +++ b/ui/dashboardApp/layout/signin/index.module.less @@ -39,7 +39,7 @@ .landing { flex-grow: 1; - background-image: url(./landing.svg); + // background-image: url(./landing.svg); background-size: cover; background-position: center left; } diff --git a/ui/dashboardApp/layout/signin/index.tsx b/ui/dashboardApp/layout/signin/index.tsx index 3b88d0c4d6..de3d3ae589 100755 --- a/ui/dashboardApp/layout/signin/index.tsx +++ b/ui/dashboardApp/layout/signin/index.tsx @@ -32,7 +32,7 @@ import * as auth from '@lib/utils/auth' import { Root, AppearAnimate, LanguageDropdown } from '@lib/components' import styles from './index.module.less' -import { ReactComponent as Logo } from './logo.svg' +// import { ReactComponent as Logo } from './logo.svg' import { useIsFeatureSupport } from '@lib/utils/store' enum DisplayFormType { @@ -255,7 +255,7 @@ function TiDBSignInForm({ successRoute, onClickAlternative }) { initialValues={{ username: lastLoginUsername }} form={refForm} > - + {/* */}

    {t('signin.form.tidb_auth.title')}

    @@ -339,7 +339,7 @@ function CodeSignInForm({ successRoute, onClickAlternative }) {
    - + {/* */}

    {t('signin.form.code_auth.title')}

    @@ -399,7 +399,7 @@ function SSOSignInForm({ successRoute, onClickAlternative }) {
    - + {/* */} - - - -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloAntD/style.module.less b/ui-esbuild/src/lib/test-components/HelloAntD/style.module.less deleted file mode 100644 index 36828b7854..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloAntD/style.module.less +++ /dev/null @@ -1,4 +0,0 @@ -.hello-antd-container { - text-align: center; - padding: 8px; -} diff --git a/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx b/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx deleted file mode 100644 index 27cf39c306..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloAntDIcons/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' - -import { AreaChartOutlined, PieChartOutlined, BarChartOutlined } from '@ant-design/icons' - -import styles from './style.module.less' - -export default function HelloAntDIcons() { - return ( -
    - Hello AntDIcons:  - - - -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloAntDIcons/style.module.less b/ui-esbuild/src/lib/test-components/HelloAntDIcons/style.module.less deleted file mode 100644 index 62a4d29259..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloAntDIcons/style.module.less +++ /dev/null @@ -1,6 +0,0 @@ -.hello-antd-icons-container { - text-align: center; - padding: 8px; - font-size: 48px; - color: cornflowerblue; -} diff --git a/ui-esbuild/src/lib/test-components/HelloCSS/index.tsx b/ui-esbuild/src/lib/test-components/HelloCSS/index.tsx deleted file mode 100644 index 6ca590db02..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloCSS/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import './style.css' - -export default function HelloCSS() { - return ( -
    -

    HelloCSS

    -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloCSS/style.css b/ui-esbuild/src/lib/test-components/HelloCSS/style.css deleted file mode 100644 index 763022cfad..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloCSS/style.css +++ /dev/null @@ -1,7 +0,0 @@ -.hello-css-container { - text-align: center; -} - -.hello-css-container h1 { - color: skyblue; -} diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/LazyComponent.tsx b/ui-esbuild/src/lib/test-components/HelloDynamicImport/LazyComponent.tsx deleted file mode 100644 index 044c0769ec..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloDynamicImport/LazyComponent.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' - -export default function LazyComponent() { - return ( -
    - -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx b/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx deleted file mode 100644 index 2da63391c0..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloDynamicImport/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React, { Suspense } from 'react' - -const LazyComp = React.lazy(() => import('./LazyComponent')) - -import styles from './style.module.less' - -export default function HelloDynamicImport() { - async function btnClick() { - let say = await import('./say') // no need suffix - say.hi() // Hello! - say.bye() // Bye! - say.default() // Module loaded (export default)! - } - - return ( -
    - - Loading...
    }> - - -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/say.ts b/ui-esbuild/src/lib/test-components/HelloDynamicImport/say.ts deleted file mode 100644 index d7f4369321..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloDynamicImport/say.ts +++ /dev/null @@ -1,11 +0,0 @@ -export function hi() { - alert(`Hello`) -} - -export function bye() { - alert(`Bye`) -} - -export default function () { - alert('Module loaded (export default)!') -} diff --git a/ui-esbuild/src/lib/test-components/HelloDynamicImport/style.module.less b/ui-esbuild/src/lib/test-components/HelloDynamicImport/style.module.less deleted file mode 100644 index 0e0678f085..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloDynamicImport/style.module.less +++ /dev/null @@ -1,5 +0,0 @@ -.hello-di-container { - color: cornflowerblue; - text-align: center; - font-weight: 600; -} diff --git a/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx b/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx deleted file mode 100644 index f7dcc33c62..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloFluentUI/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react' -import { PrimaryButton, DatePicker } from '@fluentui/react' - -import styles from './style.module.less' - -export default function HelloFluentUI() { - return ( -
    - Hello Fluent UI - -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less b/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less deleted file mode 100644 index 5d7f215b37..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloFluentUI/style.module.less +++ /dev/null @@ -1,6 +0,0 @@ -.hello-fluent-ui-container { - padding: 8px; - display: flex; - justify-content: center; - gap: 16px; -} diff --git a/ui-esbuild/src/lib/test-components/HelloLess/index.tsx b/ui-esbuild/src/lib/test-components/HelloLess/index.tsx deleted file mode 100644 index 7880944a70..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloLess/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import './style.less' - -export default function HelloLess() { - return ( -
    -

    HelloLess

    -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloLess/style.less b/ui-esbuild/src/lib/test-components/HelloLess/style.less deleted file mode 100644 index 63008fd734..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloLess/style.less +++ /dev/null @@ -1,10 +0,0 @@ -@test-padding-page: 48px; - -.hello-less-container { - text-align: center; - background-color: oldlace; - padding: @test-padding-page; - h1 { - color: slateblue; - } -} diff --git a/ui-esbuild/src/lib/test-components/HelloModuleLess/index.tsx b/ui-esbuild/src/lib/test-components/HelloModuleLess/index.tsx deleted file mode 100644 index 815474ac48..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloModuleLess/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import styles from './style.module.less' - -export default function HelloMLess() { - return ( -
    -

    Hello Module Less

    -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less b/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less deleted file mode 100644 index e9e25f027b..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloModuleLess/style.module.less +++ /dev/null @@ -1,9 +0,0 @@ -@test-border-width: 2px; - -.hello-mless-container { - text-align: center; - border: @test-border-width solid yellowgreen; - h1 { - color: blueviolet; - } -} diff --git a/ui-esbuild/src/lib/test-components/HelloSCSS/index.tsx b/ui-esbuild/src/lib/test-components/HelloSCSS/index.tsx deleted file mode 100644 index 151b0c5350..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloSCSS/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import './style.scss' - -export default function HelloSCSS() { - return ( -
    -

    HelloSCSS

    -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss b/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss deleted file mode 100644 index 92a30f0215..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloSCSS/style.scss +++ /dev/null @@ -1,11 +0,0 @@ -$test-base-color: #c6538c; -$test-border-dark: rgba($test-base-color, 0.88); - -.hello-scss-container { - text-align: center; - background-color: cornsilk; - border: 1px solid $test-border-dark; - h1 { - color: cadetblue; - } -} diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx b/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx deleted file mode 100644 index 1ed61edea4..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloSVG/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react' - -import logo from './logo.svg' - -import styles from './style.module.less' - -export default function HelloSVG() { - return ( -
    - Hello SVG - logo -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/logo.svg b/ui-esbuild/src/lib/test-components/HelloSVG/logo.svg deleted file mode 100644 index 9dfc1c058c..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloSVG/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less b/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less deleted file mode 100644 index 759b3cabfa..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloSVG/style.module.less +++ /dev/null @@ -1,7 +0,0 @@ -.hello-svg-container { - height: 100px; - width: 100px; - margin: 0 auto; - text-align: center; - color: cornflowerblue; -} diff --git a/ui-esbuild/src/lib/test-components/HelloYAML/index.tsx b/ui-esbuild/src/lib/test-components/HelloYAML/index.tsx deleted file mode 100644 index 166a3ff4a4..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloYAML/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react' - -import yaml from './test.yaml' - -import styles from './style.module.less' - -export default function HelloYAML() { - return ( -
    - {yaml.hello.greeting} -
    - ) -} diff --git a/ui-esbuild/src/lib/test-components/HelloYAML/style.module.less b/ui-esbuild/src/lib/test-components/HelloYAML/style.module.less deleted file mode 100644 index 75a2d76da4..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloYAML/style.module.less +++ /dev/null @@ -1,6 +0,0 @@ -.hello-yaml-container { - color: cornflowerblue; - text-align: center; - font-size: 32px; - font-weight: 600; -} diff --git a/ui-esbuild/src/lib/test-components/HelloYAML/test.yaml b/ui-esbuild/src/lib/test-components/HelloYAML/test.yaml deleted file mode 100755 index 498adb7121..0000000000 --- a/ui-esbuild/src/lib/test-components/HelloYAML/test.yaml +++ /dev/null @@ -1,2 +0,0 @@ -hello: - greeting: Hello YAML diff --git a/ui-esbuild/src/lib/test-components/index.ts b/ui-esbuild/src/lib/test-components/index.ts deleted file mode 100644 index 9e8f9eae83..0000000000 --- a/ui-esbuild/src/lib/test-components/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { default as HelloCSS } from './HelloCSS' -export { default as HelloLess } from './HelloLess' -export { default as HelloMLess } from './HelloModuleLess' -export { default as HelloSCSS } from './HelloSCSS' -export { default as HelloAntD } from './HelloAntD' -export { default as HelloFluentUI } from './HelloFluentUI' -export { default as HelloAntDIcons } from './HelloAntDIcons' -export { default as HelloSVG } from './HelloSVG' -export { default as HelloYAML } from './HelloYAML' -export { default as HelloDynamicImport } from './HelloDynamicImport' diff --git a/ui-esbuild/src/react-app-env.d.ts b/ui-esbuild/src/react-app-env.d.ts deleted file mode 100644 index 30325b55e7..0000000000 --- a/ui-esbuild/src/react-app-env.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/// - -declare module '*.module.css' { - const classes: { readonly [key: string]: string } - export default classes -} - -declare module '*.module.less' { - const classes: { readonly [key: string]: string } - export default classes -} - -declare module '*.svg' { - const content: any - export default content -} - -// .yaml and .yml declarations -declare module '*.yaml' { - const content: { - [key: string]: any - } - export default content -} diff --git a/ui-esbuild/src/style.less b/ui-esbuild/src/style.less deleted file mode 100644 index 80148faf0d..0000000000 --- a/ui-esbuild/src/style.less +++ /dev/null @@ -1,13 +0,0 @@ -@import 'antd/dist/antd.less'; - -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', - 'Droid Sans', 'Helvetica Neue', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; -} diff --git a/ui-esbuild/tsconfig.json b/ui-esbuild/tsconfig.json deleted file mode 100644 index 48fe915331..0000000000 --- a/ui-esbuild/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "baseUrl": "src", - "paths": { - "@lib/*": ["lib/*"] - } - }, - "include": ["src"] -} diff --git a/ui-esbuild/yarn.lock b/ui-esbuild/yarn.lock deleted file mode 100644 index 6f4bd35ecb..0000000000 --- a/ui-esbuild/yarn.lock +++ /dev/null @@ -1,4626 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ant-design/colors@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" - integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== - dependencies: - "@ctrl/tinycolor" "^3.4.0" - -"@ant-design/icons-svg@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz#8630da8eb4471a4aabdaed7d1ff6a97dcb2cf05a" - integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== - -"@ant-design/icons@^4.6.3", "@ant-design/icons@^4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.7.0.tgz#8c3cbe0a556ba92af5dc7d1e70c0b25b5179af0f" - integrity sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g== - dependencies: - "@ant-design/colors" "^6.0.0" - "@ant-design/icons-svg" "^4.2.1" - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-util "^5.9.4" - -"@ant-design/react-slick@~0.28.1": - version "0.28.4" - resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.28.4.tgz#8b296b87ad7c7ae877f2a527b81b7eebd9dd29a9" - integrity sha512-j9eAHTn7GxbXUFNknJoHS2ceAsqrQi2j8XykjZE1IXCD8kJF+t28EvhBLniDpbOsBk/3kjalnhriTfZcjBHNqg== - dependencies: - "@babel/runtime" "^7.10.4" - classnames "^2.2.5" - json2mq "^0.2.0" - lodash "^4.17.21" - resize-observer-polyfill "^1.5.0" - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/helper-validator-identifier@^7.14.5": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/runtime-corejs3@^7.10.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1" - integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg== - dependencies: - core-js-pure "^3.16.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== - dependencies: - regenerator-runtime "^0.13.4" - -"@ctrl/tinycolor@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz#c3c5ae543c897caa9c2a68630bed355be5f9990f" - integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== - -"@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" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@fluentui/date-time-utilities@^8.2.2": - version "8.2.2" - resolved "https://registry.yarnpkg.com/@fluentui/date-time-utilities/-/date-time-utilities-8.2.2.tgz#535d5bb6ee7ccfa8cc774c790e31d3d5d4edbad6" - integrity sha512-djHrX/38ty+F93qLQjzmRzPzK598CW9g/RPhQH6GyrFBLPSWM1swYKB5TP6E7FrIf+fT4pVqrNUSYZhgi2rrOQ== - dependencies: - "@fluentui/set-version" "^8.1.4" - tslib "^2.1.0" - -"@fluentui/dom-utilities@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@fluentui/dom-utilities/-/dom-utilities-2.1.4.tgz#a8eeaf906cc19f547ae40c662d2776cb2540ea11" - integrity sha512-+gsAnEjgoKB37o+tsMdSLtgqZ9z2PzpvnHx/2IqhRWjQQd7Xc7MbQsbZaQ5qfkioFHLnWGc/+WORpqKPy/sWrg== - dependencies: - "@fluentui/set-version" "^8.1.4" - tslib "^2.1.0" - -"@fluentui/font-icons-mdl2@^8.1.17": - version "8.1.17" - resolved "https://registry.yarnpkg.com/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.1.17.tgz#abc386788749214e3805726ea9b850bdcb8586e5" - integrity sha512-/w5aRIjsPCCMUUjkx+A0ba6OAMh6JqK5txTFSZCWGNXqwUZEkI7JNj3fCsCAQpEXVKD19XisESgllpZfOTpyKw== - dependencies: - "@fluentui/set-version" "^8.1.4" - "@fluentui/style-utilities" "^8.4.2" - tslib "^2.1.0" - -"@fluentui/foundation-legacy@^8.1.16": - version "8.1.16" - resolved "https://registry.yarnpkg.com/@fluentui/foundation-legacy/-/foundation-legacy-8.1.16.tgz#a17fc79c53ba486c05ba351d14ed7bc768214e52" - integrity sha512-u4A/w2XAxdjSrSWRP52HLQvGMoj4GI96eYYyRBRRHMNfEUO3uU9WUFb//VgaiApzV+GDNUJS4o1cXIWewPDiXQ== - dependencies: - "@fluentui/merge-styles" "^8.2.1" - "@fluentui/set-version" "^8.1.4" - "@fluentui/style-utilities" "^8.4.2" - "@fluentui/utilities" "^8.3.6" - tslib "^2.1.0" - -"@fluentui/keyboard-key@^0.3.4": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@fluentui/keyboard-key/-/keyboard-key-0.3.4.tgz#27c95ea9d43d91cc9c64c318feb10986250584cd" - integrity sha512-pVY2m3IC5+LLmMzsaPApX9eKTzpOzdgQwrR3FNTE6mGx3N/+QWYM7fdF+T1ldZQt87dCRSeQnmAo5kqjtxeA/w== - dependencies: - tslib "^2.1.0" - -"@fluentui/merge-styles@^8.2.1": - version "8.2.1" - resolved "https://registry.yarnpkg.com/@fluentui/merge-styles/-/merge-styles-8.2.1.tgz#2deaa0cc10ece12d3e01f28e678fdc0ce3f861af" - integrity sha512-PwFndIWHNpwNF3On1Y/Kn73ycXJrZNrIG7ZV/G+C6g+ebVP0I87Mgx3kt8I+/hZxQJ0vjrFVslXiNMOFOfLaSQ== - dependencies: - "@fluentui/set-version" "^8.1.4" - tslib "^2.1.0" - -"@fluentui/react-focus@^8.3.8": - version "8.3.8" - resolved "https://registry.yarnpkg.com/@fluentui/react-focus/-/react-focus-8.3.8.tgz#9a8fe74ccc2d799d23e4f517cc94b34954c94b6c" - integrity sha512-mm4PUlzs6i4Op5V3+6R2wI0gxSQSrOsTj2HEZhCxvF9RdVKXUUSzhm23+mV6n+gQR1n3scxNxKzIbM3cOk073A== - dependencies: - "@fluentui/keyboard-key" "^0.3.4" - "@fluentui/merge-styles" "^8.2.1" - "@fluentui/set-version" "^8.1.4" - "@fluentui/style-utilities" "^8.4.2" - "@fluentui/utilities" "^8.3.6" - tslib "^2.1.0" - -"@fluentui/react-hooks@^8.3.6": - version "8.3.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-hooks/-/react-hooks-8.3.6.tgz#c16e9027446ce86880ebbc2e54a3f87cd9d3eda4" - integrity sha512-LVzm3fHZyx8d9IPdfEX7DV5/6jick/21oPqhlnXjxZqYWUUx5hbo6qefuMrft/hBRA/oPc2yiMvri5E7q08/Hg== - dependencies: - "@fluentui/react-window-provider" "^2.1.4" - "@fluentui/set-version" "^8.1.4" - "@fluentui/utilities" "^8.3.6" - tslib "^2.1.0" - -"@fluentui/react-window-provider@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@fluentui/react-window-provider/-/react-window-provider-2.1.4.tgz#2e8368fd85f9e10062c726b060b146ffc1f916b3" - integrity sha512-RztmJ7ol2eMDr3NCs2OcAA1cQjZdPPUEa4aurgh4Aq+JM/BiY0aK6S4SeFtVD7F8Q7PBOz/xwOG4HlnSMQtlsg== - dependencies: - "@fluentui/set-version" "^8.1.4" - tslib "^2.1.0" - -"@fluentui/react@^8.42.1": - version "8.42.1" - resolved "https://registry.yarnpkg.com/@fluentui/react/-/react-8.42.1.tgz#3457aa77c635595b67fc574a5328541d6bb44a91" - integrity sha512-kFvYEuOGZguuunIlIUQjxThu4XRe42Cnou5Cb50HI0K2YV3frxuWHxE8Ld/v/M1C6a7C3rYlYgLy1NXvrTzsfQ== - dependencies: - "@fluentui/date-time-utilities" "^8.2.2" - "@fluentui/font-icons-mdl2" "^8.1.17" - "@fluentui/foundation-legacy" "^8.1.16" - "@fluentui/merge-styles" "^8.2.1" - "@fluentui/react-focus" "^8.3.8" - "@fluentui/react-hooks" "^8.3.6" - "@fluentui/react-window-provider" "^2.1.4" - "@fluentui/set-version" "^8.1.4" - "@fluentui/style-utilities" "^8.4.2" - "@fluentui/theme" "^2.4.3" - "@fluentui/utilities" "^8.3.6" - "@microsoft/load-themed-styles" "^1.10.26" - tslib "^2.1.0" - -"@fluentui/set-version@^8.1.4": - version "8.1.4" - resolved "https://registry.yarnpkg.com/@fluentui/set-version/-/set-version-8.1.4.tgz#89fa88223f421981427dfd5372d46210045354e8" - integrity sha512-2otMyJ+s+W+hjBD4BKjwYKKinJUDeIKYKz93qKrrJS0i3fKfftNroy9dHFlIblZ7n747L334plLi3bzQO1bnvA== - dependencies: - tslib "^2.1.0" - -"@fluentui/style-utilities@^8.4.2": - version "8.4.2" - resolved "https://registry.yarnpkg.com/@fluentui/style-utilities/-/style-utilities-8.4.2.tgz#6f5e4f2785722927f32a340c88dd3c7b92fe3342" - integrity sha512-RwZo+IzzgQzdzxh0Zv5uEaUZKlNpR80ct7Y/8SiSyYOP4Q7vVqIg8kCj8l/V4IOMTocjqH4sYbVxJ8pCJ4G9Vw== - dependencies: - "@fluentui/merge-styles" "^8.2.1" - "@fluentui/set-version" "^8.1.4" - "@fluentui/theme" "^2.4.3" - "@fluentui/utilities" "^8.3.6" - "@microsoft/load-themed-styles" "^1.10.26" - tslib "^2.1.0" - -"@fluentui/theme@^2.4.3": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@fluentui/theme/-/theme-2.4.3.tgz#e8b195c87dd7b2efab1544292ac84d975843e20a" - integrity sha512-+BeZxF7UbZlKgL34GCC8TqIhd/RC+hgvTjyi51CdQrdJmHLMVklW+BcrTtOS9XguQEkvVMRjW28RzXMehpIkOw== - dependencies: - "@fluentui/merge-styles" "^8.2.1" - "@fluentui/set-version" "^8.1.4" - "@fluentui/utilities" "^8.3.6" - tslib "^2.1.0" - -"@fluentui/utilities@^8.3.6": - version "8.3.6" - resolved "https://registry.yarnpkg.com/@fluentui/utilities/-/utilities-8.3.6.tgz#1cf33ffa1943e1514781f35867c870c7248d6d9d" - integrity sha512-ubB1/g3ppJ/MCbQHYwldpKP6EfE8ScwL8wMlnWFoSMo9E7FzlfoeOOPLzmT7fGptTnXzFDQtP4SR4Y/YQXVPGg== - dependencies: - "@fluentui/dom-utilities" "^2.1.4" - "@fluentui/merge-styles" "^8.2.1" - "@fluentui/set-version" "^8.1.4" - tslib "^2.1.0" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== - -"@microsoft/load-themed-styles@^1.10.26": - version "1.10.230" - resolved "https://registry.yarnpkg.com/@microsoft/load-themed-styles/-/load-themed-styles-1.10.230.tgz#669d77b011e3e54038635dab5460572f549f3463" - integrity sha512-EMc7AqUZxRnZTpnPasItHN5DXV/EdJ19wHyOls69PF089Ny9pUxZEbAPROOuR6I1m8WvNRJrlagLJgG9Yq0Y2w== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@types/json-schema@^7.0.7": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/live-server@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/live-server/-/live-server-1.2.1.tgz#4d6588e1b888b415ed5fe8480224dcd225bc9eba" - integrity sha512-Yind497JdcZT8L9FF7u73nq44KmamiDitsZJEwrAi/pgBhFHThNvtR+2Z/YGNSMjyUoDBFdvhVSQmod06yd1Ng== - -"@types/node@^16.9.1": - version "16.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" - integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== - -"@types/react-dom@^17.0.9": - version "17.0.9" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" - integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^17.0.20": - version "17.0.20" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.20.tgz#a4284b184d47975c71658cd69e759b6bd37c3b8c" - integrity sha512-wWZrPlihslrPpcKyCSlmIlruakxr57/buQN1RjlIeaaTWDLtJkTtRW429MoQJergvVKc4IWBpRhWw7YNh/7GVA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@typescript-eslint/eslint-plugin@^4.31.0": - version "4.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz#9c3fa6f44bad789a962426ad951b54695bd3af6b" - integrity sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw== - dependencies: - "@typescript-eslint/experimental-utils" "4.31.0" - "@typescript-eslint/scope-manager" "4.31.0" - 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.31.0": - version "4.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz#0ef1d5d86c334f983a00f310e43c1ce4c14e054d" - integrity sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.31.0" - "@typescript-eslint/types" "4.31.0" - "@typescript-eslint/typescript-estree" "4.31.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.31.0": - version "4.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.31.0.tgz#87b7cd16b24b9170c77595d8b1363f8047121e05" - integrity sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w== - dependencies: - "@typescript-eslint/scope-manager" "4.31.0" - "@typescript-eslint/types" "4.31.0" - "@typescript-eslint/typescript-estree" "4.31.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.31.0": - version "4.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz#9be33aed4e9901db753803ba233b70d79a87fc3e" - integrity sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg== - dependencies: - "@typescript-eslint/types" "4.31.0" - "@typescript-eslint/visitor-keys" "4.31.0" - -"@typescript-eslint/types@4.31.0": - version "4.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.31.0.tgz#9a7c86fcc1620189567dc4e46cad7efa07ee8dce" - integrity sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ== - -"@typescript-eslint/typescript-estree@4.31.0": - version "4.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz#4da4cb6274a7ef3b21d53f9e7147cc76f278a078" - integrity sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg== - dependencies: - "@typescript-eslint/types" "4.31.0" - "@typescript-eslint/visitor-keys" "4.31.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.31.0": - version "4.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz#4e87b7761cb4e0e627dc2047021aa693fc76ea2b" - integrity sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w== - dependencies: - "@typescript-eslint/types" "4.31.0" - eslint-visitor-keys "^2.0.0" - -accepts@~1.3.4: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - 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" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -antd@^4.16.13: - version "4.16.13" - resolved "https://registry.yarnpkg.com/antd/-/antd-4.16.13.tgz#e9b9b4a590db28747aae1cab98981649a35880af" - integrity sha512-EMPD3fzKe7oayx9keD/GA1oKatcx7j5CGlkJj5eLS0/eEDDEkxVj3DFmKOPuHYt4BK7ltTzMFS+quSTmqUXPiw== - dependencies: - "@ant-design/colors" "^6.0.0" - "@ant-design/icons" "^4.6.3" - "@ant-design/react-slick" "~0.28.1" - "@babel/runtime" "^7.12.5" - array-tree-filter "^2.1.0" - classnames "^2.2.6" - copy-to-clipboard "^3.2.0" - lodash "^4.17.21" - moment "^2.25.3" - rc-cascader "~1.4.0" - rc-checkbox "~2.3.0" - rc-collapse "~3.1.0" - rc-dialog "~8.6.0" - rc-drawer "~4.3.0" - rc-dropdown "~3.2.0" - rc-field-form "~1.20.0" - rc-image "~5.2.5" - rc-input-number "~7.1.0" - rc-mentions "~1.6.1" - rc-menu "~9.0.12" - rc-motion "^2.4.0" - rc-notification "~4.5.7" - rc-pagination "~3.1.9" - rc-picker "~2.5.10" - rc-progress "~3.1.0" - rc-rate "~2.9.0" - rc-resize-observer "^1.0.0" - rc-select "~12.1.6" - rc-slider "~9.7.1" - rc-steps "~4.1.0" - rc-switch "~3.2.0" - rc-table "~7.15.1" - rc-tabs "~11.10.0" - rc-textarea "~0.3.0" - rc-tooltip "~5.1.1" - rc-tree "~4.2.1" - rc-tree-select "~4.3.0" - rc-trigger "^5.2.10" - rc-upload "~4.3.0" - rc-util "^5.13.1" - scroll-into-view-if-needed "^2.2.25" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apache-crypt@^1.1.2: - version "1.2.5" - resolved "https://registry.yarnpkg.com/apache-crypt/-/apache-crypt-1.2.5.tgz#4eb6b6dbaed2041ce5bc2d802f4421f5fdadc25e" - integrity sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg== - dependencies: - unix-crypt-td-js "^1.1.4" - -apache-md5@^1.0.6: - version "1.1.7" - resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.7.tgz#dcef1802700cc231d60c5e08fd088f2f9b36375a" - integrity sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-tree-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" - integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -array.prototype.flatmap@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" - integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - function-bind "^1.1.1" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-validator@^3.0.3: - version "3.5.2" - resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500" - integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^10.2.5: - version "10.4.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.0.tgz#c3577eb32a1079a440ec253e404eaf1eb21388c8" - integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== - dependencies: - browserslist "^4.17.5" - caniuse-lite "^1.0.30001272" - fraction.js "^4.1.1" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.1.0" - -axe-core@^4.0.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325" - integrity sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA== - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -basic-auth@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcryptjs@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" - integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.17.5: - version "4.18.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" - integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== - dependencies: - caniuse-lite "^1.0.30001280" - electron-to-chromium "^1.3.896" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -caniuse-lite@^1.0.30001272, caniuse-lite@^1.0.30001280: - version "1.0.30001280" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz#066a506046ba4be34cde5f74a08db7a396718fb7" - integrity sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^2.0.4: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - 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== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -colors@latest: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compute-scroll-into-view@^1.0.17: - version "1.0.17" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" - integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -confusing-browser-globals@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== - -connect@^3.6.6: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -copy-anything@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" - integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== - dependencies: - is-what "^3.12.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-to-clipboard@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-pure@^3.16.0: - version "3.17.3" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.17.3.tgz#98ea3587188ab7ef4695db6518eeb71aec42604a" - integrity sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@latest: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" - integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - -cwd@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" - integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= - dependencies: - find-pkg "^0.1.2" - fs-exists-sync "^0.1.0" - -damerau-levenshtein@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== - -date-fns@2.x: - version "2.25.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.25.0.tgz#8c5c8f1d958be3809a9a03f4b742eba894fc5680" - integrity sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w== - -dayjs@1.x: - version "1.10.7" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" - integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-align@^1.7.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.2.tgz#0f8164ebd0c9c21b0c790310493cd855892acd4b" - integrity sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg== - -duplexer@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.896: - version "1.3.898" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.898.tgz#0bd4090bf7c7003cb9bd31c4223a9f6aa1aab9dc" - integrity sha512-dxEsaHy9Ter268LO7P8uWomuChbyML4zZk5F9+UZSozFRS7ggC5cQ8fPIM8Pec+6uWGdujuDagQhIbqjohUK2w== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.0.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -enquirer@^2.3.5, enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -errno@^0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456" - integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-string "^1.0.7" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild-plugin-postcss2@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/esbuild-plugin-postcss2/-/esbuild-plugin-postcss2-0.1.0.tgz#0426f0e5b962462cc68b2d3f2ac74b1db04597a8" - integrity sha512-dOmmjmioFfVIqSMuJSBkQkvmgyYqkx2Qq5NAdrTlvKuygKEpz5boJNduOgiyuQ2LVHcbeAUA8wpckYgSgIQG9w== - dependencies: - autoprefixer "^10.2.5" - fs-extra "^9.1.0" - less "^4.x" - postcss "8.x" - postcss-modules "^4.0.0" - resolve-file "^0.3.0" - sass "^1.x" - stylus "^0.x" - tmp "^0.2.1" - -esbuild-plugin-yaml@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/esbuild-plugin-yaml/-/esbuild-plugin-yaml-0.0.1.tgz#660b9ddab78f4c3f488284762d6c01b6738615fb" - integrity sha512-s3jqOeeCd+dUuUsuBqLRgN2SeQjPF2ppIglvV3B//txgQpTDThGvxu6sqiOUOJ0NOzegitmpWCXoCONdRbUS7w== - dependencies: - fs-extra "^9.1.0" - js-yaml "^4.0.0" - -esbuild@^0.12.26: - version "0.12.26" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.26.tgz#35f2d58ac3fa4629df24aa4d6fd72feb5522e94b" - integrity sha512-YmTkhPKjvTJ+G5e96NyhGf69bP+hzO0DscqaVJTi5GM34uaD4Ecj7omu5lJO+NrxCUBRhy2chONLK1h/2LwoXA== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-airbnb-base@^14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" - integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== - dependencies: - confusing-browser-globals "^1.0.10" - object.assign "^4.1.2" - object.entries "^1.1.2" - -eslint-config-airbnb@^18.2.1: - version "18.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9" - integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== - dependencies: - eslint-config-airbnb-base "^14.2.1" - object.assign "^4.1.2" - object.entries "^1.1.2" - -eslint-config-prettier@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534" - integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-import@^2.24.2: - version "2.24.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz#2c8cd2e341f3885918ee27d18479910ade7bb4da" - integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.6.2" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.6.0" - minimatch "^3.0.4" - object.values "^1.1.4" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" - -eslint-plugin-jsx-a11y@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" - integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== - dependencies: - "@babel/runtime" "^7.11.2" - aria-query "^4.2.2" - array-includes "^3.1.1" - ast-types-flow "^0.0.7" - axe-core "^4.0.2" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.6" - emoji-regex "^9.0.0" - has "^1.0.3" - jsx-ast-utils "^3.1.0" - language-tags "^1.0.5" - -eslint-plugin-react-hooks@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" - integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== - -eslint-plugin-react@^7.25.1: - version "7.25.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz#9286b7cd9bf917d40309760f403e53016eda8331" - integrity sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug== - dependencies: - array-includes "^3.1.3" - array.prototype.flatmap "^1.2.4" - doctrine "^2.1.0" - estraverse "^5.2.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" - object.entries "^1.1.4" - object.fromentries "^2.0.4" - object.values "^1.1.4" - prop-types "^15.7.2" - resolve "^2.0.0-next.3" - string.prototype.matchall "^4.0.5" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-stream@3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" - integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= - dependencies: - os-homedir "^1.0.1" - -expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@0.11.x: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-file-up@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" - integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= - dependencies: - fs-exists-sync "^0.1.0" - resolve-dir "^0.1.0" - -find-pkg@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" - integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= - dependencies: - find-file-up "^0.1.2" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -fraction.js@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" - integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= - -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= - -fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -generic-names@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" - integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== - dependencies: - loader-utils "^1.1.0" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - -globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -http-auth@3.1.x: - version "3.1.3" - resolved "https://registry.yarnpkg.com/http-auth/-/http-auth-3.1.3.tgz#945cfadd66521eaf8f7c84913d377d7b15f24e31" - integrity sha1-lFz63WZSHq+PfISRPTd9exXyTjE= - dependencies: - apache-crypt "^1.1.2" - apache-md5 "^1.0.6" - bcryptjs "^2.3.0" - uuid "^3.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.2.tgz#21900da0f30199acca43a46c043c4ad84ae88dff" - integrity sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg== - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-core-module@^2.2.0, is-core-module@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" - integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-what@^3.12.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" - integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json2mq@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" - integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= - dependencies: - string-convert "^0.2.0" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" - integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== - dependencies: - array-includes "^3.1.2" - object.assign "^4.1.2" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - -lazy-cache@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" - integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= - dependencies: - set-getter "^0.1.0" - -less@^4.1.2, less@^4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" - integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - needle "^2.5.2" - source-map "~0.6.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -lint-staged@^11.1.2: - version "11.1.2" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" - integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== - dependencies: - chalk "^4.1.1" - cli-truncate "^2.1.0" - commander "^7.2.0" - cosmiconfig "^7.0.0" - debug "^4.3.1" - enquirer "^2.3.6" - execa "^5.0.0" - listr2 "^3.8.2" - log-symbols "^4.1.0" - micromatch "^4.0.4" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" - -listr2@^3.8.2: - version "3.12.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.0.tgz#755d77fdbc5bd290d7860ced28061ba123088b58" - integrity sha512-DLaOIhIBXxSDGfAuGyQPsQs6XPIJrUE1MaNYBq8aUS3bulSAEl9RMNNuRbfdxonTizL5ztAYvCZKKnP3gFSvYg== - dependencies: - cli-truncate "^2.1.0" - colorette "^1.2.2" - log-update "^4.0.0" - p-map "^4.0.0" - rxjs "^6.6.7" - through "^2.3.8" - wrap-ansi "^7.0.0" - -live-server@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/live-server/-/live-server-1.2.1.tgz#670630dd409d22fe9c513ab1c1894686c757153e" - integrity sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw== - dependencies: - chokidar "^2.0.4" - colors latest - connect "^3.6.6" - cors latest - event-stream "3.3.4" - faye-websocket "0.11.x" - http-auth "3.1.x" - morgan "^1.9.1" - object-assign latest - opn latest - proxy-middleware latest - send latest - serve-index "^1.9.1" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-utils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.49.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== - dependencies: - mime-db "1.49.0" - -mime@1.6.0, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moment@^2.24.0, moment@^2.25.3: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -morgan@^1.9.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" - integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== - dependencies: - basic-auth "~2.0.1" - debug "2.6.9" - depd "~2.0.0" - on-finished "~2.3.0" - on-headers "~1.0.2" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nan@^2.12.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nanoid@^3.1.30: - version "3.1.30" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" - integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -needle@^2.5.2: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -object-assign@^4, object-assign@^4.1.1, object-assign@latest: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.2, object.entries@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" - integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -object.fromentries@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -opn@latest: - version "6.0.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" - integrity sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-node-version@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.2.2.tgz#5e7777c5a8964ea176919d90b2e54ef891321ce5" - integrity sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg== - dependencies: - generic-names "^2.0.1" - icss-replace-symbols "^1.1.0" - lodash.camelcase "^4.3.0" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - string-hash "^1.1.1" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@8.x: - version "8.3.11" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" - integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== - dependencies: - nanoid "^3.1.30" - picocolors "^1.0.0" - source-map-js "^0.6.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.0.tgz#85bdfe0f70c3e777cf13a4ffff39713ca6f64cba" - integrity sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proxy-middleware@latest: - version "0.15.0" - resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" - integrity sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY= - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -rc-align@^4.0.0: - version "4.0.11" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.11.tgz#8198c62db266bc1b8ef05e56c13275bf72628a5e" - integrity sha512-n9mQfIYQbbNTbefyQnRHZPWuTEwG1rY4a9yKlIWHSTbgwI+XUMGRYd0uJ5pE2UbrNX0WvnMBA1zJ3Lrecpra/A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - dom-align "^1.7.0" - lodash "^4.17.21" - rc-util "^5.3.0" - resize-observer-polyfill "^1.5.1" - -rc-cascader@~1.4.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.3.tgz#d91b0dcf8157b60ebe9ec3e58b4db054d5299464" - integrity sha512-Q4l9Mv8aaISJ+giVnM9IaXxDeMqHUGLvi4F+LksS6pHlaKlN4awop/L+IMjIXpL+ug/ojaCyv/ixcVopJYYCVA== - dependencies: - "@babel/runtime" "^7.12.5" - array-tree-filter "^2.1.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - warning "^4.0.1" - -rc-checkbox@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.2.tgz#f91b3678c7edb2baa8121c9483c664fa6f0aefc1" - integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - -rc-collapse@~3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.1.2.tgz#76028a811b845d03d9460ccc409c7ea8ad09db14" - integrity sha512-HujcKq7mghk/gVKeI6EjzTbb8e19XUZpakrYazu1MblEZ3Hu3WBMSN4A3QmvbF6n1g7x6lUlZvsHZ5shABWYOQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.3.4" - rc-util "^5.2.1" - shallowequal "^1.1.0" - -rc-dialog@~8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.6.0.tgz#3b228dac085de5eed8c6237f31162104687442e7" - integrity sha512-GSbkfqjqxpZC5/zc+8H332+q5l/DKUhpQr0vdX2uDsxo5K0PhvaMEVjyoJUTkZ3+JstEADQji1PVLVb/2bJeOQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-motion "^2.3.0" - rc-util "^5.6.1" - -rc-drawer@~4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.3.1.tgz#356333a7af01b777abd685c96c2ce62efb44f3f3" - integrity sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-util "^5.7.0" - -rc-dropdown@^3.2.0, rc-dropdown@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090" - integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-trigger "^5.0.4" - -rc-field-form@~1.20.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.20.1.tgz#d1c51888107cf075b42704b7b575bef84c359291" - integrity sha512-f64KEZop7zSlrG4ef/PLlH12SLn6iHDQ3sTG+RfKBM45hikwV1i8qMf53xoX12NvXXWg1VwchggX/FSso4bWaA== - dependencies: - "@babel/runtime" "^7.8.4" - async-validator "^3.0.3" - rc-util "^5.8.0" - -rc-image@~5.2.5: - version "5.2.5" - resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-5.2.5.tgz#44e6ffc842626827960e7ab72e1c0d6f3a8ce440" - integrity sha512-qUfZjYIODxO0c8a8P5GeuclYXZjzW4hV/5hyo27XqSFo1DmTCs2HkVeQObkcIk5kNsJtgsj1KoPThVsSc/PXOw== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-dialog "~8.6.0" - rc-util "^5.0.6" - -rc-input-number@~7.1.0: - version "7.1.4" - resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-7.1.4.tgz#9d7410c91ff8dc6384d0233c20df278982989f9a" - integrity sha512-EG4iqkqyqzLRu/Dq+fw2od7nlgvXLEatE+J6uhi3HXE1qlM3C7L6a7o/hL9Ly9nimkES2IeQoj3Qda3I0izj3Q== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.9.8" - -rc-mentions@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.6.1.tgz#46035027d64aa33ef840ba0fbd411871e34617ae" - integrity sha512-LDzGI8jJVGnkhpTZxZuYBhMz3avcZZqPGejikchh97xPni/g4ht714Flh7DVvuzHQ+BoKHhIjobHnw1rcP8erg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-menu "^9.0.0" - rc-textarea "^0.3.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - -rc-menu@^9.0.0, rc-menu@~9.0.12: - version "9.0.14" - resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.0.14.tgz#289bda4a2f6c5ebb3248e2e305d52cf0c73cb9d5" - integrity sha512-CIox5mZeLDAi32SlHrV7UeSjv7tmJJhwRyxQtZCKt351w3q59XlL4WMFOmtT9gwIfP9h0XoxdBZUMe/xzkp78A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.4.3" - rc-overflow "^1.2.0" - rc-trigger "^5.1.2" - rc-util "^5.12.0" - shallowequal "^1.1.0" - -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0, rc-motion@^2.4.3: - version "2.4.4" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.4.tgz#e995d5fa24fc93065c24f714857cf2677d655bb0" - integrity sha512-ms7n1+/TZQBS0Ydd2Q5P4+wJTSOrhIrwNxLXCZpR7Fa3/oac7Yi803HDALc2hLAKaCTQtw9LmQeB58zcwOsqlQ== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-util "^5.2.1" - -rc-notification@~4.5.7: - version "4.5.7" - resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.7.tgz#265e6e6a0c1a0fac63d6abd4d832eb8ff31522f1" - integrity sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.2.0" - rc-util "^5.0.1" - -rc-overflow@^1.0.0, rc-overflow@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.2.2.tgz#95b0222016c0cdbdc0db85f569c262e7706a5f22" - integrity sha512-X5kj9LDU1ue5wHkqvCprJWLKC+ZLs3p4He/oxjZ1Q4NKaqKBaYf5OdSzRSgh3WH8kSdrfU8LjvlbWnHgJOEkNQ== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-resize-observer "^1.0.0" - rc-util "^5.5.1" - -rc-pagination@~3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.11.tgz#ad6b0659c4966df494bb488630417c15261c4648" - integrity sha512-i0pUAVnhkpkvi2gunvHzSa97gj3m/m/pEC8K0mq9RqXnd3LrPipgViaca0WZtetfsew6lpV9ndnD4JGU208U1w== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - -rc-picker@~2.5.10: - version "2.5.19" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.19.tgz#73d07546fac3992f0bfabf2789654acada39e46f" - integrity sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - date-fns "2.x" - dayjs "1.x" - moment "^2.24.0" - rc-trigger "^5.0.4" - rc-util "^5.4.0" - shallowequal "^1.1.0" - -rc-progress@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.4.tgz#66040d0fae7d8ced2b38588378eccb2864bad615" - integrity sha512-XBAif08eunHssGeIdxMXOmRQRULdHaDdIFENQ578CMb4dyewahmmfJRyab+hw4KH4XssEzzYOkAInTLS7JJG+Q== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - -rc-rate@~2.9.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.9.1.tgz#e43cb95c4eb90a2c1e0b16ec6614d8c43530a731" - integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.0.1" - -rc-resize-observer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.0.1.tgz#ccd0986543ff1bf49f8a581e8ac4bb714ed24dcd" - integrity sha512-OxO2mJI9e8610CAWBFfm52SPvWib0eNKjaSsRbbKHmLaJIxw944P+D61DlLJ/w2vuOjGNcalJu8VdqyNm/XCRg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-util "^5.0.0" - resize-observer-polyfill "^1.5.1" - -rc-select@^12.0.0, rc-select@~12.1.6: - version "12.1.13" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-12.1.13.tgz#c33560ccb9339d30695b52458f55efc35af35273" - integrity sha512-cPI+aesP6dgCAaey4t4upDbEukJe+XN0DK6oO/6flcCX5o28o7KNZD7JAiVtC/6fCwqwI/kSs7S/43dvHmBl+A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-overflow "^1.0.0" - rc-trigger "^5.0.4" - rc-util "^5.9.8" - rc-virtual-list "^3.2.0" - -rc-slider@~9.7.1: - version "9.7.4" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.4.tgz#430c860723bf6445ebf53517b550417a2f25eed1" - integrity sha512-pjLKLiDKiaL7/pNywfIBD+lDo5TtVo05KuIBSWEIoqu6FHh6IMWvthCiaODuYaVs3RLeF2nXOP5AjkD2Lt2Rwg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-tooltip "^5.0.1" - rc-util "^5.0.0" - shallowequal "^1.1.0" - -rc-steps@~4.1.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.4.tgz#0ba82db202d59ca52d0693dc9880dd145b19dc23" - integrity sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w== - dependencies: - "@babel/runtime" "^7.10.2" - classnames "^2.2.3" - rc-util "^5.0.1" - -rc-switch@~3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-3.2.2.tgz#d001f77f12664d52595b4f6fb425dd9e66fba8e8" - integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-util "^5.0.1" - -rc-table@~7.15.1: - version "7.15.2" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.15.2.tgz#f6ab73b2cfb1c76f3cf9682c855561423c6b5b22" - integrity sha512-TAs7kCpIZwc2mtvD8CMrXSM6TqJDUsy0rUEV1YgRru33T8bjtAtc+9xW/KC1VWROJlHSpU0R0kXjFs9h/6+IzQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-resize-observer "^1.0.0" - rc-util "^5.13.0" - shallowequal "^1.1.0" - -rc-tabs@~11.10.0: - version "11.10.3" - resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.10.3.tgz#171c33b340b5a83ababe53034c569b0422046781" - integrity sha512-rPxsci+76/nnJowNOBO3LTi4eL6trG49cR9yPc4XbuyHXhCHUujN5F4+jFl7trISy+yVN6gCZ/wiTtVnkcR/UA== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "2.x" - rc-dropdown "^3.2.0" - rc-menu "^9.0.0" - rc-resize-observer "^1.0.0" - rc-util "^5.5.0" - -rc-textarea@^0.3.0, rc-textarea@~0.3.0: - version "0.3.5" - resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.5.tgz#07ed445dddb94e5ae6764676923a49bddad9b2ec" - integrity sha512-qa+k5vDn9ct65qr+SgD2KwJ9Xz6P84lG2z+TDht/RBr71WnM/K61PqHUAcUyU6YqTJD26IXgjPuuhZR7HMw7eA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-resize-observer "^1.0.0" - rc-util "^5.7.0" - -rc-tooltip@^5.0.1, rc-tooltip@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.1.1.tgz#94178ed162d0252bc4993b725f5dc2ac0fccf154" - integrity sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA== - dependencies: - "@babel/runtime" "^7.11.2" - rc-trigger "^5.0.0" - -rc-tree-select@~4.3.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.3.3.tgz#28eba4d8a8dc8c0f9b61d83ce465842a6915eca4" - integrity sha512-0tilOHLJA6p+TNg4kD559XnDX3PTEYuoSF7m7ryzFLAYvdEEPtjn0QZc5z6L0sMKBiBlj8a2kf0auw8XyHU3lA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-select "^12.0.0" - rc-tree "^4.0.0" - rc-util "^5.0.5" - -rc-tree@^4.0.0, rc-tree@~4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-4.2.2.tgz#4429187cbbfbecbe989714a607e3de8b3ab7763f" - integrity sha512-V1hkJt092VrOVjNyfj5IYbZKRMHxWihZarvA5hPL/eqm7o2+0SNkeidFYm7LVVBrAKBpOpa0l8xt04uiqOd+6w== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-util "^5.0.0" - rc-virtual-list "^3.0.1" - -rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10: - version "5.2.10" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.2.10.tgz#8a0057a940b1b9027eaa33beec8a6ecd85cce2b1" - integrity sha512-FkUf4H9BOFDaIwu42fvRycXMAvkttph9AlbCZXssZDVzz2L+QZ0ERvfB/4nX3ZFPh1Zd+uVGr1DEDeXxq4J1TA== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-align "^4.0.0" - rc-motion "^2.0.0" - rc-util "^5.5.0" - -rc-upload@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.3.2.tgz#3b56c8bdf7b25eab357e65453e032b7b10c6f3cc" - integrity sha512-v0HdwC/19xKAn1OYZ4hTMUSqSs/IA0n1v4p/cioSSnKubHrdpcCXC45N+TFMSOZtBlf4+xMNCFo3KDih31lAMg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.2.0" - -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.13.0, rc-util@^5.13.1, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: - version "5.15.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.15.0.tgz#3527bd6c5806cf04476e17a0c7bf094fc8ea4666" - integrity sha512-8RI8sjOCXD3FhD3dzQNBQetpGol6BBd3sHQ/8jSGk9NPT0CH3JGtBfPODnASyE7AdDpCFQMOmgcp9CBs3S/1hg== - dependencies: - "@babel/runtime" "^7.12.5" - react-is "^16.12.0" - shallowequal "^1.1.0" - -rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.2.tgz#1078327aa7230b5e456d679ed2ce99f3c036ebd1" - integrity sha512-OyVrrPvvFcHvV0ssz5EDZ+7Rf5qLat/+mmujjchNw5FfbJWNDwkpQ99EcVE6+FtNRmX9wFa1LGNpZLUTvp/4GQ== - dependencies: - classnames "^2.2.6" - rc-resize-observer "^1.0.0" - rc-util "^5.0.7" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-is@^16.12.0, react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regenerator-runtime@^0.13.4: - 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== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" - -resolve-file@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/resolve-file/-/resolve-file-0.3.0.tgz#11e1fb464566d3a7c500cb7e9481e8f0b00a14ef" - integrity sha1-EeH7RkVm06fFAMt+lIHo8LAKFO8= - dependencies: - cwd "^0.10.0" - expand-tilde "^2.0.2" - extend-shallow "^2.0.1" - fs-exists-sync "^0.1.0" - homedir-polyfill "^1.0.1" - lazy-cache "^2.0.2" - resolve "^1.2.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.2.0, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^6.6.7: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass@^1.x: - version "1.43.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f" - integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg== - dependencies: - chokidar ">=3.0.0 <4.0.0" - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -scroll-into-view-if-needed@^2.2.25: - version "2.2.28" - resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz#5a15b2f58a52642c88c8eca584644e01703d645a" - integrity sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w== - dependencies: - compute-scroll-into-view "^1.0.17" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -"semver@2 || 3 || 4 || 5", semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -send@latest: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -set-getter@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.1.tgz#a3110e1b461d31a9cfc8c5c9ee2e9737ad447102" - integrity sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw== - dependencies: - to-object-path "^0.3.0" - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.1, source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= - dependencies: - duplexer "~0.1.1" - -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-convert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" - integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.matchall@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da" - integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -stylus@^0.x: - version "0.55.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" - integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== - dependencies: - css "^3.0.0" - debug "~3.1.0" - glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.3.0" - source-map "^0.7.3" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through@2, through@^2.3.8, through@~2.3, through@~2.3.1: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmp@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tsconfig-paths@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.1.0, tslib@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typescript@^4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unix-crypt-td-js@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" - integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@^1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -warning@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which@^1.2.12: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== diff --git a/ui-ori/.env.development b/ui-ori/.env.development deleted file mode 100644 index 4ee3e58b3b..0000000000 --- a/ui-ori/.env.development +++ /dev/null @@ -1,7 +0,0 @@ -PORT=3001 -REACT_APP_VERSION=$npm_package_version -REACT_APP_NAME=$npm_package_name -REACT_APP_SENTRY_DSN=https://10930d3b0a8d427cad2147d6d845be56@o226447.ingest.sentry.io/5721090 -REACT_APP_SENTRY_ENABLED=false -# REACT_APP_RELEASE_VERSION is set in config-overrides.js -REACT_APP_RELEASE_VERSION=unknown diff --git a/ui-ori/.env.production b/ui-ori/.env.production deleted file mode 100644 index 958d4fd2b2..0000000000 --- a/ui-ori/.env.production +++ /dev/null @@ -1,8 +0,0 @@ -INLINE_RUNTIME_CHUNK=false -PUBLIC_URL=__PUBLIC_PATH_PREFIX__/ -REACT_APP_VERSION=$npm_package_version -REACT_APP_NAME=$npm_package_name -REACT_APP_SENTRY_DSN=https://10930d3b0a8d427cad2147d6d845be56@o226447.ingest.sentry.io/5721090 -REACT_APP_SENTRY_ENABLED=true -# REACT_APP_RELEASE_VERSION is set in config-overrides.js -REACT_APP_RELEASE_VERSION=unknown diff --git a/ui-ori/.gitignore b/ui-ori/.gitignore deleted file mode 100644 index 617f997255..0000000000 --- a/ui-ori/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -node_modules -.pnp -.pnp.js - -# testing -coverage - -# production -build/ -dist/ -.rpt2_cache - -# misc -.DS_Store -.env -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/ui-ori/.openapi_config.yaml b/ui-ori/.openapi_config.yaml deleted file mode 100644 index 5bc4e8292c..0000000000 --- a/ui-ori/.openapi_config.yaml +++ /dev/null @@ -1,3 +0,0 @@ -enumPropertyNaming: original -modelPropertyNaming: original -supportsES6: true diff --git a/ui-ori/.prettierignore b/ui-ori/.prettierignore deleted file mode 100644 index a14d95455d..0000000000 --- a/ui-ori/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -build/ -public/ -lib/client/api/*.ts -tsconfig.json diff --git a/ui-ori/.prettierrc b/ui-ori/.prettierrc deleted file mode 100644 index 9d313aa4a5..0000000000 --- a/ui-ori/.prettierrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "semi": false, - "trailingComma": "es5", - "singleQuote": true -} diff --git a/ui-ori/.storybook/main.js b/ui-ori/.storybook/main.js deleted file mode 100644 index e92052f8cd..0000000000 --- a/ui-ori/.storybook/main.js +++ /dev/null @@ -1,42 +0,0 @@ -const path = require('path') - -function includeMorePaths(config) { - // find rule to handle *.tsx files - for (const rule of config.module.rules) { - for (const subRule of rule.oneOf || []) { - // /\.(js|mjs|jsx|ts|tsx)$/ - if (subRule.test instanceof RegExp && subRule.test.test('.tsx')) { - subRule.include.push(path.resolve(__dirname, '../lib')) - // although we don't care about the components inside diagnoseReportApp - // but it can't pass compile if we don't add it to the rule.include - subRule.include.push(path.resolve(__dirname, '../diagnoseReportApp')) - break - } - } - } - - return config -} - -// ref: https://harrietryder.co.uk/blog/storybook-with-typscript-customize-cra/ -const custom = require('../config-overrides') - -module.exports = { - stories: [ - '../lib/components/**/*.stories.@(ts|tsx|js|jsx)', - '../lib/apps/**/*.stories.@(ts|tsx|js|jsx)', - ], - addons: [ - '@storybook/preset-create-react-app', - '@storybook/addon-actions', - '@storybook/addon-links', - ], - webpackFinal: (storybookConfig) => { - const customConfig = custom(storybookConfig) - const newConfigs = { - ...storybookConfig, - module: { ...storybookConfig.module, rules: customConfig.module.rules }, - } - return includeMorePaths(newConfigs) - }, -} diff --git a/ui-ori/.storybook/preview.js b/ui-ori/.storybook/preview.js deleted file mode 100644 index 472fca8790..0000000000 --- a/ui-ori/.storybook/preview.js +++ /dev/null @@ -1,22 +0,0 @@ -import React, { useEffect } from 'react' -import { addDecorator } from '@storybook/react' -import { Root } from '@lib/components' -import client from '@lib/client' -import * as auth from '@lib/utils/auth' - -function StoryRoot({ children }) { - useEffect(() => { - client - .getInstance() - .userLogin({ - username: 'root', - password: '', - type: 0, - }) - .then((r) => auth.setAuthToken(r.data.token)) - }, []) - - return {children} -} - -addDecorator((storyFn) => {storyFn()}) diff --git a/ui-ori/config-overrides.js b/ui-ori/config-overrides.js deleted file mode 100755 index c5c366a7a2..0000000000 --- a/ui-ori/config-overrides.js +++ /dev/null @@ -1,208 +0,0 @@ -const path = require('path') -const fs = require('fs') -const os = require('os') -const { - override, - fixBabelImports, - addLessLoader, - addWebpackPlugin, - addDecoratorsLegacy, - addBundleVisualizer, - getBabelLoader, -} = require('customize-cra') -const addYaml = require('react-app-rewire-yaml') -const { alias, configPaths } = require('react-app-rewire-alias') -const webpack = require('webpack') -const WebpackBar = require('webpackbar') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const rewireHtmlWebpackPlugin = require('react-app-rewire-html-webpack-plugin') - -function injectDistroToHTML(config, env) { - const distroInfo = Object.entries(require('./lib/distribution.json')).reduce( - (prev, [k, v]) => { - return { - ...prev, - [`distro_${k}`]: v, - } - }, - {} - ) - return rewireHtmlWebpackPlugin(config, env, distroInfo) -} - -function isBuildAsDevServer() { - return process.env.NODE_ENV !== 'production' -} - -const enableEslintIgnore = () => (config) => { - const eslintRule = config.module.rules.filter( - (r) => - r.use && r.use.some((u) => u.options && u.options.useEslintrc !== void 0) - )[0] - const options = eslintRule.use[0].options - options.ignore = true - options.ignorePattern = 'lib/client/api/*.ts' - options.baseConfig.rules = { - 'jsx-a11y/anchor-is-valid': 'off', - } - return config -} - -const disableMinimize = () => (config) => { - config.optimization.minimize = false - config.optimization.splitChunks = false - config.devtool = false - getBabelLoader(config).options.compact = false - return config -} - -const disableMinimizeByEnv = () => (config) => { - if (process.env.NO_MINIMIZE) { - disableMinimize()(config) - } - return config -} - -const addAlias = () => (config) => { - alias({ - ...configPaths('tsconfig.paths.json'), - })(config) - return config -} - -const addExtraEntries = () => (config) => { - const e = require('react-app-rewire-multiple-entry')([ - { - entry: 'diagnoseReportApp', - template: 'public/diagnoseReport.html', - outPath: '/diagnoseReport.html', - }, - ]) - e.addMultiEntry(config) - return config -} - -// See https://github.com/ant-design/ant-design/issues/14895 -const ignoreMiniCssExtractOrder = () => (config) => { - for (let i = 0; i < config.plugins.length; i++) { - const p = config.plugins[i] - if (!!p.constructor && p.constructor.name === 'MiniCssExtractPlugin') { - const miniCssExtractOptions = { ...p.options, ignoreOrder: true } - config.plugins[i] = new MiniCssExtractPlugin(miniCssExtractOptions) - break - } - } - return config -} - -const addWebpackBundleSize = () => (config) => { - if (isBuildAsDevServer()) { - return config - } - addBundleVisualizer({ - openAnalyzer: false, - })(config) - return config -} - -const supportDynamicPublicPathPrefix = () => (config) => { - if (!isBuildAsDevServer()) { - // Rewrite to use relative path for `url()` in CSS. - for (const rule of config.module.rules) { - for (const subRule of rule.oneOf || []) { - for (const use of subRule.use || []) { - if (use.loader === MiniCssExtractPlugin.loader) { - use.options.publicPath = '../../' - } - } - } - } - } - return config -} - -const overrideProcessEnv = (value) => (config) => { - const plugin = config.plugins.find( - (plugin) => plugin.constructor.name === 'DefinePlugin' - ) - const processEnv = plugin.definitions['process.env'] || {} - - plugin.definitions['process.env'] = { - ...processEnv, - ...value, - } - - return config -} - -const getInternalVersion = () => { - // react-app-rewired does not support async override config method right now, - // subscribe: https://github.com/timarney/react-app-rewired/pull/543 - const version = fs - .readFileSync('../release-version', 'utf8') - .split(os.EOL) - .map((l) => l.trim()) - .filter((l) => !l.startsWith('#') && l !== '')[0] - - if (version === '') { - throw new Error( - `invalid release version, please check the release-version @tidb-dashboard/root` - ) - } - - return version -} - -module.exports = override( - fixBabelImports('import', { - libraryName: 'antd', - libraryDirectory: 'es', - style: true, - }), - ignoreMiniCssExtractOrder(), - addLessLoader({ - javascriptEnabled: true, - modifyVars: { - '@primary-color': '#3351ff', - '@body-background': '#fff', - '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', - '@tooltip-max-width': '500px', - }, - globalVars: { - '@padding-page': '48px', - '@gray-1': '#fff', - '@gray-2': '#fafafa', - '@gray-3': '#f5f5f5', - '@gray-4': '#f0f0f0', - '@gray-5': '#d9d9d9', - '@gray-6': '#bfbfbf', - '@gray-7': '#8c8c8c', - '@gray-8': '#595959', - '@gray-9': '#262626', - '@gray-10': '#000', - }, - modules: { - localIdentName: '[local]--[hash:base64:5]', - }, - }), - addAlias(), - addDecoratorsLegacy(), - enableEslintIgnore(), - addYaml, - addWebpackBundleSize(), - addWebpackPlugin(new WebpackBar()), - addWebpackPlugin( - new webpack.NormalModuleReplacementPlugin( - /antd\/es\/style\/index\.less/, - path.resolve(__dirname, 'lib/antd.less') - ) - ), - disableMinimizeByEnv(), - addExtraEntries(), - supportDynamicPublicPathPrefix(), - overrideProcessEnv({ - REACT_APP_RELEASE_VERSION: JSON.stringify(getInternalVersion()), - REACT_APP_DISTRO_BUILD_TAG: process.env.DISTRO_BUILD_TAG, - }), - injectDistroToHTML -) diff --git a/ui-ori/dashboardApp/index.ts b/ui-ori/dashboardApp/index.ts deleted file mode 100755 index a0c5d00d53..0000000000 --- a/ui-ori/dashboardApp/index.ts +++ /dev/null @@ -1,182 +0,0 @@ -import '@lib/utils/wdyr' - -import * as singleSpa from 'single-spa' -import i18next from 'i18next' -import { Modal } from 'antd' -import NProgress from 'nprogress' -import './nprogress.less' - -import AppRegistry from '@lib/utils/registry' -import * as routing from '@lib/utils/routing' -import * as auth from '@lib/utils/auth' -import * as i18n from '@lib/utils/i18n' -import { saveAppOptions, loadAppOptions } from '@lib/utils/appOptions' -import { - initSentryRoutingInstrument, - applySentryTracingInterceptor, -} from '@lib/utils/sentryHelpers' -import client, { InfoInfoResponse } from '@lib/client' - -import LayoutMain from '@dashboard/layout/main' -import LayoutSignIn from '@dashboard/layout/signin' - -import AppUserProfile from '@lib/apps/UserProfile/index.meta' -import AppOverview from '@lib/apps/Overview/index.meta' -import AppClusterInfo from '@lib/apps/ClusterInfo/index.meta' -import AppKeyViz from '@lib/apps/KeyViz/index.meta' -import AppStatement from '@lib/apps/Statement/index.meta' -import AppSystemReport from '@lib/apps/SystemReport/index.meta' -import AppSlowQuery from '@lib/apps/SlowQuery/index.meta' -import AppDiagnose from '@lib/apps/Diagnose/index.meta' -import AppSearchLogs from '@lib/apps/SearchLogs/index.meta' -import AppInstanceProfiling from '@lib/apps/InstanceProfiling/index.meta' -import AppContinuousProfiling from '@lib/apps/ContinuousProfiling/index.meta' -import AppQueryEditor from '@lib/apps/QueryEditor/index.meta' -import AppConfiguration from '@lib/apps/Configuration/index.meta' -import AppDebugAPI from '@lib/apps/DebugAPI/index.meta' -import { handleSSOCallback, isSSOCallback } from '@lib/utils/authSSO' -import { mustLoadAppInfo, reloadWhoAmI } from '@lib/utils/store' -// import __APP_NAME__ from '@lib/apps/__APP_NAME__/index.meta' -// NOTE: Don't remove above comment line, it is a placeholder for code generator - -function removeSpinner() { - const spinner = document.getElementById('dashboard_page_spinner') - if (spinner) { - spinner.remove() - } -} - -async function webPageStart() { - const options = loadAppOptions() - if (options.lang) { - i18next.changeLanguage(options.lang) - } - i18n.addTranslations( - require.context('@dashboard/layout/translations/', false, /\.yaml$/) - ) - - let info: InfoInfoResponse - - try { - info = await mustLoadAppInfo() - } catch (e) { - Modal.error({ - title: `Failed to connect to server`, - content: '' + e, - okText: 'Reload', - onOk: () => window.location.reload(), - }) - removeSpinner() - return - } - - if (info?.enable_telemetry) { - initSentryRoutingInstrument() - const instance = client.getAxiosInstance() - applySentryTracingInterceptor(instance) - } - - const registry = new AppRegistry(options) - - NProgress.configure({ - showSpinner: false, - }) - window.addEventListener('single-spa:before-routing-event', () => { - NProgress.set(0.2) - }) - window.addEventListener('single-spa:routing-event', () => { - NProgress.done(true) - }) - - singleSpa.registerApplication( - 'layout', - AppRegistry.newReactSpaApp(() => LayoutMain, 'root'), - () => { - return !routing.isSignInPage() - }, - { registry } - ) - - singleSpa.registerApplication( - 'signin', - AppRegistry.newReactSpaApp(() => LayoutSignIn, 'root'), - () => { - return routing.isSignInPage() - }, - { registry } - ) - - registry - .register(AppUserProfile) - .register(AppOverview) - .register(AppClusterInfo) - .register(AppKeyViz) - .register(AppStatement) - .register(AppSystemReport) - .register(AppSlowQuery) - .register(AppDiagnose) - .register(AppSearchLogs) - .register(AppInstanceProfiling) - .register(AppContinuousProfiling) - .register(AppQueryEditor) - .register(AppConfiguration) - .register(AppDebugAPI) - // .register(__APP_NAME__) - // NOTE: Don't remove above comment line, it is a placeholder for code generator - - try { - await reloadWhoAmI() - - if (routing.isLocationMatch('/')) { - singleSpa.navigateToUrl('#' + registry.getDefaultRouter()) - } - } catch (e) { - // If there are auth errors, redirection will happen any way. So we continue. - } - - window.addEventListener('single-spa:app-change', () => { - if (!routing.isSignInPage()) { - if (!auth.getAuthTokenAsBearer()) { - singleSpa.navigateToUrl('#' + routing.signInRoute) - } - } - }) - - window.addEventListener('single-spa:first-mount', () => { - removeSpinner() - }) - - singleSpa.start() -} - -async function main() { - if (routing.isPortalPage()) { - // the portal page is only used to receive options - function handlePortalEvent(event) { - const { type, token, lang, hideNav, redirectPath } = event.data - // the event type must be "DASHBOARD_PORTAL_EVENT" - if (type !== 'DASHBOARD_PORTAL_EVENT') { - return - } - - auth.setAuthToken(token) - saveAppOptions({ hideNav, lang }) - window.location.hash = `#${redirectPath}` - window.location.reload() - - window.removeEventListener('message', handlePortalEvent) - } - - window.addEventListener('message', handlePortalEvent) - return - } - - if (isSSOCallback()) { - await handleSSOCallback() - return - } - - await webPageStart() -} - -main() diff --git a/ui-ori/dashboardApp/layout/main/Sider/Banner.module.less b/ui-ori/dashboardApp/layout/main/Sider/Banner.module.less deleted file mode 100644 index 766dad10e4..0000000000 --- a/ui-ori/dashboardApp/layout/main/Sider/Banner.module.less +++ /dev/null @@ -1,45 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.banner { - background: @primary-color; - color: #fff; - cursor: pointer; - overflow: hidden; - user-select: none; - position: relative; - margin-bottom: 20px; - flex-shrink: 0; -} - -.bannerLeft { - padding: 20px 16px 20px 24px; -} - -.bannerRight { - position: absolute; - top: 0; - height: 100%; - transition: background-color 0.2s @ease-out; - display: flex; -} - -.banner:hover .bannerRight { - background: lighten(@primary-color, 5%); -} - -.bannerLogo { - margin: 5px 0; -} - -.bannerContent { - margin-left: 15px; -} - -.bannerTitle { - font-size: 1rem; -} - -.bannerVersion { - font-size: 0.8rem; - opacity: 0.7; -} diff --git a/ui-ori/dashboardApp/layout/main/Sider/Banner.tsx b/ui-ori/dashboardApp/layout/main/Sider/Banner.tsx deleted file mode 100644 index 37edf1b06b..0000000000 --- a/ui-ori/dashboardApp/layout/main/Sider/Banner.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import React, { useMemo, useRef } from 'react' -import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons' -import { useSize } from 'ahooks' -import Flexbox from '@g07cha/flexbox-react' -import { useSpring, animated } from 'react-spring' -import { InfoInfoResponse } from '@lib/client' -import { useTranslation } from 'react-i18next' -import { TFunction } from 'i18next' - -import { ReactComponent as Logo } from './logo-icon-light.svg' -import styles from './Banner.module.less' -import { store } from '@lib/utils/store' - -const toggleWidth = 40 -const toggleHeight = 50 - -function parseVersion(i: InfoInfoResponse, t: TFunction) { - if (!i.version) { - return null - } - if (i.version.standalone !== 'No') { - // For Standalone == Yes / Unknown, display internal version - if (i.version.internal_version === 'nightly') { - let vPrefix = i.version.internal_version - if (i.version.build_git_hash) { - vPrefix += `-${i.version.build_git_hash.substr(0, 8)}` - } - // e.g. nightly-xxxxxxxx - return vPrefix - } - if (i.version.internal_version) { - // e.g. v2020.07.01.1 - return `v${i.version.internal_version}` - } - return null - } - - if (i.version.pd_version) { - // e.g. PD v4.0.1 - return `${t('distro.pd')} ${i.version.pd_version}` - } -} - -export default function ToggleBanner({ - fullWidth, - collapsedWidth, - collapsed, - onToggle, -}) { - const { t } = useTranslation() - const bannerRef = useRef(null) - const bannerSize = useSize(bannerRef) - const transBanner = useSpring({ - opacity: collapsed ? 0 : 1, - height: collapsed ? toggleHeight : bannerSize.height || 0, - }) - const transButton = useSpring({ - left: collapsed ? 0 : fullWidth - toggleWidth, - width: collapsed ? collapsedWidth : toggleWidth, - }) - - const appInfo = store.useState((s) => s.appInfo) - - const version = useMemo(() => { - if (appInfo) { - return parseVersion(appInfo, t) - } - return null - }, [appInfo, t]) - - return ( -
    - -
    - -
    - -
    -
    -
    - {t('distro.tidb')} Dashboard -
    -
    - {version || 'Version unknown'} -
    -
    -
    -
    -
    - - {collapsed ? ( - - ) : ( - - )} - -
    - ) -} diff --git a/ui-ori/dashboardApp/layout/main/Sider/index.module.less b/ui-ori/dashboardApp/layout/main/Sider/index.module.less deleted file mode 100644 index 67dbe8cd8b..0000000000 --- a/ui-ori/dashboardApp/layout/main/Sider/index.module.less +++ /dev/null @@ -1,61 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -@sider-background: #f7f7fa; - -.sider { - position: fixed; - left: 0; - top: 0; - height: 100%; - z-index: 1; - background: linear-gradient(@sider-background, #ebeffa); - overflow-x: hidden; - overflow-y: auto; - transition: none; - user-select: none; - - :global { - .ant-layout-sider-children { - display: flex; - flex-direction: column; - padding-bottom: 20px; - } - - .ant-menu { - border-right: 0; - background: none; - } - - .ant-menu-submenu-selected { - color: #000; - } - - .ant-menu-item { - &::after { - left: 0; - right: auto; - border-width: 5px; - } - - &:hover { - background: rgba(darken(@sider-background, 30%), 0.15); - } - - > a { - color: #666; - - &:hover { - color: @primary-color; - } - } - - &.ant-menu-item-selected { - background: rgba(darken(@sider-background, 30%), 0.15); - - > a { - color: #000; - } - } - } - } -} diff --git a/ui-ori/dashboardApp/layout/main/Sider/index.tsx b/ui-ori/dashboardApp/layout/main/Sider/index.tsx deleted file mode 100644 index e24f22c9f3..0000000000 --- a/ui-ori/dashboardApp/layout/main/Sider/index.tsx +++ /dev/null @@ -1,201 +0,0 @@ -import React, { useState, useMemo } from 'react' -import { ExperimentOutlined, BugOutlined, AimOutlined } from '@ant-design/icons' -import { Layout, Menu } from 'antd' -import { Link } from 'react-router-dom' -import { useEventListener } from 'ahooks' -import { useTranslation } from 'react-i18next' -import { useSpring, animated } from 'react-spring' -import Banner from './Banner' -import styles from './index.module.less' -import { store, useIsFeatureSupport } from '@lib/utils/store' - -function useAppMenuItem(registry, appId, title?: string, hideIcon?: boolean) { - const { t } = useTranslation() - const app = registry.apps[appId] - if (!app) { - return null - } - return ( - - - {!hideIcon && app.icon ? : null} - {title ? title : t(`${appId}.nav_title`, appId)} - - - ) -} - -function useActiveAppId(registry) { - const [appId, set] = useState('') - useEventListener('single-spa:routing-event', () => { - const activeApp = registry.getActiveApp() - if (activeApp) { - set(activeApp.id) - } - }) - return appId -} - -function Sider({ - registry, - fullWidth, - defaultCollapsed, - collapsed, - collapsedWidth, - onToggle, - animationDelay, -}) { - const { t } = useTranslation() - const activeAppId = useActiveAppId(registry) - - const whoAmI = store.useState((s) => s.whoAmI) - const appInfo = store.useState((s) => s.appInfo) - const supportConprof = useIsFeatureSupport('conprof') - - const instanceProfilingMenuItem = useAppMenuItem( - registry, - 'instance_profiling', - '', - true - ) - const conprofMenuItem = useAppMenuItem( - registry, - 'continuous_profiling', - '', - true - ) - const profilingSubMenuItems = [instanceProfilingMenuItem] - if (supportConprof) { - profilingSubMenuItems.push(conprofMenuItem) - } - - const profilingSubMenu = ( - - - {t('profiling.nav_title')} - - } - > - {profilingSubMenuItems} - - ) - - const debugSubMenuItems = [ - profilingSubMenu, - useAppMenuItem(registry, 'debug_api'), - ] - - const debugSubMenu = ( - - - {t('nav.sider.debug')} - - } - > - {debugSubMenuItems} - - ) - - const experimentalSubMenuItems = [ - useAppMenuItem(registry, 'query_editor'), - useAppMenuItem(registry, 'configuration'), - ] - const experimentalSubMenu = ( - - - {t('nav.sider.experimental')} - - } - > - {experimentalSubMenuItems} - - ) - - const menuItems = [ - useAppMenuItem(registry, 'overview'), - useAppMenuItem(registry, 'cluster_info'), - useAppMenuItem(registry, 'statement'), - useAppMenuItem(registry, 'slow_query'), - useAppMenuItem(registry, 'keyviz'), - useAppMenuItem(registry, 'system_report'), - useAppMenuItem(registry, 'diagnose'), - useAppMenuItem(registry, 'search_logs'), - // useAppMenuItem(registry, '__APP_NAME__'), - // NOTE: Don't remove above comment line, it is a placeholder for code generator - debugSubMenu, - ] - - if (appInfo?.enable_experimental) { - menuItems.push(experimentalSubMenu) - } - - let displayName = whoAmI?.display_name || '...' - - const extraMenuItems = [ - useAppMenuItem(registry, 'dashboard_settings'), - useAppMenuItem(registry, 'user_profile', displayName), - ] - - const transSider = useSpring({ - width: collapsed ? collapsedWidth : fullWidth, - }) - - const defaultOpenKeys = useMemo(() => { - if (defaultCollapsed) { - return [] - } else { - return ['debug', 'experimental', 'profiling'] - } - }, [defaultCollapsed]) - - return ( - - - - - {menuItems} - - - {extraMenuItems} - - - - ) -} - -export default Sider diff --git a/ui-ori/dashboardApp/layout/main/Sider/logo-icon-light.svg b/ui-ori/dashboardApp/layout/main/Sider/logo-icon-light.svg deleted file mode 100644 index 3bf12df107..0000000000 --- a/ui-ori/dashboardApp/layout/main/Sider/logo-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ui-ori/dashboardApp/layout/main/index.module.less b/ui-ori/dashboardApp/layout/main/index.module.less deleted file mode 100644 index 4c050027a6..0000000000 --- a/ui-ori/dashboardApp/layout/main/index.module.less +++ /dev/null @@ -1,29 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.container { - height: 100vh; -} - -.content { - position: relative; - z-index: 3; - background: #fff; - min-height: 100vh; - - &:before, - &:after { - // Handle margin collapse - content: ' '; - display: table; - } -} - -.contentBack { - position: fixed; - z-index: 2; - background: #fff; - top: 0; - height: 100%; - right: 0; - box-shadow: 0 0 30px rgba(#000, 0.15); -} diff --git a/ui-ori/dashboardApp/layout/main/index.tsx b/ui-ori/dashboardApp/layout/main/index.tsx deleted file mode 100644 index 1bb57c86d3..0000000000 --- a/ui-ori/dashboardApp/layout/main/index.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import React, { useState, useCallback, useEffect } from 'react' -import { Root } from '@lib/components' -import { HashRouter as Router } from 'react-router-dom' -import { useSpring, animated } from 'react-spring' - -import { useLocalStorageState } from '@lib/utils/useLocalStorageState' - -import Sider from './Sider' -import styles from './index.module.less' - -const siderWidth = 260 -const siderCollapsedWidth = 80 -const collapsedContentOffset = siderCollapsedWidth - siderWidth -const contentOffsetTrigger = collapsedContentOffset * 0.99 - -function triggerResizeEvent() { - const event = document.createEvent('HTMLEvents') - event.initEvent('resize', true, false) - window.dispatchEvent(event) -} - -const useContentLeftOffset = (collapsed) => { - const [offset, setOffset] = useState(siderWidth) - const onAnimationStart = useCallback(() => { - if (!collapsed) { - setOffset(siderWidth) - } - }, [collapsed]) - const onAnimationFrame = useCallback( - ({ x }) => { - if (collapsed && x < contentOffsetTrigger) { - setOffset(siderCollapsedWidth) - } - }, - [collapsed] - ) - useEffect(triggerResizeEvent, [offset]) - return { - contentLeftOffset: offset, - onAnimationStart, - onAnimationFrame, - } -} - -export default function App({ registry }) { - const [collapsed, setCollapsed] = useLocalStorageState( - 'layout.sider.collapsed', - false - ) - const [defaultCollapsed] = useState(collapsed) - const { contentLeftOffset, onAnimationStart, onAnimationFrame } = - useContentLeftOffset(collapsed) - const transContentBack = useSpring({ - x: collapsed ? collapsedContentOffset : 0, - onStart: onAnimationStart, - onFrame: onAnimationFrame, - }) - const transContainer = useSpring({ - opacity: 1, - from: { opacity: 0 }, - delay: 100, - }) - - const handleToggle = useCallback(() => { - setCollapsed((c) => !c) - }, [setCollapsed]) - - const { appOptions } = registry - - return ( - - - - {!appOptions.hideNav && ( - <> - - `translate3d(${x}px, 0, 0)` - ), - }} - > - - )} -
    -
    -
    -
    -
    -
    - ) -} diff --git a/ui-ori/dashboardApp/layout/signin/index.module.less b/ui-ori/dashboardApp/layout/signin/index.module.less deleted file mode 100644 index a58bd5b744..0000000000 --- a/ui-ori/dashboardApp/layout/signin/index.module.less +++ /dev/null @@ -1,168 +0,0 @@ -@import '~antd/es/style/themes/default.less'; -@import '~antd/es/button/style/mixin.less'; - -@content-width: 400px; - -.container { - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; - display: flex; - flex-direction: row; - align-items: stretch; -} - -.contantContainer { - min-width: @content-width; - width: 38%; - background: #fff; - position: relative; -} - -.dialogContainer { - height: 100%; - display: flex; - align-items: center; - justify-content: center; - box-sizing: border-box; - padding: 30px 65px; - overflow-y: auto; -} - -.dialog { - max-width: 300px; - width: 100%; - margin: auto; -} - -.landing { - flex-grow: 1; - background-image: url(./landing.svg); - background-size: cover; - background-position: center left; -} - -.logo { - height: 40px; - margin-bottom: 80px; -} - -.signInButton { - margin-top: 10px; - margin-bottom: 20px; - font-size: 0.9rem; -} - -.extraLink { - font-size: 0.8rem; - margin: 15px 0; - a { - color: @gray-7; - &:hover { - color: @gray-7; - } - } - - &.clickable { - a:hover { - color: @link-hover-color; - } - } -} - -.alternativeFormLayer { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - background: #fff; - z-index: 2; -} - -.alternativeCloseButton { - font-size: 1rem; - border: 0; - background: #fff; - color: @text-color; - cursor: pointer; - padding: @padding-xss; - padding-right: 0; - - &:hover, - &:active, - &:focus { - color: @link-hover-color; - outline: 0; - } -} - -.alternativeButton { - .btn; - .btn-default; - - height: auto; - width: 100%; - color: @text-color; - - margin-bottom: @padding-sm; - text-align: left; - padding: @padding-md; - padding-right: 50px + @padding-md; - position: relative; - word-wrap: normal; - white-space: normal; - line-height: 1; - - &:hover, - &:active, - &:focus { - color: @text-color; - } - - .title { - color: @heading-color; - margin-bottom: @padding-sm; - } - - .icon { - font-size: 1.3rem; - position: absolute; - right: 0; - width: 50px; - text-align: center; - opacity: 0; - transform: translateX(-5px); - transition: opacity 0.2s linear, transform 0.2s linear; - color: @gray-6; - - // For vertical align - top: 50%; - margin-top: -20px; - line-height: 40px; - } - - &:hover, - &:active, - &:focus { - .icon { - opacity: 1; - transform: none; - } - } -} - -.container :global { - .formAnimation { - animation: 0.2s @ease-out-circ 0.5s antZoomBigIn; - animation-fill-mode: both; - animation-iteration-count: 1; - } - .landingAnimation { - animation: 0.5s linear 0 antFadeIn; - animation-fill-mode: both; - animation-iteration-count: 1; - } -} diff --git a/ui-ori/dashboardApp/layout/signin/index.tsx b/ui-ori/dashboardApp/layout/signin/index.tsx deleted file mode 100755 index 3b88d0c4d6..0000000000 --- a/ui-ori/dashboardApp/layout/signin/index.tsx +++ /dev/null @@ -1,519 +0,0 @@ -import CSSMotion from 'rc-animate/es/CSSMotion' -import cx from 'classnames' -import * as singleSpa from 'single-spa' -import React, { - useState, - useEffect, - useRef, - useCallback, - useMemo, - ReactNode, -} from 'react' -import { - DownOutlined, - GlobalOutlined, - LockOutlined, - UserOutlined, - KeyOutlined, - ArrowRightOutlined, - CloseOutlined, -} from '@ant-design/icons' -import { Form, Input, Button, message, Typography, Modal } from 'antd' -import { useTranslation } from 'react-i18next' -import { useMount } from 'react-use' -import Flexbox from '@g07cha/flexbox-react' -import { usePersistFn } from 'ahooks' - -import client, { ErrorStrategy, UserAuthenticateForm } from '@lib/client' -import { getAuthURL } from '@lib/utils/authSSO' -import { AuthTypes } from '@lib/utils/auth' -import { isDistro } from '@lib/utils/i18n' -import * as auth from '@lib/utils/auth' -import { Root, AppearAnimate, LanguageDropdown } from '@lib/components' - -import styles from './index.module.less' -import { ReactComponent as Logo } from './logo.svg' -import { useIsFeatureSupport } from '@lib/utils/store' - -enum DisplayFormType { - uninitialized, - tidbCredential, - shareCode, - sso, -} - -function AlternativeAuthLink({ onClick }) { - const { t } = useTranslation() - return ( -
    - ) -} - -function LanguageDrop() { - return ( - - ) -} - -interface IAlternativeFormButtonProps - extends React.ButtonHTMLAttributes { - title: string - description: string - className?: string -} - -function AlternativeFormButton({ - title, - description, - className, - ...restProps -}: IAlternativeFormButtonProps) { - return ( - - ) -} - -function AlternativeAuthForm({ - className, - onClose, - onSwitchForm, - supportedAuthTypes, - ...restProps -}) { - const { t } = useTranslation() - - return ( -
    -
    -
    - - -

    - -
    {t('signin.form.alternative.title')}
    - -
    -

    -
    - - onSwitchForm(DisplayFormType.tidbCredential)} - /> - - - onSwitchForm(DisplayFormType.shareCode)} - /> - - {Boolean(supportedAuthTypes.indexOf(AuthTypes.SSO) > -1) && ( - - onSwitchForm(DisplayFormType.sso)} - /> - - )} - - -
    -
    -
    - ) -} - -function useSignInSubmit( - successRoute, - fnLoginForm: (form) => UserAuthenticateForm, - onSuccess: (form) => void, - onFailure: () => void -) { - const { t } = useTranslation() - const [loading, setLoading] = useState(false) - const [error, setError] = useState(null) - - const clearErrorMsg = useCallback(() => { - setError(null) - }, []) - - const handleSubmit = usePersistFn(async (form) => { - try { - clearErrorMsg() - setLoading(true) - const r = await client.getInstance().userLogin(fnLoginForm(form), { - errorStrategy: ErrorStrategy.Custom, - }) - auth.setAuthToken(r.data.token) - message.success(t('signin.message.success')) - singleSpa.navigateToUrl(successRoute) - onSuccess(form) - } catch (e) { - if (!e.handled) { - const errMsg = t('signin.message.error', { msg: e.message }) - if ( - isDistro || - e.errCode !== 'error.api.user.insufficient_privileges' - ) { - setError(errMsg) - } else { - // only add help link for TiDB distro when meeting insufficient_privileges error - const errComp = ( - <> - {errMsg} - - {t('signin.message.access_doc')} - - - ) - setError(errComp) - } - onFailure() - } - } finally { - setLoading(false) - } - }) - - return { handleSubmit, loading, errorMsg: error, clearErrorMsg } -} - -const LAST_LOGIN_USERNAME_KEY = 'dashboard_last_login_username' - -function TiDBSignInForm({ successRoute, onClickAlternative }) { - const supportNonRootLogin = useIsFeatureSupport('nonRootLogin') - const { t } = useTranslation() - - const [refForm] = Form.useForm() - const refPassword = useRef(null) - - const { handleSubmit, loading, errorMsg, clearErrorMsg } = useSignInSubmit( - successRoute, - (form) => ({ - username: form.username, - password: form.password, - type: AuthTypes.SQLUser, - }), - (form) => { - localStorage.setItem(LAST_LOGIN_USERNAME_KEY, form.username) - }, - () => { - refForm.setFieldsValue({ password: '' }) - setTimeout(() => { - refPassword.current?.focus() - }, 0) - } - ) - - useMount(() => { - refPassword?.current?.focus() - }) - - const lastLoginUsername = useMemo(() => { - return localStorage.getItem(LAST_LOGIN_USERNAME_KEY) || 'root' - }, []) - - return ( -
    -
    -
    - - -

    {t('signin.form.tidb_auth.title')}

    -
    - - } - disabled={!supportNonRootLogin} - /> - - - } - type="password" - disabled={loading} - onInput={clearErrorMsg} - ref={refPassword} - data-e2e="signin_password_input" - /> - - - - - - - -
    -
    - ) -} - -function CodeSignInForm({ successRoute, onClickAlternative }) { - const { t } = useTranslation() - - const [refForm] = Form.useForm() - const refPassword = useRef(null) - - const { handleSubmit, loading, errorMsg, clearErrorMsg } = useSignInSubmit( - successRoute, - (form) => ({ - password: form.code, - type: AuthTypes.SharingCode, - }), - () => {}, - () => { - refForm.setFieldsValue({ code: '' }) - setTimeout(() => { - refPassword.current?.focus() - }, 0) - } - ) - - useMount(() => { - refPassword?.current?.focus() - }) - - return ( -
    -
    -
    - - -

    {t('signin.form.code_auth.title')}

    -
    - - } - type="password" - onInput={clearErrorMsg} - disabled={loading} - ref={refPassword} - allowClear - /> - - - - - - - -
    -
    - ) -} - -function SSOSignInForm({ successRoute, onClickAlternative }) { - const { t } = useTranslation() - const [isLoading, setIsLoading] = useState(false) - - const handleSignIn = useCallback(async () => { - setIsLoading(true) - try { - const url = await getAuthURL() - window.location.href = url - // Do not hide loading status when url is resolved, since we are now jumping - } catch (e) { - setIsLoading(false) - } - }, []) - - return ( -
    -
    -
    - - - - - - - -
    -
    - ) -} - -function App({ registry }) { - const successRoute = useMemo( - () => `#${registry.getDefaultRouter()}`, - [registry] - ) - const [alternativeVisible, setAlternativeVisible] = useState(false) - const [formType, setFormType] = useState(DisplayFormType.uninitialized) - const [supportedAuthTypes, setSupportedAuthTypes] = useState>([ - 0, - ]) - - const handleClickAlternative = useCallback(() => { - setAlternativeVisible(true) - }, []) - - const handleAlternativeClose = useCallback(() => { - setAlternativeVisible(false) - }, []) - - const handleSwitchForm = useCallback((k: DisplayFormType) => { - setFormType(k) - setAlternativeVisible(false) - }, []) - - useEffect(() => { - async function run() { - try { - const resp = await client.getInstance().userGetLoginInfo() - const loginInfo = resp.data - if ( - (loginInfo.supported_auth_types?.indexOf(AuthTypes.SSO) ?? -1) > -1 - ) { - setFormType(DisplayFormType.sso) - } else { - setFormType(DisplayFormType.tidbCredential) - } - setSupportedAuthTypes(loginInfo.supported_auth_types ?? []) - } catch (e) { - Modal.error({ - title: 'Initialize Sign in failed', - content: '' + e, - okText: 'Reload', - onOk: () => window.location.reload(), - }) - } - } - run() - }, []) - - return ( - -
    - - - {({ style, className }) => ( - - )} - - {formType === DisplayFormType.tidbCredential && ( - - )} - {formType === DisplayFormType.shareCode && ( - - )} - {formType === DisplayFormType.sso && ( - - )} - - -
    -
    - ) -} - -export default App diff --git a/ui-ori/dashboardApp/layout/signin/landing.svg b/ui-ori/dashboardApp/layout/signin/landing.svg deleted file mode 100644 index 5d66f97609..0000000000 --- a/ui-ori/dashboardApp/layout/signin/landing.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ui-ori/dashboardApp/layout/signin/logo.svg b/ui-ori/dashboardApp/layout/signin/logo.svg deleted file mode 100644 index 99333a9b48..0000000000 --- a/ui-ori/dashboardApp/layout/signin/logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ui-ori/dashboardApp/layout/translations/en.yaml b/ui-ori/dashboardApp/layout/translations/en.yaml deleted file mode 100755 index 6bc0940972..0000000000 --- a/ui-ori/dashboardApp/layout/translations/en.yaml +++ /dev/null @@ -1,36 +0,0 @@ -signin: - message: - error: 'Sign in failed: {{ msg }}' - success: Sign in successfully - access_doc: Help - access_doc_link: https://docs.pingcap.com/tidb/stable/dashboard-user - form: - username: Username - username_tooltip: Sign in user can be customized in TiDB 5.3 or later versions - password: Password - button: Sign In - tidb_auth: - title: SQL User Sign In - switch: - title: SQL User - description: I know the username and password to connect to the database - code_auth: - title: Authorization Code Sign In - switch: - title: Authorization Code - description: I was invited by others with an authorization code - code: Code - sso: - button: Sign In via Company Account (SSO) - switch: - title: SSO - description: I want to sign in use my company account - use_alternative: Use Alternative Authentication - alternative: - title: Select Authentication -nav: - user: - signout: Sign Out - sider: - debug: Advanced Debugging - experimental: Experimental Features diff --git a/ui-ori/dashboardApp/layout/translations/zh.yaml b/ui-ori/dashboardApp/layout/translations/zh.yaml deleted file mode 100755 index ad611a5011..0000000000 --- a/ui-ori/dashboardApp/layout/translations/zh.yaml +++ /dev/null @@ -1,37 +0,0 @@ -signin: - message: - error: '登录失败: {{ msg }}' - success: 登录成功 - access_doc: 帮助 - access_doc_link: https://docs.pingcap.com/zh/tidb/stable/dashboard-user - form: - username: 用户名 - username_tooltip: 升级到 TiDB 5.3 及更高版本后可自定义登录用户 - password: 密码 - button: 登录 - tidb_auth: - title: SQL 用户登录 - switch: - title: SQL 用户 - description: 我知道数据库的登录用户名和密码 - code_auth: - title: 授权码登录 - switch: - title: 授权码 - description: 其他人通过授权码邀请我使用 - code: 授权码 - sso: - button: 使用公司账号 SSO 登录 - switch: - title: SSO - description: 使用公司账号登录 - use_alternative: 使用其他登录方式 - alternative: - title: 选择登录方式 - -nav: - user: - signout: 登出 - sider: - debug: 高级调试 - experimental: 实验性功能 diff --git a/ui-ori/dashboardApp/nprogress.less b/ui-ori/dashboardApp/nprogress.less deleted file mode 100644 index 2cc90d5caf..0000000000 --- a/ui-ori/dashboardApp/nprogress.less +++ /dev/null @@ -1,69 +0,0 @@ -@progress-color: #ffc53d; - -#nprogress { - pointer-events: none; -} - -#nprogress .bar { - background: @progress-color; - - position: fixed; - z-index: 1031; - top: 0; - left: 0; - - width: 100%; - height: 2px; -} - -/* Fancy blur effect */ -#nprogress .peg { - display: block; - position: absolute; - right: 0px; - width: 100px; - height: 100%; - box-shadow: 0 0 10px @progress-color, 0 0 5px @progress-color; - opacity: 1; - transform: rotate(3deg) translate(0px, -4px); -} - -/* Remove these to get rid of the spinner */ -#nprogress .spinner { - display: block; - position: fixed; - z-index: 1031; - top: 15px; - right: 15px; -} - -#nprogress .spinner-icon { - width: 18px; - height: 18px; - box-sizing: border-box; - - border: solid 2px transparent; - border-top-color: @progress-color; - border-left-color: @progress-color; - border-radius: 50%; - animation: nprogress-spinner 400ms linear infinite; -} - -.nprogress-custom-parent { - overflow: hidden; - position: relative; -} - -.nprogress-custom-parent #nprogress .spinner, -.nprogress-custom-parent #nprogress .bar { - position: absolute; -} - -@keyframes nprogress-spinner { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} diff --git a/ui-ori/diagnoseReportApp/components/DiagnosisReport.tsx b/ui-ori/diagnoseReportApp/components/DiagnosisReport.tsx deleted file mode 100644 index bf0bb5b03f..0000000000 --- a/ui-ori/diagnoseReportApp/components/DiagnosisReport.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import React, { useState } from 'react' -import { useTranslation } from 'react-i18next' -import DiagnosisTable from './DiagnosisTable' -import { ExpandContext, TableDef } from '../types' -import { ALL_LANGUAGES } from '@lib/utils/i18n' - -function LangDropdown() { - const { i18n } = useTranslation() - return ( -
    - -
    - ) -} - -type Props = { - diagnosisTables: TableDef[] -} - -function TablesNavMenu({ diagnosisTables }: Props) { - const { t } = useTranslation() - return ( -
    - -
    -
    - {diagnosisTables.map((item) => ( - -

    - {item.category[0] && - t(`diagnosis.tables.category.${item.category[0]}`)} -

    - - {t(`diagnosis.tables.title.${item.title}`)} - -
    - ))} -
    -
    -
    - ) -} - -export default function DiagnosisReport({ diagnosisTables }: Props) { - const [expandAll, setExpandAll] = useState(false) - const { t } = useTranslation() - - return ( -
    -
    -

    {t('diagnosis.title')}

    -
    - - - - -
    - - - {diagnosisTables.map((item, idx) => ( - - ))} - -
    -
    - ) -} diff --git a/ui-ori/diagnoseReportApp/components/DiagnosisTable.tsx b/ui-ori/diagnoseReportApp/components/DiagnosisTable.tsx deleted file mode 100644 index f5bf927686..0000000000 --- a/ui-ori/diagnoseReportApp/components/DiagnosisTable.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import React, { useContext, useState, useEffect } from 'react' -import { useTranslation } from 'react-i18next' -import { TableDef, ExpandContext, TableRowDef } from '../types' -import ReactMarkdown from 'react-markdown' - -function DiagnosisRow({ row }: { row: TableRowDef }) { - const outsideExpand = useContext(ExpandContext) - const [internalExpand, setInternalExpand] = useState(false) - const { t } = useTranslation() - - // when outsideExpand changes, reset the internalExpand to the same as outsideExpand - useEffect(() => { - setInternalExpand(outsideExpand) - }, [outsideExpand]) - - return ( - <> - - {(row.values || []).map((val, valIdx) => ( - - {t(`diagnosis.tables.table.name.${val}`, val)} - {valIdx === 0 && - t(`diagnosis.tables.table.comment.${val}`, '') !== '' && ( -
    -
    - - - -
    -
    -
    -
    -

    {t(`diagnosis.tables.table.comment.${val}`)}

    -
    -
    -
    -
    - )} - {valIdx === 0 && (row.sub_values || []).length > 0 && ( - <> -     - setInternalExpand(!internalExpand)} - > - {internalExpand ? t('diagnosis.fold') : t('diagnosis.expand')} - - - )} - - ))} - - {(row.sub_values || []).map((subVals, subValsIdx) => ( - - {subVals.map((subVal, subValIdx) => ( - - {subValIdx === 0 && '|-- '} - {subVal} - - ))} - - ))} - - ) -} - -type Props = { - diagnosis: TableDef -} - -export default function DiagnosisTable({ diagnosis }: Props) { - const { category, title, column, rows } = diagnosis - const { t } = useTranslation() - - return ( -
    - {(category || []).map((c, idx) => ( -

    - {c && t(`diagnosis.tables.category.${c}`)} -

    - ))} -

    {t(`diagnosis.tables.title.${title}`)}

    -

    - -

    - - - - {column.map((col, colIdx) => ( - - ))} - - - - {(rows || []).map((row, rowIdx) => ( - - ))} - -
    - {col} -
    -
    - ) -} diff --git a/ui-ori/diagnoseReportApp/index.css b/ui-ori/diagnoseReportApp/index.css deleted file mode 100644 index e5a6ab6cd4..0000000000 --- a/ui-ori/diagnoseReportApp/index.css +++ /dev/null @@ -1,36 +0,0 @@ -.report-container { - margin-bottom: 16px; -} - -tr.subvalues { - background-color: lightcyan; -} - -tr.subvalues.fold { - display: none; -} - -.subvalues-toggle { - display: inline-block; - width: 60px; - cursor: pointer; - color: #2160c4; -} - -.actions { - padding: 8px 0; - background-color: white; - - position: sticky; - top: 0; - z-index: 2; -} - -.table-header-row { - position: sticky; - top: 55px; - z-index: 1; - - background-color: #888; - color: white !important; -} diff --git a/ui-ori/diagnoseReportApp/index.tsx b/ui-ori/diagnoseReportApp/index.tsx deleted file mode 100644 index 18f9757c03..0000000000 --- a/ui-ori/diagnoseReportApp/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' - -import 'bulma/css/bulma.css' -import '@fortawesome/fontawesome-free/js/all.js' - -import * as i18n from '@lib/utils/i18n' -import DiagnosisReport from './components/DiagnosisReport' -import './index.css' - -function refineDiagnosisData() { - const diagnosisData = window.__diagnosis_data__ || [] - console.log(window.__diagnosis_data__) - - let preCategory = '' - diagnosisData.forEach((d) => { - if (d.category.join('') === preCategory) { - d.category = [] - } else { - preCategory = d.category.join('') - } - }) - return diagnosisData -} - -i18n.addTranslations(require.context('./translations/', false, /\.yaml$/)) - -ReactDOM.render( - , - document.getElementById('root') -) diff --git a/ui-ori/diagnoseReportApp/react-app-env.d.ts b/ui-ori/diagnoseReportApp/react-app-env.d.ts deleted file mode 100644 index 0a981e6ea6..0000000000 --- a/ui-ori/diagnoseReportApp/react-app-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -// https://stackoverflow.com/questions/12709074/how-do-you-explicitly-set-a-new-property-on-window-in-typescript -interface Window { - __diagnosis_data__: any -} diff --git a/ui-ori/diagnoseReportApp/translations/en.yaml b/ui-ori/diagnoseReportApp/translations/en.yaml deleted file mode 100644 index defac374fc..0000000000 --- a/ui-ori/diagnoseReportApp/translations/en.yaml +++ /dev/null @@ -1,303 +0,0 @@ -diagnosis: - title: '{{distro.tidb}} Cluster System Report' - expand_all: Expand All - fold_all: Collapse All - expand: Expand - fold: Collapse - all_tables: Report Overview - tables: - category: - header: Basic Info - diagnose: Diagnose - load: Load Info - overview: Component Info - TiDB: '{{distro.tidb}} Component' - PD: '{{distro.pd}} Component' - TiKV: '{{distro.tikv}} Component' - config: Configuration Info - error: Error Info - title: - compare_diagnose: Diagnostics Comparison - compare_report_time_range: Comparison Time Range - top_10_slow_query_in_time_range_t1: Top 10 Slow Queries in Time Range t1 - top_10_slow_query_in_time_range_t2: top 10 Slow Queries in Time Range t2 - top_10_slow_query_group_by_digest_in_time_range_t1: Top 10 Slow Queries Group by Digest in Time Range t1 - top_10_slow_query_group_by_digest_in_time_range_t2: Top 10 slow queries group by digest in Time Range t2 - slow_query_with_diff_plan in_in_time_range_t1: Slow Queries with Different Plan in Time Range t1 - slow_query_with_diff_plan in_in_time_range_t2: Slow queries with Different Plan in Time Range t2 - diagnose_in_time_range_t1: Diagnostics in Time Range t1 - diagnose_in_time_range_t2: Diagnostics in Time Range t2 - max_diff_item: Maximum Different Item - slow_query_t2: Slow Queries In Time Range t2 - generate_report_error: Report Generation Error - report_time_range: Report Time Range - diagnose: Diagnosis Result - total_time_consume: Time Consumed by Each Component - total_error: Errors Occurred in Each Component - time_consume: Time Consumed - tidb_time_consume: Time Consumed by {{distro.tidb}} Component - transaction: '{{distro.tidb}} Transaction' - tidb_connection_count: '{{distro.tidb}} Server Connections' - statistics_info: Statistics Info - ddl_owner: DDL Owner - scheduler_initial_config: Scheduler Initial Config - scheduler_change_config: Scheduler Config Change History - tidb_gc_initial_config: '{{distro.tidb}} GC Initial Config' - tidb_gc_change_config: '{{distro.tidb}} GC Config Change History' - tikv_rocksdb_initial_config: '{{distro.tikv}} RocksDB Initial Config' - tikv_rocksdb_change_config: '{{distro.tikv}} RocksDB Config Change History' - tikv_raftstore_initial_config: '{{distro.tikv}} RaftStore Initial Config' - tikv_raftstore_change_config: '{{distro.tikv}} RaftStore Config Change History' - pd_time_consume: Time Consumed by {{distro.pd}} Component - balance_leader_region: Scheduled Leader/Region Count - approximate_region_size: Approximate Region Size - tikv_engine_size: '{{distro.tikv}} Engine Size' - tikv_time_consume: Time Consumed by {{distro.tikv}} Component - scheduler_info: Scheduler Info - gc_info: GC Info - task_info: Task Info - snapshot_info: Snapshot Info - coprocessor_info: Coprocessor Info - raft_info: Raft Info - tikv_error: '{{distro.tikv}} Error' - tidb_current_config: "{{distro.tidb}}'s Current Config" - pd_current_config: "{{distro.pd}}'s Current Config" - tikv_current_config: "{{distro.tikv}}'s Current Config" - node_load_info: Server Load Info - process_cpu_usage: Instance CPU Usage - process_memory_usage: Instance Memory Usage - tidb/pd_goroutines_count: '{{distro.tidb}}/{{distro.pd}} Goroutines Count' - tikv_thread_cpu_usage: '{{distro.tikv}} Thread CPU Usage' - store_status: Store Status - cluster_status: Cluster Status - etcd_status: etcd Status - cluster_info: Cluster Topology Info - cache_hit: Cache Hit - cluster_hardware: Cluster Hardware Info - rocksdb_time_consume: Time Consumed by RocksDB - top_10_slow_query: Top 10 Slow Queries - top_10_slow_query_group_by_digest: Top 10 Slow Queries Group By Digest - slow_query_with_diff_plan: Slow Queries with Different Plan - comment: - compare_diagnose: Automatically diagnose the cluster problem by comparing with the reference time. - max_diff_item: The maximum different metrics between two time ranges. - diagnose: Automatically diagnose the cluster problem and record the problem in the table below. - total_time_consume: This table contains the event time consumed in {{distro.tidb}}/{{distro.tikv}}/{{distro.pd}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. - total_error: This table contains the total count of each error event. METRIC_NAME is the error event name; LABEL is the event label, such as instance, event type, etc; TOTAL_COUNT is the total count of this event. - tidb_time_consume: This table contains the event time consumed in {{distro.tidb}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. - transaction: This table contains the {{distro.tidb}} transaction statistics information. METRIC_NAME is the object name; LABEL is the object label, such as instance, event type, etc; TOTAL_VALUE is the total size/value of this object; TOTAL_COUNT is the total count of this object; P999 is the max size/value of 0.999 quantile; P99 is the max size/value of 0.99 quantile; P90 is the max size/value of 0.90 quantile; P80 is the max size/value of 0.80 quantile. - tidb_connection_count: The number of connections of each {{distro.tidb}} server. - ddl_owner: This table contains the DDL Owner info. Note that if no DDL request has been executed, the Owner info maybe null below, but it doesn't indicate that no DDL Owner exists. - scheduler_initial_config: The initial config value of {{distro.pd}} scheduler. The initial time is the start time of this report. - scheduler_change_config: The config change history of {{distro.pd}} scheduler. APPROXIMATE_CHANGE_TIME is the minimum start effective time. - tidb_gc_initial_config: The initial config value of {{distro.tidb}} GC. The initial time is the start time of this report. - tidb_gc_change_config: The config change history of {{distro.tidb}} GC. APPROXIMATE_CHANGE_TIME is the minimum start effective time. - tikv_rocksdb_initial_config: The initial config value of {{distro.tikv}} RocksDB. The initial time is the start time of this report. - tikv_rocksdb_change_config: The config change history of {{distro.tikv}} RocksDB. APPROXIMATE_CHANGE_TIME is the minimum start effective time. - tikv_raftstore_initial_config: The initial config value of {{distro.tikv}} RaftStore. The initial time is the start time of this report. - tikv_raftstore_change_config: The config change history of {{distro.tikv}} RaftStore. APPROXIMATE_CHANGE_TIME is the minimum start effective time. - pd_time_consume: This table contains the event time consumed in {{distro.pd}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. - tikv_time_consume: This table contains the event time consumed in {{distro.tikv}}. METRIC_NAME is the event name; LABEL is the event label, such as instance, event type, etc; TIME_RATIO is the TOTAL_TIME of this event divided by the TOTAL_TIME of the events whose TIME_RATIO is 1; TOTAL_TIME is the total time cost of this event; TOTAL_COUNT is the total count of this event; P999 is the max time of 0.999 quantile; P99 is the max time of 0.99 quantile; P90 is the max time of 0.90 quantile; P80 is the max time of 0.80 quantile. - table: - name: - tidb_transaction: Transaction - tidb_kv_request: KV request - tidb_slow_query: Slow query - tidb_ddl_handle_job: DDL job - tidb_ddl_batch_add_index: Batch add index - tidb_load_schema: Schema load - tidb_meta_operation: '{{distro.tidb}} meta operation' - tidb_auto_id_request: '{{distro.tidb}} auto ID request' - tidb_statistics_auto_analyze: '{{distro.tidb}} auto analyze' - tidb_gc: '{{distro.tidb}} GC' - pd_client_cmd: '{{distro.pd}} client cmd' - pd_handle_request: '{{distro.pd}} request' - pd_handle_transactions: etcd transactions - tikv_cop_request: Coprocessor request - tikv_cop_handle: Coprocessor handling request - tikv_handle_snapshot: Snapshot handling - tikv_send_snapshot: Snapshot sending - tikv_commit_log: Raft commit log - tidb_transaction_retry_num: '{{distro.tidb}} transaction retry' - tidb_txn_region_num: Transaction Region count - tidb_txn_kv_write_num: Transaction KV write count - tidb_txn_kv_write_size: Transaction KV write size - tidb_load_safepoint_total_num: Safepoint load - tikv_scheduler_stage_total_num: Scheduler stage - tikv_worker_handled_tasks_total_num: '{{distro.tikv}} worker handled tasks' - tikv_worker_pending_tasks_total_num: '{{distro.tikv}} worker pending tasks' - tikv_futurepool_handled_tasks_total_num: future_pool handled tasks - tikv_futurepool_pending_tasks_total_num: future_pool pending tasks - tikv_snapshot_kv_count: Snapshot KV - tikv_snapshot_size: Snapshot size - tikv_cop_scan_keys_num: '{{distro.tikv}} Coprocessor scan keys' - tikv_cop_total_response_total_size: '{{distro.tikv}} Coprocessor response' - tikv_cop_scan_num: '{{distro.tikv}} Coprocessor scan' - tikv_raft_sent_messages_total_num: Raft sent messages - tikv_flush_messages_total_num: Raft flush messages - tikv_receive_messages_total_num: Raft receive messages - tikv_raft_dropped_messages_total: Raft dropped messages - tikv_raft_proposals_total_num: Raft proposals - tikv_grpc_error_total_count: gRPC errors - tikv_critical_error_total_count: '{{distro.tikv}} critical errors' - tikv_coprocessor_request_error_total_count: Coprocessor request errors - node_disk_write_latency: Disk write latency - node_disk_read_latency: Disk read latency - sched_worker: Scheduler worker - tikv_memtable_hit: memtable hit - tikv_block_all_cache_hit: All block cache hit - tikv_block_index_cache_hit: Index block cache hit - tikv_block_filter_cache_hit: Filter block cache hit - tikv_block_data_cache_hit: Data block cache hit - tikv_block_bloom_prefix_cache_hit: Bloom prefix block cache hit - comment: - tidb_query: The time cost of SQL queries. The label is [sql_type]. - tidb_get_token(us): The time cost of a session getting token to execute the SQL query. The label is [instance]. - tidb_parse: The time cost of parsing SQL queries. The label is [sql_type]. - tidb_compile: The time cost of building the query plan. The label is [sql_type]. - tidb_execute: The time cost of executing the SQL query, which does not include the time to get the results of the query. The label is [sql_type]. - tidb_distsql_execution: The time cost of distsql execution. The label is [type]. - tidb_cop: The processing time of KV storage Coprocessor. The label is [instance]. - tidb_transaction: The time cost of a transaction executing durations, including retry. The label is [sql_type]. - tidb_transaction_local_latch_wait: The time cost of waiting for local latch. The label is [instance]. - tidb_kv_backoff: The time cost of {{distro.tidb}} transaction latch waiting for key value storage. The label is [type]. - tidb_kv_request: The time cost of KV requests durations. The label is [type]. - tidb_slow_query: The time cost of {{distro.tidb}} slow queries. The label is [instance]. - tidb_slow_query_cop_process: The total Coprocessor processing time of {{distro.tidb}} slow queries. The label is [instance]. - tidb_slow_query_cop_wait: The total Coprocessor waiting time of {{distro.tidb}} slow queries. The label is [instance]. - tidb_ddl_handle_job: The time cost of processing {{distro.tidb}} DDL jobs. The label is [type]. - tidb_ddl_worker: The time cost of DDL worker handling jobs. The label is [action]. - tidb_ddl_update_self_version: The time cost of updating {{distro.tidb}} schema syncer version. The label is [result]. - tidb_owner_handle_syncer: The time cost of {{distro.tidb}} DDL owner operations on etcd. The label is [type]. - tidb_ddl_batch_add_index: The time cost of {{distro.tidb}} batch adding index. The label is [type]. - tidb_ddl_deploy_syncer: The time cost of {{distro.tidb}} DDL schema syncer statistics, including init, start, watch, and clear. The label is [type]. - tidb_load_schema: The time cost of {{distro.tidb}} loading schema. The label is [type]. - tidb_meta_operation: The time cost of {{distro.tidb}} meta operations, including get/set schema and DDL jobs. The label is [instance]. - tidb_auto_id_request: The time cost of handling requests for {{distro.tidb}} auto ID. The label is [type]. - tidb_statistics_auto_analyze: The time cost of {{distro.tidb}} auto analyze. The label is [type]. - tidb_gc: The time cost of KV storage garbage collection. The label is [instance]. - tidb_gc_push_task: The time cost of KV storage range worker processing one task. The label is [instance]. - tidb_batch_client_unavailable: The time cost of KV storage batch processing unavailable. The label is [type]. - tidb_batch_client_wait: The time cost of {{distro.tidb}} KV storage batch processing client requests that are waiting. The label is [instance]. - pd_start_tso_wait: The time cost of waiting for the start timestamp oracle. The label is [instance]. - pd_tso_rpc: The time cost from sending TSO request to receiving the response. The label is [instance]. - pd_tso_wait: The time cost from the client starting to wait for the timestamp to receiving the timestamp. The label is [instance]. - pd_client_cmd: The time cost of {{distro.pd}} client command. The label is [type]. - pd_handle_request: The time cost of {{distro.pd}} handling request. The label is [type]. - pd_grpc_completed_commands: The time cost of {{distro.pd}} completing each kind of gRPC commands. The label is [grpc_method]. - pd_operator_finish: The time cost of {{distro.pd}} completing each kind of scheduling commands. The label is [type]. - pd_operator_step_finish: The time cost of {{distro.pd}} completing operating steps. The label is [type]. - pd_handle_transactions: The time cost of {{distro.pd}} handling etcd transactions. The label is [result]. - pd_region_heartbeat: The time cost of heartbeats in each {{distro.tikv}} instance. The label is [address]. - etcd_wal_fsync: The time cost of etcd writing WAL into the persistent storage. The label is [instance]. - pd_peer_round_trip: The latency of the network. The label is [To]. - tikv_grpc_message: The time cost of handling {{distro.tikv}} gRPC messages. The label is [type]. - tikv_cop_request: The time cost of Coprocessor handling read requests. The label is [req]. - tikv_cop_handle: The time cost of handling Coprocessor requests. The label is [req]. - tikv_cop_wait: The time cost of Coprocessor requests that wait for being handled. The label is [req]. - tikv_scheduler_command: The time cost of executing commit command. The label is [type]. - tikv_scheduler_latch_wait: The waiting time of {{distro.tikv}} latch in commit command. The label is [type]. - tikv_handle_snapshot: The time cost of handling snapshots. The label is [type]. - tikv_send_snapshot: The time cost of sending snapshots. The label is [instance]. - tikv_storage_async_request: The time cost of processing asynchronous snapshot requests. The label is [type]. - tikv_raft_append_log: The time cost of Raft appends log. The label is [instance]. - tikv_raft_apply_log: The time cost of Raft apply log. The label is [instance]. - tikv_raft_apply_wait: The time cost of Raft apply wait. The label is [instance]. - tikv_raft_process: The time cost of peer processes in Raft. The label is [instance]. - tikv_raft_propose_wait: The waiting time of each proposal. The label is [type]. - tikv_raft_store_events: The time cost of raftstore events. The label is [type]. - tikv_commit_log: The time cost of Raft commits log. The label is [instance]. - tikv_check_split: The time cost of running split check. The label is [instance]. - tikv_ingest_sst: The time cost of ingesting SST files. The label is [instance]. - tikv_gc_tasks: The time cost of executing GC tasks. The label is [task]. - tikv_pd_request: The time cost of {{distro.tikv}} sending requests to {{distro.pd}}. The label is [type]. - tikv_lock_manager_deadlock_detect: - tikv_lock_manager_waiter_lifetime: - tikv_backup_range: - tikv_backup: - tidb_transaction_retry_num: '{{distro.tidb}} transaction retry count. The label is [instance].' - tidb_transaction_statement_num: The total number of {{distro.tidb}} statements within a transaction. Internal means the internal transaction of {{distro.tidb}}. The label is [sql_type]. - tidb_txn_region_num: The number of Regions that each transaction operates. The label is [instance]. - tidb_txn_kv_write_num: The number of KV writes per transaction execution. The label is [instance]. - tidb_txn_kv_write_size: The KV write size per transaction execution. The label is [instance]. - tidb_load_safepoint_total_num: The total count of safe point loading. The label is [instance]. - tidb_lock_resolver_total_num: The total count of lock resolve. The label is [instance]. - pseudo_estimation_total_count: The total count of {{distro.tidb}} Optimizer using pseudo estimation. The label is [instance, type]. - dump_feedback_total_count: The total count of operations that {{distro.tidb}} dumping statistics back to KV storage. The label is [instance, type]. - store_query_feedback_total_count: The total count of {{distro.tidb}} store querying feedback. The label is [instance, type]. - update_stats_total_count: The total count of {{distro.tidb}} updating statistics using feed back. The label is [instance]. - balance-leader-in: balance-leader-in is the total count of Leader moving into the {{distro.tikv}} store. The label is [address]. - balance-leader-out: balance-leader-out is the total count of Leader moving out of the {{distro.tikv}} store. The label is [address]. - balance-region-in: balance-region-in is the total count of Regions moving into the {{distro.tikv}} store. The label is [address]. - balance-region-out: balance-region-in is the total count of Regions moving into the {{distro.tikv}} store. The label is [address]. - Approximate Region size: The approximate Region size. The label is [instance]. - store size: The storage size. The label is [instance, type]. - tikv_scheduler_keys_read: The number of keys read by a command. The label is [instance, type]. - tikv_scheduler_keys_written: The number of keys written by a command. The label is [instance, type]. - tikv_scheduler_scan_details_total_num: The keys scan details of each CF when executing a command. The label is [instance,req,tag]. - tikv_scheduler_stage_total_num: The total number of scheduler states. The label is [instance,type,stage]. - tikv_gc_keys_total_num: The total number of keys in CF affected during GC. The label is [instance,cf,tag]. - tidb_gc_worker_action_total_num: The total count of KV storage garbage collection. The label is [instance,type]. - tikv_worker_handled_tasks_total_num: The total number of tasks handled by worker. The label is [instance,name]. - tikv_worker_pending_tasks_total_num: The total number of pending and running tasks of worker. The label is [instance,name]. - tikv_futurepool_handled_tasks_total_num: The total number of tasks handled by future_pool. The label is [instance,name]. - tikv_futurepool_pending_tasks_total_num: The total number of pending and running tasks of future_pool. The label is [instance,name]. - tikv_snapshot_kv_count: tikv_snapshot_kv_count. The label is [instance]. - tikv_snapshot_size: The number of KV pairs within a snapshot. The label is [instance]. - tikv_snapshot_state_total_count: tikv_snapshot_size. The label is [instance,type]. - tikv_cop_scan_keys_num: The total number of {{distro.tikv}} Coprocessor scan keys. The label is [instance,req]. - tikv_cop_total_response_total_size: '{{distro.tikv}} coprocessor response total size. The label is [instance].' - tikv_cop_scan_num: The total number of {{distro.tikv}} coprocessor scan operations. The label is [instance,req,tag,cf]. - tikv_raft_sent_messages_total_num: The total number of sent Raft messages. The label is [instance,type]. - tikv_flush_messages_total_num: The total number of flushed Raft messages. The label is [instance]. - tikv_receive_messages_total_num: The total number of received Raft messages. The label is [instance]. - tikv_raft_dropped_messages_total: The total number of dropped Raft messages. The label is [instance,type]. - tikv_raft_proposals_total_num: The total number of raft proposals. The label is [instance,type]. - tikv_grpc_error_total_count: The total number of the gRPC message failures. The label is [instance,type]. - tikv_critical_error_total_count: The total number of the {{distro.tikv}} critical errors. The label is [instance,type]. - tikv_scheduler_is_busy_total_count: The total number of Scheduler Busy events that make the {{distro.tikv}} instance temporarily unavailable. The label is [instance,db,type,stage]. - tikv_channel_full_total_count: The total number of channel full errors, which will make the {{distro.tikv}} instance temporarily unavailable. The label is [instance,db,type]. - tikv_coprocessor_request_error_total_count: The total number of Coprocessor errors. The label is [instance,reason]. - tikv_engine_write_stall: Indicates occurrences of Write Stall events that make the {{distro.tikv}} instance temporarily unavailable. The label is [instance,db]. - tikv_server_report_failures_total_count: The total number of reported failure messages. The label is [instance]. - tikv_storage_async_request_error: The total number of storage request errors. The label is [instance,status,type]. - tikv_lock_manager_detect_error_total_count: The total number of {{distro.tikv}} lock manager detect error. The label is [instance,type]. - tikv_backup_errors_total_count: The total number of {{distro.tikv}} lock manager detected errors. The label is [instance,error]. - node_disk_write_latency: The disk write latency in each node. The label is [instance,device]. - node_disk_read_latency: The disk read latency in each node. The label is [instance,device]. - grpc: The CPU utilization of each {{distro.tikv}} gRPC. The label is [instance]. - raftstore: The CPU utilization of {{distro.tikv}} raftstore thread. The label is [instance]. - Async apply: The CPU utilization of {{distro.tikv}} async apply thread. The label is [instance]. - sched_worker: The CPU utilization of {{distro.tikv}} scheduler worker thread. The label is [instance]. - snapshot: The CPU utilization of {{distro.tikv}} snapshot. The label is [instance]. - unified read pool: The CPU utilization of {{distro.tikv}} unified read pool thread. The label is [instance]. - storage read pool: The CPU utilization of {{distro.tikv}} storage read pool thread. The label is [instance]. - storage read pool normal: The CPU utilization of {{distro.tikv}} storage read pool normal thread. The label is [instance]. - storage read pool high: The CPU utilization of {{distro.tikv}} storage read pool high thread. The label is [instance]. - storage read pool low: The CPU utilization of {{distro.tikv}} storage read pool low thread. The label is [instance]. - cop: The CPU utilization of {{distro.tikv}} Coprocessor. The label is [instance]. - cop normal: The CPU utilization of {{distro.tikv}} Coprocessor normal thread. The label is [instance]. - cop high: The CPU utilization of {{distro.tikv}} Coprocessor high thread. The label is [instance]. - cop low: The CPU utilization of {{distro.tikv}} Coprocessor low thread. The label is [instance]. - rocksdb: The CPU utilization {{distro.tikv}} RocksDB. The label is [instance]. - gc: The CPU utilization of {{distro.tikv}} GC. The label is [instance]. - split_check: The CPU utilization of {{distro.tikv}} split_check. The label is [instance]. - region_score: The Region score of store. The label is [address]. - leader_score: The Leader score of store. The label is [address]. - region_count: The Region count of store. The label is [address]. - leader_count: The Leader score of store. The label is [address]. - region_size: The Region size of store. The label is [address]. - leader_size: The Leader size of store. The label is [address]. - tikv_memtable_hit: The hit rate of memtable. The label is [instance]. - tikv_block_all_cache_hit: The hit rate of all block cache. The label is [instance]. - tikv_block_index_cache_hit: The hit rate of index block cache. The label is [instance]. - tikv_block_filter_cache_hit: The hit rate of filter block cache. The label is [instance]. - tikv_block_data_cache_hit: The hit rate of data block cache. The label is [instance]. - tikv_block_bloom_prefix_cache_hit: The hit rate of bloom_prefix block cache. The label is [instance]. - get duration: The time consumed when RocksDB executing get operations. The label is [instance]. - seek duration: The time consumed when RocksDB executing seek operations. The label is [instance]. - write duration: The time consumed when RocksDB executing write operations. The label is [instance]. - WAL sync duration: The time consumed when RocksDB executing WAL sync operations. The label is [instance]. - compaction duration: The time consumed when RocksDB executing compaction operations. The label is [instance]. - SST read duration: The time consumed when RocksDB reading SST files. The label is [instance]. - write stall duration: The time cost of write stall. The label is [instance]. diff --git a/ui-ori/diagnoseReportApp/translations/zh.yaml b/ui-ori/diagnoseReportApp/translations/zh.yaml deleted file mode 100644 index 12b969b050..0000000000 --- a/ui-ori/diagnoseReportApp/translations/zh.yaml +++ /dev/null @@ -1,304 +0,0 @@ -diagnosis: - title: '{{distro.tidb}} 集群系统报告' - expand_all: 展开所有 - fold_all: 收起所有 - expand: 展开 - fold: 收起 - all_tables: 报告信息总览 - tables: - category: - header: 基本信息 - diagnose: 诊断 - load: 负载 - overview: 各组件信息总览 - TiDB: '{{distro.tidb}} 组件' - PD: '{{distro.pd}} 组件' - TiKV: '{{distro.tikv}} 组件' - config: 配置 - error: 错误 - title: - compare_diagnose: 诊断对比 - compare_report_time_range: 对比报告区间 - top_10_slow_query_in_time_range_t1: t1 中的 Top 10 慢查询 - top_10_slow_query_in_time_range_t2: t2 中的 Top 10 慢查询 - top_10_slow_query_group_by_digest_in_time_range_t1: 按 SQL 指纹聚合的 t1 Top 10 慢查询 - top_10_slow_query_group_by_digest_in_time_range_t2: 按 SQL 指纹聚合的 t2 Top 10 慢查询 - slow_query_with_diff_plan_in_time_range_t1: t1 中的不同执行计划的慢查询 - slow_query_with_diff_plan_in_time_range_t2: t2 中的不同执行计划的慢查询 - diagnose_in_time_range_t1: t1 中的诊断信息 - diagnose_in_time_range_t2: t2 中的诊断信息 - max_diff_item: 最大不同项 - slow_query_t2: t2 中的慢查询 - generate_report_error: 生成报告的报错 - report_time_range: 报告区间 - diagnose: 诊断结果 - total_time_consume: 各组件总耗时 - total_error: 各组件总报错数 - time_consume: 耗时 - tidb_time_consume: '{{distro.tidb}} 中事件耗时' - transaction: '{{distro.tidb}} 事务' - tidb_connection_count: '{{distro.tidb}} 连接数' - statistics_info: 统计信息 - ddl_owner: DDL Owner - scheduler_initial_config: 调度器初始配置 - scheduler_change_config: 调度器配置修改历史 - tidb_gc_initial_config: '{{distro.tidb}} GC 初始配置' - tidb_gc_change_config: '{{distro.tidb}} GC 配置修改历史' - tikv_rocksdb_initial_config: '{{distro.tikv}} RocksDB 初始配置' - tikv_rocksdb_change_config: '{{distro.tikv}} RocksDB 配置修改历史' - tikv_raftstore_initial_config: '{{distro.tikv}} RaftStore 初始配置' - tikv_raftstore_change_config: '{{distro.tikv}} RaftStore 配置修改历史' - pd_time_consume: '{{distro.pd}} 中事件耗时' - balance_leader_region: Leader/Region 调度数 - approximate_region_size: Approximate Region 大小 - tikv_engine_size: '{{distro.tikv}} 实例存储大小' - tikv_time_consume: '{{distro.tikv}} 中事件耗时' - scheduler_info: '{{distro.tikv}} 调度器信息' - gc_info: GC 信息 - task_info: '{{distro.tikv}} 任务信息' - snapshot_info: '{{distro.tikv}} 快照信息' - coprocessor_info: Coprocessor 信息 - raft_info: Raft 信息 - tikv_error: '{{distro.tikv}} 错误' - tidb_current_config: '{{distro.tidb}} 当前配置' - pd_current_config: '{{distro.pd}} 当前配置' - tikv_current_config: '{{distro.tikv}} 当前配置' - node_load_info: 服务器负载信息 - process_cpu_usage: 各实例 CPU 使用率 - process_memory_usage: 各实例内存消耗 - tidb/pd_goroutines_count: '{{distro.tidb}}/{{distro.pd}} 的 Goroutines 数量' - tikv_thread_cpu_usage: '{{distro.tikv}} 的 CPU 使用情况' - store_status: '{{distro.tikv}} 节点的存储状态' - cluster_status: 集群状态 - etcd_status: etcd 状态 - cluster_info: 集群拓扑信息 - cache_hit: 缓存命中率 - cluster_hardware: 集群硬件信息 - rocksdb_time_consume: RocksDB 事件耗时 - top_10_slow_query: Top 10 慢查询 - top_10_slow_query_group_by_digest: 按 SQL 指纹聚合的 Top 10 慢查询 - slow_query_with_diff_plan: 不同执行计划的慢查询 - comment: - compare_diagnose: 通过与参考时间的比较,自动诊断集群问题。 - max_diff_item: 两段时间中的最大不同项。 - diagnose: 该表显示的是自动诊断的结果,即集群中出现的问题。 - total_time_consume: 该表显示的是 {{distro.tidb}}/{{distro.tikv}}/{{distro.pd}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 - total_error: 该表显示的是各错误事件的数量。METRIC_NAME 是错误事件名称;LABEL 是事件标签,如实例、事件类型;TOTAL_COUNT 是该错误事件的总数。 - tidb_time_consume: 该表显示的是 {{distro.tidb}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 - transaction: 该表显示了 {{distro.tidb}} 事务的统计信息。METRIC_NAME 是对象名;LABEL 是对象标签,如实例、事件类型等;TOTAL_VALUE 是该对象的总大小;TOTAL_COUNT 是该对象的总计数;P999 为 0.999 分位数的最大值;P99 是 0.99 分位数的最大值;P90 是 0.90 分位数的最大值;P80 是 0.80 分位数的最大值。 - tidb_connection_count: '{{distro.tidb}} 服务器的连接数。' - ddl_owner: DDL Owner 的信息。注意:如果没有 DDL 请求被执行,下面的 Owner 信息可能为空,这并不表示 DDL Owner 不存在。 - scheduler_initial_config: '{{distro.pd}} 调度器的初始配置值。初始时间是报表的开始时间。' - scheduler_change_config: '{{distro.pd}} 调度器的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' - tidb_gc_initial_config: '{{distro.tidb}} GC 的初始配置值。初始时间是报表的开始时间。' - tidb_gc_change_config: '{{distro.tidb}} GC 的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' - tikv_rocksdb_initial_config: '{{distro.tikv}} RocksDB 的初始配置值。初始时间是报表的开始时间。' - tikv_rocksdb_change_config: '{{distro.tikv}} RocksDB 的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' - tikv_raftstore_initial_config: '{{distro.tikv}} RaftStore 的初始配置值。初始时间是报表的开始时间。' - tikv_raftstore_change_config: '{{distro.tikv}} RaftStore 的配置更改历史。APPROXIMATE_CHANGE_TIME 为最近的有效更改时间。' - pd_time_consume: 该表显示的是 {{distro.pd}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 - tikv_time_consume: 该表显示的是 {{distro.tikv}} 组件中各事件的耗时。METRIC_NAME 是事件名称;LABEL 是事件标签,如实例、事件类型等;TIME_RATIO 是该事件的总时间除以 TIME_RATIO 为 1 的事件的总时间;TOTAL_TIME 是该事件的总耗时;TOTAL_COUNT 是该事件的总计数;P999 是 0.999 分位数的最大时间;P99 是 0.99 分位数的最大时间;P90 是 0.90 分位数的最大时间;P80 是 0.80 分位数的最大时间。 - table: - name: - tidb_transaction: '{{distro.tidb}} 事务' - tidb_kv_request: '{{distro.tidb}} KV 请求' - tidb_slow_query: 慢查询 - tidb_ddl_handle_job: DDL 任务 - tidb_ddl_batch_add_index: 批量索引添加 - tidb_load_schema: Schema 加载 - tidb_meta_operation: '{{distro.tidb}} 元操作' - tidb_auto_id_request: '{{distro.tidb}} 自增 ID 请求' - tidb_statistics_auto_analyze: '{{distro.tidb}} 自动分析' - tidb_gc: 垃圾回收 - pd_client_cmd: '{{distro.pd}} 客户端命令' - pd_handle_request: '{{distro.pd}} 请求' - pd_handle_transactions: etcd 事务 - pd_peer_round_trip: 网络延迟 - tikv_cop_request: Coprocessor 读请求 - tikv_cop_handle: Coprocessor 请求 - tikv_handle_snapshot: 快照处理 - tikv_send_snapshot: 快照发送 - tikv_commit_log: Raft 提交日志 - tidb_transaction_retry_num: '{{distro.tidb}} 事务重试数' - tidb_txn_region_num: 事务操作的 Region 数量 - tidb_txn_kv_write_num: 事务执行的 KV 写入数量 - tidb_txn_kv_write_size: 事务执行的 KV 写入大小 - tidb_load_safepoint_total_num: 安全点装载总数量 - tikv_scheduler_stage_total_num: 调度程序状态的总数量 - tikv_worker_handled_tasks_total_num: worker 处理的任务总数量 - tikv_worker_pending_tasks_total_num: 工作进程的挂起和运行任务的总数量 - tikv_futurepool_handled_tasks_total_num: future_pool 处理的任务总数量 - tikv_futurepool_pending_tasks_total_num: future_pool 总挂起和运行任务数量 - tikv_snapshot_kv_count: 快照的 KV 数量 - tikv_snapshot_size: 快照大小 - tikv_cop_scan_keys_num: '{{distro.tikv}} Coprocessor 扫描键总数量' - tikv_cop_total_response_total_size: '{{distro.tikv}} Coprocessor 响应总大小' - tikv_cop_scan_num: '{{distro.tikv}} Coprocessor 扫描操作总数量' - tikv_raft_sent_messages_total_num: 发送的 Raft 消息的总数量 - tikv_flush_messages_total_num: 持久化 Raft 消息的总数量 - tikv_receive_messages_total_num: 接受 Raft 消息的总数量 - tikv_raft_dropped_messages_total: 丢弃 Raft 消息的总数量 - tikv_raft_proposals_total_num: Raft proposal 的总数量 - tikv_grpc_error_total_count: gRPC 消息失败的总数量 - tikv_critical_error_total_count: '{{distro.tikv}} 临界误差的总数量' - tikv_coprocessor_request_error_total_count: Coprocessor 错误总数量 - node_disk_write_latency: 磁盘写延迟 - node_disk_read_latency: 磁盘读取延迟 - sched_worker: 调度器工作线程 - tikv_memtable_hit: memtable 命中率 - tikv_block_all_cache_hit: 所有块缓存命中率 - tikv_block_index_cache_hit: 索引块缓存命中率 - tikv_block_filter_cache_hit: 过滤块缓存命中率 - tikv_block_data_cache_hit: 数据块缓存命中率 - tikv_block_bloom_prefix_cache_hit: bloom_prefix 块缓存命中率 - comment: - tidb_query: SQL 查询耗时,标签是"SQL 类型"。 - tidb_get_token(us): 会话获取令牌以执行 SQL 查询的耗时,标签是"实例"。 - tidb_parse: 解析 SQL 的耗时,标签是"SQL 类型"。 - tidb_compile: 构建查询计划的时间,标签是"SQL 类型"。 - tidb_execute: 执行 SQL 的时间,不包括获得查询结果的时间,标签是"SQL 类型"。 - tidb_distsql_execution: 执行 distsql 的耗时,标签是"类型"。 - tidb_cop: KV storage Coprocessor 处理的耗时,标签是"实例"。 - tidb_transaction: 事务执行 durations 的时间成本,包括重试,标签是"SQL 类型"。 - tidb_transaction_local_latch_wait: 事务执行时本地锁占用的时间,标签是"实例"。 - tidb_kv_backoff: '{{distro.tidb}} 事务锁等待键值存储的时间,标签是"类型"。' - tidb_kv_request: KV 请求 durations 的耗时,标签是"类型"。 - tidb_slow_query: '{{distro.tidb}} 慢查询的时间开销,标签是"实例"。' - tidb_slow_query_cop_process: '{{distro.tidb}} 的慢查询总 cop 处理的耗时,标签是"实例"。' - tidb_slow_query_cop_wait: '{{distro.tidb}} 的慢查询总 cop 的等待时间,标签是"实例"。' - tidb_ddl_handle_job: 处理 {{distro.tidb}} DDL 任务的耗时,标签是"类型"。 - tidb_ddl_worker: DDL worker 处理任务的耗时,标签是"实例"。 - tidb_ddl_update_self_version: '{{distro.tidb}} schema 同步器版本更新的耗时,标签是"结果"。' - tidb_owner_handle_syncer: 在 etcd 上执行 {{distro.tidb}} DDL 所有者操作的耗时,标签是"类型"。 - tidb_ddl_batch_add_index: '{{distro.tidb}} 批量添加索引的耗时,标签是"类型"。' - tidb_ddl_deploy_syncer: '{{distro.tidb}} DDL schema 同步器统计的时间成本,包括 init、start、watch、clear,标签是"类型"。' - tidb_load_schema: 加载 {{distro.tidb}} schema 的时间成本,标签是"类型"。 - tidb_meta_operation: '{{distro.tidb}} 元操作的时间成本,包括 get/set 模式和 DDL 作业,标签是"实例"。' - tidb_auto_id_request: '{{distro.tidb}} 自增 ID 处理 ID 请求的耗时,标签是"类型"。' - tidb_statistics_auto_analyze: 自动分析 {{distro.tidb}} 的耗时,标签是"类型"。 - tidb_gc: KV 存储垃圾回收的时间,标签是"实例"。 - tidb_gc_push_task: KV 存储范围内 worker 处理一项任务的耗时,标签是"实例"。 - tidb_batch_client_unavailable: KV 存储批量处理不可用的耗时,标签是"类型"。 - tidb_batch_client_wait: KV 存储批量处理客户端等待请求的耗时,标签是"实例"。 - pd_start_tso_wait: 等待获取开始时间戳 timestamp 的耗时,标签是"实例"。 - pd_tso_rpc: 发送 TSO 请求直到收到响应的时间,标签是"实例"。 - pd_tso_wait: 客户端开始等待 timestamp 直到收到 timestamp 结果的耗时,标签是"实例"。 - pd_client_cmd: '{{distro.pd}} 客户端命令的耗时,标签是"类型"。' - pd_handle_request: '{{distro.pd}} 处理请求的耗时,标签是"类型"。' - pd_grpc_completed_commands: '{{distro.pd}} 完成各种 gRPC 命令的耗时,标签是"gRPC 方法"。' - pd_operator_finish: '{{distro.pd}} 完成各种调度命令的时间,标签是"类型"。' - pd_operator_step_finish: '{{distro.pd}} 完成操作步骤的耗时,标签是"类型"。' - pd_handle_transactions: '{{distro.pd}} 处理 etcd 事务的耗时,标签是"结果"。' - pd_region_heartbeat: 每个 {{distro.tikv}} 实例中心跳的耗时,标签是"服务地址"。 - etcd_wal_fsync: etcd 将 WAL 写入持久存储器的耗时,标签是"实例"。 - pd_peer_round_trip: 网络的延迟,标签是"实例"。 - tikv_grpc_message: gRPC 报文的 {{distro.tikv}} 处理耗时,标签是"类型"。 - tikv_cop_request: Coprocessor 处理读请求的时间开销,标签是"请求"。 - tikv_cop_handle: 处理 Coprocessor 请求的时间开销,标签是"请求"。 - tikv_cop_wait: Coprocessor 请求等待处理的耗时,标签是"请求"。 - tikv_scheduler_command: 执行 commit 命令的耗时,标签是"类型"。 - tikv_scheduler_latch_wait: 提交命令中 {{distro.tikv}} 锁存器等待的时间开销,标签是"类型"。 - tikv_handle_snapshot: 处理快照的时间开销,标签是"类型"。 - tikv_send_snapshot: 发送快照的时间开销,标签是"实例"。 - tikv_storage_async_request: 处理异步快照请求的时间开销,标签是"类型"。 - tikv_raft_append_log: Raft appends log 的时间开销,标签是"实例"。 - tikv_raft_apply_log: Raft apply log 的时间开销,标签是"实例"。 - tikv_raft_apply_wait: Raft apply wait 的时间开销,标签是"实例"。 - tikv_raft_process: Peer processes in Raft 的时间开销,标签是"实例"。 - tikv_raft_propose_wait: 每一个 Raft 提议的等待时间,标签是"类型"。 - tikv_raft_store_events: RaftStore events 的时间开销,标签是"类型"。 - tikv_commit_log: Raft 提交日志的时间开销,标签是"实例"。 - tikv_check_split: 运行分割检查的耗时,标签是"实例"。 - tikv_ingest_sst: Ingest SST 文件的耗时,标签是"实例"。 - tikv_gc_tasks: 执行 GC 任务的耗时,标签是"任务"。 - tikv_pd_request: '{{distro.tikv}} 向 {{distro.pd}} 发送请求的耗时,标签是"类型"。' - tikv_lock_manager_deadlock_detect: - tikv_lock_manager_waiter_lifetime: - tikv_backup_range: - tikv_backup: - tidb_transaction_retry_num: '{{distro.tidb}} 事务重试次数,标签是"实例"。' - tidb_transaction_statement_num: 一个事务中 {{distro.tidb}} 语句数的总数量。Internal 是指 {{distro.tidb}} 内部事务,标签是"实例"。' - tidb_txn_region_num: 每个事务进行操作的区域数量,标签是"实例"。 - tidb_txn_kv_write_num: 每个事务执行的 KV 写入数量,标签是"实例"。 - tidb_txn_kv_write_size: 每个事务执行的 KV 写入大小,标签是"实例"。 - tidb_load_safepoint_total_num: 安全点装载总数量,标签是"实例"。 - tidb_lock_resolver_total_num: lock resolve 的总数量,标签是"实例"。 - pseudo_estimation_total_count: 使用伪估计的 {{distro.tidb}} 优化器的总数量,标签是"实例","类型"。 - dump_feedback_total_count: '{{distro.tidb}} 转储统计数据回 KV 存储的操作总数量,标签是"实例"。' - store_query_feedback_total_count: '{{distro.tidb}} 存储查询反馈的总数量,标签是"实例"。' - update_stats_total_count: 使用反馈更新统计数据的 {{distro.tidb}} 总数量,标签是"实例"。 - blance-leader-in: Leader 移动到 {{distro.tikv}} 存储的总数量,标签是"实例"。 - blance-leader-out: Leader 移出 {{distro.tikv}} 存储的总数量,标签是"实例"。 - blance-region-in: 移动到 {{distro.tikv}} 存储的 Region 总数量,标签是"实例"。 - blance-region-out: 移出 {{distro.tikv}} 存储的的 Region 总数量,标签是"实例"。 - Approximate Region size: 近似 Region 大小,标签是"实例"。 - store size: 存储大小,标签是"实例"。 - tikv_scheduler_keys_read: 由一条命令读取的键数量,标签是"实例","类型"。 - tikv_scheduler_keys_written: 由一条命令写入的键数量,标签是"实例","类型"。 - tikv_scheduler_scan_details_total_num: 在执行一条命令时,扫描每个 CF 的详细信息的总数量,标签是"实例"。 - tikv_scheduler_stage_total_num: 调度程序状态的总数量,标签是"实例","阶段","类型"。 - tikv_gc_keys_total_num: GC 期间 CF 中受影响的键的总数量,标签是"实例"。 - tidb_gc_worker_action_total_num: KV 存储垃圾回收总量,标签是"实例","类型"。 - tikv_worker_handled_tasks_total_num: worker 处理的任务总数量,标签是"实例"。 - tikv_worker_pending_tasks_total_num: 工作进程的挂起和运行任务的总数量,标签是"实例"。 - tikv_futurepool_handled_tasks_total_num: future_pool 处理的任务总数量,标签是"实例"。 - tikv_futurepool_pending_tasks_total_num: future_pool 的总挂起和运行任务,标签是"实例"。 - tikv_snapshot_kv_count: tikv_snapshot_kv_count,标签是"实例"。 - tikv_snapshot_size: 快照内 KV 的数量,标签是"实例"。 - tikv_snapshot_state_total_count: '{{distro.tikv}} 的快照大小,标签是"实例","类型"。' - tikv_cop_scan_keys_num: '{{distro.tikv}} Coprocessor 扫描键总数量,标签是"实例"。' - tikv_cop_total_response_total_size: '{{distro.tikv}} Coprocessor 响应总大小,标签是"实例"。' - tikv_cop_scan_num: '{{distro.tikv}} Coprocessor 扫描操作总数量,标签是"实例"。' - tikv_raft_sent_messages_total_num: 发送的 Raft 消息的总数量,标签是"实例","类型"。 - tikv_flush_messages_total_num: Raft 上刷新了的信息总数量,标签是"实例"。 - tikv_receive_messages_total_num: Raft 收到的的信息总数量,标签是"实例"。 - tikv_raft_dropped_messages_total: Raft 丢掉的的信息总数量,标签是"实例","类型"。 - tikv_raft_proposals_total_num: Raft 提议的的总数量,标签是"实例","类型"。 - tikv_grpc_error_total_count: gRPC 消息失败的总数量,标签是"实例","类型"。 - tikv_critical_error_total_count: '{{distro.tikv}} 临界误差的总数量,标签是"实例","类型"。' - tikv_scheduler_is_busy_total_count: 使 {{distro.tikv}} 实例暂时不可用的调度器繁忙事件的总数量,标签是"实例"。 - tikv_channel_full_total_count: 通道完全错误的总数量,它将使 {{distro.tikv}} 实例暂时不可用,标签是"实例"。 - tikv_coprocessor_request_error_total_count: Coprocessor 错误的总数量,标签是"实例","原因"。 - tikv_engine_write_stall: 指示使 {{distro.tikv}} 实例暂时不可用的写失速事件,标签是"实例"。 - tikv_server_report_failures_total_count: 报告失败消息的总数量,标签是"实例"。 - tikv_storage_async_request_error: 存储请求错误的总数量,标签是"实例","状态","类型"。 - tikv_lock_manager_detect_error_total_count: '{{distro.tikv}} 锁管理器检测错误的总数量,标签是"实例","类型"。' - tikv_backup_errors_total_count: '{{distro.tikv}} 锁管理的总错误,标签是"实例","错误"。' - node_disk_write_latency: 每个节点的磁盘写延迟,标签是"实例","设备"。 - node_disk_read_latency: 每个节点的磁盘读取延迟,标签是"实例","设备"。 - grpc: 每个 {{distro.tikv}} gRPC 的 CPU 利用率,标签是"实例"。' - raftstore: '{{distro.tikv}} RaftStore 线程的 CPU 利用率,标签是"实例"。' - Async apply: '{{distro.tikv}} 异步应用线程的 CPU 利用率,标签是"实例"。' - sched_worker: '{{distro.tikv}} 调度器工作线程的 CPU 利用率,标签是"实例"。' - snapshot: '{{distro.tikv}} 快照的 CPU 利用率,标签是"实例"。' - unified read pool: '{{distro.tikv}} 统一读池线程的 CPU 利用率,标签是"实例"。' - storage read pool: '{{distro.tikv}} 存储读池线程的 CPU 利用率,标签是"实例"。' - storage read pool normal: '{{distro.tikv}} 存储读池普通线程的 CPU 利用率,标签是"实例"。' - storage read pool high: '{{distro.tikv}} 存储较高读线程的 CPU 利用率,标签是"实例"。' - storage read pool low: '{{distro.tikv}} 存储较低读线程的 CPU 利用率,标签是"实例"。' - cop: '{{distro.tikv}} Coprocessor 的 CPU 利用率,标签是"实例"。' - cop normal: '{{distro.tikv}} Coprocessor 普通线程的 CPU 利用率,标签是"实例"。' - cop high: '{{distro.tikv}} Coprocessor 高线程的 CPU 利用率,标签是"实例"。' - cop low: '{{distro.tikv}} Coprocessor 低线程的 CPU 利用率,标签是"实例"。' - rocksdb: '{{distro.tikv}} RocksDB 的 CPU 利用率,标签是"实例"。' - gc: '{{distro.tikv}} GC 的 CPU 利用率,标签是"实例"。' - split_check: '{{distro.tikv}} split_chec 的 CPU 利用率,标签是"实例"。' - region_score: store 的 Region 得分,标签是"服务地址"。 - leader_score: store 的 Leader 得分,标签是"服务地址"。 - region_count: store 的 Region 数量,标签是"服务地址"。 - leader_count: store 的 Leader 数量,标签是"服务地址"。 - region_size: store 的 Region 大小,标签是"服务地址"。 - leader_size: store 的 Leader 大小,标签是"服务地址"。 - tikv_memtable_hit: memtable 的命中率,标签是"实例"。 - tikv_block_all_cache_hit: 所有块缓存的命中率,标签是"实例"。 - tikv_block_index_cache_hit: 索引块缓存的命中率,标签是"实例"。 - tikv_block_filter_cache_hit: 过滤块缓存的命中率,标签是"实例"。 - tikv_block_data_cache_hit: 数据块缓存的命中率,标签是"实例"。 - tikv_block_bloom_prefix_cache_hit: bloom_prefix 块缓存的命中率,标签是"实例"。 - get duration: RocksDB 执行 get 操作的耗时,标签是"实例"。 - seek duration: RocksDB 执行 seek 操作的耗时,标签是"实例"。 - write duration: RocksDB 执行写操作的耗时,标签是"实例"。 - WAL sync duration: RocksDB 执行 WAL 同步操作的耗时,标签是"实例"。 - compaction duration: RocksDB 执行压缩操作的耗时,标签是"实例"。 - SST read duration: RocksDB 读取 SST 文件的耗时,标签是"实例"。 - write stall duration: 由写停顿引起的时间,标签是"实例"。 diff --git a/ui-ori/diagnoseReportApp/types.ts b/ui-ori/diagnoseReportApp/types.ts deleted file mode 100644 index b3919bb118..0000000000 --- a/ui-ori/diagnoseReportApp/types.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { createContext } from 'react' - -export interface TableRowDef { - values: string[] - sub_values: string[][] - comment: string -} - -export interface TableDef { - category: string[] - title: string - comment: string - column: string[] - rows: TableRowDef[] -} - -export const ExpandContext = createContext(false) diff --git a/ui-ori/gulpfile.esm.js b/ui-ori/gulpfile.esm.js deleted file mode 100644 index 1888ae5682..0000000000 --- a/ui-ori/gulpfile.esm.js +++ /dev/null @@ -1,87 +0,0 @@ -import { task, watch, series, parallel, src, dest } from 'gulp' -import shell from 'gulp-shell' -import Stream from 'stream' -import { getUserAgentRegExp } from 'browserslist-useragent-regexp' - -task('swagger:generate_spec', shell.task('../scripts/generate_swagger_spec.sh')) - -task( - 'swagger:generate_client', - shell.task( - 'yarn openapi-generator generate -i ../swaggerspec/swagger.yaml -g typescript-axios -c .openapi_config.yaml -o lib/client/api' - ) -) - -task( - 'swagger:generate', - series('swagger:generate_spec', 'swagger:generate_client') -) - -task('swagger:watch', () => - watch(['../cmd/**/*.go', '../pkg/**/*.go'], series('swagger:generate')) -) - -task('distro:generate', shell.task('../scripts/generate_distro_info.sh')) - -task('distro:watch', () => - watch(['../pkg/utils/distro/*.go'], series('distro:generate')) -) - -task( - 'webpack:dev', - shell.task( - 'REACT_APP_COMMIT_HASH=$(git rev-parse --short HEAD) yarn react-app-rewired start' - ) -) - -task( - 'webpack:build', - shell.task( - 'REACT_APP_COMMIT_HASH=$(git rev-parse --short HEAD) yarn react-app-rewired build' - ) -) - -task( - 'build', - series(parallel('swagger:generate', 'distro:generate'), 'webpack:build') -) - -task( - 'dev', - series( - parallel('swagger:generate', 'distro:generate'), - parallel('swagger:watch', 'distro:watch', 'webpack:dev') - ) -) - -///////////////////////////////// - -// inspired from: https://github.com/brwnll/gulp-version-filename/blob/master/index.js -function updateBrowserList() { - const stream = new Stream.Transform({ objectMode: true }) - - stream._transform = function (file, _filetype, callback) { - const oriContents = file.contents.toString() - const pattern = 'var __SUPPORTED_BROWSERS__ =' - - if (oriContents.indexOf(pattern) < 0) { - return stream.emit('error', new Error(`Missing "${pattern}" pattern`)) - } - const browserList = getUserAgentRegExp({ allowHigherVersions: true }) - const regPattern = new RegExp(`${pattern} .+`) - const newContents = oriContents.replace( - regPattern, - `${pattern} ${browserList}` - ) - file.contents = Buffer.from(newContents) - callback(null, file) - } - - return stream -} - -task('gen:browserlist', () => { - return src('public/compat.js') - .pipe(updateBrowserList()) - .pipe(dest('public', { overwrite: true })) -}) diff --git a/ui-ori/lib/.gitignore b/ui-ori/lib/.gitignore deleted file mode 100644 index 2c725bf464..0000000000 --- a/ui-ori/lib/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/distribution.json diff --git a/ui-ori/lib/antd.global.less b/ui-ori/lib/antd.global.less deleted file mode 100644 index c7d882649e..0000000000 --- a/ui-ori/lib/antd.global.less +++ /dev/null @@ -1,512 +0,0 @@ -// Slightly modified from https://github.com/ant-design/ant-design/blob/master/components/style/core/base.less - -/* stylelint-disable at-rule-no-unknown */ - -// Reboot -// -// Normalization of HTML elements, manually forked from Normalize.css to remove -// styles targeting irrelevant browsers while applying new styles. -// -// Normalize is licensed MIT. https://github.com/necolas/normalize.css - -// HTML & Body reset -@{html-selector}, -body { - .square(100%); -} - -// remove the clear button of a text input control in IE10+ -input::-ms-clear, -input::-ms-reveal { - display: none; -} - -// Document -// -// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`. -// 2. Change the default font family in all browsers. -// 3. Correct the line height in all browsers. -// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS. -// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so -// we force a non-overlapping, non-auto-hiding scrollbar to counteract. -// 6. Change the default tap highlight to be completely transparent in iOS. - -*, -*::before, -*::after { - box-sizing: border-box; // 1 -} - -@{html-selector} { - font-family: sans-serif; // 2 - line-height: 1.15; // 3 - -webkit-text-size-adjust: 100%; // 4 - -ms-text-size-adjust: 100%; // 4 - -ms-overflow-style: scrollbar; // 5 - -webkit-tap-highlight-color: fade(@black, 0%); // 6 -} - -// IE10+ doesn't honor `` in some cases. -@-ms-viewport { - width: device-width; -} - -// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers) -article, -aside, -dialog, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section { - display: block; -} - -// Body -// -// 1. remove the margin in all browsers. -// 2. As a best practice, apply a default `body-background`. - -body { - margin: 0; // 1 - color: @text-color; - font-size: @font-size-base; - font-family: @font-family; - font-variant: @font-variant-base; - line-height: @line-height-base; - background-color: @body-background; // 2 - font-feature-settings: @font-feature-settings-base; -} - -// Suppress the focus outline on elements that cannot be accessed via keyboard. -// This prevents an unwanted focus outline from appearing around elements that -// might still respond to pointer events. -// -// Credit: https://github.com/suitcss/base -[tabindex='-1']:focus { - outline: none !important; -} - -// Content grouping -// -// 1. Add the correct box sizing in Firefox. -// 2. Show the overflow in Edge and IE. - -hr { - box-sizing: content-box; // 1 - height: 0; // 1 - overflow: visible; // 2 -} - -// -// Typography -// - -// remove top margins from headings -// -// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top -// margin for easier control within type scales as it avoids margin collapsing. -h1, -h2, -h3, -h4, -h5, -h6 { - margin-top: 0; - margin-bottom: 0.5em; - color: @heading-color; - font-weight: 500; -} - -// Reset margins on paragraphs -// -// Similarly, the top margin on `

    `s get reset. However, we also reset the -// bottom margin to use `em` units instead of `em`. -p { - margin-top: 0; - margin-bottom: 1em; -} - -// Abbreviations -// -// 1. remove the bottom border in Firefox 39-. -// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. -// 3. Add explicit cursor to indicate changed behavior. -// 4. Duplicate behavior to the data-* attribute for our tooltip plugin - -abbr[title], -abbr[data-original-title] { - // 4 - text-decoration: underline dotted; // 2 - border-bottom: 0; // 1 - cursor: help; // 3 -} - -address { - margin-bottom: 1em; - font-style: normal; - line-height: inherit; -} - -input[type='text'], -input[type='password'], -input[type='number'], -textarea { - -webkit-appearance: none; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1em; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 500; -} - -dd { - margin-bottom: 0.5em; - margin-left: 0; // Undo browser default -} - -blockquote { - margin: 0 0 1em; -} - -dfn { - font-style: italic; // Add the correct font style in Android 4.3- -} - -b, -strong { - font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari -} - -small { - font-size: 80%; // Add the correct font size in all browsers -} - -// -// Prevent `sub` and `sup` elements from affecting the line height in -// all browsers. -// - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} -sup { - top: -0.5em; -} - -// -// Links -// - -a { - color: @link-color; - text-decoration: @link-decoration; - background-color: transparent; // remove the gray background on active links in IE 10. - outline: none; - cursor: pointer; - transition: color 0.3s; - -webkit-text-decoration-skip: objects; // remove gaps in links underline in iOS 8+ and Safari 8+. - - &:hover { - color: @link-hover-color; - } - - &:active { - color: @link-active-color; - } - - &:active, - &:hover { - text-decoration: @link-hover-decoration; - outline: 0; - } - - // https://github.com/ant-design/ant-design/issues/22503 - &:focus { - text-decoration: @link-focus-decoration; - outline: @link-focus-outline; - } - - &[disabled] { - color: @disabled-color; - cursor: not-allowed; - pointer-events: none; - } -} - -// -// Code -// - -pre, -code, -kbd, -samp { - font-size: 1em; // Correct the odd `em` font sizing in all browsers. - font-family: @code-family; -} - -pre { - // remove browser default top margin - margin-top: 0; - // Reset browser default of `1em` to use `em`s - margin-bottom: 1em; - // Don't allow content to break outside - overflow: auto; -} - -// -// Figures -// -figure { - // Apply a consistent margin strategy (matches our type styles). - margin: 0 0 1em; -} - -// -// Images and content -// - -img { - vertical-align: middle; - border-style: none; // remove the border on images inside links in IE 10-. -} - -svg:not(:root) { - overflow: hidden; // Hide the overflow in IE -} - -// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property. -// -// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11 -// DON'T remove the click delay when `` is present. -// However, they DO support emoving the click delay via `touch-action: manipulation`. -// See: -// * https://getbootstrap.com/docs/4.0/content/reboot/#click-delay-optimization-for-touch -// * http://caniuse.com/#feat=css-touch-action -// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay - -a, -area, -button, -[role='button'], -input:not([type='range']), -label, -select, -summary, -textarea { - touch-action: manipulation; -} - -// -// Tables -// - -table { - border-collapse: collapse; // Prevent double borders -} - -caption { - padding-top: 0.75em; - padding-bottom: 0.3em; - color: @text-color-secondary; - text-align: left; - caption-side: bottom; -} - -th { - // Matches default `` alignment by inheriting from the ``, or the - // closest parent with a set `text-align`. - text-align: inherit; -} - -// -// Forms -// - -input, -button, -select, -optgroup, -textarea { - margin: 0; // remove the margin in Firefox and Safari - color: inherit; - font-size: inherit; - font-family: inherit; - line-height: inherit; -} - -button, -input { - overflow: visible; // Show the overflow in Edge -} - -button, -select { - text-transform: none; // remove the inheritance of text transform in Firefox -} - -// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` -// controls in Android 4. -// 2. Correct the inability to style clickable types in iOS and Safari. -button, -@{html-selector} [type="button"], /* 1 */ -[type="reset"], -[type="submit"] { - -webkit-appearance: button; // 2 -} - -// remove inner border and padding from Firefox, but don't restore the outline like Normalize. -button::-moz-focus-inner, -[type='button']::-moz-focus-inner, -[type='reset']::-moz-focus-inner, -[type='submit']::-moz-focus-inner { - padding: 0; - border-style: none; -} - -input[type='radio'], -input[type='checkbox'] { - box-sizing: border-box; // 1. Add the correct box sizing in IE 10- - padding: 0; // 2. remove the padding in IE 10- -} - -input[type='date'], -input[type='time'], -input[type='datetime-local'], -input[type='month'] { - // remove the default appearance of temporal inputs to avoid a Mobile Safari - // bug where setting a custom line-height prevents text from being vertically - // centered within the input. - // See https://bugs.webkit.org/show_bug.cgi?id=139848 - // and https://github.com/twbs/bootstrap/issues/11266 - -webkit-appearance: listbox; -} - -textarea { - overflow: auto; // remove the default vertical scrollbar in IE. - // Textareas should really only resize vertically so they don't break their (horizontal) containers. - resize: vertical; -} - -fieldset { - // Browsers set a default `min-width: min-content;` on fieldsets, - // unlike e.g. `

    `s, which have `min-width: 0;` by default. - // So we reset that to ensure fieldsets behave more like a standard block element. - // See https://github.com/twbs/bootstrap/issues/12359 - // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements - min-width: 0; - margin: 0; - // Reset the default outline behavior of fieldsets so they don't affect page layout. - padding: 0; - border: 0; -} - -// 1. Correct the text wrapping in Edge and IE. -// 2. Correct the color inheritance from `fieldset` elements in IE. -legend { - display: block; - width: 100%; - max-width: 100%; // 1 - margin-bottom: 0.5em; - padding: 0; - color: inherit; // 2 - font-size: 1.5em; - line-height: inherit; - white-space: normal; // 1 -} - -progress { - vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera. -} - -// Correct the cursor style of incement and decement buttons in Chrome. -[type='number']::-webkit-inner-spin-button, -[type='number']::-webkit-outer-spin-button { - height: auto; -} - -[type='search'] { - // This overrides the extra rounded corners on search inputs in iOS so that our - // `.form-control` class can properly style them. Note that this cannot simply - // be added to `.form-control` as it's not specific enough. For details, see - // https://github.com/twbs/bootstrap/issues/11586. - outline-offset: -2px; // 2. Correct the outline style in Safari. - -webkit-appearance: none; -} - -// -// remove the inner padding and cancel buttons in Chrome and Safari on macOS. -// - -[type='search']::-webkit-search-cancel-button, -[type='search']::-webkit-search-decoration { - -webkit-appearance: none; -} - -// -// 1. Correct the inability to style clickable types in iOS and Safari. -// 2. Change font properties to `inherit` in Safari. -// - -::-webkit-file-upload-button { - font: inherit; // 2 - -webkit-appearance: button; // 1 -} - -// -// Correct element displays -// - -output { - display: inline-block; -} - -summary { - display: list-item; // Add the correct display in all browsers -} - -template { - display: none; // Add the correct display in IE -} - -// Always hide an element with the `hidden` HTML attribute (from PureCSS). -// Needed for proper display in IE 10-. -[hidden] { - display: none !important; -} - -mark { - padding: 0.2em; - background-color: @yellow-1; -} - -// Utility classes -.clearfix { - .clearfix(); -} diff --git a/ui-ori/lib/antd.less b/ui-ori/lib/antd.less deleted file mode 100644 index 5a03808516..0000000000 --- a/ui-ori/lib/antd.less +++ /dev/null @@ -1,12 +0,0 @@ -// This file will replace the default ant design style. - -@import '~antd/es/style/themes/index'; -@import '~antd/es/style/mixins/index'; - -@import './antd.global.less'; -@import '~antd/es/style/core/iconfont'; -@import '~antd/es/style/core/motion'; - -body { - @import './antd.override.less'; -} diff --git a/ui-ori/lib/antd.override.less b/ui-ori/lib/antd.override.less deleted file mode 100644 index 8a0431ff16..0000000000 --- a/ui-ori/lib/antd.override.less +++ /dev/null @@ -1,28 +0,0 @@ -.ant-badge { - font-size: 1em; -} - -.ant-badge-status-text { - font-size: 1em; -} - -.ant-form-inline .ant-form-item { - margin-bottom: @padding-sm; -} - -.ant-form-inline { - margin-bottom: -@padding-sm; -} - -.ant-tooltip { - pointer-events: none; -} - -// related issue: -// Descriptions component has different look between Chrome and Safari -// https://github.com/ant-design/ant-design/issues/24999 -// can be removed after above issue is fixed -th.ant-descriptions-item, -th.ant-descriptions-item-label { - text-align: left; -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/DiskTable.tsx b/ui-ori/lib/apps/ClusterInfo/components/DiskTable.tsx deleted file mode 100644 index e7a9be879b..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/DiskTable.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import { Tooltip, Typography } from 'antd' -import React, { useMemo } from 'react' -import { useTranslation } from 'react-i18next' -import { getValueFormat } from '@baurine/grafana-value-formats' -import client, { HostinfoInfo, HostinfoPartitionInfo } from '@lib/client' -import { Bar, CardTable } from '@lib/components' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import { - InstanceKind, - InstanceKinds, - InstanceKindName, -} from '@lib/utils/instanceTable' -import { WarningOutlined } from '@ant-design/icons' - -interface IExpandedDiskItem extends HostinfoPartitionInfo { - key: string - host?: string - instancesCount: Record -} - -function expandDisksItems(rows: HostinfoInfo[]): IExpandedDiskItem[] { - const expanded: IExpandedDiskItem[] = [] - rows.forEach((row) => { - const instancesPerPartition: Record< - string, - Record - > = {} - - let partitions = 0 - - Object.values(row.instances ?? {}).forEach((i) => { - if (!i) { - return - } - if (!instancesPerPartition[i.partition_path_lower!]) { - instancesPerPartition[i.partition_path_lower!] = { - pd: 0, - tidb: 0, - tikv: 0, - tiflash: 0, - } - } - instancesPerPartition[i.partition_path_lower!][i.type!]++ - }) - - for (let pathL in row.partitions) { - const instancesCount = instancesPerPartition[pathL] - if (!instancesCount) { - // This partition does not have deployed instances, skip - continue - } - const partition = row.partitions[pathL] - expanded.push({ - key: `${row.host} ${pathL}`, - host: row.host, - instancesCount, - ...partition, - }) - partitions++ - } - - if (partitions === 0) { - // Supply dummy item.. - expanded.push({ - key: row.host ?? '', - host: row.host, - instancesCount: { - pd: 0, - tidb: 0, - tikv: 0, - tiflash: 0, - }, - }) - } - }) - return expanded -} - -export default function HostTable() { - const { t } = useTranslation() - - const { data, isLoading, error } = useClientRequest((reqConfig) => - client.getInstance().clusterInfoGetHostsInfo(reqConfig) - ) - - const diskData = useMemo(() => expandDisksItems(data?.hosts ?? []), [data]) - - const columns: IColumn[] = useMemo( - () => [ - { - name: t('cluster_info.list.disk_table.columns.host'), - key: 'host', - minWidth: 100, - maxWidth: 150, - onRender: (row: IExpandedDiskItem) => { - if (!row.free) { - return ( - - - {row.host} - - - ) - } - return ( - - {row.host} - - ) - }, - }, - { - name: t('cluster_info.list.disk_table.columns.mount_dir'), - key: 'mount_dir', - minWidth: 150, - maxWidth: 200, - onRender: (row: IExpandedDiskItem) => { - if (!row.path) { - return - } - return ( - - {row.path} - - ) - }, - }, - { - name: t('cluster_info.list.disk_table.columns.fs'), - key: 'fs', - minWidth: 50, - maxWidth: 100, - onRender: (row: IExpandedDiskItem) => { - return row.fstype?.toUpperCase() ?? '' - }, - }, - { - name: t('cluster_info.list.disk_table.columns.disk_size'), - key: 'disk_size', - minWidth: 60, - maxWidth: 100, - onRender: (row: IExpandedDiskItem) => { - if (!row.total) { - return - } - return getValueFormat('bytes')(row.total, 1) - }, - }, - { - name: t('cluster_info.list.disk_table.columns.disk_usage'), - key: 'disk_usage', - minWidth: 100, - maxWidth: 150, - onRender: (row: IExpandedDiskItem) => { - if (!row.total || !row.free) { - return - } - const total = row.total - const free = row.free - const used = total - free - const usedPercent = (used / total).toFixed(3) - const tooltipContent = ( - - Used: {getValueFormat('bytes')(used, 1)} ( - {getValueFormat('percentunit')(+usedPercent, 1)}) - - ) - return ( - - - - ) - }, - }, - { - name: t('cluster_info.list.disk_table.columns.instances'), - key: 'instances', - minWidth: 100, - maxWidth: 200, - onRender: (row: IExpandedDiskItem) => { - const item = InstanceKinds.map((ik) => { - if (row.instancesCount[ik] > 0) { - return `${row.instancesCount[ik]} ${InstanceKindName[ik]}` - } else { - return '' - } - }) - const content = item.filter((v) => v.length > 0).join(', ') - return ( - - {content} - - ) - }, - }, - ], - [t] - ) - - return ( - - ) -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/HostTable.tsx b/ui-ori/lib/apps/ClusterInfo/components/HostTable.tsx deleted file mode 100644 index 2b9e8970b3..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/HostTable.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import { Tooltip, Typography } from 'antd' -import React, { useMemo } from 'react' -import { useTranslation } from 'react-i18next' -import { red } from '@ant-design/colors' -import { getValueFormat } from '@baurine/grafana-value-formats' -import client, { HostinfoInfo } from '@lib/client' -import { Bar, CardTable, Pre } from '@lib/components' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import { - InstanceKind, - InstanceKinds, - InstanceKindName, -} from '@lib/utils/instanceTable' -import { WarningOutlined } from '@ant-design/icons' - -interface IExpandedHostItem extends HostinfoInfo { - key: string - instancesCount: Record -} - -function expandHostItems(rows: HostinfoInfo[]): IExpandedHostItem[] { - const expanded: IExpandedHostItem[] = [] - rows.forEach((row) => { - const instancesCount: Record = { - pd: 0, - tidb: 0, - tikv: 0, - tiflash: 0, - } - - Object.values(row.instances ?? {}).forEach((i) => { - if (!i) { - return - } - instancesCount[i.type!]++ - }) - - expanded.push({ - key: row.host ?? '', - instancesCount, - ...row, - }) - }) - return expanded -} - -export default function HostTable() { - const { t } = useTranslation() - - const { data, isLoading, error } = useClientRequest((reqConfig) => - client.getInstance().clusterInfoGetHostsInfo(reqConfig) - ) - - const hostData = useMemo(() => expandHostItems(data?.hosts ?? []), [data]) - - const columns: IColumn[] = useMemo( - () => [ - { - name: t('cluster_info.list.host_table.columns.host'), - key: 'host', - minWidth: 100, - maxWidth: 150, - onRender: (row: IExpandedHostItem) => { - if (!row.cpu_info) { - // We assume that CPU info must be successfully retrieved. - return ( - - - {row.host} - - - ) - } - return ( - - {row.host} - - ) - }, - }, - { - name: t('cluster_info.list.host_table.columns.cpu'), - key: 'cpu', - minWidth: 100, - maxWidth: 150, - onRender: (row: IExpandedHostItem) => { - const { cpu_info: c } = row - if (!c) { - return - } - const tooltipContent = ` -Physical Cores: ${c.physical_cores} -Logical Cores: ${c.logical_cores}` - return ( - {tooltipContent.trim()}}> - {`${c.physical_cores!} (${c.logical_cores!} vCore)`} - - ) - }, - }, - { - name: t('cluster_info.list.host_table.columns.cpu_arch'), - key: 'cpu-arch', - minWidth: 60, - maxWidth: 100, - onRender: (row: IExpandedHostItem) => { - const { cpu_info: c } = row - if (!c || !c.arch) { - return {'Unknow'} - } - return {`${c.arch}`} - }, - }, - { - name: t('cluster_info.list.host_table.columns.cpu_usage'), - key: 'cpu_usage', - minWidth: 100, - maxWidth: 150, - onRender: (row: IExpandedHostItem) => { - if (!row.cpu_usage) { - return - } - const system = row.cpu_usage.system ?? 0 - const idle = row.cpu_usage.idle ?? 1 - const user = 1 - system - idle - const tooltipContent = ` -User: ${getValueFormat('percentunit')(user)} -System: ${getValueFormat('percentunit')(system)}` - return ( - {tooltipContent.trim()}}> - - - ) - }, - }, - { - name: t('cluster_info.list.host_table.columns.memory'), - key: 'memory', - minWidth: 60, - maxWidth: 100, - onRender: (row: IExpandedHostItem) => { - if (!row.memory_usage) { - return - } - return getValueFormat('bytes')(row.memory_usage.total ?? 0, 1) - }, - }, - { - name: t('cluster_info.list.host_table.columns.memory_usage'), - key: 'memory_usage', - minWidth: 100, - maxWidth: 150, - onRender: (row: IExpandedHostItem) => { - if (!row.memory_usage) { - return - } - const { total, used } = row.memory_usage - const usedPercent = (used! / total!).toFixed(3) - const title = ( -
    - Used: {getValueFormat('bytes')(used!, 1)} ( - {getValueFormat('percentunit')(+usedPercent, 1)}) -
    - ) - return ( - - - - ) - }, - }, - { - name: t('cluster_info.list.host_table.columns.instances'), - key: 'instances', - minWidth: 100, - maxWidth: 200, - onRender: (row: IExpandedHostItem) => { - const item = InstanceKinds.map((ik) => { - if (row.instancesCount[ik] > 0) { - return `${row.instancesCount[ik]} ${InstanceKindName[ik]}` - } else { - return '' - } - }) - const content = item.filter((v) => v.length > 0).join(', ') - return ( - - {content} - - ) - }, - }, - ], - [t] - ) - - return ( - - ) -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/InstanceTable.tsx b/ui-ori/lib/apps/ClusterInfo/components/InstanceTable.tsx deleted file mode 100644 index 07cbac1b22..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/InstanceTable.tsx +++ /dev/null @@ -1,195 +0,0 @@ -import { DeleteOutlined } from '@ant-design/icons' -import { usePersistFn } from 'ahooks' -import { Divider, Popconfirm, Tooltip } from 'antd' -import React, { useCallback, useMemo } from 'react' -import { useTranslation } from 'react-i18next' - -import client from '@lib/client' -import { CardTable, InstanceStatusBadge } from '@lib/components' -import DateTime from '@lib/components/DateTime' -import { - buildInstanceTable, - IInstanceTableItem, - InstanceStatus, -} from '@lib/utils/instanceTable' -import { useClientRequest } from '@lib/utils/useClientRequest' - -function StatusColumn({ - node, - onHideTiDB, -}: { - node: IInstanceTableItem - onHideTiDB: (node) => void -}) { - const { t } = useTranslation() - - const onConfirm = usePersistFn(() => { - onHideTiDB && onHideTiDB(node) - }) - - return ( - - {node.instanceKind === 'tidb' && node.status !== InstanceStatus.Up && ( - <> - - - - - - - - - - )} - - - ) -} - -export default function ListPage() { - const { t } = useTranslation() - - const { - data: dataTiDB, - isLoading: loadingTiDB, - error: errTiDB, - sendRequest, - } = useClientRequest((reqConfig) => - client.getInstance().getTiDBTopology(reqConfig) - ) - - const { - data: dataStores, - isLoading: loadingStores, - error: errStores, - } = useClientRequest((reqConfig) => - client.getInstance().getStoreTopology(reqConfig) - ) - - const { - data: dataPD, - isLoading: loadingPD, - error: errPD, - } = useClientRequest((reqConfig) => - client.getInstance().getPDTopology(reqConfig) - ) - - const [tableData, groupData] = useMemo( - () => - buildInstanceTable({ - dataPD, - dataTiDB, - dataTiKV: dataStores?.tikv, - dataTiFlash: dataStores?.tiflash, - includeTiFlash: true, - }), - [dataTiDB, dataStores, dataPD] - ) - - const handleHideTiDB = useCallback( - async (node) => { - await client - .getInstance() - .topologyTidbAddressDelete(`${node.ip}:${node.port}`) - sendRequest() - }, - [sendRequest] - ) - - const columns = useMemo( - () => [ - { - name: t('cluster_info.list.instance_table.columns.node'), - key: 'node', - minWidth: 100, - maxWidth: 160, - onRender: ({ ip, port }) => { - const fullName = `${ip}:${port}` - return ( - - {fullName} - - ) - }, - }, - { - name: t('cluster_info.list.instance_table.columns.status'), - key: 'status', - minWidth: 100, - maxWidth: 120, - onRender: (node) => ( - - ), - }, - { - name: t('cluster_info.list.instance_table.columns.up_time'), - key: 'start_timestamp', - minWidth: 100, - maxWidth: 150, - onRender: ({ start_timestamp: ts }) => { - if (ts !== undefined && ts !== 0) { - return - } - }, - }, - { - name: t('cluster_info.list.instance_table.columns.version'), - fieldName: 'version', - key: 'version', - minWidth: 100, - maxWidth: 150, - onRender: ({ version }) => ( - - {version} - - ), - }, - { - name: t('cluster_info.list.instance_table.columns.git_hash'), - fieldName: 'git_hash', - key: 'git_hash', - minWidth: 100, - maxWidth: 200, - onRender: ({ git_hash }) => ( - - {git_hash} - - ), - }, - { - name: t('cluster_info.list.instance_table.columns.deploy_path'), - fieldName: 'deploy_path', - key: 'deploy_path', - minWidth: 150, - maxWidth: 300, - onRender: ({ deploy_path }) => ( - - {deploy_path} - - ), - }, - ], - [t, handleHideTiDB] - ) - - return ( - - ) -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/Statistics.module.less b/ui-ori/lib/apps/ClusterInfo/components/Statistics.module.less deleted file mode 100644 index 6372349792..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/Statistics.module.less +++ /dev/null @@ -1,8 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -// FIXME: We should not provide padding for CardTab content, so that user -// can control whether a padding is needed. For example, to a . -.content { - margin-left: -@padding-page; - margin-right: -@padding-page; -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/Statistics.tsx b/ui-ori/lib/apps/ClusterInfo/components/Statistics.tsx deleted file mode 100644 index f709bd3e5d..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/Statistics.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React from 'react' -import { useClientRequest } from '@lib/utils/useClientRequest' -import client, { ClusterinfoClusterStatisticsPartial } from '@lib/client' -import { AnimatedSkeleton, ErrorBar, Descriptions, Card } from '@lib/components' -import { useTranslation } from 'react-i18next' -import { getValueFormat } from '@baurine/grafana-value-formats' -import { Alert } from 'antd' - -import styles from './Statistics.module.less' -import { InstanceKinds, InstanceKindName } from '@lib/utils/instanceTable' - -function PartialInfo({ data }: { data?: ClusterinfoClusterStatisticsPartial }) { - const { t } = useTranslation() - return ( - - - {data?.number_of_instances ?? 'Unknown'} - - - {data?.number_of_hosts ?? 'Unknown'} - - - {getValueFormat('bytes')(data?.total_memory_capacity_bytes ?? 0, 1)} - - - {data?.total_physical_cores ?? 'Unknown'} - - - {data?.total_logical_cores ?? 'Unknown'} - - - ) -} - -export default function Statistics() { - const { data, isLoading, error } = useClientRequest((reqConfig) => - client.getInstance().clusterInfoGetStatistics(reqConfig) - ) - const { t } = useTranslation() - - return ( - - {error && } - {data && ( -
    - {(data.probe_failure_hosts ?? 0) > 0 && ( - - - - )} - - - - {(data.versions ?? []).join(', ')} - - - - - - - - {InstanceKinds.map((ik) => { - return ( - - - - ) - })} -
    - )} -
    - ) -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocation.tsx b/ui-ori/lib/apps/ClusterInfo/components/StoreLocation.tsx deleted file mode 100755 index 3f8c0d29e5..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/StoreLocation.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React, { useMemo } from 'react' -import { useClientRequest } from '@lib/utils/useClientRequest' -import client from '@lib/client' -import { AnimatedSkeleton, ErrorBar } from '@lib/components' -import StoreLocationTree, { - buildTreeData, - getShortStrMap, -} from './StoreLocationTree' - -export default function StoreLocation() { - const { data, isLoading, error, sendRequest } = useClientRequest( - (reqConfig) => client.getInstance().getStoreLocationTopology(reqConfig) - ) - const treeData = useMemo(() => buildTreeData(data), [data]) - const shortStrMap = useMemo(() => getShortStrMap(data), [data]) - - return ( -
    - - - document.documentElement.clientHeight - 80 - 48 * 2 // 48 = margin of cardInner - } - onReload={sendRequest} - /> - -
    - ) -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less deleted file mode 100755 index 5837306b95..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.module.less +++ /dev/null @@ -1,33 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.tooltip { - opacity: 0; - position: absolute; - top: 0; - left: 0; - padding: @padding-xs @padding-md; - background: white; - text-align: center; - line-height: @line-height-base; - border-radius: @border-radius-base; - z-index: 10; - transition: all 0.1s ease-out; - pointer-events: none; - box-shadow: @box-shadow-base; - - &::before { - content: ''; - position: absolute; - bottom: 0; - left: 50%; - width: 12px; - height: 12px; - background: white; - border: 1px solid #ddd; - border-top-color: transparent; - border-left-color: transparent; - transform: translate(-50%, 50%) rotate(45deg); - transform-origin: center center; - z-index: 10; - } -} diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.stories.tsx b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.stories.tsx deleted file mode 100755 index daf78ee4d0..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.stories.tsx +++ /dev/null @@ -1,240 +0,0 @@ -import React from 'react' -import StoreLocationTree, { - buildTreeData, - trimDuplicate, - getShortStrMap, -} from '.' - -export default { - title: 'StoreLocationTree', -} - -const dataSource1 = { - name: 'Stores', - value: '', - children: [ - { - name: 'zone', - value: 'sh', - children: [ - { - name: 'rack', - value: 'r1', - children: [ - { - name: 'host', - value: 'h1', - children: [ - { - name: 'TiKV', - value: '127.0.0.1:20160', - children: [], - }, - ], - }, - { - name: 'host', - value: 'h2', - children: [ - { - name: 'TiKV', - value: '127.0.0.1:20162', - children: [], - }, - ], - }, - ], - }, - ], - }, - { - name: 'zone', - value: 'bj', - children: [ - { - name: 'rack', - value: 'r1', - children: [ - { - name: 'host', - value: 'h1', - children: [ - { - name: 'TiKV', - value: '127.0.0.1:20161', - children: [], - }, - ], - }, - ], - }, - { - name: 'TiFlash', - value: '127.0.0.1:3930', - children: [], - }, - ], - }, - ], -} - -export const Normal = () => - -const dataSource2 = { - name: 'Stores', - value: '', - children: [ - { - name: 'failure-domain.beta.kubernetes.io/region', - value: 'us-west1', - children: [ - { - name: 'failure-domain.beta.kubernetes.io/zone', - value: 'us-west1-a', - children: [ - { - name: 'kubernetes.io/hostname', - value: - 'shoot--stating--a13df0bd-56f54530-z1-111111-tkq7r.internal', - children: [ - { - name: 'TiFlash', - value: 'db-tiflash-0.db-tiflash-peer.tidb1373', - children: [], - }, - ], - }, - { - name: 'kubernetes.io/hostname', - value: - 'shoot--stating--a13df0bd-b8cdec65-z1-22222-fdsaf.internal', - children: [ - { - name: 'TiKV', - value: 'db-tikv-0.db-tikv-peer.tidb1373', - children: [], - }, - ], - }, - ], - }, - { - name: 'failure-domain.beta.kubernetes.io/zone', - value: 'us-west1-b', - children: [ - { - name: 'kubernetes.io/hostname', - value: - 'shoot--stating--a13df0bd-xxxxxxxxxx-z1-33333-xxxxx.internal', - children: [ - { - name: 'TiKV', - value: 'db-tikv-1.db-tikv-peer.tidb1373', - children: [], - }, - ], - }, - ], - }, - { - name: 'failure-domain.beta.kubernetes.io/zone', - value: 'us-west1-c', - children: [ - { - name: 'kubernetes.io/hostname', - value: 'shoot--stating--a13df0bd-yyyyy-z1-33333-mmmm.internal', - children: [ - { - name: 'TiKV', - value: 'db-tikv-2.db-tikv-peer.tidb1373', - children: [], - }, - ], - }, - ], - }, - ], - }, - ], -} - -export const Kubernetes = () => - -///////////////////////////// - -const arr1 = [ - 'aaa-bbbb-111a.abc.123', - 'aaa-bbbb-222a.abc.123', - 'aaa-bbbb-333a.abc.123', -] -const arr2 = ['aaa-111a.abc.123', 'aaa-222a.abc.123', 'aaa-333a.abc.123'] -const arr3 = [] -const arr4 = ['abc'] -const arr5 = ['abcd', 'abce'] -console.log(trimDuplicate(arr1)) -console.log(trimDuplicate(arr2)) -console.log(trimDuplicate(arr3)) -console.log(trimDuplicate(arr4)) -console.log(trimDuplicate(arr5)) - -///////////////////////////// - -const data1 = { - location_labels: [ - 'failure-domain.beta.kubernetes.io/region', - 'failure-domain.beta.kubernetes.io/zone', - 'kubernetes.io/hostname', - ], - stores: [ - { - address: 'db-tiflash-0.db-tiflash-peer.tidb1373', - labels: { - engine: 'tiflash', - 'failure-domain.beta.kubernetes.io/region': 'us-west1', - 'failure-domain.beta.kubernetes.io/zone': 'us-west1-a', - 'kubernetes.io/hostname': - 'shoot--stating--a13df0bd-56f54530-z1-111111-tkq7r.internal', - }, - }, - { - address: 'db-tikv-0.db-tikv-peer.tidb1373', - labels: { - engine: '', - 'failure-domain.beta.kubernetes.io/region': 'us-west1', - 'failure-domain.beta.kubernetes.io/zone': 'us-west1-a', - 'kubernetes.io/hostname': - 'shoot--stating--a13df0bd-b8cdec65-z1-22222-fdsaf.internal', - }, - }, - { - address: 'db-tikv-1.db-tikv-peer.tidb1373', - labels: { - engine: '', - 'failure-domain.beta.kubernetes.io/region': 'us-west1', - 'failure-domain.beta.kubernetes.io/zone': 'us-west1-b', - 'kubernetes.io/hostname': - 'shoot--stating--a13df0bd-xxxxxxxxxx-z1-33333-xxxxx.internal', - }, - }, - { - address: 'db-tikv-2.db-tikv-peer.tidb1373', - labels: { - engine: '', - 'failure-domain.beta.kubernetes.io/region': 'us-west1', - 'failure-domain.beta.kubernetes.io/zone': 'us-west1-c', - 'kubernetes.io/hostname': - 'shoot--stating--a13df0bd-yyyyy-z1-33333-mmmm.internal', - }, - }, - ], -} - -const dataSource = buildTreeData(data1) -const shortStrMap = getShortStrMap(data1) -console.log(shortStrMap) - -export const KubernetesByShort = () => ( - -) - -///////////////////////////// diff --git a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.tsx b/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.tsx deleted file mode 100755 index 9e88fadf81..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/components/StoreLocationTree/index.tsx +++ /dev/null @@ -1,587 +0,0 @@ -import React, { useRef, useEffect } from 'react' -import * as d3 from 'd3' -import { - ZoomInOutlined, - ZoomOutOutlined, - ReloadOutlined, -} from '@ant-design/icons' -import { Space } from 'antd' -import { cyan, magenta, grey } from '@ant-design/colors' -import { useTranslation } from 'react-i18next' - -import { TopologyStoreLocation } from '@lib/client' - -import styles from './index.module.less' -import { InstanceKindName } from '@lib/utils/instanceTable' - -////////////////////////////////////// - -type ShortStrMap = Record - -export function getShortStrMap( - data: TopologyStoreLocation | undefined -): ShortStrMap { - let allShortStrMap: ShortStrMap = {} - - if (data === undefined) { - return allShortStrMap - } - - // location labels - // failure-domain.beta.kubernetes.io/region => region - data.location_labels?.forEach((label) => { - if (label.indexOf('/') >= 0) { - const shortStr = label.split('/').pop() - if (shortStr) { - allShortStrMap[label] = shortStr - } - } - }) - - // location labels value - data.location_labels?.forEach((label) => { - // get label values - const labelValues: string[] = [] - data.stores?.forEach((store) => { - const val = store.labels?.[label] - if (val) { - labelValues.push(val) - } - }) - const shortStrMap = trimDuplicate(labelValues) - allShortStrMap = Object.assign(allShortStrMap, shortStrMap) - }) - - // tikv & tiflash nodes address - const addresses = (data.stores || []).map((s) => s.address!) - addresses.forEach((addr) => { - if (addr.startsWith('db-')) { - const shortStr = addr.split('.').shift() - if (shortStr) { - allShortStrMap[addr] = shortStr - } - } - }) - - return allShortStrMap -} - -// input: ['aaa-111a.abc.123', 'aaa-222a.abc.123', 'aaa-333a.abc.123'], items in the array have either the same prefix or suffix, or both. -// output: -// { -// "aaa-111a.abc.123":"111a", -// "aaa-222a.abc.123":"222a", -// "aaa-333a.abc.123":"333a" -// } -export function trimDuplicate(strArr: string[]): ShortStrMap { - const shortStrMap: ShortStrMap = {} - const strSet = new Set(strArr) - if (strSet.size < 2) { - return shortStrMap - } - - let i = 0 - let c - const charSet = new Set() - // calc the prefix length - let headDotOrMinusPos = -1 - while (true) { - charSet.clear() - for (let str of strSet) { - c = str[i] - if (c === undefined) { - break - } - charSet.add(c) - } - if (c === undefined) { - break - } - if (charSet.size > 1) { - break - } - if (c === '.' || c === '-') { - headDotOrMinusPos = i - } - i++ - } - - // calc the suffix length - i = 0 - let tailDotOrMinusPos = -1 - while (true) { - charSet.clear() - for (let str of strSet) { - c = str[str.length - 1 - i] - if (c === undefined) { - break - } - charSet.add(c) - } - if (c === undefined) { - break - } - if (charSet.size > 1) { - break - } - if (c === '.' || c === '-') { - tailDotOrMinusPos = i - } - i++ - } - - if (headDotOrMinusPos === -1 && tailDotOrMinusPos === -1) { - return shortStrMap - } - strSet.forEach((s) => { - const startIdx = headDotOrMinusPos + 1 - const endIdx = - tailDotOrMinusPos === -1 ? s.length : s.length - 1 - tailDotOrMinusPos - const short = s.slice(startIdx, endIdx) - shortStrMap[s] = short - }) - - return shortStrMap -} - -////////////////////////////////////// - -const NODE_STORES = 'Stores' -const NODE_TIFLASH = InstanceKindName.tiflash -const NODE_TIKV = InstanceKindName.tikv - -type TreeNode = { - name: string - value: string - children: TreeNode[] -} - -export function buildTreeData( - data: TopologyStoreLocation | undefined -): TreeNode { - const treeData: TreeNode = { name: NODE_STORES, value: '', children: [] } - - if ((data?.location_labels?.length || 0) > 0) { - const locationLabels: string[] = data?.location_labels || [] - - for (const store of data?.stores || []) { - // reset curNode, point to tree nodes beginning - let curNode = treeData - for (const curLabel of locationLabels) { - const curLabelVal = store.labels![curLabel] - if (curLabelVal === undefined) { - continue - } - let subNode: TreeNode | undefined = curNode.children.find( - (el) => el.name === curLabel && el.value === curLabelVal - ) - if (subNode === undefined) { - subNode = { name: curLabel, value: curLabelVal, children: [] } - curNode.children.push(subNode) - } - // make curNode point to subNode - curNode = subNode - } - const storeType = - store.labels!['engine'] === 'tiflash' ? NODE_TIFLASH : NODE_TIKV - curNode.children.push({ - name: storeType, - value: store.address!, - children: [], - }) - } - } - return treeData -} - -////////////////////////////////////// - -interface ITooltipConfig { - enable: boolean - offsetX: number - offsetY: number -} - -export interface IStoreLocationProps { - dataSource: any - shortStrMap?: ShortStrMap - getMinHeight?: () => number - onReload?: () => void -} - -const MAX_STR_LENGTH = 16 - -const margin = { left: 60, right: 40, top: 80, bottom: 100 } -const dx = 40 - -const diagonal = d3 - .linkHorizontal() - .x((d: any) => d.y) - .y((d: any) => d.x) - -function calcHeight(root) { - let x0 = Infinity - let x1 = -x0 - root.each((d) => { - if (d.x > x1) x1 = d.x - if (d.x < x0) x0 = d.x - }) - return x1 - x0 -} - -export default function StoreLocationTree({ - dataSource, - shortStrMap = {}, - getMinHeight, - onReload, -}: IStoreLocationProps) { - const divRef = useRef(null) - const { t } = useTranslation() - - const tooltipConfig = useRef() - tooltipConfig.current = { - enable: true, - offsetX: 0, - offsetY: 0, - } - - useEffect(() => { - let divWidth = divRef.current?.clientWidth || 0 - const root = d3.hierarchy(dataSource) as any - root.descendants().forEach((d, i) => { - d.id = i - d._children = d.children - // collapse all nodes default - // if (d.depth) d.children = null - }) - const dy = divWidth / (root.height + 2) - let tree = d3.tree().nodeSize([dx, dy]) - - const div = d3.select(divRef.current) - div.select('svg#slt').remove() - const svg = div - .append('svg') - .attr('id', 'slt') - .attr('width', divWidth) - .attr('height', dx + margin.top + margin.bottom) - .style('font', '14px sans-serif') - .style('user-select', 'none') - - const bound = svg - .append('g') - .attr('transform', `translate(${margin.left}, ${margin.top})`) - const gLink = bound - .append('g') - .attr('fill', 'none') - .attr('stroke', '#ddd') - .attr('stroke-width', 2) - const gNode = bound - .append('g') - .attr('cursor', 'pointer') - .attr('pointer-events', 'all') - - // tooltip - const tooltip = d3.select('#store-location-tooltip') - // zoom - const zoom = d3 - .zoom() - .scaleExtent([0.1, 5]) - .filter(function () { - // ref: https://godbasin.github.io/2018/02/07/d3-tree-notes-4-zoom-amd-drag/ - // only zoom when pressing CTRL - const isWheelEvent = d3.event instanceof WheelEvent - return !isWheelEvent || (isWheelEvent && d3.event.ctrlKey) - }) - .on('start', () => { - // hide tooltip if it shows - tooltip.style('opacity', 0) - tooltipConfig.current!.enable = false - }) - .on('zoom', () => { - const t = d3.event.transform - bound.attr( - 'transform', - `translate(${t.x + margin.left}, ${t.y + margin.top}) scale(${t.k})` - ) - // this will cause unexpected result when dragging - // svg.attr('transform', d3.event.transform) - }) - .on('end', () => { - const t = d3.event.transform - tooltipConfig.current = { - enable: t.k === 1, // disable tooltip if zoom - offsetX: t.x, - offsetY: t.y, - } - }) - svg.call(zoom as any) - - // zoom actions - d3.select('#slt-zoom-in').on('click', function () { - zoom.scaleBy(svg.transition().duration(500) as any, 1.2) - }) - d3.select('#slt-zoom-out').on('click', function () { - zoom.scaleBy(svg.transition().duration(500) as any, 0.8) - }) - d3.select('#slt-zoom-reset').on('click', function () { - // https://stackoverflow.com/a/51981636/2998877 - svg - .transition() - .duration(500) - .call(zoom.transform as any, d3.zoomIdentity) - onReload?.() - }) - - update(root) - - function update(source) { - // use altKey to slow down the animation, interesting! - const duration = d3.event && d3.event.altKey ? 2500 : 500 - const nodes = root.descendants().reverse() - const links = root.links() - - // compute the new tree layout - // it modifies root self - tree(root) - const boundHeight = calcHeight(root) - // node.x represent the y axes position actually - // [root.y, root.x] is [0, 0], we need to move it to [0, boundHeight/2] - root.descendants().forEach((d, i) => { - d.x += boundHeight / 2 - }) - if (root.x0 === undefined) { - // initial root.x0, root.y0, only need to set it once - root.x0 = root.x - root.y0 = root.y - } - - const contentHeight = boundHeight + margin.top + margin.bottom - - const transition = svg - .transition() - .duration(duration) - .attr('width', divWidth) - .attr('height', Math.max(getMinHeight?.() || 0, contentHeight)) - - // update the nodes - const node = gNode.selectAll('g').data(nodes, (d: any) => d.id) - - // enter any new nodes at the parent's previous position - const nodeEnter = node - .enter() - .append('g') - .attr('transform', (_d) => `translate(${source.y0},${source.x0})`) - .attr('fill-opacity', 0) - .attr('stroke-opacity', 0) - .on('click', (d: any) => { - d.children = d.children ? null : d._children - update(d) - }) - .on('mouseenter', onMouseEnter) - .on('mouseleave', onMouseLeave) - - function onMouseEnter(datum) { - if (!tooltipConfig.current?.enable) { - return - } - - const { name, value } = datum.data - if ( - shortStrMap[name] === undefined && - shortStrMap[value] === undefined - ) { - return - } - - tooltip.select('#store-location-tooltip-name').text(name) - tooltip.select('#store-location-tooltip-value').text(value) - - const x = datum.y + margin.left + tooltipConfig.current.offsetX - const y = datum.x + margin.top - 20 + tooltipConfig.current.offsetY - tooltip.style( - 'transform', - `translate(calc(-50% + ${x}px), calc(-100% + ${y}px))` - ) - - tooltip.style('opacity', 1) - } - function onMouseLeave() { - tooltip.style('opacity', 0) - } - - // circle - nodeEnter - .append('circle') - .attr('r', 8) - .attr('fill', '#fff') - .attr('stroke', (d: any) => { - if (d._children) { - return grey[1] - } - if (d.data.name === NODE_TIFLASH) { - return magenta[4] - } - return cyan[5] - }) - .attr('stroke-width', 3) - - // text for root node - nodeEnter - .filter(({ data: { name } }: any) => name === NODE_STORES) - .append('text') - .attr('dy', '0.31em') - .attr('x', -15) - .attr('text-anchor', 'end') - .text(({ data: { name } }: any) => name) - - // text for non-root and non-leaf nodes - const middleNodeText = nodeEnter - .filter( - ({ data: { name } }: any) => - name !== NODE_STORES && name !== NODE_TIFLASH && name !== NODE_TIKV - ) - .append('text') - middleNodeText - .append('tspan') - .text(({ data: { name } }: any) => shortStrMap[name] ?? name) - .attr('x', -15) - .attr('dy', '-0.2em') - .attr('text-anchor', 'end') - middleNodeText - .append('tspan') - .text(({ data: { value } }: any) => { - if (value.length <= MAX_STR_LENGTH) { - return value - } - let shortStr = shortStrMap[value] ?? value - if (shortStr.length > MAX_STR_LENGTH) { - const midIdx = Math.round(MAX_STR_LENGTH / 2) - 1 - shortStr = - shortStr.slice(0, midIdx) + - '..' + - shortStr.slice(shortStr.length - midIdx, shortStr.length) - } - return shortStr - }) - .attr('x', -15) - .attr('dy', '1em') - .attr('text-anchor', 'end') - - // text for leaf nodes - const leafNodeText = nodeEnter - .filter( - ({ data: { name } }: any) => - name === NODE_TIFLASH || name === NODE_TIKV - ) - .append('text') - leafNodeText - .append('tspan') - .text(({ data: { name } }: any) => name) - .attr('x', 15) - .attr('dy', '-0.2em') - leafNodeText - .append('tspan') - .text(({ data: { value } }: any) => shortStrMap[value] ?? value) - .attr('x', 15) - .attr('dy', '1em') - - // transition nodes to their new position - node - .merge(nodeEnter as any) - .transition(transition as any) - .attr('transform', (d: any) => `translate(${d.y},${d.x})`) - .attr('fill-opacity', 1) - .attr('stroke-opacity', 1) - - // transition exiting nodes to the parent's new position - node - .exit() - .transition(transition as any) - .remove() - .attr('transform', (d) => `translate(${source.y},${source.x})`) - .attr('fill-opacity', 0) - .attr('stroke-opacity', 0) - - // update the links - const link = gLink.selectAll('path').data(links, (d: any) => d.target.id) - - // enter any new links at the parent's previous position - const linkEnter = link - .enter() - .append('path') - .attr('d', (_d) => { - const o = { x: source.x0, y: source.y0 } - return diagonal({ source: o, target: o } as any) - }) - - // transition links to their new position - link - .merge(linkEnter as any) - .transition(transition as any) - .attr('d', diagonal as any) - - // transition exiting nodes to the parent's new position - link - .exit() - .transition(transition as any) - .remove() - .attr('d', (_d) => { - const o = { x: source.x, y: source.y } - return diagonal({ source: o, target: o } as any) - }) - - // stash the old positions for transition - root.eachBefore((d) => { - d.x0 = d.x - d.y0 = d.y - }) - } - - function resizeHandler() { - divWidth = divRef.current?.clientWidth || 0 - const dy = divWidth / (root.height + 2) - tree = d3.tree().nodeSize([dx, dy]) - update(root) - } - - window.addEventListener('resize', resizeHandler) - return () => { - window.removeEventListener('resize', resizeHandler) - } - }, [dataSource, getMinHeight, onReload, shortStrMap]) - - return ( -
    - - - - - - *{t('cluster_info.list.store_topology.tooltip')} - - - -
    -
    -
    -
    -
    - ) -} - -// refs: -// https://observablehq.com/@d3/tidy-tree -// https://observablehq.com/@d3/collapsible-tree diff --git a/ui-ori/lib/apps/ClusterInfo/index.meta.ts b/ui-ori/lib/apps/ClusterInfo/index.meta.ts deleted file mode 100644 index af55c48425..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ClusterOutlined } from '@ant-design/icons' - -export default { - id: 'cluster_info', - routerPrefix: '/cluster_info', - icon: ClusterOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_cluster_info" */ '.'), -} diff --git a/ui-ori/lib/apps/ClusterInfo/index.tsx b/ui-ori/lib/apps/ClusterInfo/index.tsx deleted file mode 100644 index 7fc65495e9..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react' -import { HashRouter as Router, Route, Routes, Navigate } from 'react-router-dom' - -import { Root } from '@lib/components' -import ListPage from './pages/List' - -const App = () => { - return ( - - - - } - /> - } /> - - - - ) -} - -export default App diff --git a/ui-ori/lib/apps/ClusterInfo/pages/List.module.less b/ui-ori/lib/apps/ClusterInfo/pages/List.module.less deleted file mode 100644 index d761c22587..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/pages/List.module.less +++ /dev/null @@ -1,15 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.card_tab_navs { - padding-left: @padding-page; // 48px - padding-right: @padding-page; // 48px - height: @padding-page; // 48px - margin-bottom: @padding-md; // 16px - border-bottom: 1px solid @gray-4; - - :global { - .ant-tabs-ink-bar { - height: @outline-width; // 2px - } - } -} diff --git a/ui-ori/lib/apps/ClusterInfo/pages/List.tsx b/ui-ori/lib/apps/ClusterInfo/pages/List.tsx deleted file mode 100644 index c329d44c4f..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/pages/List.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { useNavigate, useParams } from 'react-router-dom' - -import { Card } from '@lib/components' -import CardTabs from '@lib/components/CardTabs' - -import InstanceTable from '../components/InstanceTable' -import HostTable from '../components/HostTable' -import DiskTable from '../components/DiskTable' -import StoreLocation from '../components/StoreLocation' -import Statistics from '../components/Statistics' - -import styles from './List.module.less' - -function renderTabBar(props, DefaultTabBar) { - return ( - - - - ) -} - -export default function ListPage() { - const { tabKey } = useParams() - const navigate = useNavigate() - const { t } = useTranslation() - - const tabs = [ - { - key: 'instance', - title: t('cluster_info.list.instance_table.title'), - content: () => , - }, - { - key: 'host', - title: t('cluster_info.list.host_table.title'), - content: () => , - }, - { - key: 'disk', - title: t('cluster_info.list.disk_table.title'), - content: () => , - }, - { - key: 'store_topology', - title: t('cluster_info.list.store_topology.title'), - content: () => , - }, - { - key: 'statistics', - title: t('cluster_info.list.statistics.title'), - content: () => , - }, - ] - - return ( - - - { - navigate(`/cluster_info/${key}`) - }} - renderTabBar={renderTabBar} - animated={false} - tabs={tabs} - /> - - - ) -} diff --git a/ui-ori/lib/apps/ClusterInfo/status/status.ts b/ui-ori/lib/apps/ClusterInfo/status/status.ts deleted file mode 100644 index 4cd5fdbf5d..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/status/status.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const STATUS_UNREACHABLE = 0 -export const STATUS_UP = 1 -export const STATUS_TOMBSTONE = 2 -export const STATUS_OFFLINE = 3 -export const STATUS_DOWN = 4 diff --git a/ui-ori/lib/apps/ClusterInfo/translations/en.yaml b/ui-ori/lib/apps/ClusterInfo/translations/en.yaml deleted file mode 100644 index 26612a3a1d..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/translations/en.yaml +++ /dev/null @@ -1,54 +0,0 @@ -cluster_info: - nav_title: Cluster Info - list: - instance_table: - title: Instances - columns: - node: Address - version: Version - status: Status - up_time: Up Time - deploy_path: Deployment Directory - git_hash: Git Hash - actions: - hide_db: - tooltip: Hide - confirm: Do you want to hide this {{distro.tidb}} instance? - host_table: - title: Hosts - columns: - host: Host Address - cpu: CPU - cpu_arch: CPU Arch - cpu_usage: CPU Usage - memory: Memory - memory_usage: Memory Usage - instances: Instances - instanceUnavailable: Host information is unavailable due to instances on the host is down - disk_table: - title: Disks - columns: - host: Host Address - mount_dir: Mount Directory - fs: File System - disk_size: Disk Capacity - disk_usage: Disk Usage - instances: Instances - store_topology: - title: Store Topology - tooltip: You can also zoom in or out by pressing CTRL and scrolling mouse wheel - statistics: - title: Statistics - summary_title: Cluster Summary - field: - version: Version - instances: '# Instances' - hosts: '# Hosts that instances deployed' - memory_capacity: Σ Memory capacity (of all hosts) - physical_cores: Σ CPU physical cores (of all hosts) - logical_cores: Σ CPU logical cores (of all hosts) - message: - instance_down: 'Some instances are down in {{n}} host(s) so that host related information may be inccurate.' - sub_statistics: Sub-statistics below are counted by instance kinds. The sum of host metrics in sub-statistics can be larger "Cluster Summary" when different instances are deployed in the same host. - error: - load: 'Load component {{comp}} error: {{cause}}' diff --git a/ui-ori/lib/apps/ClusterInfo/translations/zh.yaml b/ui-ori/lib/apps/ClusterInfo/translations/zh.yaml deleted file mode 100644 index 33eff7a140..0000000000 --- a/ui-ori/lib/apps/ClusterInfo/translations/zh.yaml +++ /dev/null @@ -1,54 +0,0 @@ -cluster_info: - nav_title: 集群信息 - list: - instance_table: - title: 实例 - columns: - node: 地址 - version: 版本 - status: 状态 - up_time: 启动时间 - deploy_path: 部署路径 - git_hash: Git 哈希值 - actions: - hide_db: - tooltip: 隐藏 - confirm: 您确认要隐藏该 {{distro.tidb}} 实例吗? - host_table: - title: 主机 - columns: - host: 主机地址 - cpu: CPU - cpu_arch: CPU 架构 - cpu_usage: CPU 使用率 - memory: 物理内存 - memory_usage: 内存使用率 - instances: 实例 - instanceUnavailable: 由于该主机上没有实例存活,因此无法获取主机信息 - disk_table: - title: 磁盘 - columns: - host: 主机地址 - mount_dir: 磁盘挂载点 - fs: 文件系统 - disk_size: 磁盘容量 - disk_usage: 磁盘使用率 - instances: 实例 - store_topology: - title: 存储拓扑 - tooltip: 按住 Ctrl 键并滑动鼠标滚轮也可以缩放 - statistics: - title: 统计 - summary_title: 集群总计 - field: - version: 版本 - instances: 总实例数量 - hosts: 实例部署的总机器数量 - memory_capacity: 内存总量总和 (按实例部署的机器计算) - physical_cores: CPU 物理核心数总和 (按实例部署的机器计算) - logical_cores: CPU 逻辑核心数总和 (按实例部署的机器计算) - message: - instance_down: '由于有 {{n}} 台机器上的所有实例都未启动或无法访问,因此统计中关于机器的指标可能会不准确。' - sub_statistics: 子统计按不同实例类型分别计算。当一个机器上部署了不同类型实例时,以下子统计的机器指标累加起来会超过“集群总计”数量。 - error: - load: '加载组件 {{comp}} 失败: {{cause}}' diff --git a/ui-ori/lib/apps/Configuration/InlineEditor.tsx b/ui-ori/lib/apps/Configuration/InlineEditor.tsx deleted file mode 100644 index a063ec83f2..0000000000 --- a/ui-ori/lib/apps/Configuration/InlineEditor.tsx +++ /dev/null @@ -1,140 +0,0 @@ -import { useState, useCallback, useEffect } from 'react' -import React from 'react' -import { EditOutlined } from '@ant-design/icons' -import { Input, Popover, Button, Space, Tooltip } from 'antd' -import { usePersistFn } from 'ahooks' - -interface IInlineEditorProps { - title?: string - value: any - displayValue: string - onSave?: (newValue: any) => Promise -} - -function valueWithSameType(newValue, oldValue) { - if (typeof oldValue === 'string') { - return newValue - } else if (typeof oldValue === 'number') { - // Note: `Number()` is more strict than `parseFloat()`. - const v = Number(newValue) - if (isNaN(v)) { - throw new Error(`"${newValue}" is not a number`) - } - return v - } else if (typeof oldValue === 'boolean') { - switch (String(newValue).toLowerCase().trim()) { - case 'true': - case 'yes': - case '1': - return true - case 'false': - case 'no': - case '0': - return false - default: - throw new Error(`"${newValue}" is not a boolean`) - } - } else { - // Otherwise, return as string - return newValue - } -} - -function InlineEditor({ - value, - displayValue, - title, - onSave, -}: IInlineEditorProps) { - const [isVisible, setIsVisible] = useState(false) - const [inputVal, setInputVal] = useState(displayValue) - const [isPosting, setIsPosting] = useState(false) - - const handleCancel = useCallback(() => { - setIsVisible(false) - setInputVal(displayValue) - }, [displayValue]) - - const handleSave = usePersistFn(async () => { - if (!onSave) { - setIsVisible(false) - return - } - try { - setIsPosting(true) - // PD only accept modified config in the same value type, - // i.e. true => false, but not true => "false" - const r = await onSave(valueWithSameType(inputVal, value)) - if (r !== false) { - // When onSave returns non-false, input value is not reverted and only popup is hidden - setIsVisible(false) - } else { - // When onSave returns false, popup is not hidden and value is reverted - setInputVal(displayValue) - } - } catch (e) { - setInputVal(displayValue) - setIsVisible(false) - } finally { - setIsPosting(false) - } - }) - - const handleInputValueChange = useCallback((e) => { - setInputVal(e.target.value) - }, []) - - useEffect(() => { - setInputVal(displayValue) - }, [displayValue]) - - const renderPopover = usePersistFn(() => { - return ( - -
    - -
    -
    - - - - -
    -
    - ) - }) - - return ( - - - {' '} - - {displayValue} - - - - ) -} - -export default InlineEditor diff --git a/ui-ori/lib/apps/Configuration/index.meta.ts b/ui-ori/lib/apps/Configuration/index.meta.ts deleted file mode 100644 index 5ed4c33271..0000000000 --- a/ui-ori/lib/apps/Configuration/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ToolOutlined } from '@ant-design/icons' - -export default { - id: 'configuration', - routerPrefix: '/configuration', - icon: ToolOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_configuration" */ '.'), -} diff --git a/ui-ori/lib/apps/Configuration/index.tsx b/ui-ori/lib/apps/Configuration/index.tsx deleted file mode 100644 index 5d6453a7f1..0000000000 --- a/ui-ori/lib/apps/Configuration/index.tsx +++ /dev/null @@ -1,228 +0,0 @@ -import React, { useMemo, useCallback, useRef, useState, useEffect } from 'react' -import { Root, CardTable, Card, Pre } from '@lib/components' -import { useClientRequest } from '@lib/utils/useClientRequest' -import client, { ConfigurationItem } from '@lib/client' -import { IGroup, IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import InlineEditor from './InlineEditor' -import { Modal, Spin, Tooltip, Input } from 'antd' -import { usePersistFn, useDebounce } from 'ahooks' -import { LoadingOutlined } from '@ant-design/icons' -import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' -import { useTranslation } from 'react-i18next' - -interface IRow extends ConfigurationItem { - kind: string -} - -interface IValueProps { - item: IRow - onSaved?: () => void -} - -const loadingSpinner = - -function Value({ item, onSaved }: IValueProps) { - const handleSave = usePersistFn(async (newValue) => { - try { - const resp = await client.getInstance().configurationEdit({ - id: item.id, - kind: item.kind, - new_value: newValue, - }) - if ((resp?.data?.warnings?.length ?? 0) > 0) { - Modal.warning({ - title: 'Edit configuration is partially done', - content: ( -
    {resp.data.warnings?.map((w) => w.message).join('\n\n')}
    - ), - }) - } - } catch (e) { - return false - } - onSaved?.() - }) - - const stringValue = String(item.value) - - if (item.is_multi_value) { - return ( - - (multiple values){' '} - - {stringValue} - - - ) - } else if (!item.is_editable) { - return ( - - {stringValue} - - ) - } else { - // Note: We preserve the original value so that newValue's type can be inferred. - return ( - - ) - } -} - -function getKey(item: IRow) { - return `${item.kind}.${item.id}` -} - -export default function () { - const { data, isLoading, error, sendRequest } = useClientRequest( - (reqConfig) => client.getInstance().configurationGetAll(reqConfig) - ) - - const { t } = useTranslation() - const [filterValueLower, setFilterValueLower] = useState('') - const debouncedFilterValue = useDebounce(filterValueLower, { wait: 200 }) - - const handleSaved = useCallback(() => { - sendRequest() - }, [sendRequest]) - - const handleFilterChange = useCallback((e) => { - setFilterValueLower(e.target.value.toLowerCase()) - }, []) - - const errors = useMemo(() => { - if (error) { - return [error] - } - if (data?.errors) { - return data.errors - } - return [] - }, [data, error]) - - const [rows, setRows] = useState([]) - const [groups, setGroups] = useState([]) - const lastSavedGroups = useRef([]) - - // When data is changed, re-calculate rows and groups. - useEffect(() => { - if (!data) { - setRows([]) - setGroups([]) - lastSavedGroups.current = [] - return - } - - const newRows: IRow[] = [] - const newGroups: IGroup[] = [] - let startIndex = 0 - for (const configKind of [ - 'tidb_variable', - 'pd_config', - 'tikv_config', - 'tidb_config', - ]) { - const items = data?.items?.[configKind] ?? [] - for (const item of items) { - if (debouncedFilterValue.length > 0) { - if ( - item.id?.toLowerCase().indexOf(debouncedFilterValue) === -1 && - String(item.value).toLowerCase().indexOf(debouncedFilterValue) === - -1 - ) { - continue - } - } - newRows.push({ - ...item, - kind: configKind, - }) - } - newGroups.push({ - key: configKind, - name: t(`configuration.common.kind.${configKind}`), - startIndex: startIndex, - count: newRows.length - startIndex, - }) - startIndex = newRows.length - } - - setRows(newRows) - - // DetailsList internally changes the group element and add new fields. When assigning new - // fresh groups, group states will be changed, result in UI state not preserved. - // Thus, we update to use new groups only when groups are different. - if (JSON.stringify(lastSavedGroups.current) === JSON.stringify(newGroups)) { - // Update group reference, otherwise DetailsList won't update - setGroups((g) => [...g]) - } else { - setGroups(newGroups) - lastSavedGroups.current = JSON.parse(JSON.stringify(newGroups)) - } - }, [data, debouncedFilterValue, t]) - - const columns = useMemo(() => { - const columns: IColumn[] = [ - { - key: 'key', - name: 'Config', - minWidth: 300, - maxWidth: 300, - onRender: (item) => { - return ( - - {item.id} - - ) - }, - }, - { - key: 'value', - name: 'Value', - onRender: (item) => { - return - }, - minWidth: 300, - maxWidth: 300, - }, - ] - return columns - }, [handleSaved]) - - return ( - - - -
    - - - -
    -
    - - - - - -
    -
    - ) -} diff --git a/ui-ori/lib/apps/Configuration/translations/en.yaml b/ui-ori/lib/apps/Configuration/translations/en.yaml deleted file mode 100644 index d7a20b7cd5..0000000000 --- a/ui-ori/lib/apps/Configuration/translations/en.yaml +++ /dev/null @@ -1,8 +0,0 @@ -configuration: - nav_title: Configurations - common: - kind: - tidb_variable: '{{distro.tidb}} Variables' - pd_config: '{{distro.pd}} Configurations' - tikv_config: '{{distro.tikv}} Configurations' - tidb_config: '{{distro.tidb}} Configurations' diff --git a/ui-ori/lib/apps/Configuration/translations/zh.yaml b/ui-ori/lib/apps/Configuration/translations/zh.yaml deleted file mode 100644 index ed25a6e55c..0000000000 --- a/ui-ori/lib/apps/Configuration/translations/zh.yaml +++ /dev/null @@ -1,8 +0,0 @@ -configuration: - nav_title: 实例配置 - common: - kind: - tidb_variable: '{{distro.tidb}} 变量' - pd_config: '{{distro.pd}} 配置' - tikv_config: '{{distro.tikv}} 配置' - tidb_config: '{{distro.tidb}} 配置' diff --git a/ui-ori/lib/apps/ContinuousProfiling/index.meta.ts b/ui-ori/lib/apps/ContinuousProfiling/index.meta.ts deleted file mode 100644 index fa596d4c25..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/index.meta.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { AimOutlined } from '@ant-design/icons' - -export default { - id: 'continuous_profiling', - routerPrefix: '/continuous_profiling', - icon: AimOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => - import(/* webpackChunkName: "app_continuous_profiling" */ '.'), -} diff --git a/ui-ori/lib/apps/ContinuousProfiling/index.tsx b/ui-ori/lib/apps/ContinuousProfiling/index.tsx deleted file mode 100644 index 0e48d29f44..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react' -import { HashRouter as Router, Route, Routes } from 'react-router-dom' - -import { Root, ParamsPageWrapper } from '@lib/components' -import { Detail, List } from './pages' - -const App = () => ( - - - - } /> - - - - } - /> - - - -) - -export default App diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/ConProfSettingForm.tsx b/ui-ori/lib/apps/ContinuousProfiling/pages/ConProfSettingForm.tsx deleted file mode 100755 index a508c4e5e3..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/pages/ConProfSettingForm.tsx +++ /dev/null @@ -1,214 +0,0 @@ -import React, { useState, useCallback, useMemo } from 'react' -import { - Form, - Skeleton, - Switch, - Input, - Space, - Button, - Modal, - Select, -} from 'antd' -import { ExclamationCircleOutlined } from '@ant-design/icons' -import { useTranslation } from 'react-i18next' -import { TFunction } from 'i18next' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import client, { - ErrorStrategy, - ConprofContinuousProfilingConfig, -} from '@lib/client' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { ErrorBar, InstanceSelect } from '@lib/components' -import { useIsWriteable } from '@lib/utils/store' - -const ONE_DAY_SECONDS = 24 * 60 * 60 -const RETENTION_SECONDS = [ - 3 * ONE_DAY_SECONDS, - 5 * ONE_DAY_SECONDS, - 10 * ONE_DAY_SECONDS, -] - -function translateSecToDay(seconds: number, t: TFunction) { - // in our case, the seconds value must be the multiple of one day seconds - if (seconds % ONE_DAY_SECONDS !== 0) { - console.warn(`${seconds} is not the mulitple of one day seconds`) - } - const day = seconds / ONE_DAY_SECONDS - return t('continuous_profiling.settings.profile_retention_duration_option', { - d: day, - }) -} - -interface Props { - onClose: () => void - onConfigUpdated: () => any -} - -function ConProfSettingForm({ onClose, onConfigUpdated }: Props) { - const [submitting, setSubmitting] = useState(false) - const { t } = useTranslation() - const isWriteable = useIsWriteable() - - const { - data: initialConfig, - isLoading: loading, - error, - } = useClientRequest(() => - client.getInstance().continuousProfilingConfigGet({ - errorStrategy: ErrorStrategy.Custom, - }) - ) - - const { data: estimateSize } = useClientRequest(() => - client.getInstance().continuousProfilingEstimateSizeGet({ - errorStrategy: ErrorStrategy.Custom, - }) - ) - - const dataRetentionSeconds = useMemo(() => { - const curRetentionSec = - initialConfig?.continuous_profiling?.data_retention_seconds - if ( - curRetentionSec && - RETENTION_SECONDS.indexOf(curRetentionSec) === -1 && - // filter out the duration that is not multiple of ONE_DAY_SECONDS - curRetentionSec % ONE_DAY_SECONDS === 0 - ) { - return RETENTION_SECONDS.concat(curRetentionSec).sort() - } - return RETENTION_SECONDS - }, [initialConfig]) - - const handleSubmit = useCallback( - (values) => { - async function updateConfig(values) { - const newConfig: ConprofContinuousProfilingConfig = { - enable: values.enable, - data_retention_seconds: values.data_retention_seconds, - } - try { - setSubmitting(true) - await client.getInstance().continuousProfilingConfigPost({ - continuous_profiling: newConfig, - }) - onClose() - onConfigUpdated() - } finally { - setSubmitting(false) - } - } - - if (!values.enable) { - // confirm - Modal.confirm({ - title: t('continuous_profiling.settings.close_feature'), - icon: , - content: t('continuous_profiling.settings.close_feature_confirm'), - okText: t('continuous_profiling.settings.actions.close'), - cancelText: t('continuous_profiling.settings.actions.cancel'), - okButtonProps: { danger: true }, - onOk: () => updateConfig(values), - }) - } else { - updateConfig(values) - } - }, - [t, onClose, onConfigUpdated] - ) - - return ( - <> - {error && } - {loading && } - {!loading && initialConfig && ( -
    - - - - - - prev.enable !== cur.enable} - > - {({ getFieldValue }) => - getFieldValue('enable') && ( - <> - - - - - - - - - - - - - ) - } - - - - - - - -
    - )} - - ) -} - -export default ConProfSettingForm diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/Detail.tsx b/ui-ori/lib/apps/ContinuousProfiling/pages/Detail.tsx deleted file mode 100644 index d85ba8341e..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/pages/Detail.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import { Badge, Button } from 'antd' -import React, { useCallback, useMemo } from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' -import { ArrowLeftOutlined } from '@ant-design/icons' -import { usePersistFn } from 'ahooks' -import { upperFirst } from 'lodash' - -import client from '@lib/client' -import { CardTable, DateTime, Descriptions, Head } from '@lib/components' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { InstanceKindName } from '@lib/utils/instanceTable' -import useQueryParams from '@lib/utils/useQueryParams' - -export default function Page() { - const { t } = useTranslation() - const { ts } = useQueryParams() - - const { - data: groupProfileDetail, - isLoading: groupDetailLoading, - error: groupDetailError, - } = useClientRequest(() => { - return client.getInstance().continuousProfilingGroupProfileDetailGet(ts) - }) - - const profileDuration = groupProfileDetail?.profile_duration_secs || 0 - - const columns = useMemo( - () => [ - { - name: t('continuous_profiling.detail.table.columns.instance'), - key: 'instance', - minWidth: 150, - maxWidth: 400, - onRender: (record) => record.target.address, - }, - { - name: t('continuous_profiling.detail.table.columns.kind'), - key: 'kind', - minWidth: 100, - maxWidth: 150, - onRender: (record) => { - return InstanceKindName[record.target.component] - }, - }, - { - name: t('continuous_profiling.detail.table.columns.content'), - key: 'content', - minWidth: 150, - maxWidth: 300, - onRender: (record) => { - const profileType = record.profile_type - if (profileType === 'profile') { - return `CPU Profiling - ${profileDuration}s` - } - return upperFirst(profileType) - }, - }, - { - name: t('continuous_profiling.detail.table.columns.status'), - key: 'status', - minWidth: 150, - maxWidth: 200, - onRender: (record) => { - if (record.state === 'failed') { - return - } else { - return ( - - ) - } - }, - }, - ], - [t, profileDuration] - ) - - const handleRowClick = usePersistFn( - async (rec, _idx, _ev: React.MouseEvent) => { - const { - profile_type, - target: { component, address }, - } = rec - const res = await client - .getInstance() - .continuousProfilingActionTokenGet( - `ts=${ts}&profile_type=${profile_type}&component=${component}&address=${address}` - ) - const token = res.data - if (!token) { - return - } - window.open( - `${client.getBasePath()}/continuous_profiling/single_profile/view?token=${token}`, - '_blank' - ) - } - ) - - const handleDownloadGroup = useCallback(async () => { - const res = await client - .getInstance() - .continuousProfilingActionTokenGet(`ts=${ts}`) - const token = res.data - if (!token) { - return - } - window.location.href = `${client.getBasePath()}/continuous_profiling/download?token=${token}` - }, [ts]) - - return ( -
    - - {t('continuous_profiling.detail.head.back')} - - } - titleExtra={ - - } - > - {groupProfileDetail && ( - - - - - - )} - - - -
    - ) -} diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/List.module.less b/ui-ori/lib/apps/ContinuousProfiling/pages/List.module.less deleted file mode 100644 index 96493788d3..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/pages/List.module.less +++ /dev/null @@ -1,20 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.list { - &_container { - display: flex; - flex-direction: column; - height: 100vh; - } - - &_toolbar { - @media only screen and (max-width: @screen-md) { - flex-direction: column; - } - } -} - -.alert_container { - margin-left: @padding-page; - margin-right: @padding-page; -} diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/List.tsx b/ui-ori/lib/apps/ContinuousProfiling/pages/List.tsx deleted file mode 100644 index 00ca02d193..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/pages/List.tsx +++ /dev/null @@ -1,229 +0,0 @@ -import { Badge, Tooltip, Space, Drawer, Result, Button, Alert } from 'antd' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import React, { useMemo, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' -import { usePersistFn, useSessionStorageState } from 'ahooks' -import { - LoadingOutlined, - ReloadOutlined, - SettingOutlined, -} from '@ant-design/icons' - -import client, { ErrorStrategy } from '@lib/client' -import { - Card, - CardTable, - Toolbar, - TimeRangeSelector, - TimeRange, - calcTimeRange, -} from '@lib/components' -import DateTime from '@lib/components/DateTime' -import openLink from '@lib/utils/openLink' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { InstanceKindName } from '@lib/utils/instanceTable' - -import ConProfSettingForm from './ConProfSettingForm' - -import styles from './List.module.less' - -export default function Page() { - const { - data: historyTable, - isLoading: listLoading, - error: historyError, - sendRequest: reloadGroupProfiles, - } = useClientRequest(() => { - const [beginTime, endTime] = calcTimeRange(timeRange) - return client - .getInstance() - .continuousProfilingGroupProfilesGet(beginTime, endTime, { - errorStrategy: ErrorStrategy.Custom, - }) - }) - const { t } = useTranslation() - const navigate = useNavigate() - - const handleRowClick = usePersistFn( - (rec, _idx, ev: React.MouseEvent) => { - openLink(`/continuous_profiling/detail?ts=${rec.ts}`, ev, navigate) - } - ) - - const historyTableColumns = useMemo( - () => [ - { - name: t('continuous_profiling.list.table.columns.targets'), - key: 'targets', - minWidth: 150, - maxWidth: 250, - onRender: (rec) => { - const { tikv, tidb, pd, tiflash } = rec.component_num - const s = `${tikv} ${InstanceKindName['tikv']}, ${tidb} ${InstanceKindName['tidb']}, ${pd} ${InstanceKindName['pd']}, ${tiflash} ${InstanceKindName['tiflash']}` - return {s} - }, - }, - { - name: t('continuous_profiling.list.table.columns.status'), - key: 'status', - minWidth: 100, - maxWidth: 150, - onRender: (rec) => { - if (rec.state === 'failed') { - // all failed - return ( - - ) - } else if (rec.state === 'success') { - // all success - return ( - - ) - } else { - // partial failed - return ( - - ) - } - }, - }, - { - name: t('continuous_profiling.list.table.columns.start_at'), - key: 'ts', - minWidth: 160, - maxWidth: 220, - onRender: (rec) => { - return - }, - }, - { - name: t('continuous_profiling.list.table.columns.duration'), - key: 'duration', - minWidth: 100, - maxWidth: 150, - fieldName: 'profile_duration_secs', - }, - ], - [t] - ) - - const [timeRange, setTimeRange] = useSessionStorageState< - TimeRange | undefined - >('conprof.timerange', undefined) - - function onTimeRangeChange(v: TimeRange) { - setTimeRange(v) - setTimeout(() => { - reloadGroupProfiles() - }, 0) - } - - const [showSettings, setShowSettings] = useState(false) - - const { data: ngMonitoringConfig, sendRequest: reloadConfig } = - useClientRequest((reqConfig) => - client.getInstance().continuousProfilingConfigGet(reqConfig) - ) - const conprofIsDisabled = useMemo( - () => ngMonitoringConfig?.continuous_profiling?.enable === false, - [ngMonitoringConfig] - ) - - function refresh() { - reloadConfig() - reloadGroupProfiles() - } - - return ( -
    - - - - - - - - {listLoading ? ( - - ) : ( - - )} - - - setShowSettings(true)} /> - - - - - - {conprofIsDisabled && historyTable && historyTable.length > 0 && ( -
    - -
    - )} - - {conprofIsDisabled && historyTable?.length === 0 ? ( - setShowSettings(true)}> - {t('continuous_profiling.settings.open_settings')} - - } - /> - ) : ( -
    - - - -
    - )} - - setShowSettings(false)} - destroyOnClose={true} - > - setShowSettings(false)} - onConfigUpdated={reloadConfig} - /> - -
    - ) -} diff --git a/ui-ori/lib/apps/ContinuousProfiling/pages/index.ts b/ui-ori/lib/apps/ContinuousProfiling/pages/index.ts deleted file mode 100644 index 641e4de57a..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/pages/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import List from './List' -import Detail from './Detail' - -export { List, Detail } diff --git a/ui-ori/lib/apps/ContinuousProfiling/translations/en.yaml b/ui-ori/lib/apps/ContinuousProfiling/translations/en.yaml deleted file mode 100644 index 5412c10a09..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/translations/en.yaml +++ /dev/null @@ -1,64 +0,0 @@ -continuous_profiling: - nav_title: Continuous Profiling - list: - toolbar: - refresh: Refresh - settings: Settings - control_form: - title: Start Profiling Instances - enable_tooltip: This feature is enabled, you can disable it in the settings - disable_tooltip: This feature is not enabled, you can enable it in the settings - table: - title: Profiling History - columns: - targets: Instances - start_at: Start At - duration: Duration (sec) - status: Status - status: - running: Running - finished: Finished - failed: Failed - partial_finished: Partial Finished - unknown: Unknown - actions: - detail: Detail - detail: - head: - back: History - title: Profiling Detail - start_at: Start At - download: Download Profiling Result - table: - columns: - instance: Instance - kind: Component - content: Content - status: Status - status: - finished: Finished - settings: - title: Settings - disabled_result: - title: Feature Not Enabled - sub_title: Continuous Profiling feature is not enabled. You can modify settings to enable the feature and wait for new data being collected. - disabled_with_history: Continuous Profiling feature is not enabled, but you still can view history result. You can modify settings to enable the feature. - open_settings: Open Settings - switch: Enable Feature - switch_tooltip: Whether Continuous Profiling feature is enabled. When enabled, it generates the instances profiling results continuously. - profile_targets: Profiling Targets - profile_targets_tooltip: | - Profiling all instances, new created instance will be profiled automatically. - It has {{n}} instances, it is estimated to generate {{size}} profiling result each day. - profile_duration: Profiling Duration - profile_duration_tooltip: - profile_interval: Profiling Interval - profile_interval_tooltip: - profile_retention_duration: Retention Duration - profile_retention_duration_tooltip: The profiling result is persisted in the disk, and will be deleted beyond the retention duration. This setting works for all result, includes the history result. - profile_retention_duration_option: '{{d}} days' - close_feature: Disable Continuous Profiling Feature - close_feature_confirm: Are you sure want to disable this feature, it will stop continuous profiling, history result will be kept. - actions: - close: Disable - cancel: Cancel diff --git a/ui-ori/lib/apps/ContinuousProfiling/translations/zh.yaml b/ui-ori/lib/apps/ContinuousProfiling/translations/zh.yaml deleted file mode 100644 index 0f20ce1d08..0000000000 --- a/ui-ori/lib/apps/ContinuousProfiling/translations/zh.yaml +++ /dev/null @@ -1,66 +0,0 @@ -continuous_profiling: - nav_title: 持续分析 - toolbar: - refresh: Refresh - list: - toolbar: - refresh: 刷新 - settings: 设置 - control_form: - title: 开始性能分析 - enable_tooltip: 该功能已开启,你可以在设置中关闭 - disable_tooltip: 该功能未启用,你可以在设置中启用 - table: - title: 性能分析历史 - columns: - targets: 实例 - start_at: 开始时间 - duration: 时长(秒) - status: 状态 - status: - running: 分析中 - finished: 完成 - failed: 失败 - partial_finished: 部分完成 - unknown: 未知 - actions: - detail: 详情 - detail: - head: - back: 历史记录 - title: 性能分析详情 - start_at: 开始时间 - download: 下载性能分析结果 - table: - columns: - instance: 实例 - kind: 组件 - content: 内容 - status: 状态 - status: - finished: 完成 - settings: - title: 设置 - disabled_result: - title: 该功能未启用 - sub_title: 持续性能分析功能未启用。您可以修改设置打开该功能后等待新数据收集。 - disabled_with_history: 持续性能分析功能未启用,但仍然可以查看历史数据。您可以修改设置打开该功能。 - open_settings: 打开设置 - switch: 启用功能 - switch_tooltip: 是否启用持续分析功能,启用后,会持续产出实例性能分析结果。 - profile_targets: 分析范围 - profile_targets_tooltip: | - 分析所有实例,在新实例创建后,也会自动加入分析范围。 - 目前有 {{n}} 个实例,预计每日生成 {{size}} 分析结果文件。 - profile_duration: 分析时长 - profile_duration_tooltip: - profile_interval: 执行周期 - profile_interval_tooltip: - profile_retention_duration: 保留时间 - profile_retention_duration_tooltip: 分析结果会持久化到磁盘中,超过保留时间会被回收。该配置对所有结果生效,包括历史结果。 - profile_retention_duration_option: '{{d}} 天' - close_feature: 关闭持续分析功能 - close_feature_confirm: 确认要关闭该功能吗?关闭后将停止持续分析,历史结果会继续保留。 - actions: - close: 确认 - cancel: 取消 diff --git a/ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx b/ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx deleted file mode 100644 index 0aab0b1868..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/ApiForm.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import React, { useCallback, useMemo, useState, useEffect } from 'react' -import { useTranslation } from 'react-i18next' -import { Form, Button, Space, Row, Col } from 'antd' -import { isNull, isUndefined } from 'lodash' -import { DownloadOutlined, UndoOutlined } from '@ant-design/icons' -import client, { - EndpointAPIModel, - EndpointAPIParam, - TopologyPDInfo, - TopologyStoreInfo, - TopologyTiDBInfo, -} from '@lib/client' -import { ApiFormWidgetConfig, createFormWidget } from './widgets' -import { isConstantModel } from './widgets/Constant' -import { distro } from '@lib/utils/i18n' - -export interface Topology { - tidb: TopologyTiDBInfo[] - tikv: TopologyStoreInfo[] - tiflash: TopologyStoreInfo[] - pd: TopologyPDInfo[] -} - -export default function ApiForm({ - endpoint, - topology, -}: { - endpoint: EndpointAPIModel - topology: Topology -}) { - const { t } = useTranslation() - const { id, path_params, query_params, component } = endpoint - const endpointHostParamKey = useMemo( - () => `${distro[component!]?.toLowerCase()}_host`, - [component] - ) - const pathParams = (path_params ?? []).map((p) => { - p.required = true - return p - }) - const params = [...pathParams, ...(query_params ?? [])] - const [loading, setLoading] = useState(false) - const [form] = Form.useForm() - const formPathsWithoutConstant = params - .filter((p) => !isConstantModel(p)) - .map((p) => p.name!) - - const download = useCallback( - async (values: any) => { - try { - setLoading(true) - const { [endpointHostParamKey]: host, ...p } = values - const [hostname, port] = host.split(':') - // filter the null value params - const params = Object.entries(p).reduce((prev, [k, v]) => { - if (!(isUndefined(v) || isNull(v) || v === '')) { - prev[k] = v - } - return prev - }, {}) - const resp = await client.getInstance().debugAPIRequestEndpoint({ - id, - host: hostname, - port: Number(port), - params, - }) - const token = resp.data - window.location.href = `${client.getBasePath()}/debug_api/download?token=${token}` - } catch (e) { - console.error(e) - } finally { - setLoading(false) - } - }, - [id, endpointHostParamKey] - ) - - const endpointParam = useMemo( - () => ({ - name: endpointHostParamKey, - required: true, - model: { - type: 'host', - }, - }), - [endpointHostParamKey] - ) - const EndpointHost = () => ( - - ) - useEffect(() => { - formPathsWithoutConstant.push(endpointHostParamKey) - }) - - return ( -
    - - - - - {params - // hide constant param model widget - .filter((param) => !isConstantModel(param)) - .map((param) => ( - - - - ))} - - - - - - - -
    - ) -} - -function FormItemCol(props: React.HTMLAttributes) { - return ( - - {props.children} - - ) -} - -function ApiFormItem(widgetConfig: ApiFormWidgetConfig) { - const { param } = widgetConfig - return ( - - {createFormWidget(widgetConfig)} - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/ApiList.module.less b/ui-ori/lib/apps/DebugAPI/apilist/ApiList.module.less deleted file mode 100644 index 52a7257f89..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/ApiList.module.less +++ /dev/null @@ -1,17 +0,0 @@ -.collapse_panel:not(:last-child) { - border-bottom: 1px solid #eee; -} - -.header { - user-select: none; - h4 { - margin-bottom: 0; - } - p { - margin-bottom: 0; - } -} - -.schema { - color: #999; -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx b/ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx deleted file mode 100644 index 64fb7046df..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/ApiList.tsx +++ /dev/null @@ -1,208 +0,0 @@ -import React, { useEffect, useMemo, useState } from 'react' -import { Collapse, Space, Input, Empty, Alert } from 'antd' -import { useTranslation } from 'react-i18next' -import { TFunction } from 'i18next' -import { SearchOutlined } from '@ant-design/icons' -import { debounce } from 'lodash' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' - -import { AnimatedSkeleton, Card, Root } from '@lib/components' -import { useClientRequest } from '@lib/utils/useClientRequest' -import client, { EndpointAPIModel } from '@lib/client' - -import style from './ApiList.module.less' -import ApiForm, { Topology } from './ApiForm' -import { buildQueryString } from './widgets' -import { distro } from '@lib/utils/i18n' - -const getEndpointTranslationKey = (endpoint: EndpointAPIModel) => - `debug_api.${endpoint.component}.endpoints.${endpoint.id}` - -const useFilterEndpoints = (endpoints?: EndpointAPIModel[]) => { - const [keywords, setKeywords] = useState('') - const nonNullEndpoints = useMemo(() => endpoints || [], [endpoints]) - const [filteredEndpoints, setFilteredEndpoints] = - useState(nonNullEndpoints) - const { t } = useTranslation() - - useEffect(() => { - const k = keywords.trim() - if (!!k) { - setFilteredEndpoints( - nonNullEndpoints.filter((e) => { - return ( - e.id?.includes(k) || - e.path?.includes(k) || - t(getEndpointTranslationKey(e)).includes(k) - ) - }) - ) - } else { - setFilteredEndpoints(nonNullEndpoints) - } - }, [nonNullEndpoints, keywords, t]) - - return { - endpoints: filteredEndpoints, - filterBy: debounce(setKeywords, 300), - } -} - -export default function Page() { - const { t, i18n } = useTranslation() - const { data: endpointData, isLoading: isEndpointLoading } = useClientRequest( - (reqConfig) => client.getInstance().debugAPIGetEndpoints(reqConfig) - ) - const { endpoints, filterBy } = useFilterEndpoints(endpointData) - - // TODO: refine with components/InstanceSelect - const { data: tidbTopology = [], isLoading: isTiDBTopology } = - useClientRequest((reqConfig) => - client.getInstance().getTiDBTopology(reqConfig) - ) - const { data: pdTopology = [], isLoading: isPDLoading } = useClientRequest( - (reqConfig) => client.getInstance().getPDTopology(reqConfig) - ) - const { data: storeTopology, isLoading: isStoreLoading } = useClientRequest( - (reqConfig) => client.getInstance().getStoreTopology(reqConfig) - ) - const topology: Topology = { - tidb: tidbTopology!, - tikv: storeTopology?.tikv || [], - tiflash: storeTopology?.tiflash || [], - pd: pdTopology!, - } - const isTopologyLoading = isTiDBTopology || isPDLoading || isStoreLoading - - const groups = useMemo( - () => - endpoints.reduce((prev, endpoint) => { - const groupName = endpoint.component! - if (!prev[groupName]) { - prev[groupName] = [] - } - prev[groupName].push(endpoint) - return prev - }, {} as { [group: string]: EndpointAPIModel[] }), - [endpoints] - ) - const sortedGroups = useMemo( - () => - ['tidb', 'tikv', 'tiflash', 'pd'] - .filter((sortKey) => groups[sortKey]) - .map((sortKey) => groups[sortKey]), - [groups] - ) - - function EndpointGroup({ group }: { group: EndpointAPIModel[] }) { - return ( - - - {group.map((endpoint) => { - const descTranslationKey = `debug_api.${endpoint.component}.endpoints.${endpoint.id}_desc` - const descExists = i18n.exists(descTranslationKey) - - return ( - - } - key={endpoint.id!} - > - {descExists && ( - - )} - - - ) - })} - - - ) - } - - return ( - - - - - - -
    - - } - onChange={(e) => filterBy(e.target.value)} - /> - -
    -
    - - - {endpoints.length ? ( - sortedGroups.map((g) => ( - - )) - ) : ( - - )} - - -
    -
    - ) -} - -function CustomHeader({ - endpoint, - translation, -}: { - endpoint: EndpointAPIModel - translation: { - t: TFunction - } -}) { - const { t } = translation - return ( -
    - - -

    {t(getEndpointTranslationKey(endpoint))}

    -
    - -
    -
    - ) -} - -// e.g. http://{tidb_ip}/stats/dump/{db}/{table}?queryName={queryName} -function Schema({ endpoint }: { endpoint: EndpointAPIModel }) { - const query = buildQueryString(endpoint.query_params ?? []) - return ( -

    - {`http://{${distro[endpoint.component!]?.toLowerCase()}_host}${ - endpoint.path - }${query}`} -

    - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/index.ts b/ui-ori/lib/apps/DebugAPI/apilist/index.ts deleted file mode 100644 index 3b4ebcfbb5..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import ApiList from './ApiList' - -export { ApiList } diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Bool.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Bool.tsx deleted file mode 100644 index cc8d2aa984..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Bool.tsx +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2021 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import React from 'react' -import { Switch } from 'antd' - -import type { ApiFormWidget } from './index' - -export const BoolWidget: ApiFormWidget = ({ onChange, value }) => { - return ( - onChange!(v ? 'true' : (undefined as any))} - /> - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Constant.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Constant.tsx deleted file mode 100644 index 2a668627da..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Constant.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { EndpointAPIParam } from '@lib/client' -import React, { useEffect } from 'react' - -import type { ApiFormWidget, QueryBuilder, ParamModelType } from './index' - -export const ConstantWidget: ApiFormWidget = ({ param, onChange }) => { - const model = param.model as ParamModelType - useEffect(() => { - onChange!(model.data) - }) - return

    {model.data}

    -} - -export const ConstantQueryBuilder: QueryBuilder = (p) => { - return `${p.name}=${(p.model as ParamModelType).data}` -} - -export const isConstantModel = (p: EndpointAPIParam): boolean => { - return (p.model as ParamModelType).type === 'constant' -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Database.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Database.tsx deleted file mode 100644 index 0e6526c31f..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Database.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import React, { useCallback, useState } from 'react' -import { Select, Tooltip } from 'antd' -import { useTranslation } from 'react-i18next' - -import client from '@lib/client' -import type { ApiFormWidget } from './index' -import { useLimitSelection } from './useLimitSelection' - -export const DatabaseWidget: ApiFormWidget = ({ value, onChange }) => { - const { t } = useTranslation() - const tips = t(`debug_api.widgets.db`) - - const [loading, setLoading] = useState(false) - const [options, setOptions] = useState([]) - const onFocus = useCallback(async () => { - if (options.length) { - return - } - - setLoading(true) - try { - const rst = await client.getInstance().infoListDatabases() - setOptions(rst.data) - } finally { - setLoading(false) - } - }, [setLoading, setOptions, options]) - - const memoOnChange = useCallback( - (tags: string[]) => onChange?.(tags[0]), - [onChange] - ) - const { selectRef, onSelectChange } = useLimitSelection(1, memoOnChange) - - return ( - - - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Enum.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Enum.tsx deleted file mode 100644 index 22a3300032..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Enum.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react' -import { Select } from 'antd' -import { useTranslation } from 'react-i18next' - -import type { ApiFormWidget, ParamModelType } from './index' - -export const EnumWidget: ApiFormWidget = ({ param }) => { - const { t } = useTranslation() - return ( - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Host.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Host.tsx deleted file mode 100644 index b694986d93..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Host.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import { Select } from 'antd' -import { useTranslation } from 'react-i18next' - -import type { ApiFormWidget } from './index' -import { distro } from '@lib/utils/i18n' - -const portKeys: { [k: string]: string } = { - tidb: 'status_port', - tikv: 'status_port', - tiflash: 'status_port', - pd: 'port', -} - -export const HostSelectWidget: ApiFormWidget = ({ endpoint, topology }) => { - const { t } = useTranslation() - const componentEndpoints = topology[endpoint.component!] - const portKey = portKeys[endpoint.component!] - - return ( - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Int.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Int.tsx deleted file mode 100644 index ad595a2947..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Int.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { InputNumber } from 'antd' -import { useTranslation } from 'react-i18next' - -import type { ApiFormWidget } from './index' - -export const IntWidget: ApiFormWidget = ({ param, onChange, value }) => { - const { t } = useTranslation() - return ( - onChange!(v ? String(v) : (undefined as any))} - placeholder={t(`debug_api.widgets.int`, { param: param.name })} - /> - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/StoresState.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/StoresState.tsx deleted file mode 100644 index 64ef2befc1..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/StoresState.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' -import { Select } from 'antd' -import { useTranslation } from 'react-i18next' - -import type { ApiFormWidget } from './index' - -// sync from https://github.com/pingcap/kvproto/blob/master/pkg/metapb/metapb.pb.go#L42 -const options = ['Up', 'Offline', 'Tombstone'] - -export const StoresStateWidget: ApiFormWidget = ({ - param, - value, - onChange, -}) => { - const { t } = useTranslation() - return ( - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Table.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Table.tsx deleted file mode 100644 index 0429bcb50e..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Table.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React, { useCallback, useRef, useState } from 'react' -import { Select, Tooltip } from 'antd' -import { useTranslation } from 'react-i18next' - -import client, { InfoTableSchema } from '@lib/client' -import type { ApiFormWidget } from './index' -import { useLimitSelection } from './useLimitSelection' - -export const TableWidget: ApiFormWidget = ({ form, value, onChange }) => { - const { t } = useTranslation() - const tips = t(`debug_api.widgets.table`) - - const [loading, setLoading] = useState(false) - const [options, setOptions] = useState([]) - const prevDBValue = useRef('') - const onFocus = useCallback(async () => { - // Hardcode associated with the db field - const dbValue = form.getFieldValue('db') - if (prevDBValue.current === dbValue) { - return - } else { - prevDBValue.current = dbValue - } - if (!dbValue) { - setOptions([]) - return - } - - setLoading(true) - try { - const rst = await client.getInstance().infoListTables(dbValue) - setOptions(rst.data) - } finally { - setLoading(false) - } - }, [setLoading, setOptions, form]) - - const memoOnChange = useCallback( - (tags: string[]) => onChange?.(tags[0]), - [onChange] - ) - const { selectRef, onSelectChange } = useLimitSelection(1, memoOnChange) - - return ( - - - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/TableID.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/TableID.tsx deleted file mode 100644 index 610a2a147a..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/TableID.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React, { useCallback, useState } from 'react' -import { Select, Tooltip } from 'antd' -import { useTranslation } from 'react-i18next' - -import client, { InfoTableSchema } from '@lib/client' -import type { ApiFormWidget } from './index' -import { useLimitSelection } from './useLimitSelection' - -const filterOptionByNameAndID: any = ( - inputValue: string, - // children means Select.Option children nodes - option: { children: string } -) => { - return option.children.includes(inputValue) -} - -export const TableIDWidget: ApiFormWidget = ({ value, onChange }) => { - const { t } = useTranslation() - const tips = t(`debug_api.widgets.table_id`) - - const [loading, setLoading] = useState(false) - const [options, setOptions] = useState([]) - const onFocus = useCallback(async () => { - if (options.length) { - return - } - - setLoading(true) - try { - const rst = await client.getInstance().infoListTables() - setOptions(rst.data) - } finally { - setLoading(false) - } - }, [setLoading, setOptions, options]) - - const memoOnChange = useCallback( - (tags: string[]) => onChange?.(tags[0]), - [onChange] - ) - const { selectRef, onSelectChange } = useLimitSelection(1, memoOnChange) - - return ( - - - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Tags.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Tags.tsx deleted file mode 100644 index 0790d8f6a0..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Tags.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import { Select } from 'antd' -import { useTranslation } from 'react-i18next' - -import type { ApiFormWidget } from './index' - -export const TagsWidget: ApiFormWidget = ({ param, value, onChange }) => { - const { t } = useTranslation() - return ( - - ) -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Text.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/Text.tsx deleted file mode 100644 index c27715566c..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/Text.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import { Input } from 'antd' -import { useTranslation } from 'react-i18next' - -import type { ApiFormWidget, QueryBuilder } from './index' - -export const TextWidget: ApiFormWidget = ({ param }) => { - const { t } = useTranslation() - return ( - - ) -} - -export const TextQueryBuilder: QueryBuilder = (p) => { - return `${p.name}={${p.name}}` -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/index.tsx b/ui-ori/lib/apps/DebugAPI/apilist/widgets/index.tsx deleted file mode 100644 index 7717a5b26e..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/index.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import React from 'react' -import type { FormInstance } from 'antd/es/form/Form' - -import { EndpointAPIModel, EndpointAPIParam } from '@lib/client' -import type { Topology } from '../ApiForm' -import { TextWidget, TextQueryBuilder } from './Text' -import { TagsWidget } from './Tags' -import { IntWidget } from './Int' -import { EnumWidget } from './Enum' -import { ConstantWidget, ConstantQueryBuilder } from './Constant' -import { HostSelectWidget } from './Host' -import { DatabaseWidget } from './Database' -import { TableWidget } from './Table' -import { TableIDWidget } from './TableID' -import { StoresStateWidget } from './StoresState' -import { BoolWidget } from './Bool' - -export interface Widgets { - [type: string]: ApiFormWidget -} - -export interface ApiFormWidget { - (config: ApiFormWidgetConfig): JSX.Element -} - -export interface ApiFormWidgetConfig { - form: FormInstance - param: EndpointAPIParam - endpoint: EndpointAPIModel - topology: Topology - value?: string - onChange?: (v: string) => void -} - -export interface ParamModelType { - type: string - data: any -} - -// For customized form controls. https://ant.design/components/form-cn/#components-form-demo-customized-form-controls -const createJSXElementWrapper = - (WidgetDef: ApiFormWidget) => (config: ApiFormWidgetConfig) => - - -const paramModelWidgets: Widgets = { - host: HostSelectWidget, - text: TextWidget, - escape_text: TextWidget, - bool: createJSXElementWrapper(BoolWidget), - multi_value: createJSXElementWrapper(TagsWidget), - int: createJSXElementWrapper(IntWidget), - enum: EnumWidget, - constant: ConstantWidget, - db: createJSXElementWrapper(DatabaseWidget), - table: createJSXElementWrapper(TableWidget), - table_id: createJSXElementWrapper(TableIDWidget), -} - -const paramWidgets: Widgets = { - 'pd_stores/state': createJSXElementWrapper(StoresStateWidget), -} - -export const createFormWidget = (config: ApiFormWidgetConfig) => { - const { param, endpoint } = config - const widget = - paramWidgets[`${endpoint.id}/${param.name!}`] || - paramModelWidgets[(param.model as any).type] || - paramModelWidgets.text - return widget(config) -} - -// query string - -export interface QueryBuilder { - (p: EndpointAPIParam): string -} - -const queryBuilders: { [type: string]: QueryBuilder } = { - text: TextQueryBuilder, - constant: ConstantQueryBuilder, -} - -export const buildQueryString = (params: EndpointAPIParam[]) => { - const query = params.reduce((prev, param, i) => { - if (i === 0) { - prev += '?' - } else { - prev += '&' - } - - const builder = - queryBuilders[(param.model as ParamModelType).type] || queryBuilders.text - prev += builder(param) - - return prev - }, '') - return query -} diff --git a/ui-ori/lib/apps/DebugAPI/apilist/widgets/useLimitSelection.ts b/ui-ori/lib/apps/DebugAPI/apilist/widgets/useLimitSelection.ts deleted file mode 100644 index a8458c6bce..0000000000 --- a/ui-ori/lib/apps/DebugAPI/apilist/widgets/useLimitSelection.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useCallback, useRef } from 'react' - -export const useLimitSelection = (limit: number, emit: Function) => { - const selectRef = useRef(null) - const onSelectChange = useCallback( - (items: string[]) => { - // Limit the available options to one option - // There are no official limit props. https://github.com/ant-design/ant-design/issues/6626 - if (items.length > limit) { - items.shift() - } - if (items.length === limit) { - selectRef.current.blur() - } - emit?.(items) - }, - [emit, limit, selectRef] - ) - - return { - selectRef, - onSelectChange, - } -} diff --git a/ui-ori/lib/apps/DebugAPI/index.meta.ts b/ui-ori/lib/apps/DebugAPI/index.meta.ts deleted file mode 100644 index 4e0bd93ba5..0000000000 --- a/ui-ori/lib/apps/DebugAPI/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ApiOutlined } from '@ant-design/icons' - -export default { - id: 'debug_api', - routerPrefix: '/debug_api', - icon: ApiOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_debug_api" */ '.'), -} diff --git a/ui-ori/lib/apps/DebugAPI/index.tsx b/ui-ori/lib/apps/DebugAPI/index.tsx deleted file mode 100644 index 76f5f5a634..0000000000 --- a/ui-ori/lib/apps/DebugAPI/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' - -import { Root } from '@lib/components' -import { ApiList } from './apilist' - -const App = () => ( - - - -) - -export default App diff --git a/ui-ori/lib/apps/DebugAPI/translations/en.yaml b/ui-ori/lib/apps/DebugAPI/translations/en.yaml deleted file mode 100644 index f8dc8f3d81..0000000000 --- a/ui-ori/lib/apps/DebugAPI/translations/en.yaml +++ /dev/null @@ -1,82 +0,0 @@ -debug_api: - nav_title: Debug Data - keyword_search: Filter by keyword - endpoints_not_found: Endpoints not found - warning_header: - title: Warning - body: These debug endpoints and data are largely internal and intended for use by {{ distro.tidb }} developers. Please use this feature under the guidance of {{ distro.tidb }} technical support. - form: - download: Download - reset: Reset - widgets: - host_select_placeholder: Please select the {{endpointType}} host - text: Please enter the {{param}} - tags: Please enter the {{param}} - int: Please enter the {{param}} - enum: Please select the {{param}} - db: Please select the database or enter the full database name - table: Please select the table or enter the full table name - table_id: Please select the table ID or enter the full table ID - tidb: - name: '{{distro.tidb}}' - endpoints: - tidb_stats_dump: Statistics Data - of a Table - tidb_stats_dump_timestamp: Statistics Data - of a Table and Timestamp - tidb_stats_dump_timestamp_desc: The timestamp needs to be set within the GC safe point - tidb_config: Current {{distro.tidb}} Config - tidb_schema: Schema Information - All / by TableID - tidb_schema_db: Schema Information - by Database - tidb_schema_db_table: Schema Information - by Database + Table - tidb_dbtable_tableid: schema and Table Information - by TableID - tidb_ddl_history: DDL History - All - tidb_info: '{{distro.tidb}} Server Information - Current' - tidb_info_all: '{{distro.tidb}} Server Information - All {{distro.tidb}} Servers' - tidb_regions_meta: Region - All - tidb_region_id: Region - by RegionID - tidb_table_regions: Region - by Database + Table - tidb_hot_regions: Hot Regions - tidb_pprof: '{{distro.tidb}} pprof' - tidb_pprof_desc: The `seconds` parameter is only effective to `kind=profile` and `kind=trace`. - tikv: - name: '{{distro.tikv}}' - endpoints: - tikv_config: Current {{distro.tikv}} Config - tikv_profile: '{{distro.tikv}} Profile' - tiflash: - name: '{{distro.tiflash}}' - endpoints: - tiflash_config: Current {{distro.tiflash}} Config - tiflash_profile: '{{distro.tiflash}} Profile' - pd: - name: '{{distro.pd}}' - endpoints: - pd_cluster: Cluster Information (pd-ctl cluster) - pd_cluster_status: Cluster Status - pd_config_show_all: Current {{distro.pd}} Config - pd_health: Cluster Health Information (pd-ctl health) - pd_hot_read: Hot - Read (pd-ctl hot read) - pd_hot_write: Hot - Write (pd-ctl hot write) - pd_hot_stores: Hot - Stores (pd-ctl hot store) - pd_labels: All Labels (pd-ctl label) - pd_label_stores: List Stores by Label (pd-ctl label store [name] [value]) - pd_members_show: All Members Information (pd-ctl member) - pd_leader_show: Leader Information (pd-ctl member leader show) - pd_operator_show: All Operators (pd-ctl operator show) - pd_regions: Regions - All (pd-ctl region) - pd_region_id: Region - by RegionID (pd-ctl region [id]) - pd_region_key: Region - by Key Reside in (pd-ctl region key [key]) - pd_region_scan: Regions - Scan All (pd-ctl region scan) - pd_region_sibling: Regions - Sibling Regions by RegionID (pd-ctl region sibling [id]) - pd_region_start_key: Regions - All Regions Starting from a Key (pd-ctl region startkey [key]) - pd_regions_store: Regions - All Regions of a Store (pd-ctl region store [store-id]) - pd_region_top_read: Regions - Top Read Flow (pd-ctl region topread) - pd_region_top_write: Regions - Top Write Flow (pd-ctl region topread) - pd_region_top_conf_ver: Regions - Top Conf Version (pd-ctl region topconfver) - pd_region_top_version: Regions - Top Version (pd-ctl region topversion) - pd_region_top_size: Regions - Top Size (pd-ctl region topsize) - pd_region_check: Regions - Check Regions in Abnormal Conditions (region check [state]) - pd_scheduler_show: All Schedulers (pd-ctl scheduler show) - pd_stores: Stores - All (pd-ctl store) - pd_store_id: Store - by StoreID (pd-ctl store [id]) - pd_pprof: '{{distro.pd}} pprof' - pd_pprof_desc: The `seconds` parameter is only effective to `kind=profile` and `kind=trace`. diff --git a/ui-ori/lib/apps/DebugAPI/translations/zh.yaml b/ui-ori/lib/apps/DebugAPI/translations/zh.yaml deleted file mode 100644 index aa34f185cd..0000000000 --- a/ui-ori/lib/apps/DebugAPI/translations/zh.yaml +++ /dev/null @@ -1,26 +0,0 @@ -debug_api: - nav_title: 内部调试数据 - keyword_search: 按关键字过滤接口 - endpoints_not_found: 找不到对应接口 - warning_header: - title: 警告 - body: 本页面提供的调试接口主要面向 {{ distro.tidb }} 开发者、提供数据库内部运行数据。请在 {{ distro.tidb }} 技术支持的指导下使用本功能。 - form: - download: 下载 - reset: 重置 - widgets: - host_select_placeholder: 请选择对应的 {{endpointType}} host - text: 请输入 {{param}} - tags: 请输入 {{param}} - int: 请输入 {{param}} - enum: 请选择 {{param}} - db: 请从列表中选择 database 或输入完整的 database 名称 - table: 请从列表中选择 table 或输入完整的 table 名称 - table_id: 请从列表中选择 table ID 或输入完整的 table ID - tidb: - endpoints: - tidb_stats_dump_timestamp_desc: 时间戳应当在 GC Safe Point 以后 - tidb_pprof_desc: seconds 参数仅对 kind=profile 和 kind=trace 生效 - pd: - endpoints: - pd_pprof_desc: seconds 参数仅对 kind=profile 和 kind=trace 生效 diff --git a/ui-ori/lib/apps/Diagnose/components/DiagnosisTable.tsx b/ui-ori/lib/apps/Diagnose/components/DiagnosisTable.tsx deleted file mode 100644 index 0ad438a731..0000000000 --- a/ui-ori/lib/apps/Diagnose/components/DiagnosisTable.tsx +++ /dev/null @@ -1,201 +0,0 @@ -import { Button } from 'antd' -import React, { useEffect, useMemo, useRef, useState, useCallback } from 'react' -import { useTranslation } from 'react-i18next' -import { LoadingOutlined } from '@ant-design/icons' - -import client, { DiagnoseTableDef } from '@lib/client' -import { CardTable, DateTime } from '@lib/components' -import { useClientRequest, RequestFactory } from '@lib/utils/useClientRequest' - -import { diagnosisColumns } from '../utils/tableColumns' - -// FIXME: use better naming -// stableTimeRange: used to start diagnosing when triggering by clicking "Start" outside this component -// unstableTimeRange: used to start diagnosing when triggering by clicking "Start" inside this component -export interface IDiagnosisTableProps { - stableTimeRange: [number, number] - unstableTimeRange: [number, number] - kind: string -} - -type ReqFnType = RequestFactory - -// Modified from SearchResult.tsx -function Row({ renderer, props }) { - const [expanded, setExpanded] = useState(false) - const handleClick = useCallback(() => { - setExpanded((v) => !v) - }, []) - - // https://stackoverflow.com/questions/53623294/how-to-conditionally-change-a-color-of-a-row-in-detailslist - const backgroundColor = props.item.is_sub ? 'lightcyan' : 'inhert' - return ( -
    - {renderer({ - ...props, - styles: { root: { backgroundColor } }, - item: { ...props.item, expanded }, - })} -
    - ) -} - -export default function DiagnosisTable({ - stableTimeRange, - unstableTimeRange, - kind, -}: IDiagnosisTableProps) { - const { t } = useTranslation() - - const [internalTimeRange, setInternalTimeRange] = useState<[number, number]>([ - 0, 0, - ]) - useEffect(() => setInternalTimeRange(stableTimeRange), [stableTimeRange]) - function handleStart() { - setInternalTimeRange(unstableTimeRange) - } - const timeChanged = useMemo( - () => - internalTimeRange[0] !== unstableTimeRange[0] || - internalTimeRange[1] !== unstableTimeRange[1], - [internalTimeRange, unstableTimeRange] - ) - - const reqFn = useRef(null) - useEffect(() => { - reqFn.current = (reqConfig) => - client.getInstance().diagnoseDiagnosisPost( - { - start_time: internalTimeRange[0], - end_time: internalTimeRange[1], - kind, - }, - reqConfig - ) - }, [internalTimeRange, kind]) - - const { data, isLoading, error, sendRequest } = useClientRequest( - reqFn.current!, - { immediate: false } - ) - - useEffect(() => { - if (internalTimeRange[0] !== 0) { - sendRequest() - } - }, [internalTimeRange, sendRequest]) - - //////////////// - - const allRows = useMemo(() => { - const _columnHeaders = - data?.column?.map((col) => col.toLocaleLowerCase()) || [] - let _rows: any[] = [] - data?.rows?.forEach((row, rowIdx) => { - // values (array) - let _newRow = { row_idx: rowIdx, is_sub: false, show_sub: false } - row.values?.forEach((v, v_idx) => { - const key = _columnHeaders[v_idx] - _newRow[key] = v - }) - - //subvalues (2 demensional array) - let _subRows: any[] = [] - row.sub_values?.forEach((sub_v) => { - let _subRow = { row_idx: rowIdx, is_sub: true } - sub_v.forEach((v, idx) => { - const key = _columnHeaders[idx] - _subRow[key] = v - }) - _subRows.push(_subRow) - }) - - _newRow['sub_rows'] = _subRows - _rows.push(_newRow) - }) - return _rows - }, [data]) - - const [items, setItems] = useState(allRows) - useEffect(() => { - setItems(allRows) - }, [allRows]) - - const toggleShowSub = useCallback( - (rowIdx, showSub) => { - let newRows = [...items] - let curRowPos = newRows.findIndex( - (el) => el.row_idx === rowIdx && el.is_sub === false - ) - if (curRowPos === -1) { - return - } - let curRow = newRows[curRowPos] - - // update status - curRow.show_sub = showSub - if (showSub) { - // insert sub rows - newRows.splice(curRowPos + 1, 0, ...curRow.sub_rows) - } else { - // remove sub rows - newRows.splice(curRowPos + 1, curRow.sub_rows.length) - } - setItems(newRows) - }, - [items] - ) - - const columns = useMemo( - () => diagnosisColumns(items, toggleShowSub), - [items, toggleShowSub] - ) - - //////////////// - - const renderRow = useCallback((props, defaultRender) => { - if (!props) { - return null - } - return - }, []) - - //////////////// - - function cardExtra() { - if (isLoading) { - return - } - if (timeChanged || error) { - return ( - - ) - } - return null - } - - function subTitle() { - if (internalTimeRange[0] > 0) { - return ( - - ~{' '} - - - ) - } - return null - } - - return ( - - ) -} diff --git a/ui-ori/lib/apps/Diagnose/index.meta.ts b/ui-ori/lib/apps/Diagnose/index.meta.ts deleted file mode 100644 index d4bbd0439d..0000000000 --- a/ui-ori/lib/apps/Diagnose/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { SafetyCertificateOutlined } from '@ant-design/icons' - -export default { - id: 'diagnose', - routerPrefix: '/diagnose', - icon: SafetyCertificateOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_diagnose" */ '.'), -} diff --git a/ui-ori/lib/apps/Diagnose/index.tsx b/ui-ori/lib/apps/Diagnose/index.tsx deleted file mode 100644 index 83440fd848..0000000000 --- a/ui-ori/lib/apps/Diagnose/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { HashRouter as Router, Route, Routes } from 'react-router-dom' - -import { Root } from '@lib/components' -import { DiagnoseGenerator } from './pages' - -const App = () => ( - - - - } /> - - - -) - -export default App diff --git a/ui-ori/lib/apps/Diagnose/pages/DiagnoseGenerator.tsx b/ui-ori/lib/apps/Diagnose/pages/DiagnoseGenerator.tsx deleted file mode 100644 index 9da012ae98..0000000000 --- a/ui-ori/lib/apps/Diagnose/pages/DiagnoseGenerator.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import { Button, Form, Input, InputNumber, Select } from 'antd' -import dayjs, { Dayjs } from 'dayjs' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import React, { useState, useMemo } from 'react' -import { useTranslation } from 'react-i18next' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import { Card } from '@lib/components' -import { DatePicker } from '@lib/components' -import DiagnosisTable from '../components/DiagnosisTable' - -const DURATION_MINS = [5, 10, 30, 60, 24 * 60] -const DEF_DURATION_MINS = 10 - -function minsAgo(mins: number): Dayjs { - return dayjs().subtract(mins, 'm') -} - -export default function DiagnoseGenerator() { - const { t } = useTranslation() - - const [duration, setDuration] = useState(DEF_DURATION_MINS) - const [startTime, setStartTime] = useState(() => minsAgo(duration)) - const timeRange: [number, number] = useMemo(() => { - const _startTime = dayjs(startTime).unix() - return [_startTime, _startTime + duration * 60] - }, [startTime, duration]) - - const [stableTimeRange, setStableTimeRange] = useState<[number, number]>([ - 0, 0, - ]) - - function handleFinish() { - setStableTimeRange(timeRange) - } - - const timeChanged = useMemo( - () => - timeRange[0] !== stableTimeRange[0] || - timeRange[1] !== stableTimeRange[1], - [timeRange, stableTimeRange] - ) - - return ( -
    - -
    - - setStartTime(val || minsAgo(duration))} - /> - - - - - - - - prev.rangeDuration !== cur.rangeDuration - } - > - {({ getFieldValue }) => { - return ( - getFieldValue('rangeDuration') === 0 && ( - - `${value} min`} - parser={(value) => value?.replace(/[^\d]/g, '') || ''} - style={{ width: 120 }} - onChange={(val) => setDuration(val as number)} - /> - - ) - ) - }} - - - - {timeChanged && ( - - - - )} -
    -
    - -
    - - - - - -
    -
    - ) -} diff --git a/ui-ori/lib/apps/Diagnose/pages/index.ts b/ui-ori/lib/apps/Diagnose/pages/index.ts deleted file mode 100644 index 62175aa5d6..0000000000 --- a/ui-ori/lib/apps/Diagnose/pages/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DiagnoseGenerator from './DiagnoseGenerator' - -export { DiagnoseGenerator } diff --git a/ui-ori/lib/apps/Diagnose/translations/en.yaml b/ui-ori/lib/apps/Diagnose/translations/en.yaml deleted file mode 100644 index 04ce7e7dd7..0000000000 --- a/ui-ori/lib/apps/Diagnose/translations/en.yaml +++ /dev/null @@ -1,23 +0,0 @@ -diagnose: - nav_title: Cluster Diagnostics - generate: - title: Cluster Diagnostics - range_begin: Range Start Time - range_duration: Range Duration - submit: Start - time_duration: - custom: Custom - table_title: - config_diagnosis: Config Diagnosis - error_diagnosis: Error Diagnosis - performance_diagnosis: Performance Diagnosis - fields: - rule: Rule - item: Item - type: Type - instance: Instance - status_address: Status Address - value: Value - reference: Reference - severity: Severity - details: Details diff --git a/ui-ori/lib/apps/Diagnose/translations/zh.yaml b/ui-ori/lib/apps/Diagnose/translations/zh.yaml deleted file mode 100644 index 6577b2c517..0000000000 --- a/ui-ori/lib/apps/Diagnose/translations/zh.yaml +++ /dev/null @@ -1,23 +0,0 @@ -diagnose: - nav_title: 集群诊断 - generate: - title: 集群诊断 - range_begin: 区间起始时间 - range_duration: 区间长度 - submit: 开始 - time_duration: - custom: 自定义 - table_title: - config_diagnosis: 配置诊断 - error_diagnosis: 故障诊断 - performance_diagnosis: 性能诊断 - fields: - rule: Rule - item: Item - type: Type - instance: Instance - status_address: Status Address - value: Value - reference: Reference - severity: Severity - details: Details diff --git a/ui-ori/lib/apps/Diagnose/utils/tableColumns.tsx b/ui-ori/lib/apps/Diagnose/utils/tableColumns.tsx deleted file mode 100644 index 29f27fa455..0000000000 --- a/ui-ori/lib/apps/Diagnose/utils/tableColumns.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { Tooltip } from 'antd' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import React from 'react' -import { PlusOutlined, MinusOutlined } from '@ant-design/icons' - -import { TextWithInfo, TextWrap } from '@lib/components' - -type ToggleShowSubFn = (rowIdx: number, showSub: boolean) => void - -function commonColumnName(fieldName: string): any { - return -} - -function commonColumn(fieldName: string, minWidth: number, maxWidth?: number) { - return { - name: commonColumnName(fieldName), - key: fieldName, - fieldName, - minWidth, - maxWidth, - onRender: (rec) => { - if (rec.expanded) { - return {rec[fieldName]} - } else { - return ( - - {rec[fieldName]} - - ) - } - }, - } -} - -function ruleColumn(toggleShowSub: ToggleShowSubFn): IColumn { - const handleClick = (ev: React.MouseEvent, rec) => { - ev.stopPropagation() - toggleShowSub(rec.row_idx, !rec.show_sub) - } - return { - ...commonColumn('rule', 150, 200), - onRender: (rec) => ( - - {rec.is_sub && '|--'} - {!rec.is_sub && - rec.sub_rows.length > 0 && - (rec.show_sub ? ( - handleClick(ev, rec)} /> - ) : ( - handleClick(ev, rec)} /> - ))}{' '} - {rec.expanded ? ( - rec.rule - ) : ( - {rec.rule} - )} - - ), - } -} - -function itemColumn(): IColumn { - return commonColumn('item', 100, 150) -} - -function typeColumn(): IColumn { - return commonColumn('type', 60, 80) -} - -function instanceColumn(): IColumn { - return commonColumn('instance', 100, 200) -} - -function statusAddressColumn(): IColumn { - return commonColumn('status_address', 100, 200) -} - -function valueColumn(): IColumn { - return commonColumn('value', 100, 150) -} - -function referenceColumn(): IColumn { - return commonColumn('reference', 100, 150) -} - -function severityColumn(): IColumn { - return commonColumn('severity', 100, 120) -} - -function detailsColumn(): IColumn { - return commonColumn('details', 200) -} - -function categoryColumn(): IColumn { - return commonColumn('category', 100, 200) -} - -function tableColumn(): IColumn { - return commonColumn('table', 100, 200) -} - -function errorColumn(): IColumn { - return commonColumn('error', 200) -} - -////////////////////////////////////////// - -export function diagnosisColumns( - rows: any[], - toggleShowSub: ToggleShowSubFn -): IColumn[] { - if (rows.length > 0 && rows[0].error) { - return [categoryColumn(), tableColumn(), errorColumn()] - } - return [ - ruleColumn(toggleShowSub), - itemColumn(), - typeColumn(), - instanceColumn(), - statusAddressColumn(), - valueColumn(), - referenceColumn(), - severityColumn(), - detailsColumn(), - ] -} diff --git a/ui-ori/lib/apps/InstanceProfiling/index.meta.ts b/ui-ori/lib/apps/InstanceProfiling/index.meta.ts deleted file mode 100644 index da59500eec..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AimOutlined } from '@ant-design/icons' - -export default { - id: 'instance_profiling', - routerPrefix: '/instance_profiling', - icon: AimOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_instance_profiling" */ '.'), -} diff --git a/ui-ori/lib/apps/InstanceProfiling/index.tsx b/ui-ori/lib/apps/InstanceProfiling/index.tsx deleted file mode 100644 index adcf71a101..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react' -import { HashRouter as Router, Route, Routes } from 'react-router-dom' - -import { Root, ParamsPageWrapper } from '@lib/components' -import { Detail, List } from './pages' - -const App = () => ( - - - - } /> - - - - } - /> - - - -) - -export default App diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/Detail.tsx b/ui-ori/lib/apps/InstanceProfiling/pages/Detail.tsx deleted file mode 100644 index f7f25d3255..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/pages/Detail.tsx +++ /dev/null @@ -1,187 +0,0 @@ -import { Badge, Button, Progress } from 'antd' -import React, { useCallback, useMemo } from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' -import { ArrowLeftOutlined } from '@ant-design/icons' -import { usePersistFn } from 'ahooks' - -import client from '@lib/client' -import { CardTable, DateTime, Head, Descriptions } from '@lib/components' -import { useClientRequestWithPolling } from '@lib/utils/useClientRequest' -import { InstanceKindName } from '@lib/utils/instanceTable' -import useQueryParams from '@lib/utils/useQueryParams' - -function mapData(data) { - if (!data) { - return data - } - data.tasks_status.forEach((task) => { - if (task.state === 1) { - let task_elapsed_secs = data.server_time - task.started_at - let progress = - task_elapsed_secs / data.task_group_status.profile_duration_secs - if (progress > 0.99) { - progress = 0.99 - } - if (progress < 0) { - progress = 0 - } - task.progress = progress - } - }) - return data -} - -function isFinished(data) { - const groupState = data?.task_group_status?.state - return groupState === 2 || groupState === 3 -} - -export default function Page() { - const { t } = useTranslation() - const { id } = useQueryParams() - - const { - data: respData, - isLoading, - error, - } = useClientRequestWithPolling( - (reqConfig) => client.getInstance().getProfilingGroupDetail(id, reqConfig), - { - shouldPoll: (data) => !isFinished(data), - } - ) - - const data = useMemo(() => mapData(respData), [respData]) - - const profileDuration = - respData?.task_group_status?.profile_duration_secs || 0 - - const columns = useMemo( - () => [ - { - name: t('instance_profiling.detail.table.columns.instance'), - key: 'instance', - minWidth: 150, - maxWidth: 400, - onRender: (record) => record.target.display_name, - }, - { - name: t('instance_profiling.detail.table.columns.kind'), - key: 'kind', - minWidth: 100, - maxWidth: 150, - onRender: (record) => { - return InstanceKindName[record.target.kind] - }, - }, - { - name: t('instance_profiling.detail.table.columns.content'), - key: 'content', - minWidth: 150, - maxWidth: 300, - onRender: (record) => { - return `CPU Profiling - ${profileDuration}s` - }, - }, - { - name: t('instance_profiling.detail.table.columns.status'), - key: 'status', - minWidth: 150, - maxWidth: 200, - onRender: (record) => { - if (record.state === 1) { - return ( -
    - -
    - ) - } else if (record.state === 0) { - return - } else { - return ( - - ) - } - }, - }, - ], - [t, profileDuration] - ) - - const handleRowClick = usePersistFn( - async (rec, _idx, _ev: React.MouseEvent) => { - const res = await client - .getInstance() - .getActionToken(rec.id, 'single_view') - const token = res.data - if (!token) { - return - } - window.open( - `${client.getBasePath()}/profiling/single/view?token=${token}`, - '_blank' - ) - } - ) - - const handleDownloadGroup = useCallback(async () => { - const res = await client.getInstance().getActionToken(id, 'group_download') - const token = res.data - if (!token) { - return - } - window.location.href = `${client.getBasePath()}/profiling/group/download?token=${token}` - }, [id]) - - return ( -
    - - {t('instance_profiling.detail.head.back')} - - } - titleExtra={ - - } - > - {respData && ( - - - - - - )} - - -
    - ) -} diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/List.module.less b/ui-ori/lib/apps/InstanceProfiling/pages/List.module.less deleted file mode 100644 index dab1ce95dc..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/pages/List.module.less +++ /dev/null @@ -1,14 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.list { - &_container { - display: flex; - flex-direction: column; - height: 100vh; - } -} - -.alert_container { - margin-left: @padding-page; - margin-right: @padding-page; -} diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/List.tsx b/ui-ori/lib/apps/InstanceProfiling/pages/List.tsx deleted file mode 100644 index b6ca69da17..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/pages/List.tsx +++ /dev/null @@ -1,252 +0,0 @@ -import { Badge, Button, Form, Select, Modal, Alert } from 'antd' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import React, { useMemo, useState, useCallback, useRef } from 'react' -import { useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' -import { usePersistFn } from 'ahooks' - -import client, { - ProfilingStartRequest, - ModelRequestTargetNode, -} from '@lib/client' -import { - Card, - CardTable, - InstanceSelect, - IInstanceSelectRefProps, -} from '@lib/components' -import DateTime from '@lib/components/DateTime' -import openLink from '@lib/utils/openLink' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { combineTargetStats } from '../utils' - -import styles from './List.module.less' - -const profilingDurationsSec = [10, 30, 60, 120] -const defaultProfilingDuration = 30 - -export default function Page() { - const { - data: historyTable, - isLoading: listLoading, - error: historyError, - } = useClientRequest((reqConfig) => - client.getInstance().getProfilingGroups(reqConfig) - ) - const { data: ngMonitoringConfig } = useClientRequest((reqConfig) => - client.getInstance().continuousProfilingConfigGet(reqConfig) - ) - const conprofEnable = - ngMonitoringConfig?.continuous_profiling?.enable ?? false - - const { t } = useTranslation() - const navigate = useNavigate() - const instanceSelect = useRef(null) - const [submitting, setSubmitting] = useState(false) - - const handleFinish = useCallback( - async (fieldsValue) => { - if (!fieldsValue.instances || fieldsValue.instances.length === 0) { - Modal.error({ - content: 'Some required fields are not filled', - }) - return - } - if (!instanceSelect.current) { - Modal.error({ - content: 'Internal error: Instance select is not ready', - }) - return - } - const targets: ModelRequestTargetNode[] = instanceSelect - .current!.getInstanceByKeys(fieldsValue.instances) - .map((instance) => { - let port - switch (instance.instanceKind) { - case 'pd': - port = instance.port - break - case 'tidb': - case 'tikv': - case 'tiflash': - port = instance.status_port - break - } - return { - kind: instance.instanceKind, - display_name: instance.key, - ip: instance.ip, - port, - } - }) - .filter((i) => i.port != null) - const req: ProfilingStartRequest = { - targets, - duration_secs: fieldsValue.duration, - } - try { - setSubmitting(true) - const res = await client.getInstance().startProfiling(req) - navigate(`/instance_profiling/detail?id=${res.data.id}`) - } finally { - setSubmitting(false) - } - }, - [navigate] - ) - - const handleRowClick = usePersistFn( - (rec, _idx, ev: React.MouseEvent) => { - openLink(`/instance_profiling/detail?id=${rec.id}`, ev, navigate) - } - ) - - const historyTableColumns = useMemo( - () => [ - { - name: t('instance_profiling.list.table.columns.targets'), - key: 'targets', - minWidth: 150, - maxWidth: 250, - onRender: (rec) => { - const s = combineTargetStats(rec.target_stats) - return {s} - }, - }, - { - name: t('instance_profiling.list.table.columns.status'), - key: 'status', - minWidth: 100, - maxWidth: 150, - onRender: (rec) => { - if (rec.state === 0) { - // all failed - return ( - - ) - } else if (rec.state === 1) { - // running - return ( - - ) - } else if (rec.state === 2) { - // all success - return ( - - ) - } else { - // partial success - return ( - - ) - } - }, - }, - { - name: t('instance_profiling.list.table.columns.start_at'), - key: 'started_at', - minWidth: 160, - maxWidth: 220, - onRender: (rec) => { - return - }, - }, - { - name: t('instance_profiling.list.table.columns.duration'), - key: 'duration', - minWidth: 100, - maxWidth: 150, - fieldName: 'profile_duration_secs', - }, - ], - [t] - ) - - return ( -
    - -
    - - - - - - - - - -
    -
    - - {conprofEnable && ( -
    - -
    - )} - -
    - - - -
    -
    - ) -} diff --git a/ui-ori/lib/apps/InstanceProfiling/pages/index.ts b/ui-ori/lib/apps/InstanceProfiling/pages/index.ts deleted file mode 100644 index 641e4de57a..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/pages/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import List from './List' -import Detail from './Detail' - -export { List, Detail } diff --git a/ui-ori/lib/apps/InstanceProfiling/translations/en.yaml b/ui-ori/lib/apps/InstanceProfiling/translations/en.yaml deleted file mode 100644 index 6ee03fdec8..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/translations/en.yaml +++ /dev/null @@ -1,42 +0,0 @@ -profiling: - nav_title: Profiling Instances -instance_profiling: - nav_title: Manual Profiling - list: - control_form: - title: Start Profiling Instances - instances: - label: Select instances - duration: - label: Duration - submit: Start Profiling - disable_warning: Already enabled continuous profiling, so manual profiling is disabled. You can see all instances profiling results in the continuous profiling page. - table: - title: Profiling History - columns: - targets: Instances - start_at: Start At - duration: Duration (sec) - status: Status - status: - running: Running - finished: Finished - failed: Failed - partial_finished: Partial Finished - unknown: Unknown - actions: - detail: Detail - detail: - head: - back: History - title: Profiling Detail - start_at: Start At - download: Download Profiling Result - table: - columns: - instance: Instance - kind: Component - content: Content - status: Status - status: - finished: Finished diff --git a/ui-ori/lib/apps/InstanceProfiling/translations/zh.yaml b/ui-ori/lib/apps/InstanceProfiling/translations/zh.yaml deleted file mode 100644 index c417cf6575..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/translations/zh.yaml +++ /dev/null @@ -1,42 +0,0 @@ -profiling: - nav_title: 实例性能分析 -instance_profiling: - nav_title: 手动分析 - list: - control_form: - title: 开始性能分析 - instances: - label: 选择实例 - duration: - label: 分析时长 - submit: 开始分析 - disable_warning: 已启用持续性能分析功能,因此手动性能分析不可用。可在持续性能分析页面查看当前及过往的分析结果。 - table: - title: 性能分析历史 - columns: - targets: 实例 - start_at: 开始时间 - duration: 时长(秒) - status: 状态 - status: - running: 分析中 - finished: 完成 - failed: 失败 - partial_finished: 部分完成 - unknown: 未知 - actions: - detail: 详情 - detail: - head: - back: 历史记录 - title: 性能分析详情 - start_at: 开始时间 - download: 下载性能分析结果 - table: - columns: - instance: 实例 - kind: 组件 - content: 内容 - status: 状态 - status: - finished: 完成 diff --git a/ui-ori/lib/apps/InstanceProfiling/utils/combineTargetStats.ts b/ui-ori/lib/apps/InstanceProfiling/utils/combineTargetStats.ts deleted file mode 100644 index 462303e875..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/utils/combineTargetStats.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ModelRequestTargetStatistics } from '@lib/client' -import { InstanceKindName } from '@lib/utils/instanceTable' - -const targetNameMap = { - num_tidb_nodes: InstanceKindName.tidb, - num_tikv_nodes: InstanceKindName.tikv, - num_pd_nodes: InstanceKindName.pd, - num_tiflash_nodes: InstanceKindName.tiflash, -} - -export const combineTargetStats = (stats: ModelRequestTargetStatistics) => - Object.entries(stats) - .reduce((prev, [key, stat]) => { - const targetName = targetNameMap[key] - targetName && prev.push(`${stat} ${targetName}`) - return prev - }, [] as string[]) - .join(', ') diff --git a/ui-ori/lib/apps/InstanceProfiling/utils/index.ts b/ui-ori/lib/apps/InstanceProfiling/utils/index.ts deleted file mode 100644 index 625a73b6b9..0000000000 --- a/ui-ori/lib/apps/InstanceProfiling/utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './combineTargetStats' diff --git a/ui-ori/lib/apps/KeyViz/components/KeyViz.less b/ui-ori/lib/apps/KeyViz/components/KeyViz.less deleted file mode 100644 index 46cd9705e5..0000000000 --- a/ui-ori/lib/apps/KeyViz/components/KeyViz.less +++ /dev/null @@ -1,160 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.PD-Cluster-Legend { - position: relative; - - .unit { - font-size: 12px; - color: #333; - position: absolute; - right: 0; - top: 5px; - } -} - -.PD-KeyVis { - height: 100vh; - display: flex; - flex-direction: column; - - .ui.dropdown .menu { - z-index: 9999; - } - - .PD-KeyVis-Toolbar { - .group-icons-btn { - border: 0; - margin-top: -7px; - .button { - border-left: 0 !important; - } - - .icon { - color: #1b1c1d; - } - } - - .ant-select .anticon { - margin-right: 5px; - } - } - - svg, - button { - user-select: none; - } - - g.tick text { - font-family: 'Poppins'; - font-size: 12px; - text-anchor: start; - } - - .tooltip { - padding: 10px; - color: #eee; - background-color: #333; - box-shadow: 5px 5px 10px rgba(black, 0.5); - border-radius: 3px; - min-width: 200px; - - div.value { - display: flex; - align-items: center; - - div.value { - margin: 0; - padding: 7px; - font-weight: bold; - border-radius: 3px; - } - - div.unit { - color: #999; - font-size: 0.8rem; - margin-left: 10px; - } - } - - button { - line-height: 1; - background-color: transparent; - border: transparent solid 1px; - border-radius: 3px; - outline: none; - padding: 3px; - text-align: left; - color: #fff; - transition: background-color ease-in 100ms; - - &:hover { - border: #888 solid 1px; - cursor: pointer; - } - - &:active { - background-color: #888; - transition: none; - } - } - - .time { - color: #aaa; - line-height: 1.2; - margin-top: 10px; - font-size: 0.8rem; - } - - .overviewLabel { - margin: 20px 0; - .subLabel { - padding: 1px 3px; - display: block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - max-width: 250px; - } - } - - .keyContainer { - margin-top: 10px; - padding: 0 3px; - .desc { - text-transform: uppercase; - font-weight: bold; - font-size: 0.8rem; - color: #ccc; - } - .label, - .key { - display: block; - color: #888; - font-size: 0.7rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - max-width: 250px; - } - } - } - - .heatmap { - flex-grow: 1; - margin: @padding-page; - margin-top: -32px; - } -} - -#PD-KeyVis-Brightness-Overlay { - background-color: @select-dropdown-bg; - padding: @padding-md; - border-radius: @border-radius-base; - outline: none; - box-shadow: @box-shadow-base; - box-sizing: border-box; -} - -.PD-KeyVis-Select-Option .anticon { - display: none; -} diff --git a/ui-ori/lib/apps/KeyViz/components/KeyViz.tsx b/ui-ori/lib/apps/KeyViz/components/KeyViz.tsx deleted file mode 100644 index 5699c5dada..0000000000 --- a/ui-ori/lib/apps/KeyViz/components/KeyViz.tsx +++ /dev/null @@ -1,277 +0,0 @@ -import React, { useState, useEffect, useCallback } from 'react' -import { Button, Drawer, Result } from 'antd' -import { useTranslation } from 'react-i18next' -import { useGetSet, useMount, useInterval } from 'react-use' -import { useBoolean } from 'ahooks' - -import client, { ConfigKeyVisualConfig } from '@lib/client' -import { Heatmap } from '../heatmap' -import { HeatmapData, HeatmapRange, DataTag } from '../heatmap/types' -import { fetchHeatmap } from '../utils' -import KeyVizSettingForm from './KeyVizSettingForm' -import KeyVizToolbar from './KeyVizToolbar' - -import './KeyViz.less' - -type CacheEntry = { - metricType: DataTag - dateRange: number - expireTime: number - data: HeatmapData -} - -// const CACHE_EXPRIE_SECS = 10 - -class HeatmapCache { - // cache: CacheEntry[] = [] - // latestFetchIdx = 0 - - async fetch( - range: number | HeatmapRange, - metricType: DataTag - ): Promise { - // return fetchDummyHeatmap() - let selection - if (typeof range === 'number') { - const endTime = Math.ceil(new Date().getTime() / 1000) - // this.cache = this.cache.filter((entry) => entry.expireTime > endTime) - // const entry = this.cache.find( - // (entry) => entry.dateRange === range && entry.metricType === metricType - // ) - // if (entry) { - // return entry.data - // } else { - selection = { - starttime: endTime - range, - endtime: endTime, - } - // } - } else { - selection = range - } - - // this.latestFetchIdx += 1 - // const fetchIdx = this.latestFetchIdx - const data = await fetchHeatmap(selection, metricType) - // if (fetchIdx === this.latestFetchIdx) { - // if (typeof range === 'number') { - // this.cache.push({ - // dateRange: range, - // metricType: metricType, - // expireTime: new Date().getTime() / 1000 + CACHE_EXPRIE_SECS, - // data: data, - // }) - // } - return data - // } - // return undefined - } -} - -// Todo: define heatmap state, with auto check control, date range select, reset to zoom -// fetchData , changeType, add loading state, change zoom level to reset autofetch, - -type ChartState = { - heatmapData: HeatmapData - metricType: DataTag -} - -// TODO: using global state is not a good idea -let _chart -let cache = new HeatmapCache() - -const KeyViz = () => { - const [chartState, setChartState] = useState() - const [getSelection, setSelection] = useGetSet(null) - const [isLoading, setLoading] = useState(true) - const [getAutoRefreshSeconds, setAutoRefreshSeconds] = useGetSet(0) - const [getRemainingRefreshSeconds, setRemainingRefreshSeconds] = useGetSet(0) - const [getOnBrush, setOnBrush] = useGetSet(false) - const [getDateRange, setDateRange] = useGetSet(3600 * 6) - const [getBrightLevel, setBrightLevel] = useGetSet(1) - const [getMetricType, setMetricType] = useGetSet('written_bytes') - const [config, setConfig] = useState(null) - const [ - shouldShowSettings, - { setTrue: openSettings, setFalse: closeSettings }, - ] = useBoolean(false) - const { t } = useTranslation() - - const enabled = config?.auto_collection_disabled !== true - - const updateServiceStatus = useCallback(async function () { - try { - setLoading(true) - const resp = await client.getInstance().keyvisualConfigGet() - const config = resp.data - const enabled = config?.auto_collection_disabled !== true - if (!enabled) { - setAutoRefreshSeconds(0) - } - setConfig(config) - } finally { - setLoading(false) - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - useMount(updateServiceStatus) - - const updateHeatmap = useCallback(async () => { - if (getAutoRefreshSeconds() > 0) { - setRemainingRefreshSeconds(getAutoRefreshSeconds()) - } - try { - setLoading(true) - setOnBrush(false) - const metricType = getMetricType() - const data = await cache.fetch( - getSelection() || getDateRange(), - metricType - ) - setChartState({ heatmapData: data!, metricType }) - } finally { - setLoading(false) - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const onChangeBrightLevel = useCallback((val) => { - if (!_chart) return - setBrightLevel(val) - _chart.brightness(val) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const onChangeDateRange = useCallback((v: number) => { - setDateRange(v) - setSelection(null) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const onResetZoom = useCallback(() => { - setSelection(null) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const onToggleBrush = useCallback(() => { - const newOnBrush = !getOnBrush() - setAutoRefreshSeconds(0) - setOnBrush(newOnBrush) - _chart.brush(newOnBrush) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const onBrush = useCallback((selection: HeatmapRange) => { - setOnBrush(false) - setAutoRefreshSeconds(0) - setSelection(selection) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const onZoom = useCallback(() => { - setAutoRefreshSeconds(0) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const onChartInit = useCallback((chart) => { - _chart = chart - setLoading(false) - _chart.brightness(getBrightLevel()) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - useEffect(() => { - if (getRemainingRefreshSeconds() > getAutoRefreshSeconds()) { - setRemainingRefreshSeconds(getAutoRefreshSeconds()) - } - if (getAutoRefreshSeconds() > 0) { - onResetZoom() - setOnBrush(false) - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [getAutoRefreshSeconds()]) - - useEffect(() => { - if (enabled) { - updateHeatmap() - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [config, getSelection(), getDateRange(), getMetricType()]) - - useInterval(() => { - if (getAutoRefreshSeconds() === 0) { - return - } - if (getRemainingRefreshSeconds() === 0) { - updateHeatmap() - } else { - setRemainingRefreshSeconds((c) => c - 1) - } - }, 1000) - - const disabledPage = isLoading ? null : ( - - {t('keyviz.settings.open_setting')} - - } - /> - ) - - const mainPart = !enabled - ? disabledPage - : chartState && ( - - ) - - return ( -
    - - - {mainPart} - - - - -
    - ) -} - -export default KeyViz diff --git a/ui-ori/lib/apps/KeyViz/components/KeyVizSettingForm.tsx b/ui-ori/lib/apps/KeyViz/components/KeyVizSettingForm.tsx deleted file mode 100644 index d639aa3e3b..0000000000 --- a/ui-ori/lib/apps/KeyViz/components/KeyVizSettingForm.tsx +++ /dev/null @@ -1,207 +0,0 @@ -import React, { useState, useMemo, useCallback } from 'react' -import { - Form, - Skeleton, - Switch, - Space, - Button, - Modal, - Radio, - Input, -} from 'antd' -import { ExclamationCircleOutlined } from '@ant-design/icons' -import { useTranslation } from 'react-i18next' -import client from '@lib/client' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { ErrorBar } from '@lib/components' -import { useIsWriteable } from '@lib/utils/store' - -const policyConfigurable = process.env.NODE_ENV === 'development' - -interface Props { - onClose: () => void - onConfigUpdated: () => any -} - -type SeparatorStatus = { - validateStatus: 'warning' | 'success' - hasFeedback: boolean - help: string -} - -const negateSwitchProps = { - getValueProps: (value) => ({ checked: value !== true }), - getValueFromEvent: (checked) => !checked, -} - -function getSeparatorValidator(t) { - const separatorEmptyStatus: SeparatorStatus = { - validateStatus: 'warning', - hasFeedback: true, - help: t('keyviz.settings.separator_empty_warning'), - } - const separatorNotEmptyStatus: SeparatorStatus = { - validateStatus: 'success', - hasFeedback: true, - help: '', - } - return (value: string | undefined) => - value === undefined || value === '' - ? separatorEmptyStatus - : separatorNotEmptyStatus -} - -function getPolicyOptions(t) { - return ['db', 'kv'].map((policy) => { - let label = t(`keyviz.settings.policy_${policy}`) - return ( - - {label} - - ) - }) -} - -function KeyVizSettingForm({ onClose, onConfigUpdated }: Props) { - const [submitting, setSubmitting] = useState(false) - const { t } = useTranslation() - const isWriteable = useIsWriteable() - - const { - data: config, - isLoading: loading, - error, - } = useClientRequest((reqConfig) => - client.getInstance().keyvisualConfigGet(reqConfig) - ) - - const onUpdateServiceStatus = async (values) => { - try { - setSubmitting(true) - await client.getInstance().keyvisualConfigPut(values) - onClose() - onConfigUpdated() - } finally { - setSubmitting(false) - } - } - - const onSubmit = (values) => { - if ( - config?.auto_collection_disabled !== true && - values.auto_collection_disabled === true - ) { - Modal.confirm({ - title: t('keyviz.settings.close_keyviz'), - icon: , - content: t('keyviz.settings.close_keyviz_warning'), - okText: t('keyviz.settings.actions.close'), - cancelText: t('keyviz.settings.actions.cancel'), - okButtonProps: { danger: true }, - onOk: () => onUpdateServiceStatus(values), - }) - } else { - onUpdateServiceStatus(values) - } - } - - const [form] = Form.useForm() - const onValuesChange = useCallback( - (changedValues, values) => { - if (changedValues?.auto_collection_disabled !== true && !values?.policy) { - form.setFieldsValue({ policy: 'db' }) - } - if ( - config?.policy !== 'kv' && - changedValues?.policy === 'kv' && - !values?.policy_kv_separator - ) { - form.setFieldsValue({ policy_kv_separator: '/' }) - } - }, - [form, config] - ) - const policyOptions = useMemo(() => getPolicyOptions(t), [t]) - const validateSeparator = useMemo(() => getSeparatorValidator(t), [t]) - - return ( - <> - {error && } - {loading && } - {!loading && config && ( -
    - - {({ getFieldValue }) => { - const enabled = getFieldValue('auto_collection_disabled') !== true - const policy = getFieldValue('policy') - const separator = getFieldValue('policy_kv_separator') - return ( - <> - - - - - - {policyOptions} - - - - - - - ) - }} - - - - - - - -
    - )} - - ) -} - -export default KeyVizSettingForm diff --git a/ui-ori/lib/apps/KeyViz/components/KeyVizToolbar.tsx b/ui-ori/lib/apps/KeyViz/components/KeyVizToolbar.tsx deleted file mode 100644 index c4c6f29829..0000000000 --- a/ui-ori/lib/apps/KeyViz/components/KeyVizToolbar.tsx +++ /dev/null @@ -1,301 +0,0 @@ -import React, { Component, useEffect } from 'react' -import { - AreaChartOutlined, - ArrowsAltOutlined, - BulbOutlined, - ClockCircleOutlined, - DownOutlined, - LoadingOutlined, - SyncOutlined, - SettingOutlined, -} from '@ant-design/icons' -import { - Slider, - Spin, - Select, - Dropdown, - Button, - Menu, - Tooltip, - Space, -} from 'antd' -import { withTranslation, WithTranslation } from 'react-i18next' -import { useSpring, animated } from 'react-spring' -import Flexbox from '@g07cha/flexbox-react' -import { Card, Toolbar } from '@lib/components' -import { getValueFormat } from '@baurine/grafana-value-formats' - -function RefreshProgress(props) { - const { value } = props - const r = 50 - const totalLength = 2 * Math.PI * r - const [springProps, setSpringProps] = useSpring(() => ({ - value: 0, - })) - - useEffect(() => { - setSpringProps({ - value, - }) - }, [setSpringProps, value]) - - return ( - - - - - ) -} - -export interface IKeyVizToolbarProps { - enabled: boolean - isLoading: boolean - autoRefreshSeconds: number - remainingRefreshSeconds?: number - isOnBrush: boolean - metricType: string - brightLevel: number - dateRange: number - onResetZoom: () => void - onToggleBrush: () => void - onChangeMetric: (string) => void - onChangeDateRange: (number) => void - onChangeBrightLevel: (number) => void - onChangeAutoRefresh: (number) => void - onRefresh: () => void - onShowSettings: () => any -} - -class KeyVizToolbar extends Component { - state = { - exp: 0, - } - - handleRefreshClick = () => { - this.props.onRefresh() - } - - handleAutoRefreshMenuClick = ({ key }) => { - this.props.onChangeAutoRefresh(parseInt(key)) - } - - handleDateRange = (value) => { - this.props.onChangeDateRange(value) - } - - handleMetricChange = (value) => { - this.props.onChangeMetric(value) - } - - handleBrightLevel = (exp: number) => { - this.props.onChangeBrightLevel(Math.pow(2, exp)) - this.setState({ exp }) - } - - handleBrightnessDropdown = () => { - setTimeout(() => { - this.handleBrightLevel(this.state.exp) - }, 0) - } - - render() { - const { - t, - enabled, - dateRange, - isOnBrush, - metricType, - remainingRefreshSeconds, - autoRefreshSeconds, - onShowSettings, - } = this.props - - // in hours - const dateRangeOptions = [1, 6, 12, 24, 24 * 7] - - const MetricOptions = [ - { text: t('keyviz.toolbar.view_type.read_bytes'), value: 'read_bytes' }, - { - text: t('keyviz.toolbar.view_type.write_bytes'), - value: 'written_bytes', - }, - { text: t('keyviz.toolbar.view_type.read_keys'), value: 'read_keys' }, - { text: t('keyviz.toolbar.view_type.write_keys'), value: 'written_keys' }, - { text: t('keyviz.toolbar.view_type.all'), value: 'integration' }, - ] - - // in seconds - const autoRefreshOptions = [15, 30, 60, 2 * 60, 5 * 60, 10 * 60] - - const autoRefreshMenu = ( - - - {t('keyviz.toolbar.auto_refresh.off')} - - {autoRefreshOptions.map((sec) => { - return ( - - {getValueFormat('s')(sec, 0)} - - ) - })} - - - ) - - return ( - - - - -
    { - e.stopPropagation() - }} - > - -
    - - this.handleBrightLevel(value as number) - } - /> - -
    -
    - } - trigger={['click']} - onVisibleChange={this.handleBrightnessDropdown} - > - -
    - - - - - - - - - - - } - > - {autoRefreshSeconds ? ( - - ) : ( - - )} - {t('keyviz.toolbar.refresh')} - - - {this.props.isLoading && ( - } - /> - )} -
    - - - - - - -
    -
    - ) - } -} - -export default withTranslation()(KeyVizToolbar) diff --git a/ui-ori/lib/apps/KeyViz/heatmap/axis/histogram.ts b/ui-ori/lib/apps/KeyViz/heatmap/axis/histogram.ts deleted file mode 100644 index dcf034eec5..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/axis/histogram.ts +++ /dev/null @@ -1,109 +0,0 @@ -import * as d3 from 'd3' -import { Section, scaleSections } from '.' - -const fill = '#333' -const fillFocus = '#ccc' -const stroke = '#fff' - -export function histogram(data: number[][]) { - let xRange: [number, number] = [0, 0] - let yRange: [number, number] = [0, 0] - - histogram.xRange = function (val: [number, number]) { - xRange = val - return this - } - - histogram.yRange = function (val: [number, number]) { - yRange = val - return this - } - - function histogram( - xCtx: CanvasRenderingContext2D, - yCtx: CanvasRenderingContext2D, - xFocusDomain: [number, number] | null, - yFocusDomain: [number, number] | null, - xScale, - yScale - ) { - const xHeight = xCtx.canvas.height - const yWidth = yCtx.canvas.width - - const xLen = data.length - const yLen = data[0].length - - const xStartIdx = Math.max(0, Math.floor(xScale.invert(xRange[0]))) - const xEndIdx = Math.min(xLen - 1, Math.ceil(xScale.invert(xRange[1]))) - const yStartIdx = Math.max(0, Math.floor(yScale.invert(yRange[0]))) - const yEndIdx = Math.min(yLen - 1, Math.ceil(yScale.invert(yRange[1]))) - - const xSum: Section[] = [] - const ySum: Section[] = [] - - for (let x = xStartIdx; x < xEndIdx; x++) { - let sumVal = 0 - for (let y = yStartIdx; y < yEndIdx; y++) { - sumVal += data[x][y] - } - xSum.push({ val: sumVal, startIdx: x, endIdx: x + 1 }) - } - for (let y = yStartIdx; y < yEndIdx; y++) { - let sumVal = 0 - for (let x = xStartIdx; x < xEndIdx; x++) { - sumVal += data[x][y] - } - ySum.push({ val: sumVal, startIdx: y, endIdx: y + 1 }) - } - - const xBins = scaleSections( - xSum, - xFocusDomain, - xRange, - xScale, - (origin, val) => origin + val - ) - const yBins = scaleSections( - ySum, - yFocusDomain, - yRange, - yScale, - (origin, val) => origin + val - ) - - const xBinsMax = d3.max(xBins, (section) => section.val)! - const yBinsMax = d3.max(yBins, (section) => section.val)! - - xCtx.clearRect(xRange[0], 0, xRange[1], xHeight) - xCtx.strokeStyle = stroke - xCtx.lineWidth = 1 - for (const bin of xBins) { - const width = bin.endPos - bin.startPos - const height = (bin.val / xBinsMax) * xHeight - if (height < 1) continue - xCtx.fillStyle = bin.focus ? fillFocus : fill - xCtx.beginPath() - xCtx.rect(bin.startPos, xHeight - height, width, height) - xCtx.fill() - xCtx.stroke() - xCtx.closePath() - } - - yCtx.clearRect(0, yRange[0], yWidth, yRange[1]) - yCtx.strokeStyle = stroke - yCtx.lineWidth = 1 - for (const bin of yBins) { - const width = (bin.val / yBinsMax) * yWidth - const height = bin.endPos - bin.startPos - if (width < 1) continue - yCtx.fillStyle = bin.focus ? fillFocus : fill - yCtx.beginPath() - yCtx.rect(yWidth - width, bin.startPos, width, height) - yCtx.fill() - yCtx.stroke() - yCtx.closePath() - } - } - - return histogram -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts b/ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts deleted file mode 100644 index 7f22e12d04..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/axis/index.ts +++ /dev/null @@ -1,82 +0,0 @@ -import _ from 'lodash' - -export type Section = { - val: T - startIdx: number - endIdx: number -} - -export type DisplaySection = { - val: T - startIdx: number - endIdx: number - startPos: number - endPos: number - focus: boolean -} - -const mergeWidth = 3 - -export function scaleSections( - sections: Section[], - focusDomain: [number, number] | null, - range: [number, number], - scale: (idx: number) => number, - merge: (origin: T, val: T) => T -): DisplaySection[] { - let result: DisplaySection[] = [] - let mergedSmallSection: DisplaySection | null = null - let oneSectionRendered = false - - for (const section of sections) { - const canvasStart = range[0] - const canvasEnd = range[1] - const startPos = scale(section.startIdx) - const endPos = scale(section.endIdx) - const commonStart = Math.max(startPos, canvasStart) - const commonEnd = Math.min(endPos, canvasEnd) - const focus = focusDomain - ? Math.min(scale(focusDomain[1]), endPos) - - Math.max(scale(focusDomain[0]), startPos) > - 0 - : false - - if (mergedSmallSection) { - if ( - mergedSmallSection.endPos - mergedSmallSection.startPos >= mergeWidth || - commonStart - mergedSmallSection.startPos > mergeWidth || - (!oneSectionRendered && section.startIdx % 2 === 0) - ) { - result.push(mergedSmallSection) - oneSectionRendered = true - mergedSmallSection = null - } - } - - if (commonEnd - commonStart > 0) { - if (commonEnd - commonStart > mergeWidth) { - result.push( - _.assign( - { startPos: commonStart, endPos: commonEnd, focus: focus }, - section - ) - ) - oneSectionRendered = true - mergedSmallSection = null - } else { - if (mergedSmallSection === null) { - mergedSmallSection = _.assign( - { startPos: commonStart, endPos: commonEnd, focus: focus }, - section - ) - } else { - mergedSmallSection.val = merge(mergedSmallSection.val, section.val) - mergedSmallSection.endPos = commonEnd - mergedSmallSection.focus = mergedSmallSection.focus || focus - } - } - } - } - - return result -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/axis/label-axis.ts b/ui-ori/lib/apps/KeyViz/heatmap/axis/label-axis.ts deleted file mode 100644 index d0e4143d8b..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/axis/label-axis.ts +++ /dev/null @@ -1,138 +0,0 @@ -import _ from 'lodash' -import { Section, DisplaySection, scaleSections } from '.' -import { KeyAxisEntry } from '../types' -import { truncateString } from '../utils' - -const labelAxisMargin = 4 -const labelAxisWidth = 28 -const labelTextPadding = 4 -const minTextHeight = 17 -const fill = '#333' -const fillFocus = '#ccc' -const stroke = '#fff' -const textFill = 'white' -const textFillFocus = '#333' -const font = '500 12px Poppins' -const focusFont = '700 12px Poppins' - -type Label = Section -type DisplayLabel = DisplaySection - -export function labelAxisGroup(keyAxis: KeyAxisEntry[]) { - // Remove the endkey of the last region, so that the row where the region is located is aligned with the startkey. - if (keyAxis.length > 1) { - keyAxis = keyAxis.slice(1) - } - - let range: [number, number] = [0, 0] - const groups = aggrKeyAxisLabel(keyAxis) - - labelAxisGroup.range = function (val) { - range = val - return this - } - - function labelAxisGroup( - ctx: CanvasRenderingContext2D, - focusDomain: [number, number] | null, - scale: (idx: number) => number - ) { - const width = ctx.canvas.width - const height = ctx.canvas.height - - let scaledGroups = groups.map((group) => - scaleSections(group, focusDomain, range, scale, () => '') - ) - - ctx.clearRect(0, 0, width, height) - ctx.strokeStyle = stroke - ctx.lineWidth = 1 - ctx.textBaseline = 'middle' - for (const [groupIdx, group] of scaledGroups.entries()) { - const marginLeft = groupIdx * (labelAxisWidth + labelAxisMargin) - - for (const label of group) { - const width = labelAxisWidth - const height = label.endPos - label.startPos - - ctx.fillStyle = label.focus ? fillFocus : fill - ctx.beginPath() - ctx.rect(marginLeft, label.startPos, width, height) - ctx.fill() - ctx.stroke() - ctx.closePath() - - if (shouldShowLabelText(label)) { - ctx.font = label.focus ? focusFont : font - ctx.fillStyle = label.focus ? textFillFocus : textFill - ctx.translate( - marginLeft + labelAxisWidth / 2 + 2, - label.endPos - labelTextPadding - ) - ctx.rotate(-Math.PI / 2) - ctx.fillText(fitLabelText(label), 0, 0) - ctx.resetTransform() - ctx.scale(window.devicePixelRatio, window.devicePixelRatio) - } - } - } - } - - return labelAxisGroup -} - -function shouldShowLabelText(label: DisplayLabel): boolean { - return ( - label.endPos - label.startPos >= minTextHeight && label.val?.length !== 0 - ) -} - -function fitLabelText(label: DisplayLabel): string { - const rectWidth = label.endPos - label.startPos - const textLen = Math.floor(rectWidth / 7.5) - return truncateString(label.val, textLen) -} - -function aggrKeyAxisLabel(keyAxis: KeyAxisEntry[]): Label[][] { - let result: Label[][] = _.times(4, () => []) - let notEqual: boolean[] = _.times(keyAxis.length, () => false) - - for (let groupIdx = 0; groupIdx < result.length; groupIdx++) { - let lastLabel: string | null = null - let startKeyIdx: number | null = null - - for (let keyIdx = 0; keyIdx < keyAxis.length; keyIdx++) { - const label = keyAxis[keyIdx].labels[groupIdx] - // When the prefixes are equal and this column is null, it is considered equal to the previous row of labels. - notEqual[keyIdx] = - notEqual[keyIdx] || (label != null && label !== lastLabel) - - if (notEqual[keyIdx]) { - if (startKeyIdx != null && lastLabel != null) { - result[groupIdx].push({ - val: lastLabel, - startIdx: startKeyIdx, - endIdx: keyIdx, - }) - startKeyIdx = null - } - - if (label != null) { - startKeyIdx = keyIdx - } - - lastLabel = label - } - } - - if (startKeyIdx != null && lastLabel != null) { - result[groupIdx].push({ - val: lastLabel, - startIdx: startKeyIdx, - endIdx: keyAxis.length, - }) - } - } - - return result -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/buffer.ts b/ui-ori/lib/apps/KeyViz/heatmap/buffer.ts deleted file mode 100644 index b24e39e71c..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/buffer.ts +++ /dev/null @@ -1,33 +0,0 @@ -import * as d3 from 'd3' - -export function createBuffer( - normalizedValues: Uint8Array, - width: number, - height: number, - rasterizedColors: Uint32Array -): HTMLCanvasElement { - const canvas = d3 - .create('canvas') - .attr('width', width) - .attr('height', height) - .node() as HTMLCanvasElement - - console.time('createBuffer') - - const ctx = canvas.getContext('2d') as CanvasRenderingContext2D - const imageDataBuffer = new ArrayBuffer(width * height * 4) - const imageDataPixels = new Uint32Array(imageDataBuffer) - - const len = normalizedValues.length - for (let i = 0; i < len; i++) { - imageDataPixels[i] = rasterizedColors[normalizedValues[i]] - } - - const imageData = ctx.createImageData(width, height) - imageData.data.set(new Uint8ClampedArray(imageDataBuffer)) - ctx.putImageData(imageData, 0, 0) - - console.timeEnd('createBuffer') - - return canvas -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/chart.ts b/ui-ori/lib/apps/KeyViz/heatmap/chart.ts deleted file mode 100644 index 1d3517350b..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/chart.ts +++ /dev/null @@ -1,837 +0,0 @@ -import * as d3 from 'd3' -import _ from 'lodash' -import { HeatmapRange, HeatmapData, DataTag } from './types' -import { createBuffer } from './buffer' -import { labelAxisGroup } from './axis/label-axis' -import { histogram } from './axis/histogram' -import { getColorScheme, ColorScheme, rasterizeLevel } from './color' -import { tagUnit, withUnit, clickToCopyBehavior } from './utils' - -import legend from './legend' - -const margin = { - top: 25, - right: 40, - bottom: 70, - left: 100, -} - -const tooltipOffset = { - horizontal: 20, - vertical: 20, -} - -type TooltipStatus = { - pinned: boolean - hidden: boolean - x: number - y: number -} - -type FocusStatus = { - xDomain: [number, number] - yDomain: [number, number] -} - -const defaultTooltipStatus = { pinned: false, hidden: true, x: 0, y: 0 } -const heatmapCanvasPixelRatio = Math.max(2, window.devicePixelRatio) - -function normalizeData(d: number[][], maxValue: number) { - const height = d.length > 0 ? d[0].length : 0 - const width = d.length - const len = width * height - const normalized = new Uint8Array(len) - const logMaxValue = Math.log(maxValue) - for (let cIdx = 0; cIdx < width; cIdx++) { - for (let rIdx = 0; rIdx < height; rIdx++) { - const addr = rIdx * width + cIdx - normalized[addr] = - (Math.log(d[cIdx][rIdx]) / logMaxValue) * rasterizeLevel - } - } - return normalized -} - -export async function heatmapChart( - container, - data: HeatmapData, - dataTag: DataTag, - onBrush: (range: HeatmapRange) => void, - onZoom: () => void -) { - const maxValue = - d3.max(data.data[dataTag].map((array) => d3.max(array)!)) || 0 - const normalizedData = normalizeData(data.data[dataTag], maxValue) - - let colorScheme: ColorScheme - let brightness = 1 - let bufferCanvas: HTMLCanvasElement - let zoomTransform = d3.zoomIdentity - let tooltipStatus: TooltipStatus = _.clone(defaultTooltipStatus) - let focusStatus: FocusStatus | null = null - let isBrushing = false - let width = 0 - let height = 0 - let canvasWidth = 0 - let canvasHeight = 0 - - heatmapChart.brightness = function (val: number) { - brightness = val - updateBuffer() - heatmapChart() - } - - heatmapChart.brush = function (enabled: boolean) { - isBrushing = enabled - heatmapChart() - } - - heatmapChart.resetZoom = function () { - zoomTransform = d3.zoomIdentity - heatmapChart() - } - - heatmapChart.size = function (newWidth, newHeight) { - const newCanvasWidth = newWidth - margin.left - margin.right - const newCanvasHeight = newHeight - margin.top - margin.bottom - // Sync transform on resize - if (canvasWidth !== 0 && canvasHeight !== 0) { - zoomTransform = d3.zoomIdentity - .translate( - (zoomTransform.x * newCanvasWidth) / canvasWidth, - (zoomTransform.y * newCanvasHeight) / canvasHeight - ) - .scale(zoomTransform.k) - } - width = newWidth - height = newHeight - canvasWidth = newCanvasWidth - canvasHeight = newCanvasHeight - heatmapChart() - } - - function updateBuffer() { - const d = data.data[dataTag] - const height = d.length > 0 ? d[0].length : 0 - const width = d.length - const newColorScheme = getColorScheme(maxValue, brightness) - bufferCanvas = createBuffer( - normalizedData, - width, - height, - newColorScheme.rasterizedColors - ) - colorScheme = newColorScheme - } - - updateBuffer() - heatmapChart() - - function heatmapChart() { - let xHistogramCanvas = container - .selectAll('canvas.x-histogram') - .data([null]) - xHistogramCanvas = xHistogramCanvas - .enter() - .append('canvas') - .classed('x-histogram', true) - .style('position', 'absolute') - .style('z-index', '100') - .merge(xHistogramCanvas) - .attr('width', canvasWidth * window.devicePixelRatio) - .attr('height', canvasHeight * window.devicePixelRatio) - .style('width', canvasWidth + 'px') - .style('height', 30 + 'px') - .style('margin-top', height - 60 + 'px') - .style('margin-left', margin.left + 'px') - xHistogramCanvas - .node() - .getContext('2d') - .scale(window.devicePixelRatio, window.devicePixelRatio) - - let yHistogramCanvas = container - .selectAll('canvas.y-histogram') - .data([null]) - yHistogramCanvas = yHistogramCanvas - .enter() - .append('canvas') - .classed('y-histogram', true) - .style('position', 'absolute') - .style('z-index', '101') - .merge(yHistogramCanvas) - .attr('width', 30 * window.devicePixelRatio) - .attr('height', canvasHeight * window.devicePixelRatio) - .style('width', 30 + 'px') - .style('height', canvasHeight + 'px') - .style('margin-top', margin.top + 'px') - .style('margin-left', width - 30 + 'px') - yHistogramCanvas - .node() - .getContext('2d') - .scale(window.devicePixelRatio, window.devicePixelRatio) - - let labelCanvas = container.selectAll('canvas.label').data([null]) - labelCanvas = labelCanvas - .enter() - .append('canvas') - .classed('label', true) - .style('position', 'absolute') - .style('z-index', '102') - .merge(labelCanvas) - .style('width', 90 + 'px') - .style('height', canvasHeight + 'px') - .attr('width', 90 * window.devicePixelRatio) - .attr('height', canvasHeight * window.devicePixelRatio) - .style('margin-top', margin.top + 'px') - labelCanvas - .node() - .getContext('2d') - .scale(window.devicePixelRatio, window.devicePixelRatio) - - let canvas = container.selectAll('canvas.heatmap').data([null]) - canvas = canvas - .enter() - .append('canvas') - .classed('heatmap', true) - .style('position', 'absolute') - .style('z-index', '103') - .merge(canvas) - .attr('width', canvasWidth * heatmapCanvasPixelRatio) - .attr('height', canvasHeight * heatmapCanvasPixelRatio) - .style('width', canvasWidth + 'px') - .style('height', canvasHeight + 'px') - .style('margin-top', margin.top + 'px') - .style('margin-right', margin.right + 'px') - .style('margin-bottom', margin.bottom + 'px') - .style('margin-left', margin.left + 'px') - const ctx: CanvasRenderingContext2D = canvas.node().getContext('2d') - ctx.imageSmoothingEnabled = false - ctx.scale(heatmapCanvasPixelRatio, heatmapCanvasPixelRatio) - - let axis = container.selectAll('svg').data([null]) - axis = axis - .enter() - .append('svg') - .style('position', 'absolute') - .style('z-index', '200') - .merge(axis) - .style('width', width + 'px') - .style('height', height + 'px') - - let tooltipLayer = container.selectAll('div').data([null]) - tooltipLayer = tooltipLayer - .enter() - .append('div') - .style('position', 'absolute') - .style('z-index', '300') - .style('pointer-events', 'none') - .merge(tooltipLayer) - .style('width', width + 'px') - .style('height', height + 'px') - - const xScale = d3 - .scaleLinear() - .domain([0, data.timeAxis.length - 1]) - .range([0, canvasWidth]) - - const yScale = d3 - .scaleLinear() - .domain([0, data.keyAxis.length - 1]) - .range([0, canvasHeight]) - - const xAxis = d3 - .axisBottom(xScale) - .tickFormat((idx) => - data.timeAxis[idx as number] !== undefined - ? d3.timeFormat('%Y-%m-%d %H:%M:%S')( - new Date(data.timeAxis[idx as number] * 1000) - ) - : '' - ) - .ticks(width / 270) - - const labelAxis = labelAxisGroup(data.keyAxis).range([0, canvasHeight]) - - const histogramAxis = histogram(data.data[dataTag]) - .xRange([0, canvasWidth]) - .yRange([0, canvasHeight]) - - let xAxisG = axis.selectAll('g.x-axis').data([null]) - xAxisG = xAxisG - .enter() - .append('g') - .classed('x-axis', true) - .merge(xAxisG) - .attr('transform', 'translate(' + margin.left + ',' + (height - 20) + ')') - - d3.zoom().transform(axis, zoomTransform) - - const zoomBehavior = d3 - .zoom() - .scaleExtent([1, 128]) - .on('zoom', zooming) - .on('end', zoomEnd) - - function constrainBoucing(transform) { - const bounceRatio = 0.8 - const dragLeft = Math.max(0, transform.applyX(0)) - const dragRight = Math.max(0, canvasWidth - transform.applyX(canvasWidth)) - const dragTop = Math.max(0, transform.applyY(0)) - const dragBottom = Math.max( - 0, - canvasHeight - transform.applyY(canvasHeight) - ) - return d3.zoomIdentity - .translate( - Math.floor(transform.x - (dragLeft - dragRight) * bounceRatio), - Math.floor(transform.y - (dragTop - dragBottom) * bounceRatio) - ) - .scale(transform.k) - } - - function constrainHard(transform) { - let dx0 = transform.invertX(0), - dx1 = transform.invertX(canvasWidth) - canvasWidth, - dy0 = transform.invertY(0), - dy1 = transform.invertY(canvasHeight) - canvasHeight - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ) - } - - function zooming() { - onZoom() - if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'mousemove') { - zoomTransform = constrainBoucing(d3.event.transform) - hideTooltips() - } else { - zoomTransform = constrainHard(d3.event.transform) - showTooltips() - } - render() - } - - function zoomEnd() { - zoomTransform = constrainHard(zoomTransform) - axis.call(d3.zoom().transform, zoomTransform) - if (tooltipStatus.pinned) { - showTooltips() - } - render() - } - - function focusPoint(x: number, y: number) { - focusStatus = { xDomain: [x, x + 0.001], yDomain: [y, y + 0.001] } - } - - function hoverBehavior(axis) { - axis.on('mousemove', () => { - showTooltips() - render() - }) - - axis.on('mouseout', () => { - if (!tooltipStatus.pinned && !isBrushing) { - focusStatus = null - render() - } - }) - } - - function showTooltips() { - tooltipStatus.hidden = false - - if (!tooltipStatus.pinned) { - const mouseCanvasOffset = d3.mouse(canvas.node()) - if (isNaN(mouseCanvasOffset[0])) return - - const xRescale = zoomTransform.rescaleX(xScale) - const yRescale = zoomTransform.rescaleY(yScale) - const x = xRescale.invert(mouseCanvasOffset[0]) - const y = yRescale.invert(mouseCanvasOffset[1]) - - if (!isBrushing) focusPoint(x, y) - - if ( - mouseCanvasOffset[0] < 0 || - mouseCanvasOffset[0] > canvasWidth || - mouseCanvasOffset[1] < 0 || - mouseCanvasOffset[1] > canvasHeight - ) { - hideTooltips() - } else { - tooltipStatus.x = x - tooltipStatus.y = y - } - } - } - - function hideTooltips() { - tooltipStatus.hidden = true - } - - function hideAxisTicksWithoutLabel() { - axis.selectAll('.tick text').each(function () { - if (this.innerHTML === '') { - this.parentNode.style.display = 'none' - } - }) - } - - axis.on('click', clicked) - - function clicked() { - if (d3.event.defaultPrevented) return // zoom - - const mouseCanvasOffset = d3.mouse(canvas.node()) - if ( - mouseCanvasOffset[0] < 0 || - mouseCanvasOffset[0] > canvasWidth || - mouseCanvasOffset[1] < 0 || - mouseCanvasOffset[1] > canvasHeight - ) { - return - } - - tooltipStatus.pinned = !tooltipStatus.pinned - showTooltips() - render() - } - - axis.call(zoomBehavior) - axis.call(hoverBehavior) - - function render() { - renderHeatmap() - // renderHighlight() - renderAxis() - renderBrush() - renderTooltip() - renderCross() - legend(colorScheme, dataTag) - } - - function renderHeatmap() { - ctx.clearRect(0, 0, canvasWidth, canvasHeight) - ctx.drawImage( - bufferCanvas, - xScale.invert(zoomTransform.invertX(0)), - yScale.invert(zoomTransform.invertY(0)), - xScale.invert(canvasWidth * (1 / zoomTransform.k)), - yScale.invert(canvasHeight * (1 / zoomTransform.k)), - 0, - 0, - canvasWidth, - canvasHeight - ) - } - - // function renderHighlight() { - // const selectedData = data.data[dataTag] - // const xLen = selectedData.length - // const yLen = selectedData[0].length - // const xRescale = zoomTransform.rescaleX(xScale) - // const yRescale = zoomTransform.rescaleY(yScale) - // const xStartIdx = Math.max(0, Math.floor(xScale.invert(0))) - // const xEndIdx = Math.min(xLen - 1, Math.ceil(xScale.invert(canvasWidth))) - // const yStartIdx = Math.max(0, Math.floor(yScale.invert(0))) - // const yEndIdx = Math.min(yLen - 1, Math.ceil(yScale.invert(canvasHeight))) - - // ctx.shadowColor = '#fff' - // ctx.shadowBlur = 9 + zoomTransform.k // 10 + 1 * (zoomTransform.k - 1) - // ctx.fillStyle = 'blue' - // for (let x = xStartIdx; x < xEndIdx; x++) { - // for (let y = yStartIdx; y < yEndIdx; y++) { - // if (selectedData[x][y] > maxValue / 2) { - // const left = xRescale(x) - // const top = yRescale(y) - // const right = xRescale(x + 1) - // const bottom = yRescale(y + 1) - // const width = right - left - // const height = bottom - top - // const xPadding = ((0.8 + 0.5 * (1 - 1 / zoomTransform.k)) * width) / height - // const yPadding = ((0.8 + 0.5 * (1 - 1 / zoomTransform.k)) * height) / width - // ctx.beginPath() - // ctx.shadowOffsetX = (left + 1000) * heatmapCanvasPixelRatio - // ctx.shadowOffsetY = (top + 1000) * heatmapCanvasPixelRatio - // ctx.fillRect(-1000 - xPadding, -1000 - yPadding, right - left + xPadding * 2, bottom - top + yPadding * 2) - // ctx.closePath() - // } - // } - // } - // } - - function renderAxis() { - const xRescale = zoomTransform.rescaleX(xScale) - const yRescale = zoomTransform.rescaleY(yScale) - histogramAxis( - xHistogramCanvas.node().getContext('2d'), - yHistogramCanvas.node().getContext('2d'), - focusStatus?.xDomain, - focusStatus?.yDomain, - xRescale, - yRescale - ) - labelAxis( - labelCanvas.node().getContext('2d'), - focusStatus?.yDomain, - yRescale - ) - xAxisG.call(xAxis.scale(xRescale)) - hideAxisTicksWithoutLabel() - } - - function renderBrush() { - if (isBrushing) { - const brush = d3 - .brush() - .extent([ - [0, 0], - [canvasWidth, canvasHeight], - ]) - .on('start', brushStart) - .on('brush', brushing) - .on('end', brushEnd) - - let brushSvg = axis.selectAll('g.brush').data([null]) - brushSvg = brushSvg - .enter() - .append('g') - .classed('brush', true) - .merge(brushSvg) - .attr( - 'transform', - 'translate(' + margin.left + ',' + margin.top + ')' - ) - .call(brush) - - function brushStart() { - hideTooltips() - render() - } - - function brushing() { - const selection = d3.event.selection - if (selection) { - const xRescale = zoomTransform.rescaleX(xScale) - const yRescale = zoomTransform.rescaleY(yScale) - focusStatus = { - xDomain: [ - xRescale.invert(selection[0][0]), - xRescale.invert(selection[1][0]), - ], - yDomain: [ - yRescale.invert(selection[0][1]), - yRescale.invert(selection[1][1]), - ], - } - render() - } - } - - function brushEnd() { - brushSvg.remove() - isBrushing = false - - const selection = d3.event.selection - if (selection) { - brush.move(brushSvg, null) - const xRescale = zoomTransform.rescaleX(xScale) - const yRescale = zoomTransform.rescaleY(yScale) - const startTime = - data.timeAxis[Math.floor(xRescale.invert(selection[0][0]))] - const endTime = - data.timeAxis[Math.ceil(xRescale.invert(selection[1][0]))] - const startKey = - data.keyAxis[Math.ceil(yRescale.invert(selection[1][1]))].key - const endKey = - data.keyAxis[Math.floor(yRescale.invert(selection[0][1]))].key - - onBrush({ - starttime: startTime, - endtime: endTime, - startkey: startKey, - endkey: endKey, - }) - } - - showTooltips() - render() - } - } else { - axis.selectAll('g.brush').remove() - } - } - - function getTooltipOverviewLabel(keyIdx) { - const startLabel = data.keyAxis[keyIdx]!.labels - const endLabel = data.keyAxis[keyIdx - 1]!.labels - - if (!startLabel && !endLabel) { - return [] - } - if (!startLabel) { - return endLabel - } - if (!endLabel || _.isEqual(startLabel, endLabel)) { - return startLabel - } - - const startLen = startLabel.length - const endLen = endLabel.length - - // Cross start boundary, only use end label - if ( - startLen >= 1 && - startLen + 1 === endLen && - _.isEqual(startLabel, endLabel.slice(0, startLen)) - ) { - return endLabel - } - // range - if ( - startLen >= 3 && - startLen === endLen && - _.isEqual( - startLabel.slice(0, startLen - 1), - endLabel.slice(0, startLen - 1) - ) - ) { - return [ - ...startLabel.slice(0, startLen - 1), - `${startLabel[startLen - 1]} ~ ${endLabel[startLen - 1]}`, - ] - } - // Cross end boundary, only use start label - return startLabel - } - - function renderTooltip() { - if (tooltipStatus.hidden) { - tooltipLayer.selectAll('div').remove() - return - } - - const timeIdx = Math.floor(tooltipStatus.x) - const keyIdx = Math.floor(tooltipStatus.y) - - if (data.keyAxis[keyIdx] == null || data.keyAxis[keyIdx + 1] == null) { - return - } - - if ( - data.timeAxis[timeIdx] == null || - data.timeAxis[timeIdx + 1] == null - ) { - return - } - - const xRescale = zoomTransform.rescaleX(xScale) - const yRescale = zoomTransform.rescaleY(yScale) - const canvasOffset = [ - xRescale(tooltipStatus.x), - yRescale(tooltipStatus.y), - ] - - let tooltipDiv = tooltipLayer.selectAll('div').data([null]) - tooltipDiv = tooltipDiv - .enter() - .append('div') - .style('position', 'absolute') - // .style('width', tooltipSize.width + 'px') - // .style('height', tooltipSize.height + 'px') - .classed('tooltip', true) - .merge(tooltipDiv) - .style('pointer-events', tooltipStatus.pinned ? 'all' : 'none') - - if (canvasOffset[0] < canvasWidth / 2) { - // Left half - const v = canvasOffset[0] + tooltipOffset.horizontal + margin.left - tooltipDiv.style('left', `${v}px`).style('right', 'auto') - } else { - // Right half - const v = - canvasWidth - - canvasOffset[0] + - tooltipOffset.horizontal + - margin.right - tooltipDiv.style('right', `${v}px`).style('left', 'auto') - } - - if (canvasOffset[1] < canvasHeight / 2) { - // Top half - const v = canvasOffset[1] + tooltipOffset.vertical + margin.top - tooltipDiv.style('top', `${v}px`).style('bottom', 'auto') - } else { - // Bottom half - const v = - canvasHeight - - canvasOffset[1] + - tooltipOffset.vertical + - margin.bottom - tooltipDiv.style('bottom', `${v}px`).style('top', 'auto') - } - - const value = data.data[dataTag]?.[timeIdx]?.[keyIdx] - - let valueDiv = tooltipDiv.selectAll('div.value').data([null]) - valueDiv = valueDiv - .enter() - .append('div') - .classed('value', true) - .merge(valueDiv) - - let valueText = valueDiv.selectAll('div.value').data([null]) - valueText - .enter() - .append('div') - .classed('value', true) - .merge(valueText) - .text(withUnit(value)) - .style('color', colorScheme.label(value)) - .style('background-color', colorScheme.background(value)) - - let unitText = valueDiv.selectAll('div.unit').data([null]) - unitText - .enter() - .append('div') - .classed('unit', true) - .merge(unitText) - .text(tagUnit(dataTag)) - - const timeText = [timeIdx, timeIdx + 1] - .map((idx) => - d3.timeFormat('%Y-%m-%d\n%H:%M:%S')( - new Date(data.timeAxis[idx] * 1000) - ) - ) - .join(' ~ ') - - let timeDiv = tooltipDiv.selectAll('button.time').data([timeText]) - timeDiv - .enter() - .append('button') - .classed('time', true) - .merge(timeDiv) - .call(clickToCopyBehavior, (d) => d) - .text((d) => d) - - let overviewLabelDiv = tooltipDiv - .selectAll('div.overviewLabel') - .data([keyIdx + 1]) - overviewLabelDiv = overviewLabelDiv - .enter() - .append('div') - .classed('overviewLabel', true) - .merge(overviewLabelDiv) - - let overviewSubLabel = overviewLabelDiv - .selectAll('.subLabel') - .style('display', 'none') - .data((keyIdx) => getTooltipOverviewLabel(keyIdx)) - - overviewSubLabel - .enter() - .append('button') - .classed('subLabel', true) - .merge(overviewSubLabel) - .call(clickToCopyBehavior, (d) => d) - .text((d, idx) => { - // Prefix with spaces - return '\u00A0'.repeat(idx * 2) + d - }) - .style('display', 'block') - - let keyContainer = tooltipDiv.selectAll('div.keyContainer').data([ - { - desc: 'Start Key (Incl.):', - idx: keyIdx + 1, - }, - { - desc: 'End key (Excl.):', - idx: keyIdx, - }, - ]) - - keyContainer = keyContainer - .enter() - .append('div') - .classed('keyContainer', true) - .merge(keyContainer) - - let descText = keyContainer.selectAll('.desc').data((d) => [d]) - descText - .enter() - .append('div') - .classed('desc', true) - .merge(descText) - .text(({ desc }) => desc) - - let keyText = keyContainer.selectAll('button.key').data((d) => [d]) - keyText - .enter() - .append('button') - .classed('key', true) - .merge(keyText) - .call(clickToCopyBehavior, ({ idx }) => data.keyAxis[idx]!.key) - .text(({ idx }) => data.keyAxis[idx]!.key) - } - - function renderCross() { - if (tooltipStatus.pinned) { - const xRescale = zoomTransform.rescaleX(xScale) - const yRescale = zoomTransform.rescaleY(yScale) - const canvasOffset = [ - xRescale(tooltipStatus.x), - yRescale(tooltipStatus.y), - ] - const crossCenterPadding = 3 - const crossBorder = 1 - const crossSize = 8 - const crossWidth = 2 - - ctx.lineWidth = crossWidth + 2 * crossBorder - ctx.strokeStyle = '#111' - ctx.beginPath() - ctx.moveTo(canvasOffset[0], canvasOffset[1] - crossSize - crossBorder) - ctx.lineTo( - canvasOffset[0], - canvasOffset[1] - crossCenterPadding + crossBorder - ) - ctx.moveTo( - canvasOffset[0], - canvasOffset[1] + crossCenterPadding - crossBorder - ) - ctx.lineTo(canvasOffset[0], canvasOffset[1] + crossSize + crossBorder) - ctx.moveTo(canvasOffset[0] - crossSize - crossBorder, canvasOffset[1]) - ctx.lineTo( - canvasOffset[0] - crossCenterPadding + crossBorder, - canvasOffset[1] - ) - ctx.moveTo( - canvasOffset[0] + crossCenterPadding - crossBorder, - canvasOffset[1] - ) - ctx.lineTo(canvasOffset[0] + crossSize + crossBorder, canvasOffset[1]) - ctx.stroke() - ctx.lineWidth = crossWidth - ctx.strokeStyle = '#eee' - ctx.beginPath() - ctx.moveTo(canvasOffset[0], canvasOffset[1] - crossSize) - ctx.lineTo(canvasOffset[0], canvasOffset[1] - crossCenterPadding) - ctx.moveTo(canvasOffset[0], canvasOffset[1] + crossCenterPadding) - ctx.lineTo(canvasOffset[0], canvasOffset[1] + crossSize) - ctx.moveTo(canvasOffset[0] - crossSize, canvasOffset[1]) - ctx.lineTo(canvasOffset[0] - crossCenterPadding, canvasOffset[1]) - ctx.moveTo(canvasOffset[0] + crossCenterPadding, canvasOffset[1]) - ctx.lineTo(canvasOffset[0] + crossSize, canvasOffset[1]) - ctx.stroke() - } - } - - render() - } - - return heatmapChart -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/color.ts b/ui-ori/lib/apps/KeyViz/heatmap/color.ts deleted file mode 100644 index 71e49688fb..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/color.ts +++ /dev/null @@ -1,62 +0,0 @@ -import * as d3 from 'd3' - -const heatmapColor = d3.interpolateRgbBasis([ - '#000000', - '#080808', - '#090909', - '#101010', - '#111111', - '#121212', - '#131313', - '#141414', - '#151515', - '#171717', - '#181818', - '#191919', - '#410c74', - '#72067b', - '#b00f53', - '#fcc734', - '#fbfc43', - '#ffffb0', -]) - -export const rasterizeLevel = 100 - -export type ColorScale = (val: number) => d3.RGBColor -export type ColorScheme = { - background: ColorScale - label: ColorScale - maxValue: number - rasterizedColors: Uint32Array -} - -export function getColorScheme( - maxValue: number, - brightness: number -): ColorScheme { - const logScale = (d3 as any).scaleSymlog().domain([0, maxValue / brightness]) - const backgroundColorScale = (d: number) => - d3.color(heatmapColor(logScale(d)))! as d3.RGBColor - const labelColorScale = (d: number) => - d3.hsl(backgroundColorScale(d)).l > 0.5 - ? (d3.color('black')! as d3.RGBColor) - : (d3.color('white')! as d3.RGBColor) - - const rasterizedColors = new Uint32Array(rasterizeLevel + 1) - for (let i = 0; i <= rasterizeLevel; i++) { - const color = d3.color( - backgroundColorScale(Math.pow(maxValue, i / rasterizeLevel)) - ) - const colorRgb = color.rgb() - rasterizedColors[i] = - colorRgb.r | (colorRgb.g << 8) | (colorRgb.b << 16) | 0xff000000 - } - - return { - background: backgroundColorScale, - label: labelColorScale, - maxValue: maxValue, - rasterizedColors, - } -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/index.tsx b/ui-ori/lib/apps/KeyViz/heatmap/index.tsx deleted file mode 100644 index 1930e3e340..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, { useRef, useEffect } from 'react' -import * as d3 from 'd3' -import { useEventListener } from 'ahooks' -import { heatmapChart } from './chart' -import { HeatmapData, DataTag, HeatmapRange } from './types' - -type HeatmapProps = { - data: HeatmapData - dataTag: DataTag - onBrush: (selection: HeatmapRange) => void - onZoom: () => void - onChartInit: (any) => void -} - -function _Heatmap(props) { - const divRef: React.RefObject = useRef(null) - const chart = useRef(null) - - function updateChartSize() { - if (divRef.current == null) { - return - } - if (!chart.current) { - return - } - const container = divRef.current - const width = container.offsetWidth - const height = container.offsetHeight - chart.current.size(width, height) - } - - useEffect(() => { - const init = async () => { - if (divRef.current != null) { - const container = divRef.current - chart.current = await heatmapChart( - d3.select(container), - props.data, - props.dataTag, - props.onBrush, - props.onZoom - ) - props.onChartInit(chart.current) - updateChartSize() - } - } - init() - }, [props, props.data, props.dataTag]) - - useEventListener('resize', () => { - updateChartSize() - }) - - return
    -} - -export const Heatmap = React.memo(_Heatmap) diff --git a/ui-ori/lib/apps/KeyViz/heatmap/legend.ts b/ui-ori/lib/apps/KeyViz/heatmap/legend.ts deleted file mode 100644 index 6ba86e8ef0..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/legend.ts +++ /dev/null @@ -1,86 +0,0 @@ -import * as d3 from 'd3' -import _ from 'lodash' - -import { ColorScheme } from './color' -import { DataTag } from './types' -import { tagUnit, withUnit } from './utils' - -export default function (colorScheme: ColorScheme, dataTag: DataTag) { - let marginRight = 120 - let width = 500 - let height = 50 - let innerWidth = width - marginRight - let innerHeight = 26 - let tickCount = 5 - - if (document.querySelector('.PD-Cluster-Legend') === null) { - return - } - let container = (d3 as any) - .select('.PD-Cluster-Legend') - .style('width', `${width}px`) - .style('height', `${height}px`) - - let xScale = (d3 as any) - .scaleSymlog() - .domain([colorScheme.maxValue / 1000, colorScheme.maxValue]) - .range([0, innerWidth]) - - let canvas = container.selectAll('canvas').data([null]) - canvas = canvas - .enter() - .append('canvas') - .style('position', 'absolute') - .style('left', '0px') - .style('top', '0px') - .merge(canvas) - .attr('width', width) - .attr('height', height) - - const ctx: CanvasRenderingContext2D = canvas.node().getContext('2d') - - for (let x = 0; x < innerWidth; x++) { - ctx.fillStyle = colorScheme.background(xScale.invert(x)).toString() - ctx.fillRect(x, 0, 1, innerHeight) - } - - let xAxis = d3 - .axisBottom(xScale) - .tickValues( - _.range(0, tickCount + 1).map((d) => - xScale.invert((innerWidth * d) / tickCount) - ) - ) - .tickSize(innerHeight) - .tickFormat((d) => withUnit(d as number)) - - let svg = container.selectAll('svg').data([null]) - svg = svg - .enter() - .append('svg') - .style('position', 'absolute') - .style('left', '0px') - .style('top', '0px') - .merge(svg) - .attr('width', width) - .attr('height', height) - - let xAxisG = svg.selectAll('g').data([null]) - xAxisG - .enter() - .append('g') - .merge(xAxisG) - .call(xAxis) - .call((g) => { - g.selectAll('.tick text').attr('y', innerHeight + 6) - g.selectAll('.domain').remove() - }) - - let unitLabel = container.selectAll('div').data([null]) - unitLabel - .enter() - .append('div') - .classed('unit', true) - .merge(unitLabel) - .text(tagUnit(dataTag)) -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/types.ts b/ui-ori/lib/apps/KeyViz/heatmap/types.ts deleted file mode 100644 index c365b19e7e..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { DecoratorLabelKey, MatrixMatrix } from '@lib/client' - -export type KeyAxisEntry = DecoratorLabelKey -export type HeatmapData = MatrixMatrix - -export type DataTag = - | 'integration' - | 'written_bytes' - | 'read_bytes' - | 'written_keys' - | 'read_keys' - -export type HeatmapRange = { - starttime?: number - endtime?: number - startkey?: string - endkey?: string -} diff --git a/ui-ori/lib/apps/KeyViz/heatmap/utils.ts b/ui-ori/lib/apps/KeyViz/heatmap/utils.ts deleted file mode 100644 index 29b4830812..0000000000 --- a/ui-ori/lib/apps/KeyViz/heatmap/utils.ts +++ /dev/null @@ -1,74 +0,0 @@ -import * as d3 from 'd3' - -import { DataTag } from './types' - -export function tagUnit(tag: DataTag): string { - switch (tag) { - case 'integration': - return 'bytes/min' - case 'read_bytes': - return 'bytes/min' - case 'written_bytes': - return 'bytes/min' - case 'read_keys': - return 'keys/min' - case 'written_keys': - return 'keys/min' - } -} - -export function withUnit(val: number): string { - val = val || 0 - if (val > 1024 * 1024 * 1024) { - return (val / 1024 / 1024 / 1024).toFixed(2) + ' G' - } else if (val > 1024 * 1024) { - return (val / 1024 / 1024).toFixed(2) + ' M' - } else if (val > 1024) { - return (val / 1024).toFixed(2) + ' K' - } else { - return val.toFixed(2) - } -} - -export function truncateString(str: string, len: number): string { - if (str.length > len) { - return ( - str.substr(0, len / 2 - 1) + - '....' + - str.substr(str.length - len / 2 + 1, str.length) - ) - } else { - return str - } -} - -export function clickToCopyBehavior(selection, map) { - selection.each(function (d) { - d3.select(this).on('click', () => { - copyToClipboard(map(d)) - }) - }) -} - -function copyToClipboard(text: string) { - const input = d3.select('body').append('input').attr('value', text) - input.node()!.select() - document.execCommand('copy') - input.remove() -} - -export function doEventsOnYield(generator): Promise { - return new Promise((resolve, reject) => { - let g = generator() - let advance = () => { - try { - let r = g.next() - if (r.done) resolve() - } catch (e) { - reject(e) - } - setTimeout(advance, 0) - } - advance() - }) -} diff --git a/ui-ori/lib/apps/KeyViz/index.meta.ts b/ui-ori/lib/apps/KeyViz/index.meta.ts deleted file mode 100644 index 7af2277efd..0000000000 --- a/ui-ori/lib/apps/KeyViz/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { EyeOutlined } from '@ant-design/icons' - -export default { - id: 'keyviz', - routerPrefix: '/keyviz', - icon: EyeOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_keyviz" */ '.'), -} diff --git a/ui-ori/lib/apps/KeyViz/index.tsx b/ui-ori/lib/apps/KeyViz/index.tsx deleted file mode 100644 index 0b613a74d5..0000000000 --- a/ui-ori/lib/apps/KeyViz/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' -import { Root } from '@lib/components' -import KeyViz from './components/KeyViz' - -export default () => { - return ( - - - - ) -} diff --git a/ui-ori/lib/apps/KeyViz/translations/en.yaml b/ui-ori/lib/apps/KeyViz/translations/en.yaml deleted file mode 100644 index c302bef2d8..0000000000 --- a/ui-ori/lib/apps/KeyViz/translations/en.yaml +++ /dev/null @@ -1,39 +0,0 @@ -keyviz: - nav_title: Key Visualizer - toolbar: - brightness: Brightness - zoom: - select: Select & Zoom - reset: Reset - refresh: Refresh - auto_refresh: - title: Auto Refresh - off: Off - view_type: - read_bytes: Read (bytes) - write_bytes: Write (bytes) - read_keys: Read (keys) - write_keys: Write (keys) - all: All - settings: - title: Settings - disabled_result: - title: Feature Not Enabled - sub_title: | - Key Visualizer feature is not enabled so that visual reports cannot be viewed. - You can modify settings to enable the feature and wait for new data being collected. - open_setting: Open Settings - close_keyviz: Disable Key Visualizer Feature - close_keyviz_warning: Are you sure want to disable this feature? Current visual reports will be cleared. - switch: Enable Feature - switch_tooltip: Whether Key Visualizer feature is enabled. When enabled, there will be small overhead. - policy: Policy - policy_db: '{{distro.tidb}}' - policy_kv: Raw KV - separator: Separator - separator_placeholder: The separator used to split Key - separator_empty_warning: If left blank, Key will not be split - actions: - save: Save - close: Disable - cancel: Cancel diff --git a/ui-ori/lib/apps/KeyViz/translations/zh.yaml b/ui-ori/lib/apps/KeyViz/translations/zh.yaml deleted file mode 100644 index 336dd6eb12..0000000000 --- a/ui-ori/lib/apps/KeyViz/translations/zh.yaml +++ /dev/null @@ -1,39 +0,0 @@ -keyviz: - nav_title: 流量可视化 - toolbar: - brightness: 调整亮度 - zoom: - select: 框选 - reset: 重置 - refresh: 刷新 - auto_refresh: - title: 自动刷新 - off: 关闭 - view_type: - read_bytes: 读取字节量 - write_bytes: 写入字节量 - read_keys: 读取次数 - write_keys: 写入次数 - all: 所有 - settings: - title: 设置 - disabled_result: - title: 该功能未启用 - sub_title: | - 流量可视化功能未启用,因此无法查看可视化报告。 - 您可以修改设置打开该功能后等待新数据收集。 - open_setting: 打开设置 - close_keyviz: 关闭流量可视化功能 - close_keyviz_warning: 确认要关闭该功能吗?关闭后现有历史记录也将被清空! - switch: 启用功能 - switch_tooltip: 是否启用流量可视化功能,关闭后将不能使用流量可视化功能,但能减少一些 {{distro.pd}} 的 CPU 资源开销。 - policy: 模式 - policy_db: '{{distro.tidb}}' - policy_kv: 原生 KV - separator: 分隔符 - separator_placeholder: 用于切分 Key 的分隔符 - separator_empty_warning: 分隔符为空串时,Key 将不会被切分 - actions: - save: 保存 - close: 确认 - cancel: 取消 diff --git a/ui-ori/lib/apps/KeyViz/utils/api.ts b/ui-ori/lib/apps/KeyViz/utils/api.ts deleted file mode 100644 index 7f3ae4f978..0000000000 --- a/ui-ori/lib/apps/KeyViz/utils/api.ts +++ /dev/null @@ -1,31 +0,0 @@ -import client from '@lib/client' -import { HeatmapData, HeatmapRange, DataTag } from '../heatmap/types' - -export async function fetchHeatmap( - selection?: HeatmapRange, - type: DataTag = 'written_bytes' -): Promise { - const resp = await client - .getInstance() - .keyvisualHeatmapsGet( - selection?.startkey, - selection?.endkey, - selection?.starttime, - selection?.endtime, - type - ) - reverse(resp.data) - return resp.data -} - -// Reverse the columns (key axis) of the matrix -// so that the direction of the axis matches the first quadrant -function reverse(data: HeatmapData) { - data.keyAxis.reverse() - for (const tag in data.data) { - const d = data.data[tag] - for (let col of d) { - col.reverse() - } - } -} diff --git a/ui-ori/lib/apps/KeyViz/utils/index.ts b/ui-ori/lib/apps/KeyViz/utils/index.ts deleted file mode 100644 index 3318fdbc97..0000000000 --- a/ui-ori/lib/apps/KeyViz/utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './api' diff --git a/ui-ori/lib/apps/Overview/components/Instances.tsx b/ui-ori/lib/apps/Overview/components/Instances.tsx deleted file mode 100644 index 8748b396af..0000000000 --- a/ui-ori/lib/apps/Overview/components/Instances.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import { Link } from 'react-router-dom' -import React, { useMemo } from 'react' -import { Card, AnimatedSkeleton, Descriptions } from '@lib/components' -import { useTranslation } from 'react-i18next' -import { useClientRequest } from '@lib/utils/useClientRequest' -import client from '@lib/client' -import { Typography, Row, Col, Space } from 'antd' -import { - STATUS_OFFLINE, - STATUS_TOMBSTONE, - STATUS_UP, -} from '@lib/apps/ClusterInfo/status/status' -import { RightOutlined, WarningOutlined } from '@ant-design/icons' -import { Stack } from 'office-ui-fabric-react/lib/Stack' - -import styles from './Styles.module.less' - -function ComponentItem(props: { - name: string - resp: { data?: { status?: number }[]; isLoading: boolean; error?: any } -}) { - const { name, resp } = props - const [upNums, allNums] = useMemo(() => { - if (!resp.data) { - return [0, 0] - } - let up = 0 - let all = 0 - for (const instance of resp.data) { - all++ - if ( - instance.status === STATUS_UP || - instance.status === STATUS_TOMBSTONE || - instance.status === STATUS_OFFLINE - ) { - up++ - } - } - return [up, all] - }, [resp]) - - return ( - - {!resp.error && ( - - - - {upNums} - / {allNums} - - - - )} - {resp.error && ( - - - Error - - - )} - - ) -} - -export default function Nodes() { - const { t } = useTranslation() - const tidbResp = useClientRequest((reqConfig) => - client.getInstance().getTiDBTopology(reqConfig) - ) - const storeResp = useClientRequest((reqConfig) => - client.getInstance().getStoreTopology(reqConfig) - ) - const tiKVResp = { - ...storeResp, - data: storeResp.data?.tikv, - } - const tiFlashResp = { - ...storeResp, - data: storeResp.data?.tiflash, - } - const pdResp = useClientRequest((reqConfig) => - client.getInstance().getPDTopology(reqConfig) - ) - - return ( - - {t('overview.instances.title')} - - - } - noMarginLeft - > - - - - - - - - - - - - - - - - - - - - ) -} diff --git a/ui-ori/lib/apps/Overview/components/MonitorAlert.tsx b/ui-ori/lib/apps/Overview/components/MonitorAlert.tsx deleted file mode 100644 index fdb6160d91..0000000000 --- a/ui-ori/lib/apps/Overview/components/MonitorAlert.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { RightOutlined, WarningOutlined } from '@ant-design/icons' -import { Card, AnimatedSkeleton } from '@lib/components' -import client from '@lib/client' -import { Link } from 'react-router-dom' -import { useTranslation } from 'react-i18next' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { Space, Typography } from 'antd' -import { Stack } from 'office-ui-fabric-react/lib/Stack' - -export default function MonitorAlert() { - const { t } = useTranslation() - const [alertCounter, setAlertCounter] = useState(0) - - const { data: amData, isLoading: amIsLoading } = useClientRequest( - (reqConfig) => client.getInstance().getAlertManagerTopology(reqConfig) - ) - const { data: grafanaData, isLoading: grafanaIsLoading } = useClientRequest( - (reqConfig) => client.getInstance().getGrafanaTopology(reqConfig) - ) - - useEffect(() => { - if (!amData) { - return - } - async function fetch() { - let resp = await client - .getInstance() - .getAlertManagerCounts(`${amData!.ip}:${amData!.port}`) - setAlertCounter(resp.data) - } - fetch() - }, [amData]) - - return ( - - - - {!grafanaData && ( - - - - {t('overview.monitor_alert.view_monitor_warn')} - - - )} - {grafanaData && ( - - - {t('overview.monitor_alert.view_monitor')} - - - - )} - - - {!amData && ( - - - - {t('overview.monitor_alert.view_alerts_warn')} - - - )} - {amData && ( - - - 0 ? 'danger' : undefined}> - {alertCounter === 0 - ? t('overview.monitor_alert.view_zero_alerts') - : t('overview.monitor_alert.view_alerts', { - alertCount: alertCounter, - })} - - - - - )} - -
    - - - {t('overview.monitor_alert.run_diagnose')} - - - -
    -
    -
    - ) -} diff --git a/ui-ori/lib/apps/Overview/components/RecentSlowQueries.tsx b/ui-ori/lib/apps/Overview/components/RecentSlowQueries.tsx deleted file mode 100644 index 03306b5d42..0000000000 --- a/ui-ori/lib/apps/Overview/components/RecentSlowQueries.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { RightOutlined } from '@ant-design/icons' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' - -import { DateTime } from '@lib/components' -import { - SlowQueriesTable, - useSlowQueryTableController, - DEF_SLOW_QUERY_COLUMN_KEYS, - DEF_SLOW_QUERY_OPTIONS, -} from '@lib/apps/SlowQuery' - -export default function RecentSlowQueries() { - const { t } = useTranslation() - const controller = useSlowQueryTableController( - null, - DEF_SLOW_QUERY_COLUMN_KEYS, - false, - { ...DEF_SLOW_QUERY_OPTIONS, limit: 10 }, - false - ) - const { - queryTimeRange: { beginTime, endTime }, - } = controller - - return ( - - {t('overview.recent_slow_query.title')} - - } - subTitle={ - - ~{' '} - - - } - /> - ) -} diff --git a/ui-ori/lib/apps/Overview/components/RecentStatements.tsx b/ui-ori/lib/apps/Overview/components/RecentStatements.tsx deleted file mode 100644 index a39fd7cf5a..0000000000 --- a/ui-ori/lib/apps/Overview/components/RecentStatements.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { RightOutlined } from '@ant-design/icons' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' - -import { - StatementsTable, - useStatementTableController, -} from '@lib/apps/Statement' -import { DateTime, IColumnKeys } from '@lib/components' - -const visibleColumnKeys: IColumnKeys = { - digest_text: true, - sum_latency: true, - avg_latency: true, - related_schemas: true, -} - -export default function RecentStatements() { - const { t } = useTranslation() - const controller = useStatementTableController( - null, - visibleColumnKeys, - false, - undefined, - false - ) - const { - allTimeRanges, - statementsTimeRange: { begin_time, end_time }, - } = controller - - return ( - - {t('overview.top_statements.title')} - - } - subTitle={ - allTimeRanges.length > 0 && ( - - ~{' '} - - - ) - } - /> - ) -} diff --git a/ui-ori/lib/apps/Overview/components/Styles.module.less b/ui-ori/lib/apps/Overview/components/Styles.module.less deleted file mode 100644 index e15e1ad25c..0000000000 --- a/ui-ori/lib/apps/Overview/components/Styles.module.less +++ /dev/null @@ -1,3 +0,0 @@ -.big { - font-size: larger; -} diff --git a/ui-ori/lib/apps/Overview/index.meta.ts b/ui-ori/lib/apps/Overview/index.meta.ts deleted file mode 100644 index 71487f1da9..0000000000 --- a/ui-ori/lib/apps/Overview/index.meta.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { AppstoreOutlined } from '@ant-design/icons' - -export default { - id: 'overview', - routerPrefix: '/overview', - icon: AppstoreOutlined, - isDefaultRouter: true, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_overview" */ '.'), -} diff --git a/ui-ori/lib/apps/Overview/index.tsx b/ui-ori/lib/apps/Overview/index.tsx deleted file mode 100644 index 4da266f0fa..0000000000 --- a/ui-ori/lib/apps/Overview/index.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { Col, Row } from 'antd' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { HashRouter as Router } from 'react-router-dom' - -import { MetricChart, Root } from '@lib/components' - -import MonitorAlert from './components/MonitorAlert' -import Instances from './components/Instances' -import RecentStatements from './components/RecentStatements' -import RecentSlowQueries from './components/RecentSlowQueries' - -function QPS() { - const { t } = useTranslation() - - return ( - - ) -} - -function Latency() { - const { t } = useTranslation() - - return ( - - ) -} - -export default function App() { - return ( - - - - - - - - - - - - - - - - - ) -} diff --git a/ui-ori/lib/apps/Overview/translations/en.yaml b/ui-ori/lib/apps/Overview/translations/en.yaml deleted file mode 100644 index e94469c516..0000000000 --- a/ui-ori/lib/apps/Overview/translations/en.yaml +++ /dev/null @@ -1,19 +0,0 @@ -overview: - nav_title: Overview - top_statements: - title: Top SQL Statements - recent_slow_query: - title: Recent Slow Queries - instances: - title: Alive Instances - monitor_alert: - title: Monitor & Alert - view_monitor: View Metrics - view_monitor_warn: Metrics unavailable - view_alerts: 'View {{alertCount}} Alerts' - view_zero_alerts: 'View Alerts' - view_alerts_warn: Alert unavailable - run_diagnose: Run Diagnostics - metrics: - total_requests: QPS - latency: Latency diff --git a/ui-ori/lib/apps/Overview/translations/zh.yaml b/ui-ori/lib/apps/Overview/translations/zh.yaml deleted file mode 100644 index 0a6574d777..0000000000 --- a/ui-ori/lib/apps/Overview/translations/zh.yaml +++ /dev/null @@ -1,19 +0,0 @@ -overview: - nav_title: 概况 - top_statements: - title: Top SQL 语句 - recent_slow_query: - title: 最近慢查询 - instances: - title: 在线实例 - monitor_alert: - title: 监控和告警 - view_monitor: 查看监控 - view_monitor_warn: 监控不可用 - view_alerts: '查看 {{alertCount}} 条告警' - view_zero_alerts: 查看告警 - view_alerts_warn: 告警不可用 - run_diagnose: 运行诊断 - metrics: - total_requests: QPS - latency: 延迟 diff --git a/ui-ori/lib/apps/QueryEditor/Editor.module.less b/ui-ori/lib/apps/QueryEditor/Editor.module.less deleted file mode 100644 index b8562272d2..0000000000 --- a/ui-ori/lib/apps/QueryEditor/Editor.module.less +++ /dev/null @@ -1,10 +0,0 @@ -.editorContainer { - flex-grow: 1; - position: relative; - overflow: hidden; - - :global(.ace_editor) { - position: absolute; - z-index: 1; - } -} diff --git a/ui-ori/lib/apps/QueryEditor/Editor.tsx b/ui-ori/lib/apps/QueryEditor/Editor.tsx deleted file mode 100644 index 20256cd99d..0000000000 --- a/ui-ori/lib/apps/QueryEditor/Editor.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, { useRef } from 'react' -import AceEditor, { IAceEditorProps } from 'react-ace' -import { useSize } from 'ahooks' - -import 'ace-builds/src-noconflict/mode-sql' -import 'ace-builds/src-noconflict/ext-searchbox' -import './editorThemes/oneHalfDark' -import './editorThemes/oneHalfLight' - -import styles from './Editor.module.less' - -interface IEditorProps extends IAceEditorProps {} - -function Editor({ ...props }: IEditorProps, ref: React.Ref) { - const containerRef = useRef(null) - const containerSize = useSize(containerRef) - return ( -
    - -
    - ) -} - -export default React.memo(React.forwardRef(Editor)) diff --git a/ui-ori/lib/apps/QueryEditor/ResultTable.module.less b/ui-ori/lib/apps/QueryEditor/ResultTable.module.less deleted file mode 100644 index 439608c0a7..0000000000 --- a/ui-ori/lib/apps/QueryEditor/ResultTable.module.less +++ /dev/null @@ -1,7 +0,0 @@ -.resultTable { - position: absolute; - top: @padding-page; // FIXME: This is hacky. Can we provide a component? - bottom: 0; - left: 0; - width: 100%; -} diff --git a/ui-ori/lib/apps/QueryEditor/ResultTable.tsx b/ui-ori/lib/apps/QueryEditor/ResultTable.tsx deleted file mode 100644 index f668ab4b84..0000000000 --- a/ui-ori/lib/apps/QueryEditor/ResultTable.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React, { useMemo } from 'react' -import { QueryeditorRunResponse } from '@lib/client' -import { CardTable } from '@lib/components' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' - -import styles from './ResultTable.module.less' - -interface IResultTableProps { - results?: QueryeditorRunResponse -} - -function ResultTable({ results }: IResultTableProps) { - const columns: IColumn[] = useMemo(() => { - if (!results) { - return [] - } - if (results.error_msg) { - return [ - { - name: 'Error', - key: 'error', - minWidth: 100, - fieldName: 'error', - isMultiline: true, - }, - ] - } else { - return (results.column_names ?? []).map((cn, idx) => ({ - name: cn, - key: cn, - minWidth: 200, - maxWidth: 500, - fieldName: String(idx), - })) - } - }, [results]) - - const items = useMemo(() => { - if (!results) { - return [] - } - if (results.error_msg) { - return [{ error: results.error_msg }] - } else { - return results.rows ?? [] - } - }, [results]) - - return ( -
    - - - -
    - ) -} - -export default ResultTable diff --git a/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfDark.js b/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfDark.js deleted file mode 100644 index fd9d1022a5..0000000000 --- a/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfDark.js +++ /dev/null @@ -1,118 +0,0 @@ -/* eslint-disable no-multi-str */ - -const ace = require('ace-builds/src-noconflict/ace') - -ace.define( - 'ace/theme/oneHalfDark', - ['require', 'exports', 'module', 'ace/lib/dom'], - function (require, exports, module) { - exports.isDark = true - exports.cssClass = 'ace-one-half-dark' - exports.cssText = - '.ace-one-half-dark .ace_gutter {\ -background: #282c34;\ -color: rgb(130,134,140)\ -}\ -.ace-one-half-dark .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-one-half-dark {\ -background-color: #282c34;\ -color: #dcdfe4\ -}\ -.ace-one-half-dark .ace_cursor {\ -color: #a3b3cc\ -}\ -.ace-one-half-dark .ace_marker-layer .ace_selection {\ -background: #474e5d\ -}\ -.ace-one-half-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #282c34;\ -border-radius: 2px\ -}\ -.ace-one-half-dark .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-one-half-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #5c6370\ -}\ -.ace-one-half-dark .ace_marker-layer .ace_active-line {\ -background: #313640\ -}\ -.ace-one-half-dark .ace_gutter-active-line {\ -background-color: #313640\ -}\ -.ace-one-half-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid #474e5d\ -}\ -.ace-one-half-dark .ace_fold {\ -background-color: #61afef;\ -border-color: #dcdfe4\ -}\ -.ace-one-half-dark .ace_keyword {\ -color: #c678dd\ -}\ -.ace-one-half-dark .ace_constant {\ -color: #e5c07b\ -}\ -.ace-one-half-dark .ace_constant.ace_numeric {\ -color: #e5c07b\ -}\ -.ace-one-half-dark .ace_constant.ace_character.ace_escape {\ -color: #56b6c2\ -}\ -.ace-one-half-dark .ace_support.ace_function {\ -color: #61afef\ -}\ -.ace-one-half-dark .ace_support.ace_class {\ -color: #e5c07b\ -}\ -.ace-one-half-dark .ace_storage {\ -color: #c678dd\ -}\ -.ace-one-half-dark .ace_invalid.ace_illegal {\ -color: #dcdfe4;\ -background-color: #e06c75\ -}\ -.ace-one-half-dark .ace_invalid.ace_deprecated {\ -color: #dcdfe4;\ -background-color: #e5c07b\ -}\ -.ace-one-half-dark .ace_string {\ -color: #98c379\ -}\ -.ace-one-half-dark .ace_string.ace_regexp {\ -color: #98c379\ -}\ -.ace-one-half-dark .ace_comment {\ -color: #5c6370\ -}\ -.ace-one-half-dark .ace_variable {\ -color: #e06c75\ -}\ -.ace-one-half-dark .ace_meta.ace_selector {\ -color: #c678dd\ -}\ -.ace-one-half-dark .ace_entity.ace_other.ace_attribute-name {\ -color: #e5c07b\ -}\ -.ace-one-half-dark .ace_entity.ace_name.ace_function {\ -color: #61afef\ -}\ -.ace-one-half-dark .ace_entity.ace_name.ace_tag {\ -color: #e06c75\ -}' - - var dom = require('../lib/dom') - dom.importCssString(exports.cssText, exports.cssClass) - } -) -;(function () { - ace.require(['ace/theme/oneHalfDark'], function (m) { - if (typeof module == 'object' && typeof exports == 'object' && module) { - module.exports = m - } - }) -})() diff --git a/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfLight.js b/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfLight.js deleted file mode 100644 index 3e831e2c0c..0000000000 --- a/ui-ori/lib/apps/QueryEditor/editorThemes/oneHalfLight.js +++ /dev/null @@ -1,102 +0,0 @@ -/* eslint-disable no-multi-str */ - -const ace = require('ace-builds/src-noconflict/ace') - -ace.define( - 'ace/theme/oneHalfLight', - ['require', 'exports', 'module', 'ace/lib/dom'], - function (require, exports, module) { - exports.isDark = false - exports.cssClass = 'ace-one-half-light' - exports.cssText = - '.ace-one-half-light .ace_gutter {\ -background: #fafafa;\ -color: rgb(153,154,158)\ -}\ -.ace-one-half-light .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-one-half-light {\ -background-color: #fafafa;\ -color: #383a42\ -}\ -.ace-one-half-light .ace_cursor {\ -color: #383a42\ -}\ -.ace-one-half-light .ace_marker-layer .ace_selection {\ -background: #bfceff\ -}\ -.ace-one-half-light.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #fafafa;\ -border-radius: 2px\ -}\ -.ace-one-half-light .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-one-half-light .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #a0a1a7\ -}\ -.ace-one-half-light .ace_marker-layer .ace_active-line {\ -background: #f0f0f0\ -}\ -.ace-one-half-light .ace_gutter-active-line {\ -background-color: #f0f0f0\ -}\ -.ace-one-half-light .ace_marker-layer .ace_selected-word {\ -border: 1px solid #bfceff\ -}\ -.ace-one-half-light .ace_fold {\ -background-color: #0184bc;\ -border-color: #383a42\ -}\ -.ace-one-half-light .ace_keyword,\ -.ace-one-half-light .ace_meta.ace_selector,\ -.ace-one-half-light .ace_storage {\ -color: #a626a4\ -}\ -.ace-one-half-light .ace_constant,\ -.ace-one-half-light .ace_constant.ace_numeric,\ -.ace-one-half-light .ace_entity.ace_other.ace_attribute-name,\ -.ace-one-half-light .ace_support.ace_class {\ -color: #c18401\ -}\ -.ace-one-half-light .ace_constant.ace_character.ace_escape {\ -color: #0997b3\ -}\ -.ace-one-half-light .ace_entity.ace_name.ace_function,\ -.ace-one-half-light .ace_support.ace_function {\ -color: #0184bc\ -}\ -.ace-one-half-light .ace_invalid.ace_illegal {\ -color: #fafafa;\ -background-color: #e06c75\ -}\ -.ace-one-half-light .ace_invalid.ace_deprecated {\ -color: #fafafa;\ -background-color: #e5c07b\ -}\ -.ace-one-half-light .ace_string,\ -.ace-one-half-light .ace_string.ace_regexp {\ -color: #50a14f\ -}\ -.ace-one-half-light .ace_comment {\ -color: #a0a1a7\ -}\ -.ace-one-half-light .ace_entity.ace_name.ace_tag,\ -.ace-one-half-light .ace_variable {\ -color: #e45649\ -}' - - var dom = require('../lib/dom') - dom.importCssString(exports.cssText, exports.cssClass) - } -) -;(function () { - ace.require(['ace/theme/oneHalfLight'], function (m) { - if (typeof module == 'object' && typeof exports == 'object' && module) { - module.exports = m - } - }) -})() diff --git a/ui-ori/lib/apps/QueryEditor/index.meta.ts b/ui-ori/lib/apps/QueryEditor/index.meta.ts deleted file mode 100644 index 39f0b8443f..0000000000 --- a/ui-ori/lib/apps/QueryEditor/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ConsoleSqlOutlined } from '@ant-design/icons' - -export default { - id: 'query_editor', - routerPrefix: '/query_editor', - icon: ConsoleSqlOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "query_editor" */ '.'), -} diff --git a/ui-ori/lib/apps/QueryEditor/index.module.less b/ui-ori/lib/apps/QueryEditor/index.module.less deleted file mode 100644 index c7049c7dda..0000000000 --- a/ui-ori/lib/apps/QueryEditor/index.module.less +++ /dev/null @@ -1,40 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.container { - height: 100vh; - display: flex; - flex-direction: column; - - &:before, - &:after { - // Handle margin collapse - content: ' '; - display: table; - } -} - -.contentContainer { - flex: 1; - min-height: 0; - - > :global(.gutter.gutter-vertical) { - background-color: @gray-3; - cursor: row-resize; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII='); - background-repeat: no-repeat; - background-position: center center; - margin: 0 @padding-page; - } - - &.isCollapsed > :global(.gutter) { - display: none; - } -} - -.successText { - color: @success-color; -} - -.resultTableContainer { - position: relative; -} diff --git a/ui-ori/lib/apps/QueryEditor/index.tsx b/ui-ori/lib/apps/QueryEditor/index.tsx deleted file mode 100644 index 650550e4f1..0000000000 --- a/ui-ori/lib/apps/QueryEditor/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import React, { useState, useCallback, useRef } from 'react' -import cx from 'classnames' -import { Root, Card } from '@lib/components' -import Split from 'react-split' -import { Button, Space, Typography } from 'antd' -import { - CaretRightOutlined, - LoadingOutlined, - WarningOutlined, - CheckOutlined, -} from '@ant-design/icons' - -import Editor from './Editor' -import ResultTable from './ResultTable' - -import styles from './index.module.less' -import client, { QueryeditorRunResponse } from '@lib/client' -import ReactAce from 'react-ace/lib/ace' -import { getValueFormat } from '@baurine/grafana-value-formats' - -const MAX_DISPLAY_ROWS = 1000 - -function App() { - const [results, setResults] = useState() - const [isRunning, setRunning] = useState(false) - const editor = useRef(null) - - const isResultsEmpty = - !results || - (!results.error_msg && (!results.column_names?.length || !results.rows)) - - const handleRun = useCallback(async () => { - try { - setRunning(true) - setResults(undefined) - const resp = await client.getInstance().queryEditorRun({ - max_rows: MAX_DISPLAY_ROWS, - statements: editor.current?.editor.getValue(), - }) - setResults(resp.data) - } finally { - setRunning(false) - } - editor.current?.editor.focus() - }, []) - - return ( - -
    - - - - { - - {isRunning && } - {results && results.error_msg && ( - - Error ( - {getValueFormat('ms')(results.execution_ms || 0, 1)}) - - )} - {results && !results.error_msg && ( - - Success ( - {getValueFormat('ms')(results.execution_ms || 0, 1)}, - {(results.actual_rows || 0) > (results.rows?.length || 0) - ? `Displaying first ${results.rows?.length || 0} of ${ - results.actual_rows || 0 - } rows` - : `${results.rows?.length || 0} rows`} - ) - - )} - - } - - - - - - -
    - {!isResultsEmpty && } -
    -
    -
    -
    - ) -} - -export default App diff --git a/ui-ori/lib/apps/QueryEditor/translations/en.yaml b/ui-ori/lib/apps/QueryEditor/translations/en.yaml deleted file mode 100644 index f812e9e708..0000000000 --- a/ui-ori/lib/apps/QueryEditor/translations/en.yaml +++ /dev/null @@ -1,2 +0,0 @@ -query_editor: - nav_title: Query Editor diff --git a/ui-ori/lib/apps/QueryEditor/translations/zh.yaml b/ui-ori/lib/apps/QueryEditor/translations/zh.yaml deleted file mode 100644 index bfe81914c0..0000000000 --- a/ui-ori/lib/apps/QueryEditor/translations/zh.yaml +++ /dev/null @@ -1,2 +0,0 @@ -query_editor: - nav_title: 查询编辑器 diff --git a/ui-ori/lib/apps/SearchLogs/components/Icon.tsx b/ui-ori/lib/apps/SearchLogs/components/Icon.tsx deleted file mode 100644 index 2c5c59daa1..0000000000 --- a/ui-ori/lib/apps/SearchLogs/components/Icon.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { - CheckCircleTwoTone, - InfoCircleTwoTone, - LoadingOutlined, -} from '@ant-design/icons' -import React from 'react' - -export function LoadingIcon() { - return -} - -export function SuccessIcon() { - return -} - -export function FailIcon() { - return -} diff --git a/ui-ori/lib/apps/SearchLogs/components/Log.tsx b/ui-ori/lib/apps/SearchLogs/components/Log.tsx deleted file mode 100644 index 6e0ff67eec..0000000000 --- a/ui-ori/lib/apps/SearchLogs/components/Log.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React, { useCallback } from 'react' -import TextHighlighter from 'react-highlight-words' -import { TextWrap, Pre } from '@lib/components' - -import styles from './Styles.module.less' - -interface LogProps { - patterns: string[] - expanded: boolean - log: string -} - -export default function Log({ patterns, log, expanded }: LogProps) { - const handleClick = useCallback((ev: React.MouseEvent) => { - ev.stopPropagation() - }, []) - return ( - -
    -         new RegExp(p, 'gi'))}
    -          textToHighlight={log}
    -        />
    -      
    -
    - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/components/SearchHeader.tsx b/ui-ori/lib/apps/SearchLogs/components/SearchHeader.tsx deleted file mode 100644 index 6e525d40da..0000000000 --- a/ui-ori/lib/apps/SearchLogs/components/SearchHeader.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import client from '@lib/client' -import { - LogsearchCreateTaskGroupRequest, - ModelRequestTargetNode, -} from '@lib/client' -import { Button, Form, Input, Select, Modal } from 'antd' -import React, { useState, useCallback, useRef } from 'react' -import { useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' -import { useMount } from 'ahooks' -import { - TimeRangeSelector, - TimeRange, - calcTimeRange, - InstanceSelect, - IInstanceSelectRefProps, -} from '@lib/components' - -import { ValidLogLevels, LogLevelText } from '../utils' - -interface Props { - taskGroupID?: number -} - -interface IFormProps { - timeRange?: TimeRange - logLevel?: number - instances?: string[] - keywords?: string -} - -export default function SearchHeader({ taskGroupID }: Props) { - const { t } = useTranslation() - const navigate = useNavigate() - const [form] = Form.useForm() - const [isSubmitting, setSubmitting] = useState(false) - const instanceSelect = useRef(null) - - useMount(() => { - async function fetchData() { - if (!taskGroupID) { - return - } - const res = await client - .getInstance() - .logsTaskgroupsIdGet(String(taskGroupID)) - const { task_group, tasks } = res.data - const { start_time, end_time, min_level, patterns } = - task_group?.search_request ?? {} - const fieldsValue: IFormProps = { - timeRange: { - type: 'absolute', - value: [start_time! / 1000, end_time! / 1000], - }, - logLevel: min_level || 2, - instances: (tasks ?? []) - .filter((t) => t.target && t.target!.display_name) - .map((t) => t.target!.display_name!), - keywords: (patterns ?? []).join(' '), - } - form.setFieldsValue(fieldsValue) - } - fetchData() - }) - - const handleSearch = useCallback( - async (fieldsValue: IFormProps) => { - if ( - !fieldsValue.instances || - fieldsValue.instances.length === 0 || - !fieldsValue.logLevel || - !fieldsValue.timeRange - ) { - Modal.error({ - content: 'Some required fields are not filled', - }) - return - } - if (!instanceSelect.current) { - Modal.error({ - content: 'Internal error: Instance select is not ready', - }) - return - } - - const targets: ModelRequestTargetNode[] = instanceSelect - .current!.getInstanceByKeys(fieldsValue.instances) - .map((instance) => { - let port - switch (instance.instanceKind) { - case 'pd': - case 'tikv': - case 'tiflash': - port = instance.port - break - case 'tidb': - port = instance.status_port - break - } - return { - kind: instance.instanceKind, - display_name: instance.key, - ip: instance.ip, - port, - } - }) - .filter((i) => i.port != null) - - const [startTime, endTime] = calcTimeRange(fieldsValue.timeRange) - - const req: LogsearchCreateTaskGroupRequest = { - targets, - request: { - start_time: startTime * 1000, // unix millionsecond - end_time: endTime * 1000, // unix millionsecond - min_level: fieldsValue.logLevel, - patterns: (fieldsValue.keywords ?? '').split(/\s+/), // 'foo boo' => ['foo', 'boo'] - }, - } - - try { - setSubmitting(true) - const result = await client.getInstance().logsTaskgroupPut(req) - const id = result?.data?.task_group?.id - if (id) { - navigate(`/search_logs/detail?id=${id}`) - } - } finally { - setSubmitting(false) - } - }, - [navigate] - ) - - return ( -
    - - - - - - - - - - - - - - - -
    - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/components/SearchProgress.tsx b/ui-ori/lib/apps/SearchLogs/components/SearchProgress.tsx deleted file mode 100644 index 4626eca1d4..0000000000 --- a/ui-ori/lib/apps/SearchLogs/components/SearchProgress.tsx +++ /dev/null @@ -1,242 +0,0 @@ -import { Button, Modal, Tree } from 'antd' -import _ from 'lodash' -import React, { useEffect, useState, useMemo, useCallback } from 'react' -import { useTranslation } from 'react-i18next' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import client, { LogsearchTaskModel } from '@lib/client' -import { AnimatedSkeleton, Card } from '@lib/components' -import { FailIcon, LoadingIcon, SuccessIcon } from './Icon' -import { TaskState } from '../utils' - -import styles from './Styles.module.less' -import { InstanceKindName, InstanceKinds } from '@lib/utils/instanceTable' - -const { confirm } = Modal -const taskStateIcons = { - [TaskState.Running]: LoadingIcon, - [TaskState.Finished]: SuccessIcon, - [TaskState.Error]: FailIcon, -} - -function getLeafNodes(tasks: LogsearchTaskModel[]) { - return tasks.map((task) => { - const title = ( - - {task.target?.display_name ?? ''}{' '} - ({getValueFormat('bytes')(task.size!, 1)}) - - ) - return { - key: String(task.id), - title, - icon: taskStateIcons[task.state || TaskState.Error], - disableCheckbox: !task.size || task.state !== TaskState.Finished, - } - }) -} - -function parentNodeIcon(tasks: LogsearchTaskModel[]) { - // Running: has at least one task running - if (tasks.some((task) => task.state === TaskState.Running)) { - return LoadingIcon - } - // Finished: all tasks are finished - if (!tasks.some((task) => task.state !== TaskState.Finished)) { - return SuccessIcon - } - // Failed: no task is running, and has failed task - return FailIcon -} - -function parentNodeCheckable(tasks: LogsearchTaskModel[]) { - // Checkable: at least one task has finished and the log must not be empty - return ( - tasks.some((task) => task.state === TaskState.Finished) && - tasks.reduce((acc, task) => (acc += task.size || 0), 0) > 0 - ) -} - -interface Props { - taskGroupID: number - tasks: LogsearchTaskModel[] - toggleReload: () => void -} - -export default function SearchProgress({ - taskGroupID, - tasks, - toggleReload, -}: Props) { - const [checkedKeys, setCheckedKeys] = useState([]) - const [isLoading, setIsLoading] = useState(true) - - const { t } = useTranslation() - - useEffect(() => { - if (tasks !== undefined && tasks.length > 0) { - setIsLoading(false) - } - }, [tasks]) - - const descriptionArray = useMemo( - () => [ - t('search_logs.progress.running'), - t('search_logs.progress.success'), - t('search_logs.progress.failed'), - ], - [t] - ) - - const describeProgress = useCallback( - (tasks: LogsearchTaskModel[]) => { - const arr = [0, 0, 0] - tasks.forEach((task) => { - const state = task.state - if (state !== undefined) { - arr[state - 1]++ - } - }) - const res: string[] = [] - arr.forEach((count, index) => { - if (index < 1 || count <= 0) { - return - } - const str = `${count} ${descriptionArray[index]}` - res.push(str) - }) - return ( - res.join(', ') + - ' (' + - getValueFormat('bytes')(_.sumBy(tasks, 'size'), 1) + - ')' - ) - }, - [descriptionArray] - ) - - const treeData = useMemo(() => { - const data: any[] = [] - const tasksByIK = _.groupBy(tasks, (t) => t.target?.kind) - InstanceKinds.forEach((ik) => { - const tasks = tasksByIK[ik] - if (!tasks) { - return - } - const title = ( - - {InstanceKindName[ik]} {describeProgress(tasks)} - - ) - data.push({ - title, - key: ik, - icon: parentNodeIcon(tasks), - disableCheckbox: !parentNodeCheckable(tasks), - children: getLeafNodes(tasks), - }) - }) - return data - }, [tasks, describeProgress]) - - async function handleDownload() { - if (taskGroupID < 0) { - return - } - // filter out all parent node - const keys = checkedKeys.filter( - (key) => !InstanceKinds.some((ik) => ik === key) - ) - - const res = await client.getInstance().logsDownloadAcquireTokenGet(keys) - const token = res.data - if (!token) { - return - } - const url = `${client.getBasePath()}/logs/download?token=${token}` - window.location.href = url - } - - async function handleCancel() { - if (taskGroupID < 0) { - return - } - confirm({ - title: t('search_logs.confirm.cancel_tasks'), - onOk() { - client.getInstance().logsTaskgroupsIdCancelPost(taskGroupID + '') - toggleReload() - }, - }) - } - - async function handleRetry() { - if (taskGroupID < 0) { - return - } - confirm({ - title: t('search_logs.confirm.retry_tasks'), - onOk() { - client.getInstance().logsTaskgroupsIdRetryPost(taskGroupID + '') - toggleReload() - }, - }) - } - - const handleCheck = useCallback((checkedKeys) => { - setCheckedKeys(checkedKeys as string[]) - }, []) - - return ( - - - {tasks && ( - <> -
    {describeProgress(tasks)}
    -
    - - - -
    - - - )} -
    -
    - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/components/SearchResult.tsx b/ui-ori/lib/apps/SearchLogs/components/SearchResult.tsx deleted file mode 100644 index df5e10898c..0000000000 --- a/ui-ori/lib/apps/SearchLogs/components/SearchResult.tsx +++ /dev/null @@ -1,157 +0,0 @@ -import client from '@lib/client' -import { ModelRequestTargetNode, LogsearchTaskModel } from '@lib/client' -import { CardTable, Card, TextWrap } from '@lib/components' -import { Alert, Tooltip } from 'antd' -import React, { useEffect, useState, useMemo, useCallback } from 'react' -import { useTranslation } from 'react-i18next' -import { InstanceKindName } from '@lib/utils/instanceTable' -import dayjs from 'dayjs' - -import { LogLevelText } from '../utils' -import Log from './Log' - -import styles from './Styles.module.less' - -type LogPreview = { - key: number - time?: string - level?: string - component?: ModelRequestTargetNode | undefined - log?: string -} - -function componentRender({ component: target }) { - if (target === undefined) { - return '' - } - return ( - - {target.kind ? InstanceKindName[target.kind] : '?'}{' '} - - {target.display_name} - - - ) -} - -function Row({ renderer, props }) { - const [expanded, setExpanded] = useState(false) - const handleClick = useCallback(() => { - setExpanded((v) => !v) - }, []) - return ( -
    - {renderer({ ...props, item: { ...props.item, expanded } })} -
    - ) -} - -interface Props { - patterns: string[] - taskGroupID: number - tasks: LogsearchTaskModel[] -} - -export default function SearchResult({ patterns, taskGroupID, tasks }: Props) { - const [logPreviews, setData] = useState([]) - const { t } = useTranslation() - const [loading, setLoading] = useState(true) - - useEffect(() => { - function getComponent(id: number | undefined) { - return tasks.find((task) => { - return task.id !== undefined && task.id === id - })?.target - } - - async function getLogPreview() { - if (!taskGroupID) { - return - } - - try { - const res = await client - .getInstance() - .logsTaskgroupsIdPreviewGet(taskGroupID + '') - setData( - res.data.map((value, index): LogPreview => { - return { - key: index, - time: dayjs(value.time).format('YYYY-MM-DD HH:mm:ss (z)'), - level: LogLevelText[value.level ?? 0], - component: getComponent(value.task_id), - log: value.message, - } - }) - ) - } finally { - setLoading(false) - } - } - if (tasks.length > 0 && taskGroupID !== tasks[0].task_group_id) { - setLoading(true) - } - getLogPreview() - }, [taskGroupID, tasks]) - - const renderRow = useCallback((props, defaultRender) => { - if (!props) { - return null - } - return - }, []) - - const columns = useMemo( - () => [ - { - name: t('search_logs.preview.time'), - key: 'time', - fieldName: 'time', - minWidth: 120, - maxWidth: 180, - }, - { - name: t('search_logs.preview.level'), - key: 'level', - fieldName: 'level', - minWidth: 40, - maxWidth: 80, - }, - { - name: t('search_logs.preview.component'), - key: 'component', - minWidth: 40, - maxWidth: 120, - onRender: componentRender, - }, - { - name: t('search_logs.preview.log'), - key: 'log', - minWidth: 200, - onRender: ({ log, expanded }) => ( - - ), - }, - ], - [t, patterns] - ) - - return ( -
    - {!loading && ( - - - - )} - -
    - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/components/Styles.module.less b/ui-ori/lib/apps/SearchLogs/components/Styles.module.less deleted file mode 100644 index e8915a0c13..0000000000 --- a/ui-ori/lib/apps/SearchLogs/components/Styles.module.less +++ /dev/null @@ -1,25 +0,0 @@ -@import '~antd/lib/style/themes/default.less'; - -// FIXME: Use -.buttons { - margin-top: 12px; -} - -.buttons > :global(button) { - margin-right: 12px; - margin-bottom: 12px; -} - -.logText { - cursor: text; -} - -.logRow { - cursor: pointer; -} - -.highlight { - background: @gold-3; - margin: 0; - padding: 0; -} diff --git a/ui-ori/lib/apps/SearchLogs/components/index.ts b/ui-ori/lib/apps/SearchLogs/components/index.ts deleted file mode 100644 index 425c19471b..0000000000 --- a/ui-ori/lib/apps/SearchLogs/components/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import SearchHeader from './SearchHeader' -import SearchProgress from './SearchProgress' -import SearchResult from './SearchResult' - -export { SearchHeader, SearchProgress, SearchResult } diff --git a/ui-ori/lib/apps/SearchLogs/index.meta.ts b/ui-ori/lib/apps/SearchLogs/index.meta.ts deleted file mode 100644 index 15337190c8..0000000000 --- a/ui-ori/lib/apps/SearchLogs/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { FileSearchOutlined } from '@ant-design/icons' - -export default { - id: 'search_logs', - routerPrefix: '/search_logs', - icon: FileSearchOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_search_logs" */ '.'), -} diff --git a/ui-ori/lib/apps/SearchLogs/index.tsx b/ui-ori/lib/apps/SearchLogs/index.tsx deleted file mode 100644 index 3cbd0f72a8..0000000000 --- a/ui-ori/lib/apps/SearchLogs/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react' -import { Root, ParamsPageWrapper } from '@lib/components' -import { HashRouter as Router, Route, Routes } from 'react-router-dom' - -import { LogSearch, LogSearchHistory, LogSearchDetail } from './pages' - -export default function () { - return ( - - - - } /> - } /> - - - - } - /> - - - - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/pages/LogSearch.tsx b/ui-ori/lib/apps/SearchLogs/pages/LogSearch.tsx deleted file mode 100644 index 22f05a751a..0000000000 --- a/ui-ori/lib/apps/SearchLogs/pages/LogSearch.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Empty } from 'antd' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' - -import { Card } from '@lib/components' -import { SearchHeader } from '../components' - -export default function LogSearch() { - const { t } = useTranslation() - - return ( -
    - - - - - {t('search_logs.page.view')}{' '} - - {t('search_logs.page.search_histroy')} - - -
    - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/pages/LogSearchDetail.tsx b/ui-ori/lib/apps/SearchLogs/pages/LogSearchDetail.tsx deleted file mode 100644 index e32353eecd..0000000000 --- a/ui-ori/lib/apps/SearchLogs/pages/LogSearchDetail.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { Col, Row } from 'antd' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import React, { useMemo, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' -import { ArrowLeftOutlined } from '@ant-design/icons' - -import client from '@lib/client' -import { Head } from '@lib/components' -import { useClientRequestWithPolling } from '@lib/utils/useClientRequest' -import { SearchHeader, SearchProgress, SearchResult } from '../components' -import { TaskState } from '../utils' -import useQueryParams from '@lib/utils/useQueryParams' - -export default function LogSearchingDetail() { - const { t } = useTranslation() - const { id } = useQueryParams() - const [reloadKey, setReloadKey] = useState(false) - - function toggleReload() { - setReloadKey(!reloadKey) - } - - const taskGroupID = id === undefined ? 0 : +id - - function isFinished(data) { - if (taskGroupID < 0) { - return true - } - if (!data) { - return false - } - if (data.tasks.some((task) => task.state === TaskState.Running)) { - return false - } - return true - } - - const { data } = useClientRequestWithPolling( - (reqConfig) => client.getInstance().logsTaskgroupsIdGet(id, reqConfig), - { - shouldPoll: (data) => !isFinished(data), - } - ) - - const tasks = useMemo(() => data?.tasks ?? [], [data]) - - return ( - - - - {t('search_logs.nav.search_logs')} - - } - > -
    - -
    - -
    - -
    -
    - - - - -
    - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/pages/LogSearchHistory.tsx b/ui-ori/lib/apps/SearchLogs/pages/LogSearchHistory.tsx deleted file mode 100644 index 6c982e10cf..0000000000 --- a/ui-ori/lib/apps/SearchLogs/pages/LogSearchHistory.tsx +++ /dev/null @@ -1,227 +0,0 @@ -import client from '@lib/client' -import { LogsearchTaskGroupModel } from '@lib/client' -import { Head, CardTable, DateTime } from '@lib/components' -import { ArrowLeftOutlined, ExclamationCircleOutlined } from '@ant-design/icons' -import { Badge, Button, Modal, Space } from 'antd' -import React, { useEffect, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' -import { - Selection, - SelectionMode, -} from 'office-ui-fabric-react/lib/DetailsList' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import { LogLevelText } from '../utils' - -function componentRender({ target_stats: stats, t }) { - // FIXME: Extract common util - const r: Array = [] - if (stats?.num_tidb_nodes) { - r.push(`${stats.num_tidb_nodes} ${t('distro.tidb')}`) - } - if (stats?.num_tikv_nodes) { - r.push(`${stats.num_tikv_nodes} ${t('distro.tikv')}`) - } - if (stats?.num_pd_nodes) { - r.push(`${stats.num_pd_nodes} ${t('distro.pd')}`) - } - return {r.join(', ')} -} - -function timeRender({ search_request }: LogsearchTaskGroupModel) { - return ( - - {search_request?.start_time && ( - - )} - {' ~ '} - {search_request?.end_time && ( - - )} - - ) -} - -function levelRender({ search_request: request }: LogsearchTaskGroupModel) { - return LogLevelText[request?.min_level!] -} - -function patternRender({ search_request: request }: LogsearchTaskGroupModel) { - return (request?.patterns ?? []).join(' ') -} - -export default function LogSearchingHistory() { - const [taskGroups, setTaskGroups] = useState([]) - const [selectedRowKeys, setRowKeys] = useState([]) - - const { t } = useTranslation() - - useEffect(() => { - async function getData() { - const res = await client.getInstance().logsTaskgroupsGet() - setTaskGroups(res.data) - } - - getData() - }, []) - - function stateRender({ state }: LogsearchTaskGroupModel) { - switch (state) { - case 1: - return ( - - ) - case 2: - return ( - - ) - default: - return - } - } - - function actionRender(taskGroup: LogsearchTaskGroupModel) { - if (taskGroup.id === 0) { - return - } - return ( - - {t('search_logs.history.detail')} - - ) - } - - async function handleDeleteSelected() { - Modal.confirm({ - title: t('search_logs.history.delete_confirm_title'), - icon: , - content: t('search_logs.history.delete_selected_confirm_content'), - okText: t('search_logs.history.delete'), - cancelText: t('search_logs.common.cancel'), - okButtonProps: { danger: true }, - onOk: async () => { - for (const taskGroupID of selectedRowKeys) { - await client.getInstance().logsTaskgroupsIdDelete(taskGroupID) - } - const res = await client.getInstance().logsTaskgroupsGet() - setTaskGroups(res.data) - }, - }) - } - - async function handleDeleteAll() { - Modal.confirm({ - title: t('search_logs.history.delete_confirm_title'), - icon: , - content: t('search_logs.history.delete_all_confirm_content'), - okText: t('search_logs.history.delete'), - cancelText: t('search_logs.common.cancel'), - okButtonProps: { danger: true }, - onOk: async () => { - const allKeys = taskGroups.map((taskGroup) => taskGroup.id) - for (const key of allKeys) { - if (key === undefined) { - continue - } - await client.getInstance().logsTaskgroupsIdDelete(String(key)) - } - const res = await client.getInstance().logsTaskgroupsGet() - setTaskGroups(res.data) - }, - }) - } - - const rowSelection = new Selection({ - onSelectionChanged: () => { - const items = rowSelection.getSelection() as LogsearchTaskGroupModel[] - setRowKeys(items.map((item) => item.id!.toString())) - }, - }) - - const columns = [ - { - name: t('search_logs.common.time_range'), - key: 'time', - minWidth: 200, - maxWidth: 300, - onRender: timeRender, - }, - { - name: t('search_logs.preview.level'), - key: 'level', - minWidth: 70, - maxWidth: 120, - onRender: levelRender, - }, - { - name: t('search_logs.history.instances'), - key: 'target_stats', - minWidth: 100, - maxWidth: 250, - onRender: (p) => componentRender({ ...p, t }), - }, - { - name: t('search_logs.common.keywords'), - key: 'keywords', - minWidth: 100, - maxWidth: 200, - onRender: patternRender, - }, - { - name: t('search_logs.history.status'), - key: 'state', - minWidth: 100, - maxWidth: 150, - onRender: stateRender, - }, - { - name: t('search_logs.history.action'), - key: 'action', - minWidth: 100, - maxWidth: 200, - onRender: actionRender, - }, - ] - - return ( -
    - - {t('search_logs.nav.search_logs')} - - } - titleExtra={ - - - - - } - /> -
    - - - -
    -
    - ) -} diff --git a/ui-ori/lib/apps/SearchLogs/pages/index.ts b/ui-ori/lib/apps/SearchLogs/pages/index.ts deleted file mode 100644 index f0bb14ab4d..0000000000 --- a/ui-ori/lib/apps/SearchLogs/pages/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import LogSearch from './LogSearch' -import LogSearchHistory from './LogSearchHistory' -import LogSearchDetail from './LogSearchDetail' - -export { LogSearch, LogSearchHistory, LogSearchDetail } diff --git a/ui-ori/lib/apps/SearchLogs/translations/en.yaml b/ui-ori/lib/apps/SearchLogs/translations/en.yaml deleted file mode 100644 index 497d3710dd..0000000000 --- a/ui-ori/lib/apps/SearchLogs/translations/en.yaml +++ /dev/null @@ -1,49 +0,0 @@ -search_logs: - nav_title: Search Logs - nav: - search_logs: Search Logs - detail: Search Result - history: History - page: - intro: Preview and download logs by clicking Search - tip: The preview shows only the first 500 logs - view: View - search_histroy: search histroy - common: - time_range: Time Range - start_time: Start Time - end_time: End Time - log_level: Log Level - components: instances - keywords: Keywords - keywords_placeholder: Keywords, Optional, separated by spaces - search: Search - progress: Progress - download_selected: Download selected - cancel: Cancel - retry: Retry - progress: - running: running - success: completed - failed: failed - confirm: - cancel_tasks: Are you sure you want to cancel all running log search tasks? - retry_tasks: Are you sure you want to retry all failed log search tasks? - preview: - time: Time - level: Level - component: Component - log: Log - history: - instances: Instances - running: Running - finished: Finished - delete_selected: Delete selected - delete_all: Delete All - status: Status - action: Action - detail: Detail - delete: Delete - delete_confirm_title: Delete Log Search Histories - delete_selected_confirm_content: Are you sure you want to delete selected log search histories? - delete_all_confirm_content: Are you sure you want to delete all log search histories? diff --git a/ui-ori/lib/apps/SearchLogs/translations/zh.yaml b/ui-ori/lib/apps/SearchLogs/translations/zh.yaml deleted file mode 100644 index 18afccdbd0..0000000000 --- a/ui-ori/lib/apps/SearchLogs/translations/zh.yaml +++ /dev/null @@ -1,49 +0,0 @@ -search_logs: - nav_title: 日志搜索 - nav: - search_logs: 日志搜索 - detail: 搜索结果 - history: 历史搜索 - page: - intro: 点击搜索预览和下载日志 - tip: 预览仅显示前 500 项日志 - view: 查看 - search_histroy: 搜索历史 - common: - time_range: 时间范围 - start_time: 起始时间 - end_time: 结束时间 - log_level: 日志等级 - components: 选择实例 - keywords: 关键字 - keywords_placeholder: 搜索关键字,可选,以空格分割 - search: 搜索 - progress: 搜索进度 - download_selected: 下载选中日志 - cancel: 取消 - retry: 重试 - progress: - running: 正在运行 - success: 成功 - failed: 失败 - confirm: - cancel_tasks: 确认要取消正在运行的日志搜索任务么? - retry_tasks: 确认要重试所有失败的日志搜索任务么? - preview: - time: 时间 - level: 日志等级 - component: 组件 - log: 日志 - history: - instances: 实例 - running: 正在搜索 - finished: 已完成 - delete_selected: 删除选中的任务 - delete_all: 删除全部任务 - status: 状态 - action: 操作 - detail: 查看详情 - delete: 删除 - delete_confirm_title: 删除搜索历史 - delete_selected_confirm_content: 确认要删除选中的搜索历史吗? - delete_all_confirm_content: 确认要删除所有的搜索历史吗? diff --git a/ui-ori/lib/apps/SearchLogs/utils/index.ts b/ui-ori/lib/apps/SearchLogs/utils/index.ts deleted file mode 100644 index dc0f7048ea..0000000000 --- a/ui-ori/lib/apps/SearchLogs/utils/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -export enum LogLevel { - Unknown = 0, - Debug, - Info, - Warn, - Trace, - Critical, - Error, -} - -export const LogLevelText = { - [LogLevel.Unknown]: 'UNKNOWN', - [LogLevel.Debug]: 'DEBUG', - [LogLevel.Info]: 'INFO', - [LogLevel.Warn]: 'WARN', - [LogLevel.Trace]: 'TRACE', - [LogLevel.Critical]: 'CRITICAL', - [LogLevel.Error]: 'ERROR', -} - -export const ValidLogLevels = [ - LogLevel.Debug, - LogLevel.Info, - LogLevel.Warn, - // LogLevel.Trace, - LogLevel.Critical, - LogLevel.Error, -] - -export enum TaskState { - Running = 1, - Finished, - Error, -} diff --git a/ui-ori/lib/apps/SlowQuery/components/SlowQueriesTable.tsx b/ui-ori/lib/apps/SlowQuery/components/SlowQueriesTable.tsx deleted file mode 100644 index 00cf0e9e21..0000000000 --- a/ui-ori/lib/apps/SlowQuery/components/SlowQueriesTable.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { usePersistFn } from 'ahooks' -import React, { useCallback } from 'react' -import { CardTable, ICardTableProps } from '@lib/components' -import DetailPage from '../pages/Detail' -import { ISlowQueryTableController } from '../utils/useSlowQueryTableController' -import openLink from '@lib/utils/openLink' -import { useNavigate } from 'react-router-dom' - -interface Props extends Partial { - controller: ISlowQueryTableController -} - -function SlowQueriesTable({ controller, ...restProps }: Props) { - const { - loadingSlowQueries, - tableColumns, - slowQueries, - orderOptions: { orderBy, desc }, - changeOrder, - errors, - visibleColumnKeys, - - saveClickedItemIndex, - getClickedItemIndex, - } = controller - - const navigate = useNavigate() - const handleRowClick = usePersistFn( - (rec, idx, ev: React.MouseEvent) => { - saveClickedItemIndex(idx) - const qs = DetailPage.buildQuery({ - digest: rec.digest, - connectId: rec.connection_id, - timestamp: rec.timestamp, - }) - openLink(`/slow_query/detail?${qs}`, ev, navigate) - } - ) - - const getKey = useCallback((row) => `${row.digest}_${row.timestamp}`, []) - - return ( - - ) -} - -export default SlowQueriesTable diff --git a/ui-ori/lib/apps/SlowQuery/components/index.ts b/ui-ori/lib/apps/SlowQuery/components/index.ts deleted file mode 100644 index f273d64d3a..0000000000 --- a/ui-ori/lib/apps/SlowQuery/components/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import SlowQueriesTable from './SlowQueriesTable' - -export { SlowQueriesTable } diff --git a/ui-ori/lib/apps/SlowQuery/index.meta.ts b/ui-ori/lib/apps/SlowQuery/index.meta.ts deleted file mode 100644 index 77ad507166..0000000000 --- a/ui-ori/lib/apps/SlowQuery/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { RocketOutlined } from '@ant-design/icons' - -export default { - id: 'slow_query', - routerPrefix: '/slow_query', - icon: RocketOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_slow_query" */ '.'), -} diff --git a/ui-ori/lib/apps/SlowQuery/index.tsx b/ui-ori/lib/apps/SlowQuery/index.tsx deleted file mode 100644 index f3565c41f0..0000000000 --- a/ui-ori/lib/apps/SlowQuery/index.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' -import { Root } from '@lib/components' -import { HashRouter as Router, Route, Routes } from 'react-router-dom' -import useCache, { CacheContext } from '@lib/utils/useCache' - -import { List, Detail } from './pages' - -export default function () { - const slowQueryCacheMgr = useCache(2) - - return ( - - - - - } /> - } /> - - - - - ) -} - -export * from './components' -export * from './pages' -export * from './utils/useSlowQueryTableController' -export { default as useSlowQueryTableController } from './utils/useSlowQueryTableController' diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabBasic.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabBasic.tsx deleted file mode 100644 index b5fdfa225f..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabBasic.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' -import { SlowqueryModel } from '@lib/client' -import { DateTime } from '@lib/components' -import { getValueFormat } from '@baurine/grafana-value-formats' - -export const tabBasicItems = (data: SlowqueryModel) => [ - { - key: 'timestamp', - value: , - }, - { key: 'digest', value: data.digest }, - { key: 'is_internal', value: data.is_internal }, - { key: 'is_success', value: data.success }, - { key: 'db', value: data.db }, - { key: 'index_names', value: data.index_names }, - { key: 'stats', value: data.stats }, - { key: 'backoff_types', value: data.backoff_types }, - { - key: 'memory_max', - value: getValueFormat('bytes')(data.memory_max || 0, 1), - }, - { - key: 'disk_max', - value: getValueFormat('bytes')(data.disk_max || 0, 1), - }, - { key: 'instance', value: data.instance }, - { key: 'connection_id', value: data.connection_id }, - { key: 'user', value: data.user }, - { key: 'host', value: data.host }, -] diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx deleted file mode 100644 index ff338f5164..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabCopr.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react' - -import { SlowqueryModel } from '@lib/client' -import { ValueWithTooltip } from '@lib/components' - -export const tabCoprItems = (data: SlowqueryModel) => [ - { - key: 'request_count', - value: , - }, - { - key: 'process_keys', - value: , - }, - { - key: 'total_keys', - value: , - }, - { - key: 'cop_proc_addr', - value: data.cop_proc_addr, - }, - { - key: 'cop_wait_addr', - value: data.cop_wait_addr, - }, - { - key: 'rocksdb_block_cache_hit_count', - value: ( - - ), - }, - { - key: 'rocksdb_block_read_byte', - value: ( - - ), - }, - { - key: 'rocksdb_block_read_count', - value: , - }, - { - key: 'rocksdb_delete_skipped_count', - value: , - }, - { - key: 'rocksdb_key_skipped_count', - value: , - }, -] diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTime.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTime.tsx deleted file mode 100644 index 6379eac410..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTime.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import React from 'react' -import { SlowqueryModel } from '@lib/client' -import { Typography } from 'antd' -import { TFunction } from 'i18next' - -export const tabTimeItems = (data: SlowqueryModel, t: TFunction) => { - return [ - { - key: 'query_time2', - keyDisplay: ( - - {t('slow_query.fields.query_time2')} - - ), - value: data.query_time! * 10e8, - indentLevel: 0, - }, - { - key: 'parse_time', - value: data.parse_time! * 10e8, - indentLevel: 1, - }, - { - key: 'compile_time', - value: data.compile_time! * 10e8, - indentLevel: 1, - }, - { - key: 'rewrite_time', - value: data.rewrite_time! * 10e8, - indentLevel: 2, - }, - { - key: 'preproc_subqueries_time', - value: data.preproc_subqueries_time! * 10e8, - indentLevel: 3, - }, - { - key: 'optimize_time', - value: data.optimize_time! * 10e8, - indentLevel: 2, - }, - { - key: 'cop_time', - value: data.cop_time! * 10e8, - indentLevel: 1, - }, - { - key: 'wait_time', - value: data.wait_time! * 10e8, - indentLevel: 2, - }, - { - key: 'process_time', - value: data.process_time! * 10e8, - indentLevel: 2, - }, - { - key: 'local_latch_wait_time', - value: data.local_latch_wait_time! * 10e8, - indentLevel: 1, - }, - { - key: 'lock_keys_time', - value: data.lock_keys_time! * 10e8, - indentLevel: 1, - }, - { - key: 'resolve_lock_time', - value: data.resolve_lock_time! * 10e8, - indentLevel: 1, - }, - { - key: 'wait_ts', - value: data.wait_ts! * 10e8, - indentLevel: 1, - }, - { - key: 'get_commit_ts_time', - value: data.get_commit_ts_time! * 10e8, - indentLevel: 1, - }, - { - key: 'prewrite_time', - value: data.prewrite_time! * 10e8, - indentLevel: 1, - }, - { - key: 'commit_time', - value: data.commit_time! * 10e8, - indentLevel: 1, - }, - { - key: 'backoff_time', - value: data.backoff_time! * 10e8, - indentLevel: 1, - }, - { - key: 'commit_backoff_time', - value: data.commit_backoff_time! * 10e8, - indentLevel: 1, - }, - { - key: 'exec_retry_time', - value: data.exec_retry_time! * 10e8, - indentLevel: 1, - }, - { - key: 'write_sql_response_total', - value: data.write_sql_response_total! * 10e8, - indentLevel: 1, - }, - { - key: 'wait_prewrite_binlog_time', - value: data.wait_prewrite_binlog_time! * 10e8, - indentLevel: 1, - }, - ] -} diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTxn.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTxn.tsx deleted file mode 100644 index 880117c7ba..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabTxn.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import { SlowqueryModel } from '@lib/client' -import { ValueWithTooltip } from '@lib/components' - -export const tabTxnItems = (data: SlowqueryModel) => [ - { - key: 'txn_start_ts', - value: data.txn_start_ts, - }, - { - key: 'write_keys', - value: , - }, - { - key: 'write_size', - value: getValueFormat('bytes')(data.write_size || 0, 1), - }, - { - key: 'prewrite_region', - value: , - }, - { - key: 'txn_retry', - value: , - }, -] diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabs.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabs.tsx deleted file mode 100644 index 3634d9bb39..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/Detail/DetailTabs.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React from 'react' -import { useTranslation } from 'react-i18next' - -import { SlowqueryModel } from '@lib/client' -import { valueColumns, timeValueColumns } from '@lib/utils/tableColumns' -import { CardTabs, CardTable } from '@lib/components' - -import { tabBasicItems } from './DetailTabBasic' -import { tabTimeItems } from './DetailTabTime' -import { tabCoprItems } from './DetailTabCopr' -import { tabTxnItems } from './DetailTabTxn' -import { useSchemaColumns } from '../../utils/useSchemaColumns' - -export default function DetailTabs({ data }: { data: SlowqueryModel }) { - const { t } = useTranslation() - const { schemaColumns } = useSchemaColumns() - const columnsSet = new Set(schemaColumns) - - const tabs = [ - { - key: 'basic', - title: t('slow_query.detail.tabs.basic'), - content: () => { - const items = tabBasicItems(data) - const columns = valueColumns('slow_query.fields.') - return ( - - ) - }, - }, - { - key: 'time', - title: t('slow_query.detail.tabs.time'), - content: () => { - const items = tabTimeItems(data, t) - const columns = timeValueColumns('slow_query.fields.', items) - return ( - - ) - }, - }, - { - key: 'copr', - title: t('slow_query.detail.tabs.copr'), - content: () => { - const items = tabCoprItems(data).filter((item) => - columnsSet.has(item.key) - ) - const columns = valueColumns('slow_query.fields.') - return ( - - ) - }, - }, - { - key: 'txn', - title: t('slow_query.detail.tabs.txn'), - content: () => { - const items = tabTxnItems(data) - const columns = valueColumns('slow_query.fields.') - return ( - - ) - }, - }, - ] - return -} diff --git a/ui-ori/lib/apps/SlowQuery/pages/Detail/index.tsx b/ui-ori/lib/apps/SlowQuery/pages/Detail/index.tsx deleted file mode 100644 index d10193e713..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/Detail/index.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import React from 'react' -import { Space } from 'antd' -import { useTranslation } from 'react-i18next' -import { Link, useLocation } from 'react-router-dom' -import { ArrowLeftOutlined } from '@ant-design/icons' - -import client from '@lib/client' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { buildQueryFn, parseQueryFn } from '@lib/utils/query' -import formatSql from '@lib/utils/sqlFormatter' -import { - AnimatedSkeleton, - CopyLink, - Descriptions, - ErrorBar, - Expand, - Head, - HighlightSQL, - Pre, - TextWithInfo, -} from '@lib/components' -import { useLocalStorageState } from '@lib/utils/useLocalStorageState' - -import DetailTabs from './DetailTabs' - -export interface IPageQuery { - connectId?: string - digest?: string - timestamp?: number -} - -const SLOW_QUERY_DETAIL_EXPAND = 'slow_query.detail_expand' - -function DetailPage() { - const query = DetailPage.parseQuery(useLocation().search) - - const { t } = useTranslation() - - const { data, isLoading, error } = useClientRequest((reqConfig) => - client - .getInstance() - .slowQueryDetailGet( - query.connectId!, - query.digest!, - query.timestamp!, - reqConfig - ) - ) - - const [detailExpand, setDetailExpand] = useLocalStorageState( - SLOW_QUERY_DETAIL_EXPAND, - { - prev_query: false, - query: false, - plan: false, - } - ) - - const togglePrevQuery = () => - setDetailExpand((prev) => ({ ...prev, prev_query: !prev.prev_query })) - const toggleQuery = () => - setDetailExpand((prev) => ({ ...prev, query: !prev.query })) - const togglePlan = () => - setDetailExpand((prev) => ({ ...prev, plan: !prev.plan })) - - return ( -
    - - {t('slow_query.detail.head.back')} - - } - > - - {error && } - {!!data && ( - <> - - - - - - - - } - > - - } - > - - - - {(() => { - if (!!data.prev_stmt && data.prev_stmt.length !== 0) - return ( - - - - - - - } - > - - } - > - - - - ) - })()} - - - - - - } - > - -
    {data.plan}
    -
    -
    -
    - - - - )} -
    - -
    - ) -} - -DetailPage.buildQuery = buildQueryFn() -DetailPage.parseQuery = parseQueryFn() - -export default DetailPage diff --git a/ui-ori/lib/apps/SlowQuery/pages/List/List.module.less b/ui-ori/lib/apps/SlowQuery/pages/List/List.module.less deleted file mode 100644 index c168b362f3..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/List/List.module.less +++ /dev/null @@ -1,15 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.list { - &_container { - display: flex; - flex-direction: column; - height: 100vh; - } - - &_toolbar { - @media only screen and (max-width: @screen-md) { - flex-direction: column; - } - } -} diff --git a/ui-ori/lib/apps/SlowQuery/pages/List/index.tsx b/ui-ori/lib/apps/SlowQuery/pages/List/index.tsx deleted file mode 100644 index db10484a39..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/List/index.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import React, { useContext } from 'react' -import { useTranslation } from 'react-i18next' -import { - Select, - Space, - Tooltip, - Input, - Checkbox, - message, - Menu, - Dropdown, -} from 'antd' -import { - ReloadOutlined, - LoadingOutlined, - ExportOutlined, - MenuOutlined, -} from '@ant-design/icons' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' - -import { - Card, - ColumnsSelector, - TimeRangeSelector, - Toolbar, - MultiSelect, -} from '@lib/components' -import { CacheContext } from '@lib/utils/useCache' -import { useLocalStorageState } from '@lib/utils/useLocalStorageState' - -import SlowQueriesTable from '../../components/SlowQueriesTable' -import useSlowQueryTableController, { - DEF_SLOW_QUERY_COLUMN_KEYS, -} from '../../utils/useSlowQueryTableController' - -import styles from './List.module.less' - -const { Option } = Select -const { Search } = Input - -const SLOW_QUERY_VISIBLE_COLUMN_KEYS = 'slow_query.visible_column_keys' -const SLOW_QUERY_SHOW_FULL_SQL = 'slow_query.show_full_sql' -const LIMITS = [100, 200, 500, 1000] - -function List() { - const { t } = useTranslation() - - const slowQueryCacheMgr = useContext(CacheContext) - - const [visibleColumnKeys, setVisibleColumnKeys] = useLocalStorageState( - SLOW_QUERY_VISIBLE_COLUMN_KEYS, - DEF_SLOW_QUERY_COLUMN_KEYS, - true - ) - const [showFullSQL, setShowFullSQL] = useLocalStorageState( - SLOW_QUERY_SHOW_FULL_SQL, - false - ) - - const controller = useSlowQueryTableController( - slowQueryCacheMgr, - visibleColumnKeys, - showFullSQL - ) - const { - queryOptions, - setQueryOptions, - refresh, - allSchemas, - loadingSlowQueries, - tableColumns, - downloadCSV, - downloading, - } = controller - - function exportCSV() { - const hide = message.loading(t('slow_query.toolbar.exporting') + '...', 0) - downloadCSV().finally(hide) - } - - function menuItemClick({ key }) { - switch (key) { - case 'export': - exportCSV() - break - } - } - - const dropdownMenu = ( - - }> - {downloading - ? t('slow_query.toolbar.exporting') - : t('slow_query.toolbar.export')} - - - ) - - return ( -
    - - - - - setQueryOptions({ - ...queryOptions, - timeRange, - }) - } - /> - - setQueryOptions({ - ...queryOptions, - schemas, - }) - } - items={allSchemas} - /> - - setQueryOptions({ ...queryOptions, searchText }) - } - /> - - - - - {tableColumns.length > 0 && ( - setShowFullSQL(e.target.checked)} - > - {t('slow_query.toolbar.select_columns.show_full_sql')} - - } - /> - )} - - {loadingSlowQueries ? ( - - ) : ( - - )} - - -
    - -
    -
    -
    -
    -
    - -
    - - - -
    -
    - ) -} - -export default List diff --git a/ui-ori/lib/apps/SlowQuery/pages/index.ts b/ui-ori/lib/apps/SlowQuery/pages/index.ts deleted file mode 100644 index 641e4de57a..0000000000 --- a/ui-ori/lib/apps/SlowQuery/pages/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import List from './List' -import Detail from './Detail' - -export { List, Detail } diff --git a/ui-ori/lib/apps/SlowQuery/translations/en.yaml b/ui-ori/lib/apps/SlowQuery/translations/en.yaml deleted file mode 100644 index fd858c2d06..0000000000 --- a/ui-ori/lib/apps/SlowQuery/translations/en.yaml +++ /dev/null @@ -1,133 +0,0 @@ -slow_query: - nav_title: Slow Queries - fields: - instance: '{{distro.tidb}} Instance' - instance_tooltip: The {{distro.tidb}} address that handles the query - connection_id: Connection ID - connection_id_tooltip: Unique connection ID of the query - sql: Query - query: Query - timestamp: Finish Time - timestamp_tooltip: The time this query finished execution - query_time: Latency - query_time_tooltip: Execution time of the query - memory_max: Max Memory - memory_max_tooltip: Maximum memory usage of the query - disk_max: Max Disk - disk_max_tooltip: Maximum disk usage of the query - digest: Query Template ID - digest_tooltip: a.k.a. Query digest - is_internal: Is Internal? - is_internal_tooltip: Whether this is an internal query - is_success: Is Success? - is_success_tooltip: Whether query is executed successfully - result: Result - result_tooltip: Whether query is executed successfully - index_names: Index Names - index_names_tooltip: The name of the used index - stats: Used Statistics - backoff_types: Backoff Types - user: Execution User - user_tooltip: The user that executes the query - host: Client Address - host_tooltip: The address of the client that sends the query - db: Execution Database - db_tooltip: The database used to execute the query - - query_time2: Query Time - query_time2_tooltip: The elapsed wall time when execution the query - parse_time: Parse Time - parse_time_tooltip: Time consumed when parsing the query - compile_time: Generate Plan Time - rewrite_time: Rewrite Plan Time - preproc_subqueries_time: Preprocess Sub-Query Time - preproc_subqueries_time_tooltip: Time consumed when pre-processing the subquery during the rewrite plan phase - optimize_time: Optimize Plan Time - wait_ts: Get Start Ts Time - wait_ts_tooltip: Time consumed when getting a start timestamp when transaction begins - cop_time: Coprocessor Executor Time - cop_time_tooltip: 'The elapsed wall time when {{distro.tidb}} Coprocessor executor waiting all Coprocessor requests to finish (note: when there are JOIN in SQL statement, multiple {{distro.tidb}} Coprocessor executors may be running in parallel, which may cause this time not being a wall time)' - wait_time: Coprocessor Wait Time - wait_time_tooltip: 'The total time of Coprocessor request is prepared and wait to execute in {{distro.tikv}}, which may happen when retrieving a snapshot though Raft concensus protocol (note: {{distro.tikv}} waits requests in parallel so that this is not a wall time)' - process_time: Coprocessor Process Time - process_time_tooltip: 'The total time of Coprocessor request being executed in {{distro.tikv}} (note: {{distro.tikv}} executes requests in parallel so that this is not a wall time)' - backoff_time: Execution Backoff Time - backoff_time_tooltip: 'The total backoff waiting time before retry when a query encounters errors (note: there may be multiple backoffs in parallel so that this may not be a wall time)' - lock_keys_time: Lock Keys Time - lock_keys_time_tooltip: Time consumed when locking keys in pessimistic transaction - get_commit_ts_time: Get Commit Ts Time - get_commit_ts_time_tooltip: Time consumed when getting a commit timestamp for 2PC commit phase when transaction commits - local_latch_wait_time: Local Latch Wait Time - local_latch_wait_time_tooltip: Time consumed when {{distro.tidb}} waits for the lock in the current {{distro.tidb}} instance before 2PC commit phase when transaction commits - resolve_lock_time: Resolve Lock Time - resolve_lock_time_tooltip: Time consumed when {{distro.tidb}} resolves locks from other transactions in 2PC prewrite phase when transaction commits - prewrite_time: Prewrite Time - prewrite_time_tooltip: Time consumed in 2PC prewrite phase when transaction commits - wait_prewrite_binlog_time: Wait Binlog Prewrite Time - wait_prewrite_binlog_time_tooltip: Time consumed when waiting Binlog prewrite to finish - commit_time: Commit Time - commit_time_tooltip: Time consumed in 2PC commit phase when transaction commits - commit_backoff_time: Commit Backoff Time - commit_backoff_time_tooltip: 'The total backoff waiting time when 2PC commit encounters errors (note: there may be multiple backoffs in parallel so that this may not be a wall time)' - write_sql_response_total: Send response Time - write_sql_response_total_tooltip: Time consumed when sending response to the SQL client - exec_retry_time: Retried execution Time - exec_retry_time_tooltip: Wall time consumed when SQL statement is retried and executed again, except for the last exection - - request_count: Request Count - process_keys: Process Keys - total_keys: Total Keys - cop_proc_addr: Copr Address (Process) - cop_proc_addr_tooltip: The address of the {{distro.tikv}} that takes most time process the Coprocessor request - cop_wait_addr: Copr Address (Wait) - cop_wait_addr_tooltip: The address of the {{distro.tikv}} that takes most time wait the Coprocessor request - - txn_start_ts: Start Timestamp - txn_start_ts_tooltip: Transaction start timestamp, a.k.a. Transaction ID - write_keys: Write Keys - write_size: Write Size - prewrite_region: Prewrite Regions - txn_retry: Transaction Retries - - prev_stmt: Previous Query - plan: Execution Plan - - cop_proc_avg: Mean Cop Proc # ? - cop_wait_avg: Mean Cop Wait # ? - - rocksdb_delete_skipped_count: RocksDB Skipped Deletions - rocksdb_delete_skipped_count_tooltip: Total number of deleted (a.k.a. tombstone) key versions that are skipped during iteration (RocksDB delete_skipped_count) - rocksdb_key_skipped_count: RocksDB Skipped Keys - rocksdb_key_skipped_count_tooltip: Total number of keys skipped during iteration (RocksDB key_skipped_count) - rocksdb_block_cache_hit_count: RocksDB Block Cache Hits - rocksdb_block_cache_hit_count_tooltip: Total number of hits from the block cache (RocksDB block_cache_hit_count) - rocksdb_block_read_count: RocksDB Block Reads - rocksdb_block_read_count_tooltip: Total number of blocks RocksDB read from file (RocksDB block_read_count) - rocksdb_block_read_byte: RocksDB Read Size - rocksdb_block_read_byte_tooltip: Total number of bytes RocksDB read from file (RocksDB block_read_byte) - common: - status: - success: Success - error: Failed - detail: - head: - title: Slow Query Detail - back: List - sql: Query - previous_sql: Previous Query - plan: Plan - tabs: - basic: Basic - time: Time - copr: Coprocessor - txn: Transaction - toolbar: - schemas: - placeholder: All Databases - selected: '{{ n }} Databases' - columnTitle: Execution Database Name - select_columns: - show_full_sql: Show Full Query Text - refresh: Refresh - export: Export - exporting: Exporting diff --git a/ui-ori/lib/apps/SlowQuery/translations/zh.yaml b/ui-ori/lib/apps/SlowQuery/translations/zh.yaml deleted file mode 100644 index 71bb62c336..0000000000 --- a/ui-ori/lib/apps/SlowQuery/translations/zh.yaml +++ /dev/null @@ -1,136 +0,0 @@ -slow_query: - nav_title: 慢查询 - fields: - instance: '{{distro.tidb}} 实例' - instance_tooltip: 处理该 SQL 查询的 {{distro.tidb}} 实例地址 - connection_id: 连接号 - connection_id_tooltip: SQL 查询客户端连接 ID - sql: SQL - query: SQL - sql_tooltip: SQL - timestamp: 结束运行时间 - timestamp_tooltip: 该 SQL 查询结束运行时的时间 - query_time: 总执行时间 - query_time_tooltip: 该 SQL 查询总的执行时间 - memory_max: 最大内存 - memory_max_tooltip: 该 SQL 查询执行时占用的最大内存空间 - disk_max: 最大磁盘空间 - disk_max_tooltip: 该 SQL 查询执行时占用的最大磁盘空间 - digest: SQL 模板 ID - digest_tooltip: SQL 模板的唯一标识(SQL 指纹) - is_internal: 是否为内部 SQL 查询 - is_success: 是否执行成功 - is_success_tooltip: SQL 查询是否执行成功 - result: 执行结果 - result_tooltip: SQL 查询是否执行成功 - index_names: 索引名 - index_names_tooltip: SQL 查询执行时使用的索引名称 - stats: 使用的统计信息 - backoff_types: 重试类型 - user: 执行用户名 - user_tooltip: 执行该 SQL 查询的用户名,可能存在多个执行用户,仅显示其中某一个 - host: 客户端地址 - host_tooltip: 发送 SQL 查询的客户端地址 - db: 执行数据库 - db_tooltip: 执行该 SQL 查询时使用的数据库名称 - - query_time2: SQL 执行时间 - query_time2_tooltip: 执行 SQL 耗费的自然时间 - parse_time: 解析耗时 - parse_time_tooltip: 解析该 SQL 查询的耗时 - compile_time: 生成执行计划耗时 - compile_time_tooltip: 生成该 SQL 的执行计划的耗时 - rewrite_time: 重写执行计划耗时 - rewrite_time_tooltip: 重写执行计划的耗时,例如常量折叠等 - preproc_subqueries_time: 子查询预处理耗时 - optimize_time: 优化执行计划耗时 - optimize_time_tooltip: 优化器寻找执行计划的耗时,包括规则优化和物理优化的耗时 - wait_ts: 取事务 Start Ts 耗时 - wait_ts_tooltip: 从 {{distro.pd}} 取事务开始时间戳步骤的耗时 - cop_time: Coprocessor 执行耗时 - cop_time_tooltip: '{{distro.tidb}} Coprocessor 算子等待所有任务在 {{distro.tikv}} 上并行执行完毕耗费的自然时间(注:当 SQL 语句中包含 JOIN 时,多个 {{distro.tidb}} Coprocessor 算子可能会并行执行,此时不再等同于自然时间)' - wait_time: Coprocessor 累计等待耗时 - wait_time_tooltip: '{{distro.tikv}} 准备并等待 Coprocessor 任务执行的累计时间,等待过程中包括通过 Raft 一致性协议取快照等(注:{{distro.tikv}} 会并行等待任务,因此该时间不是自然流逝时间)' - process_time: Coprocessor 累计执行耗时 - process_time_tooltip: '{{distro.tikv}} 执行 Coprocessor 任务的累计处理时间(注:{{distro.tikv}} 会并行处理任务,因此该时间不是自然流逝时间)' - lock_keys_time: 上锁耗时 - lock_keys_time_tooltip: 悲观事务中对相关行数据进行上锁的耗时 - backoff_time: 执行阶段累计 Backoff 耗时 - backoff_time_tooltip: 在执行失败时,Backoff 机制等待一段时间再重试时的 Backoff 累计耗时(注:可能同时存在多个 Backoff,因此该时间可能不是自然流逝时间) - get_commit_ts_time: 取事务 Commit Ts 耗时 - get_commit_ts_time_tooltip: 从 {{distro.pd}} 取提交时间戳(事务号)步骤的耗时 - local_latch_wait_time: '{{distro.tidb}} 本地等锁耗时' - local_latch_wait_time_tooltip: 事务在 {{distro.tidb}} 本地与其他事务产生了锁冲突并等待的耗时 - resolve_lock_time: 解锁耗时 - resolve_lock_time_tooltip: 事务在提交过程中与其他事务产生了锁冲突并处理锁冲突的耗时 - prewrite_time: Prewrite 阶段耗时 - prewrite_time_tooltip: 事务两阶段提交中第一阶段(prewrite 阶段)的耗时 - wait_prewrite_binlog_time: Binlog Prewrite 等待耗时 - wait_prewrite_binlog_time_tooltip: 等待 Binlog Prewrite 完成的耗时 - commit_time: Commit 阶段耗时 - commit_time_tooltip: 事务两阶段提交中第二阶段(commit 阶段)的耗时 - commit_backoff_time: Commit 阶段累计 Backoff 耗时 - commit_backoff_time_tooltip: 事务递交失败时,Backoff 机制等待一段时间再重试时的 Backoff 累计耗时(注:可能同时存在多个 Backoff,因此该时间可能不是自然流逝时间) - write_sql_response_total: 发送结果耗时 - write_sql_response_total_tooltip: 发送 SQL 语句执行结果给客户端的耗时 - exec_retry_time: 前序执行耗时 - exec_retry_time_tooltip: 由于锁冲突或错误,计划可能会执行失败并重试执行多次,该时间是不包含最后一次执行的前序执行自然时间(注:执行计划中的时间不含该前序时间) - - request_count: Coprocessor 请求数 - process_keys: 可见版本数 - total_keys: 遇到版本数 - total_keys_tooltip: 含已删除或覆盖但未 GC 的版本 - cop_proc_addr: 最长处理时间实例 - cop_proc_addr_tooltip: 耗费最长时间处理 Coprocessor 请求的 {{distro.tikv}} 实例地址 - cop_wait_addr: 最长等待时间实例 - cop_wait_addr_tooltip: 耗费最长时间等待 Coprocessor 请求的 {{distro.tikv}} 实例地址 - - txn_start_ts: 事务号 - txn_start_ts_tooltip: 事务开始的时间戳,也即是事务号 - write_keys: 写入 Key 个数 - write_size: 写入数据量 - prewrite_region: Prewrite 涉及 Regions 个数 - txn_retry: 事务重试次数 - - prev_stmt: 前一条 SQL 查询 - plan: 执行计划 - - cop_proc_avg: 平均处理 # ? - cop_wait_avg: 平均等待 # ? - - rocksdb_delete_skipped_count: RocksDB 已删除 Key 扫描数 - rocksdb_delete_skipped_count_tooltip: RocksDB 扫数据时遇到的已删除 (tombstone) Key 数量 (delete_skipped_count) - rocksdb_key_skipped_count: RocksDB Key 扫描数 - rocksdb_key_skipped_count_tooltip: RocksDB 扫数据时所有遇到的 Key 数量 (key_skipped_count) - rocksdb_block_cache_hit_count: RocksDB 缓存读次数 - rocksdb_block_cache_hit_count_tooltip: RocksDB 从 Block Cache 缓存中读数据的次数 (block_cache_hit_count) - rocksdb_block_read_count: RocksDB 文件系统读次数 - rocksdb_block_read_count_tooltip: RocksDB 从文件系统中读数据的次数 (block_read_count) - rocksdb_block_read_byte: RocksDB 文件系统读数据量 - rocksdb_block_read_byte_tooltip: RocksDB 从文件系统中读数据的数据量 (block_read_byte) - common: - status: - success: 成功 - error: 失败 - detail: - head: - title: 慢查询详情 - back: 列表 - sql: SQL 查询 - previous_sql: 上一条 SQL 查询 - plan: 执行计划 - tabs: - basic: 基本信息 - time: 执行时间 - copr: Coprocessor 读取 - txn: 事务 - toolbar: - schemas: - placeholder: 所有数据库 - selected: '{{ n }} 数据库' - columnTitle: 执行数据库名 - select_columns: - show_full_sql: 显示完整 SQL 文本 - refresh: 刷新 - export: 导出 - exporting: 正在导出 diff --git a/ui-ori/lib/apps/SlowQuery/utils/tableColumns.tsx b/ui-ori/lib/apps/SlowQuery/utils/tableColumns.tsx deleted file mode 100644 index 8bbc0ac40f..0000000000 --- a/ui-ori/lib/apps/SlowQuery/utils/tableColumns.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { Badge } from 'antd' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import React from 'react' -import { useTranslation } from 'react-i18next' - -import { SlowqueryModel } from '@lib/client' -import { TableColumnFactory } from '@lib/utils/tableColumnFactory' - -////////////////////////////////////////// - -function ResultStatusBadge({ status }: { status: 'success' | 'error' }) { - const { t } = useTranslation() - return ( - - ) -} - -////////////////////////////////////////// -const TRANS_KEY_PREFIX = 'slow_query.fields' - -export const derivedFields = { - cop_proc_avg: [ - { tooltipPrefix: 'mean', fieldName: 'cop_proc_avg' }, - { tooltipPrefix: 'max', fieldName: 'cop_proc_max' }, - { tooltipPrefix: 'p90', fieldName: 'cop_proc_p90' }, - ], - cop_wait_avg: [ - { tooltipPrefix: 'mean', fieldName: 'cop_wait_avg' }, - { tooltipPrefix: 'max', fieldName: 'cop_wait_max' }, - { tooltipPrefix: 'p90', fieldName: 'cop_wait_p90' }, - ], -} - -////////////////////////////////////////// - -export function slowQueryColumns( - rows: SlowqueryModel[], - tableSchemaColumns: string[], - showFullSQL?: boolean -): IColumn[] { - const tcf = new TableColumnFactory(TRANS_KEY_PREFIX, tableSchemaColumns) - return tcf.columns([ - tcf.sqlText('query', showFullSQL, rows), - tcf.textWithTooltip('digest', rows), - tcf.textWithTooltip('instance', rows), - tcf.textWithTooltip('db', rows), - tcf.textWithTooltip('connection_id', rows), - tcf.timestamp('timestamp', rows), - - tcf.bar.single('query_time', 's', rows), - tcf.bar.single('parse_time', 's', rows), - tcf.bar.single('compile_time', 's', rows), - tcf.bar.single('process_time', 's', rows), - tcf.bar.single('memory_max', 'bytes', rows), - tcf.bar.single('disk_max', 'bytes', rows), - - tcf.textWithTooltip('txn_start_ts', rows), - // success columnn - tcf.textWithTooltip('success', rows).patchConfig({ - name: 'result', - minWidth: 50, - maxWidth: 100, - onRender: (rec) => ( - - ), - }), - - // basic - // is_internal column - tcf.textWithTooltip('is_internal', rows).patchConfig({ - minWidth: 50, - maxWidth: 100, - onRender: (rec) => (rec.is_internal === 1 ? 'Yes' : 'No'), - }), - tcf.textWithTooltip('index_names', rows), - tcf.textWithTooltip('stats', rows), - tcf.textWithTooltip('backoff_types', rows), - // connection - tcf.textWithTooltip('user', rows), - tcf.textWithTooltip('host', rows), - // time - tcf.bar.single('wait_time', 'ns', rows), - tcf.bar.single('backoff_time', 'ns', rows), - tcf.bar.single('get_commit_ts_time', 'ns', rows), - tcf.bar.single('local_latch_wait_time', 'ns', rows), - tcf.bar.single('prewrite_time', 'ns', rows), - tcf.bar.single('commit_time', 'ns', rows), - tcf.bar.single('commit_backoff_time', 'ns', rows), - tcf.bar.single('resolve_lock_time', 'ns', rows), - // cop - tcf.bar.multiple({ sources: derivedFields.cop_proc_avg }, 'ns', rows), - tcf.bar.multiple({ sources: derivedFields.cop_wait_avg }, 'ns', rows), - // transaction - tcf.bar.single('write_keys', 'short', rows), - tcf.bar.single('write_size', 'bytes', rows), - tcf.bar.single('prewrite_region', 'short', rows), - tcf.bar.single('txn_retry', 'short', rows), - // cop? - tcf.bar.single('request_count', 'short', rows), - tcf.bar.single('process_keys', 'short', rows), - tcf.bar.single('total_keys', 'short', rows), - tcf.textWithTooltip('cop_proc_addr', rows), - tcf.textWithTooltip('cop_wait_addr', rows), - // rocksdb - tcf.bar.single('rocksdb_delete_skipped_count', 'short', rows).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - tcf.bar.single('rocksdb_key_skipped_count', 'short', rows).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - tcf.bar.single('rocksdb_block_cache_hit_count', 'short', rows).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - tcf.bar.single('rocksdb_block_read_count', 'short', rows).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - tcf.bar.single('rocksdb_block_read_byte', 'bytes', rows).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - ]) -} diff --git a/ui-ori/lib/apps/SlowQuery/utils/useSchemaColumns.ts b/ui-ori/lib/apps/SlowQuery/utils/useSchemaColumns.ts deleted file mode 100644 index ab61e0296f..0000000000 --- a/ui-ori/lib/apps/SlowQuery/utils/useSchemaColumns.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useState, useEffect } from 'react' - -import client from '@lib/client' -import { useClientRequest } from '@lib/utils/useClientRequest' - -export const useSchemaColumns = () => { - const [schemaColumns, setSchemaColumns] = useState([]) - const { data, isLoading } = useClientRequest((options) => { - return client.getInstance().slowQueryTableColumnsGet(options) - }) - - useEffect(() => { - if (!data) { - return - } - setSchemaColumns(data.map((d) => d.toLowerCase())) - }, [data]) - - return { - schemaColumns, - isLoading, - } -} diff --git a/ui-ori/lib/apps/SlowQuery/utils/useSlowQueryTableController.ts b/ui-ori/lib/apps/SlowQuery/utils/useSlowQueryTableController.ts deleted file mode 100644 index dbf80087a7..0000000000 --- a/ui-ori/lib/apps/SlowQuery/utils/useSlowQueryTableController.ts +++ /dev/null @@ -1,277 +0,0 @@ -import { useEffect, useMemo, useState } from 'react' -import { useSessionStorageState } from 'ahooks' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' - -import client, { ErrorStrategy, SlowqueryModel } from '@lib/client' -import { - calcTimeRange, - TimeRange, - IColumnKeys, - stringifyTimeRange, -} from '@lib/components' -import useOrderState, { IOrderOptions } from '@lib/utils/useOrderState' - -import { getSelectedFields } from '@lib/utils/tableColumnFactory' -import { CacheMgr } from '@lib/utils/useCache' -import useCacheItemIndex from '@lib/utils/useCacheItemIndex' - -import { derivedFields, slowQueryColumns } from './tableColumns' -import { useSchemaColumns } from './useSchemaColumns' - -export const DEF_SLOW_QUERY_COLUMN_KEYS: IColumnKeys = { - query: true, - timestamp: true, - query_time: true, - memory_max: true, -} - -const QUERY_OPTIONS = 'slow_query.query_options' - -const DEF_ORDER_OPTIONS: IOrderOptions = { - orderBy: 'timestamp', - desc: true, -} - -export interface ISlowQueryOptions { - timeRange?: TimeRange - schemas: string[] - searchText: string - limit: number - - digest: string - plans: string[] -} - -export const DEF_SLOW_QUERY_OPTIONS: ISlowQueryOptions = { - timeRange: undefined, - schemas: [], - searchText: '', - limit: 100, - - digest: '', - plans: [], -} - -export interface ISlowQueryTableController { - queryOptions: ISlowQueryOptions - setQueryOptions: (options: ISlowQueryOptions) => void - orderOptions: IOrderOptions - changeOrder: (orderBy: string, desc: boolean) => void - refresh: () => void - - allSchemas: string[] - loadingSlowQueries: boolean - slowQueries: SlowqueryModel[] - queryTimeRange: { beginTime: number; endTime: number } - - errors: Error[] - - tableColumns: IColumn[] - visibleColumnKeys: IColumnKeys - - downloadCSV: () => Promise - downloading: boolean - - saveClickedItemIndex: (idx: number) => void - getClickedItemIndex: () => number -} - -export default function useSlowQueryTableController( - cacheMgr: CacheMgr | null, - visibleColumnKeys: IColumnKeys, - showFullSQL: boolean, - options?: ISlowQueryOptions, - needSave: boolean = true -): ISlowQueryTableController { - const { orderOptions, changeOrder } = useOrderState( - 'slow_query', - needSave, - DEF_ORDER_OPTIONS - ) - - const [memoryQueryOptions, setMemoryQueryOptions] = useState( - options || DEF_SLOW_QUERY_OPTIONS - ) - const [sessionQueryOptions, setSessionQueryOptions] = useSessionStorageState( - QUERY_OPTIONS, - options || DEF_SLOW_QUERY_OPTIONS - ) - const queryOptions = useMemo( - () => (needSave ? sessionQueryOptions : memoryQueryOptions), - [needSave, memoryQueryOptions, sessionQueryOptions] - ) - const queryTimeRange = useMemo(() => { - const [beginTime, endTime] = calcTimeRange(queryOptions.timeRange) - return { beginTime, endTime } - }, [queryOptions]) - - const [allSchemas, setAllSchemas] = useState([]) - const [loadingSlowQueries, setLoadingSlowQueries] = useState(false) - const [slowQueries, setSlowQueries] = useState([]) - const [refreshTimes, setRefreshTimes] = useState(0) - - function setQueryOptions(newOptions: ISlowQueryOptions) { - if (needSave) { - setSessionQueryOptions(newOptions) - } else { - setMemoryQueryOptions(newOptions) - } - } - - const [errors, setErrors] = useState([]) - - const selectedFields = useMemo( - () => getSelectedFields(visibleColumnKeys, derivedFields).join(','), - [visibleColumnKeys] - ) - - const cacheKey = useMemo(() => { - const { schemas, digest, limit, plans, searchText, timeRange } = - queryOptions - const { desc, orderBy } = orderOptions - const cacheKey = `${schemas.join(',')}_${digest}_${limit}_${plans.join( - ',' - )}_${searchText}_${stringifyTimeRange( - timeRange - )}_${desc}_${orderBy}_${selectedFields}` - return cacheKey - }, [queryOptions, orderOptions, selectedFields]) - - function refresh() { - cacheMgr?.remove(cacheKey) - - setErrors([]) - setRefreshTimes((prev) => prev + 1) - } - - useEffect(() => { - async function querySchemas() { - try { - const res = await client.getInstance().infoListDatabases({ - errorStrategy: ErrorStrategy.Custom, - }) - setAllSchemas(res?.data || []) - } catch (e) { - setErrors((prev) => prev.concat(e)) - } - } - - querySchemas() - }, []) - - const { schemaColumns, isLoading: isSchemaLoading } = useSchemaColumns() - - const tableColumns = useMemo( - () => slowQueryColumns(slowQueries, schemaColumns, showFullSQL), - [slowQueries, schemaColumns, showFullSQL] - ) - - useEffect(() => { - if (!selectedFields.length) { - setSlowQueries([]) - setLoadingSlowQueries(false) - return - } - - async function getSlowQueryList() { - const cacheItem = cacheMgr?.get(cacheKey) - if (cacheItem) { - setSlowQueries(cacheItem) - return - } - - setLoadingSlowQueries(true) - try { - const res = await client - .getInstance() - .slowQueryListGet( - queryTimeRange.beginTime, - queryOptions.schemas, - orderOptions.desc, - queryOptions.digest, - queryTimeRange.endTime, - selectedFields, - queryOptions.limit, - orderOptions.orderBy, - queryOptions.plans, - queryOptions.searchText, - { - errorStrategy: ErrorStrategy.Custom, - } - ) - setSlowQueries(res.data || []) - cacheMgr?.set(cacheKey, res.data || []) - setErrors([]) - } catch (e) { - setErrors((prev) => prev.concat(e)) - } - setLoadingSlowQueries(false) - } - - if (isSchemaLoading) { - return - } - getSlowQueryList() - }, [ - queryOptions, - orderOptions, - queryTimeRange, - selectedFields, - refreshTimes, - cacheKey, - cacheMgr, - isSchemaLoading, - ]) - - const [downloading, setDownloading] = useState(false) - - async function downloadCSV() { - try { - setDownloading(true) - const res = await client.getInstance().slowQueryDownloadTokenPost({ - fields: '*', - db: queryOptions.schemas, - digest: queryOptions.digest, - text: queryOptions.searchText, - plans: queryOptions.plans, - orderBy: orderOptions.orderBy, - desc: orderOptions.desc, - end_time: queryTimeRange.endTime, - begin_time: queryTimeRange.beginTime, - }) - const token = res.data - if (token) { - window.location.href = `${client.getBasePath()}/slow_query/download?token=${token}` - } - } finally { - setDownloading(false) - } - } - - const { saveClickedItemIndex, getClickedItemIndex } = - useCacheItemIndex(cacheMgr) - - return { - queryOptions, - setQueryOptions, - orderOptions, - changeOrder, - refresh, - - allSchemas, - loadingSlowQueries, - slowQueries, - queryTimeRange, - - errors, - - tableColumns, - visibleColumnKeys, - - downloading, - downloadCSV, - - saveClickedItemIndex, - getClickedItemIndex, - } -} diff --git a/ui-ori/lib/apps/Statement/components/StatementsTable.tsx b/ui-ori/lib/apps/Statement/components/StatementsTable.tsx deleted file mode 100644 index cfa4455067..0000000000 --- a/ui-ori/lib/apps/Statement/components/StatementsTable.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { usePersistFn } from 'ahooks' -import React, { useCallback } from 'react' -import { useNavigate } from 'react-router-dom' -import { - DetailsRow, - IDetailsListProps, - IDetailsRowStyles, -} from 'office-ui-fabric-react' -import { getTheme } from 'office-ui-fabric-react/lib/Styling' - -import openLink from '@lib/utils/openLink' -import { CardTable, ICardTableProps } from '@lib/components' - -import DetailPage from '../pages/Detail' -import { IStatementTableController } from '../utils/useStatementTableController' - -interface Props extends Partial { - controller: IStatementTableController -} - -const theme = getTheme() - -export default function StatementsTable({ controller, ...restPrpos }: Props) { - const { - orderOptions, - changeOrder, - statementsTimeRange: { begin_time, end_time }, - loadingStatements, - statements, - errors, - tableColumns, - visibleColumnKeys, - - getClickedItemIndex, - saveClickedItemIndex, - } = controller - - const navigate = useNavigate() - const handleRowClick = usePersistFn( - (rec, idx, ev: React.MouseEvent) => { - // the evicted record's digest is empty string - if (!rec.digest) { - return - } - saveClickedItemIndex(idx) - const qs = DetailPage.buildQuery({ - digest: rec.digest, - schema: rec.schema_name, - beginTime: begin_time, - endTime: end_time, - }) - openLink(`/statement/detail?${qs}`, ev, navigate) - } - ) - - const getKey = useCallback((row) => `${row.digest}_${row.schema_name}`, []) - - return ( - - ) -} - -const renderRow: IDetailsListProps['onRenderRow'] = (props) => { - if (!props) { - return null - } - - const customStyles: Partial = {} - // the evicted record's digest is empty string - if (!props.item.digest) { - customStyles.root = { - backgroundColor: theme.palette.neutralLighter, - cursor: 'not-allowed', - } - } - - return -} diff --git a/ui-ori/lib/apps/Statement/components/index.ts b/ui-ori/lib/apps/Statement/components/index.ts deleted file mode 100644 index 2e3e8635f1..0000000000 --- a/ui-ori/lib/apps/Statement/components/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import StatementsTable from './StatementsTable' - -export { StatementsTable } diff --git a/ui-ori/lib/apps/Statement/index.meta.ts b/ui-ori/lib/apps/Statement/index.meta.ts deleted file mode 100644 index cfe7ba8dbf..0000000000 --- a/ui-ori/lib/apps/Statement/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ThunderboltOutlined } from '@ant-design/icons' - -export default { - id: 'statement', - routerPrefix: '/statement', - icon: ThunderboltOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_statement" */ '.'), -} diff --git a/ui-ori/lib/apps/Statement/index.tsx b/ui-ori/lib/apps/Statement/index.tsx deleted file mode 100644 index d4af59a6c4..0000000000 --- a/ui-ori/lib/apps/Statement/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react' -import { HashRouter as Router, Routes, Route } from 'react-router-dom' - -import { Root } from '@lib/components' -import useCache, { CacheContext } from '@lib/utils/useCache' - -import { Detail, List } from './pages' - -export default function () { - const statementCacheMgr = useCache(2) - - return ( - - - - - } /> - } /> - - - - - ) -} - -export * from './components' -export * from './pages' -export * from './utils/useStatementTableController' -export { default as useStatementTableController } from './utils/useStatementTableController' diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetail.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetail.tsx deleted file mode 100644 index ebc9ef3f6c..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetail.tsx +++ /dev/null @@ -1,182 +0,0 @@ -import React from 'react' -import { Space } from 'antd' -import { useTranslation } from 'react-i18next' -import { - AnimatedSkeleton, - Card, - CopyLink, - Descriptions, - ErrorBar, - Expand, - HighlightSQL, - Pre, - TextWithInfo, -} from '@lib/components' -import { useClientRequest } from '@lib/utils/useClientRequest' -import client from '@lib/client' -import formatSql from '@lib/utils/sqlFormatter' -import { useLocalStorageState } from '@lib/utils/useLocalStorageState' - -import type { IPageQuery } from '.' -import DetailTabs from './PlanDetailTabs' -import { useSchemaColumns } from '../../utils/useSchemaColumns' - -export interface IQuery extends IPageQuery { - plans: string[] - allPlans: number -} - -export interface IPlanDetailProps { - query: IQuery -} - -const STMT_DETAIL_PLAN_EXPAND = 'statement.detail_plan_expand' - -function PlanDetail({ query }: IPlanDetailProps) { - const { t } = useTranslation() - const { - data, - isLoading: isDataLoading, - error, - } = useClientRequest((reqConfig) => - client - .getInstance() - .statementsPlanDetailGet( - query.beginTime!, - query.digest!, - query.endTime!, - query.plans, - query.schema!, - reqConfig - ) - ) - const { isLoading: isSchemaLoading } = useSchemaColumns() - const isLoading = isDataLoading || isSchemaLoading - - const [detailExpand, setDetailExpand] = useLocalStorageState( - STMT_DETAIL_PLAN_EXPAND, - { - prev_query: false, - query: false, - plan: false, - } - ) - - const togglePrevQuery = () => - setDetailExpand((prev) => ({ ...prev, prev_query: !prev.prev_query })) - const toggleQuery = () => - setDetailExpand((prev) => ({ ...prev, query: !prev.query })) - const togglePlan = () => - setDetailExpand((prev) => ({ ...prev, plan: !prev.plan })) - - let titleKey - if (query.allPlans === 1) { - titleKey = 'one_for_all' - } else if (query.plans.length === query.allPlans) { - titleKey = 'all' - } else { - titleKey = 'some' - } - - return ( - - - {error && } - {data && ( - <> - - - - - - -
    - } - > - - } - > - - - - {data.prev_sample_text ? ( - - - - - - - } - > - - } - > - - - - ) : null} - - - - - - } - > - -
    {data.plan}
    -
    -
    - - - - - )} - - - ) -} - -export default PlanDetail diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabBasic.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabBasic.tsx deleted file mode 100644 index b01dcc4ddf..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabBasic.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Tooltip } from 'antd' -import React from 'react' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import { StatementModel } from '@lib/client' -import { DateTime, Pre, ValueWithTooltip, TextWrap } from '@lib/components' - -export const tabBasicItems = (data: StatementModel) => [ - { - key: 'table_names', - value: ( - - -
    {data.table_names}
    -
    -
    - ), - }, - { key: 'index_names', value: data.index_names }, - { - key: 'first_seen', - value: data.first_seen && ( - - ), - }, - { - key: 'last_seen', - value: data.last_seen && ( - - ), - }, - { - key: 'exec_count', - value: , - }, - { - key: 'sum_latency', - value: getValueFormat('ns')(data.sum_latency || 0, 1), - }, - { key: 'sample_user', value: data.sample_user }, - { - key: 'sum_errors', - value: , - }, - { - key: 'sum_warnings', - value: , - }, - { - key: 'avg_mem', - value: getValueFormat('bytes')(data.avg_mem || 0, 1), - }, - { - key: 'max_mem', - value: getValueFormat('bytes')(data.max_mem || 0, 1), - }, - { - key: 'avg_disk', - value: getValueFormat('bytes')(data.avg_disk || 0, 1), - }, - { - key: 'max_disk', - value: getValueFormat('bytes')(data.max_disk || 0, 1), - }, -] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx deleted file mode 100644 index 2157258849..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabCopr.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import React from 'react' - -import { StatementModel } from '@lib/client' -import { ValueWithTooltip } from '@lib/components' - -export const tabCoprItems = (data: StatementModel) => [ - { key: 'sum_cop_task_num', value: data.sum_cop_task_num }, - { - key: 'avg_processed_keys', - value: , - }, - { - key: 'max_processed_keys', - value: , - }, - { - key: 'avg_total_keys', - value: , - }, - { - key: 'max_total_keys', - value: , - }, - { - key: 'avg_rocksdb_block_cache_hit_count', - value: ( - - ), - }, - { - key: 'max_rocksdb_block_cache_hit_count', - value: ( - - ), - }, - { - key: 'avg_rocksdb_block_read_byte', - value: ( - - ), - }, - { - key: 'max_rocksdb_block_read_byte', - value: ( - - ), - }, - { - key: 'avg_rocksdb_block_read_count', - value: , - }, - { - key: 'max_rocksdb_block_read_count', - value: , - }, - { - key: 'avg_rocksdb_delete_skipped_count', - value: ( - - ), - }, - { - key: 'max_rocksdb_delete_skipped_count', - value: ( - - ), - }, - { - key: 'avg_rocksdb_key_skipped_count', - value: ( - - ), - }, - { - key: 'max_rocksdb_key_skipped_count', - value: ( - - ), - }, -] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTime.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTime.tsx deleted file mode 100644 index d644aed867..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTime.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import React from 'react' -import { StatementModel } from '@lib/client' -import { Typography } from 'antd' -import { TFunction } from 'i18next' - -export const tabTimeItems = (data: StatementModel, t: TFunction) => [ - { - key: 'parse_latency', - avg: data.avg_parse_latency, - max: data.max_parse_latency, - }, - { - key: 'compile_latency', - avg: data.avg_compile_latency, - max: data.max_compile_latency, - }, - { key: 'wait_time', avg: data.avg_wait_time, max: data.max_wait_time }, - { - key: 'process_time', - avg: data.avg_process_time, - max: data.max_process_time, - }, - { - key: 'backoff_time', - avg: data.avg_backoff_time, - max: data.max_backoff_time, - }, - { - key: 'get_commit_ts_time', - avg: data.avg_get_commit_ts_time, - max: data.max_get_commit_ts_time, - }, - { - key: 'local_latch_wait_time', - avg: data.avg_local_latch_wait_time, - max: data.max_local_latch_wait_time, - }, - { - key: 'resolve_lock_time', - avg: data.avg_resolve_lock_time, - max: data.max_resolve_lock_time, - }, - { - key: 'prewrite_time', - avg: data.avg_prewrite_time, - max: data.max_prewrite_time, - }, - { - key: 'commit_time', - avg: data.avg_commit_time, - max: data.max_commit_time, - }, - { - key: 'commit_backoff_time', - avg: data.avg_commit_backoff_time, - max: data.max_commit_backoff_time, - }, - { - key: 'query_time2', - keyDisplay: ( - - {t('statement.fields.query_time2')} - - ), - avg: data.avg_latency, - min: data.min_latency, - max: data.max_latency, - }, -] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTxn.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTxn.tsx deleted file mode 100644 index 7c3fa41ddb..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabTxn.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import { StatementModel } from '@lib/client' -import { ValueWithTooltip } from '@lib/components' - -export const tabTxnItems = (data: StatementModel) => [ - { - key: 'avg_affected_rows', - value: , - }, - { - key: 'sum_backoff_times', - value: , - }, - { - key: 'avg_write_keys', - value: , - }, - { - key: 'max_write_keys', - value: , - }, - { - key: 'avg_write_size', - value: getValueFormat('bytes')(data.avg_write_size || 0, 1), - }, - { - key: 'max_write_size', - value: getValueFormat('bytes')(data.max_write_size || 0, 1), - }, - { - key: 'avg_prewrite_regions', - value: , - }, - { - key: 'max_prewrite_regions', - value: , - }, - { - key: 'avg_txn_retry', - value: , - }, - { - key: 'max_txn_retry', - value: , - }, -] diff --git a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabs.tsx b/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabs.tsx deleted file mode 100644 index e9379db1ed..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/PlanDetailTabs.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import React from 'react' -import { useTranslation } from 'react-i18next' -import { CardTable, CardTabs } from '@lib/components' -import { StatementModel } from '@lib/client' -import { valueColumns, timeValueColumns } from '@lib/utils/tableColumns' - -import { tabBasicItems } from './PlanDetailTabBasic' -import { tabTimeItems } from './PlanDetailTabTime' -import { tabCoprItems } from './PlanDetailTabCopr' -import { tabTxnItems } from './PlanDetailTabTxn' -import SlowQueryTab from './SlowQueryTab' -import { useSchemaColumns } from '../../utils/useSchemaColumns' -import type { IQuery } from './PlanDetail' - -export default function DetailTabs({ - data, - query, -}: { - data: StatementModel - query: IQuery -}) { - const { t } = useTranslation() - const { schemaColumns } = useSchemaColumns() - const columnsSet = new Set(schemaColumns) - - const tabs = [ - { - key: 'basic', - title: t('statement.pages.detail.tabs.basic'), - content: () => { - const items = tabBasicItems(data) - const columns = valueColumns('statement.fields.') - return ( - - ) - }, - }, - { - key: 'time', - title: t('statement.pages.detail.tabs.time'), - content: () => { - const items = tabTimeItems(data, t) - const columns = timeValueColumns('statement.fields.', items) - return ( - - ) - }, - }, - { - key: 'copr', - title: t('statement.pages.detail.tabs.copr'), - content: () => { - const items = tabCoprItems(data).filter((item) => - columnsSet.has(item.key) - ) - const columns = valueColumns('statement.fields.') - return ( - - ) - }, - }, - { - key: 'txn', - title: t('statement.pages.detail.tabs.txn'), - content: () => { - const items = tabTxnItems(data) - const columns = valueColumns('statement.fields.') - return ( - - ) - }, - }, - { - key: 'slow_query', - title: t('statement.pages.detail.tabs.slow_query'), - content: () => , - }, - ] - return -} diff --git a/ui-ori/lib/apps/Statement/pages/Detail/SlowQueryTab.tsx b/ui-ori/lib/apps/Statement/pages/Detail/SlowQueryTab.tsx deleted file mode 100644 index 5b5fbfe3c5..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/SlowQueryTab.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react' -import SlowQueriesTable from '@lib/apps/SlowQuery/components/SlowQueriesTable' -import { IQuery } from './PlanDetail' -import useSlowQueryTableController, { - DEF_SLOW_QUERY_OPTIONS, - DEF_SLOW_QUERY_COLUMN_KEYS, -} from '@lib/apps/SlowQuery/utils/useSlowQueryTableController' - -export interface ISlowQueryTabProps { - query: IQuery -} - -export default function SlowQueryTab({ query }: ISlowQueryTabProps) { - const controller = useSlowQueryTableController( - null, - DEF_SLOW_QUERY_COLUMN_KEYS, - false, - { - ...DEF_SLOW_QUERY_OPTIONS, - timeRange: { - type: 'absolute', - value: [query.beginTime!, query.endTime!], - }, - schemas: [query.schema!], - limit: 100, - digest: query.digest!, - plans: query.plans, - }, - false - ) - - return -} diff --git a/ui-ori/lib/apps/Statement/pages/Detail/index.tsx b/ui-ori/lib/apps/Statement/pages/Detail/index.tsx deleted file mode 100644 index 484fa76f68..0000000000 --- a/ui-ori/lib/apps/Statement/pages/Detail/index.tsx +++ /dev/null @@ -1,208 +0,0 @@ -import { Alert, Space } from 'antd' -import { SelectionMode } from 'office-ui-fabric-react/lib/DetailsList' -import { Selection } from 'office-ui-fabric-react/lib/Selection' -import React, { useEffect, useMemo, useRef, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { Link, useLocation } from 'react-router-dom' -import { ArrowLeftOutlined } from '@ant-design/icons' - -import client, { StatementModel } from '@lib/client' -import { - AnimatedSkeleton, - CardTable, - DateTime, - Descriptions, - ErrorBar, - Expand, - Head, - HighlightSQL, - TextWithInfo, -} from '@lib/components' -import CopyLink from '@lib/components/CopyLink' -import formatSql from '@lib/utils/sqlFormatter' -import { buildQueryFn, parseQueryFn } from '@lib/utils/query' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { useLocalStorageState } from '@lib/utils/useLocalStorageState' - -import { planColumns as genPlanColumns } from '../../utils/tableColumns' -import PlanDetail from './PlanDetail' - -export interface IPageQuery { - digest?: string - schema?: string - beginTime?: number - endTime?: number -} - -const STMT_DETAIL_EXPAND = 'statement.detail_expand' - -function DetailPage() { - const query = DetailPage.parseQuery(useLocation().search) - const { - data: plans, - isLoading, - error, - } = useClientRequest((reqConfig) => - client - .getInstance() - .statementsPlansGet( - query.beginTime!, - query.digest!, - query.endTime!, - query.schema!, - reqConfig - ) - ) - const { t } = useTranslation() - const planColumns = useMemo(() => genPlanColumns(plans || []), [plans]) - - const [selectedPlans, setSelectedPlans] = useState([]) - const selection = useRef( - new Selection({ - onSelectionChanged: () => { - const s = selection.current.getSelection() as StatementModel[] - setSelectedPlans(s.map((v) => v.plan_digest || '')) - }, - }) - ) - - const [sqlExpanded, setSqlExpanded] = useLocalStorageState( - STMT_DETAIL_EXPAND, - false - ) - const toggleSqlExpanded = () => setSqlExpanded((prev) => !prev) - - useEffect(() => { - if (plans && plans.length > 0) { - selection.current.setAllSelected(true) - } - }, [plans]) - - return ( -
    - - {t('statement.pages.detail.head.back')} - - } - > - - {error && } - {plans && plans.length > 0 && ( - <> - - - - - - - - } - > - - } - > - - - - - - - - } - > - {plans[0].digest} - - - } - > - {' '} - ~{' '} - - - - } - > - {plans.length} - - - - - - } - > - {query.schema!} - - -
    1 ? 'block' : 'none', - }} - > - - -
    - - )} -
    - - - {selectedPlans.length > 0 && plans && plans.length > 0 && ( - - )} -
    - ) -} - -DetailPage.buildQuery = buildQueryFn() -DetailPage.parseQuery = parseQueryFn() - -export default DetailPage diff --git a/ui-ori/lib/apps/Statement/pages/List/List.module.less b/ui-ori/lib/apps/Statement/pages/List/List.module.less deleted file mode 100644 index c168b362f3..0000000000 --- a/ui-ori/lib/apps/Statement/pages/List/List.module.less +++ /dev/null @@ -1,15 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.list { - &_container { - display: flex; - flex-direction: column; - height: 100vh; - } - - &_toolbar { - @media only screen and (max-width: @screen-md) { - flex-direction: column; - } - } -} diff --git a/ui-ori/lib/apps/Statement/pages/List/StatementSettingForm.tsx b/ui-ori/lib/apps/Statement/pages/List/StatementSettingForm.tsx deleted file mode 100755 index 4229be08cd..0000000000 --- a/ui-ori/lib/apps/Statement/pages/List/StatementSettingForm.tsx +++ /dev/null @@ -1,211 +0,0 @@ -import React, { useState, useCallback } from 'react' -import { - Form, - Skeleton, - Switch, - Input, - Slider, - Space, - Button, - Modal, -} from 'antd' -import { ExclamationCircleOutlined } from '@ant-design/icons' -import { useTranslation } from 'react-i18next' -import client, { StatementEditableConfig } from '@lib/client' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { ErrorBar } from '@lib/components' -import { useIsWriteable } from '@lib/utils/store' - -interface Props { - onClose: () => void - onConfigUpdated: () => any -} - -const convertArrToObj = (arr: number[]) => - arr.reduce((acc, cur) => { - acc[cur] = cur - return acc - }, {}) - -function StatementSettingForm({ onClose, onConfigUpdated }: Props) { - const [submitting, setSubmitting] = useState(false) - const { t } = useTranslation() - const isWriteable = useIsWriteable() - - const { - data: initialConfig, - isLoading: loading, - error, - } = useClientRequest((reqConfig) => - client.getInstance().statementsConfigGet(reqConfig) - ) - - const handleSubmit = useCallback( - (values) => { - async function updateConfig(values) { - const newConfig: StatementEditableConfig = { - enable: values.enable, - max_size: values.max_size, - refresh_interval: values.refresh_interval * 60, - history_size: values.history_size, - internal_query: values.internal_query, - } - try { - setSubmitting(true) - await client.getInstance().statementsConfigPost(newConfig) - onClose() - onConfigUpdated() - } finally { - setSubmitting(false) - } - } - - if (!values.enable) { - // warning - Modal.confirm({ - title: t('statement.settings.close_statement'), - icon: , - content: t('statement.settings.close_statement_warning'), - okText: t('statement.settings.actions.close'), - cancelText: t('statement.settings.actions.cancel'), - okButtonProps: { danger: true }, - onOk: () => updateConfig(values), - }) - } else { - updateConfig(values) - } - }, - [t, onClose, onConfigUpdated] - ) - - return ( - <> - {error && } - {loading && } - {!loading && initialConfig && ( -
    - - - - - - prev.enable !== cur.enable} - > - {({ getFieldValue }) => - getFieldValue('enable') && ( - <> - - - - - - - - - - - - - - - - - - - - - - - prev.refresh_interval !== cur.refresh_interval || - prev.history_size !== cur.history_size - } - > - {({ getFieldValue }) => { - const refreshInterval = - getFieldValue('refresh_interval') || 0 - const historySize = getFieldValue('history_size') || 0 - const totalMins = refreshInterval * historySize - const day = Math.floor(totalMins / (24 * 60)) - const hour = Math.floor((totalMins - day * 24 * 60) / 60) - const min = totalMins - day * 24 * 60 - hour * 60 - return `${day} day ${hour} hour ${min} min` - }} - - - - - - ) - } - - - - - - - -
    - )} - - ) -} - -export default StatementSettingForm diff --git a/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.module.less b/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.module.less deleted file mode 100644 index 34f62630a8..0000000000 --- a/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.module.less +++ /dev/null @@ -1,46 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.dropdown_content_container { - background-color: @select-dropdown-bg; - padding: @padding-md; - border-radius: @border-radius-base; - outline: none; - box-shadow: @box-shadow-base; - box-sizing: border-box; - - .usual_time_ranges { - span { - color: @gray-6; - } - - margin-bottom: 16px; - } - - .custom_time_ranges { - span { - color: @gray-6; - } - } - - .time_range_items { - max-width: 360px; - margin-top: 8px; - display: flex; - flex-wrap: wrap; - } - - .time_range_item { - width: 120px; - padding-bottom: 4px; - cursor: pointer; - } - - .time_range_item_disabled { - color: @gray-6; - cursor: not-allowed; - } - - .time_range_item_active { - color: @primary-color; - } -} diff --git a/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.tsx b/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.tsx deleted file mode 100644 index a4bac9bae8..0000000000 --- a/ui-ori/lib/apps/Statement/pages/List/TimeRangeSelector.tsx +++ /dev/null @@ -1,272 +0,0 @@ -import React, { useState, useMemo, useEffect } from 'react' -import { Dropdown, Button, Slider } from 'antd' -import { ClockCircleOutlined, DownOutlined } from '@ant-design/icons' -import { getValueFormat } from '@baurine/grafana-value-formats' -import cx from 'classnames' -import dayjs from 'dayjs' -import { useTranslation } from 'react-i18next' - -import { StatementTimeRange } from '@lib/client' - -import styles from './TimeRangeSelector.module.less' - -// This component looks similar with @lib/component/TimeRangeSelector, -// but they have totally different logic, so it prefers to not reuse their duplicated part - -const RECENT_SECONDS = [ - 15 * 60, - 30 * 60, - 60 * 60, - - 2 * 60 * 60, - 6 * 60 * 60, - 12 * 60 * 60, - - 24 * 60 * 60, - 2 * 24 * 60 * 60, - 3 * 24 * 60 * 60, - - 7 * 24 * 60 * 60, - 14 * 24 * 60 * 60, - 28 * 24 * 60 * 60, -] - -interface RecentSecTime { - type: 'recent' - value: number // unit: seconds -} - -interface RangeTime { - type: 'absolute' - value: [number, number] // unit: seconds -} - -export type TimeRange = RecentSecTime | RangeTime - -export const DEFAULT_TIME_RANGE: TimeRange = { - type: 'recent', - value: 30 * 60, -} - -export function stringifyTimeRange(timeRange?: TimeRange): string { - let t2 = timeRange ?? DEFAULT_TIME_RANGE - if (t2.type === 'absolute') { - return `${t2.type}_${t2.value[0]}_${t2.value[1]}` - } else { - return `${t2.type}_${t2.value}` - } -} - -// timePoints are descent array -function findNearTimePoint(timePoint: number, timePoints: number[]): number { - if (timePoints.length === 0) { - return timePoint - } - if (timePoints.length === 1) { - return timePoints[0] - } - let cur = timePoints[0] - for (let i = 0; i < timePoints.length; i++) { - cur = timePoints[i] - if (cur > timePoint) { - continue - } - // find the first value less than or equal with timePoint - if (i === 0) { - return cur - } - const pre = timePoints[i - 1] - if (pre - timePoint < timePoint - cur) { - return pre - } else { - return cur - } - } - return cur -} - -function calcAllTime(timeRanges: StatementTimeRange[]) { - const allBeginTime = timeRanges.map((t) => t.begin_time!) - const allEndTime = timeRanges.map((t) => t.end_time!) - const minBeginTime: number = allBeginTime[allBeginTime.length - 1] || 0 - const maxBeginTime: number = allBeginTime[0] || 0 - const maxEndTime: number = allEndTime[0] || 0 - return { - allBeginTime, - allEndTime, - minBeginTime, - maxBeginTime, - maxEndTime, - } -} - -export function calcValidStatementTimeRange( - curTimeRange: TimeRange, - timeRanges: StatementTimeRange[] -): StatementTimeRange { - const { allBeginTime, allEndTime, maxEndTime } = calcAllTime(timeRanges) - if (curTimeRange.type === 'recent') { - const beginTime = findNearTimePoint( - maxEndTime - curTimeRange.value, - allBeginTime - ) - return { - begin_time: beginTime, - end_time: maxEndTime, - } - } else { - const nearBeginTime = findNearTimePoint(curTimeRange.value[0], allBeginTime) - const nearEndTime = findNearTimePoint(curTimeRange.value[1], allEndTime) - return { - begin_time: nearBeginTime, - end_time: nearEndTime, - } - } -} - -function calcCommonTimeRange( - minServerDataTime: number, - maxServerDataTime: number -): { enabled: boolean; value: number }[] { - if (!maxServerDataTime) { - return RECENT_SECONDS.map((s) => ({ enabled: false, value: s })) - } - const validTimeRange = maxServerDataTime - minServerDataTime - return RECENT_SECONDS.map((s) => ({ enabled: s <= validTimeRange, value: s })) -} - -export interface ITimeRangeSelectorProps { - value: TimeRange - timeRanges: StatementTimeRange[] - onChange: (val: TimeRange) => void -} - -export default function TimeRangeSelector({ - value: curTimeRange, - timeRanges, - onChange, -}: ITimeRangeSelectorProps) { - const { t } = useTranslation() - const { minBeginTime, maxEndTime } = useMemo( - () => calcAllTime(timeRanges), - [timeRanges] - ) - const [sliderTimeRange, setSliderTimeRange] = useState( - () => calcValidStatementTimeRange(curTimeRange, timeRanges) - ) - const [dropdownVisible, setDropdownVisible] = useState(false) - const commonTimeRange = useMemo( - () => calcCommonTimeRange(minBeginTime, maxEndTime), - [minBeginTime, maxEndTime] - ) - - useEffect(() => { - setSliderTimeRange(calcValidStatementTimeRange(curTimeRange, timeRanges)) - }, [curTimeRange, timeRanges]) - - function handleRecentChange(seconds: number) { - const timeRange: TimeRange = { - type: 'recent', - value: seconds, - } - onChange(timeRange) - - setSliderTimeRange(calcValidStatementTimeRange(timeRange, timeRanges)) - setDropdownVisible(false) - } - - function handleSliderChange(values: [number, number]) { - if (values.every((v) => v === 0)) { - return - } - - const timeRange: TimeRange = { - type: 'absolute', - value: values, - } - setSliderTimeRange(calcValidStatementTimeRange(timeRange, timeRanges)) - } - - function handleSliderAfterChange(values) { - onChange({ - type: 'absolute', - value: values, - }) - } - - const dropdownContent = ( -
    -
    - - {t( - 'statement.pages.overview.toolbar.time_range_selector.usual_time_ranges' - )} - -
    - {commonTimeRange.map(({ enabled, value: seconds }) => ( -
    enabled && handleRecentChange(seconds)} - > - {t('statement.pages.overview.toolbar.time_range_selector.recent')}{' '} - {getValueFormat('s')(seconds, 0)} -
    - ))} -
    -
    -
    - - {t( - 'statement.pages.overview.toolbar.time_range_selector.custom_time_ranges' - )} - - dayjs.unix(val!).format('HH:mm')} - /> - - {dayjs.unix(sliderTimeRange.begin_time!).format('MM-DD HH:mm')} ~{' '} - {dayjs.unix(sliderTimeRange.end_time!).format('MM-DD HH:mm')} - -
    -
    - ) - - return ( - - - - ) -} diff --git a/ui-ori/lib/apps/Statement/pages/List/index.tsx b/ui-ori/lib/apps/Statement/pages/List/index.tsx deleted file mode 100644 index 517693a5b8..0000000000 --- a/ui-ori/lib/apps/Statement/pages/List/index.tsx +++ /dev/null @@ -1,258 +0,0 @@ -import React, { useState, useContext } from 'react' -import { - Space, - Tooltip, - Drawer, - Button, - Checkbox, - Result, - Input, - Dropdown, - Menu, - message, -} from 'antd' -import { - ReloadOutlined, - LoadingOutlined, - SettingOutlined, - ExportOutlined, - MenuOutlined, -} from '@ant-design/icons' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import { useTranslation } from 'react-i18next' - -import { CacheContext } from '@lib/utils/useCache' -import { Card, ColumnsSelector, Toolbar, MultiSelect } from '@lib/components' -import { useLocalStorageState } from '@lib/utils/useLocalStorageState' - -import { StatementsTable } from '../../components' -import StatementSettingForm from './StatementSettingForm' -import TimeRangeSelector from './TimeRangeSelector' -import useStatementTableController, { - DEF_STMT_COLUMN_KEYS, -} from '../../utils/useStatementTableController' - -import styles from './List.module.less' - -const { Search } = Input - -const STMT_VISIBLE_COLUMN_KEYS = 'statement.visible_column_keys' -const STMT_SHOW_FULL_SQL = 'statement.show_full_sql' - -export default function StatementsOverview() { - const { t } = useTranslation() - - const statementCacheMgr = useContext(CacheContext) - - const [showSettings, setShowSettings] = useState(false) - const [visibleColumnKeys, setVisibleColumnKeys] = useLocalStorageState( - STMT_VISIBLE_COLUMN_KEYS, - DEF_STMT_COLUMN_KEYS, - true - ) - const [showFullSQL, setShowFullSQL] = useLocalStorageState( - STMT_SHOW_FULL_SQL, - false - ) - - const controller = useStatementTableController( - statementCacheMgr, - visibleColumnKeys, - showFullSQL - ) - const { - queryOptions, - setQueryOptions, - refresh, - enable, - allTimeRanges, - allSchemas, - allStmtTypes, - loadingStatements, - tableColumns, - isTimeRangeOutdated, - - downloadCSV, - downloading, - } = controller - - function exportCSV() { - const hide = message.loading( - t('statement.pages.overview.toolbar.exporting') + '...', - 0 - ) - downloadCSV().finally(hide) - } - - function menuItemClick({ key }) { - switch (key) { - case 'export': - exportCSV() - break - } - } - - const dropdownMenu = ( - - }> - {downloading - ? t('statement.pages.overview.toolbar.exporting') - : t('statement.pages.overview.toolbar.export')} - - - ) - - return ( -
    - - - - - setQueryOptions({ - ...queryOptions, - timeRange, - }) - } - /> - - setQueryOptions({ - ...queryOptions, - schemas, - }) - } - items={allSchemas} - /> - - setQueryOptions({ - ...queryOptions, - stmtTypes, - }) - } - items={allStmtTypes} - /> - - setQueryOptions({ ...queryOptions, searchText }) - } - /> - - - - {tableColumns.length > 0 && ( - setShowFullSQL(e.target.checked)} - > - {t( - 'statement.pages.overview.toolbar.select_columns.show_full_sql' - )} - - } - /> - )} - {enable && ( - - {loadingStatements ? ( - - ) : ( - - )} - - )} - - setShowSettings(true)} /> - - -
    - -
    -
    -
    -
    -
    - - {enable ? ( -
    - - - -
    - ) : ( - setShowSettings(true)}> - {t('statement.settings.open_setting')} - - } - /> - )} - - setShowSettings(false)} - destroyOnClose={true} - > - setShowSettings(false)} - onConfigUpdated={refresh} - /> - -
    - ) -} - -function RefreshTooltip({ isOutdated, children }) { - const { t } = useTranslation() - return isOutdated ? ( - - {children} - - ) : ( - - {children} - - ) -} diff --git a/ui-ori/lib/apps/Statement/pages/index.ts b/ui-ori/lib/apps/Statement/pages/index.ts deleted file mode 100644 index 641e4de57a..0000000000 --- a/ui-ori/lib/apps/Statement/pages/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import List from './List' -import Detail from './Detail' - -export { List, Detail } diff --git a/ui-ori/lib/apps/Statement/translations/en.yaml b/ui-ori/lib/apps/Statement/translations/en.yaml deleted file mode 100755 index c65f5add76..0000000000 --- a/ui-ori/lib/apps/Statement/translations/en.yaml +++ /dev/null @@ -1,160 +0,0 @@ -statement: - nav_title: SQL Statements - pages: - detail: - head: - back: List - title: Statement Information - desc: - time_range: Selected Time Range - plans: - note: There are multiple execution plans for this kind of SQL statement. You can choose to view one or multiple of them. - title: - one_for_all: Execution Detail - all: Execution Detail of All Plans - some: 'Execution Detail of Selected {{n}} Plans' - tabs: - basic: Basic - time: Time - copr: Coprocessor Read - txn: Transaction - slow_query: Slow Query - overview: - toolbar: - schemas: - placeholder: All Databases - selected: '{{ n }} Databases' - columnTitle: Execution Database Name - statement_types: - placeholder: All Kinds - selected: '{{ n }} Kinds' - columnTitle: Statement Kind - select_columns: - show_full_sql: Show Full Query Text - refresh: Refresh - refresh_outdated: This list is outdated. To see latest data, click "Refresh". - time_range_selector: - name: Select Time Range - recent: Recent - usual_time_ranges: Common - custom_time_ranges: Custom - export: Export - exporting: Exporting - settings: - title: Settings - disabled_result: - title: Feature Not Enabled - sub_title: | - Statement feature is not enabled so that statement history cannot be viewed. - You can modify settings to enable the feature and wait for new data being collected. - open_setting: Open Settings - close_statement: Disable Statement Feature - close_statement_warning: Are you sure want to disable this feature? Current statement history will be cleared. - switch: Enable Feature - switch_tooltip: Whether Statement feature is enabled. When enabled, there will be a small SQL statement execution overhead. - max_size: 'Max # Statement' - max_size_tooltip: Max number of statement to collect. After exceeding, old statement information will be dropped. You may enlarge this setting when memory is sufficient and you discovered that data displayed in UI is incomplete. - refresh_interval: Window Size (min) - refresh_interval_tooltip: By reducing this setting you can select time range more precisely. - history_size: '# Windows' - history_size_tooltip: By enlarging this setting more statement history will be preserved, with larger memory cost. - keep_duration: SQL Statement History Size - keep_duration_tooltip: Window Size × Number of Windows - internal_query: Collect Internal Queries - internal_query_tooltip: After enabled, {{distro.tidb}} internal queries will be collected as well. - actions: - save: Save - close: Disable - cancel: Cancel - fields: - table_names: Table Names - related_schemas: Database - related_schemas_tooltip: Related databases of the statement - plan_digest: Plan ID - plan_digest_tooltip: Different execution plans have different plan ID - digest_text: Statement Template - digest_text_tooltip: Similar queries have same statement template even for different query parameters - sum_latency: Total Latency - sum_latency_tooltip: Total execution time for this kind of statement - exec_count: '# Exec' - exec_count_tooltip: Total execution count for this kind of statement - plan_count: '# Plans' - plan_count_tooltip: Number of distinct execution plans of this statement in current time range - avg_latency: Mean Latency - avg_latency_tooltip: Execution time of single query - avg_mem: Mean Memory - avg_mem_tooltip: Memory usage of single query - max_mem: Max Memory - max_mem_tooltip: Maximum memory usage of single query - avg_disk: Mean Disk - avg_disk_tooltip: Disk usage of single query - max_disk: Max Disk - max_disk_tooltip: Maximum disk usage of single query - index_names: Index Name - index_names_tooltip: The name of the used index - first_seen: First Seen - last_seen: Last Seen - sample_user: Execution User - sample_user_tooltip: The user that executes the query (sampled) - sum_errors: Total Errors - sum_warnings: Total Warnings - errors_warnings: Errors / Warnings - errors_warnings_tooltip: Total Errors and Total Warnings - parse_latency: Parse Time - parse_latency_tooltip: Time consumed when parsing the query - compile_latency: Compile - compile_latency_tooltip: Time consumed when optimizing the query - wait_time: Coprocessor Wait Time - process_time: Coprocessor Execution Time - total_process_time: Total Execution Time - total_wait_time: Total Wait Time - backoff_time: Backoff Retry Time - backoff_time_tooltip: The waiting time before retry when a query encounters errors that require a retry - get_commit_ts_time: Get Commit Ts Time - local_latch_wait_time: Local Latch Wait Time - resolve_lock_time: Resolve Lock Time - prewrite_time: Prewrite Time - commit_time: Commit Time - commit_backoff_time: Commit Backoff Retry Time - latency: Query - query_time2: Query Time - query_time2_tooltip: The execution time of a query (due to the parallel execution, it may be significantly smaller than the above time) - sum_cop_task_num: Total Coprocessor Tasks - avg_processed_keys: Mean Visible Versions Per Query - max_processed_keys: Max Visible Versions Per Query - avg_total_keys: Mean Meet Versions Per Query - avg_total_keys_tooltip: Meet versions contains overwritten or deleted versions - max_total_keys: Max Meet Versions Per Query - avg_affected_rows: Mean Affected Rows - sum_backoff_times: Total Backoff Count - avg_write_keys: Mean Written Keys - max_write_keys: Max Written Keys - avg_write_size: Mean Written Data Size - max_write_size: Max Written Data Size - avg_prewrite_regions: Mean Prewrite Regions - max_prewrite_regions: Max Prewrite Regions - avg_txn_retry: Mean Transaction Retries - max_txn_retry: Max Transaction Retries - digest: Query Template ID - digest_tooltip: a.k.a. Query digest - schema_name: Execution Database - schema_name_tooltip: The database used to execute the query - query_sample_text: Query Sample - prev_sample_text: Previous Query Sample - plan: Execution Plan - - avg_rocksdb_delete_skipped_count: Mean RocksDB Skipped Deletions - avg_rocksdb_delete_skipped_count_tooltip: Total number of deleted (a.k.a. tombstone) key versions that are skipped during iteration (RocksDB delete_skipped_count) - max_rocksdb_delete_skipped_count: Max RocksDB Skipped Deletions - avg_rocksdb_key_skipped_count: Mean RocksDB Skipped Keys - avg_rocksdb_key_skipped_count_tooltip: Total number of keys skipped during iteration (RocksDB key_skipped_count) - max_rocksdb_key_skipped_count: Max RocksDB Skipped Keys - avg_rocksdb_block_cache_hit_count: Mean RocksDB Block Cache Hits - avg_rocksdb_block_cache_hit_count_tooltip: Total number of hits from the block cache (RocksDB block_cache_hit_count) - max_rocksdb_block_cache_hit_count: Max RocksDB Block Cache Hits - avg_rocksdb_block_read_count: Mean RocksDB Block Reads - avg_rocksdb_block_read_count_tooltip: Total number of blocks RocksDB read from file (RocksDB block_read_count) - max_rocksdb_block_read_count: Max RocksDB Block Reads - avg_rocksdb_block_read_byte: Mean RocksDB FS Read Size - avg_rocksdb_block_read_byte_tooltip: Total number of bytes RocksDB read from file (RocksDB block_read_byte) - max_rocksdb_block_read_byte: Max RocksDB FS Read Size diff --git a/ui-ori/lib/apps/Statement/translations/zh.yaml b/ui-ori/lib/apps/Statement/translations/zh.yaml deleted file mode 100755 index 05feca96f8..0000000000 --- a/ui-ori/lib/apps/Statement/translations/zh.yaml +++ /dev/null @@ -1,168 +0,0 @@ -statement: - nav_title: SQL 语句分析 - pages: - detail: - head: - back: 返回列表 - title: SQL 语句信息 - desc: - time_range: 时间范围 - plans: - note: 该 SQL 模板在选定的时间范围内有多个执行计划,您可以选择查看其中一个或多个执行计划。 - title: - one_for_all: 执行详情 - all: 所有执行计划的执行详情 - some: '{{n}} 个执行计划的执行详情' - tabs: - basic: 基本信息 - time: 执行时间 - copr: Coprocessor 读取 - txn: 事务 - slow_query: 慢查询 - overview: - toolbar: - schemas: - placeholder: 所有数据库 - selected: '{{ n }} 数据库' - columnTitle: 执行数据库名 - statement_types: - placeholder: 所有类型 - selected: '{{ n }} 类型' - columnTitle: SQL 语句类型 - select_columns: - show_full_sql: 显示完整 SQL 文本 - refresh: 刷新 - refresh_outdated: 列表数据已非最近数据,刷新以查看最新数据 - time_range_selector: - name: 选择时间段 - recent: 最近 - usual_time_ranges: 常用时间范围 - custom_time_ranges: 自定义时间范围 - export: 导出 - exporting: 正在导出 - settings: - title: 设置 - disabled_result: - title: 该功能未启用 - sub_title: | - SQL 语句分析功能未启用,因此无法查看历史记录。 - 您可以修改设置打开该功能后等待新数据收集。 - open_setting: 打开设置 - close_statement: 关闭 SQL 语句分析功能 - close_statement_warning: 确认要关闭该功能吗?关闭后现有历史记录也将被清空! - switch: 启用功能 - switch_tooltip: 是否启用 SQL 语句分析功能,关闭后将不能使用 SQL 语句分析功能,但能提升少量 {{distro.tidb}} 性能。 - max_size: 最大收集 SQL 语句个数 - max_size_tooltip: 收集的 SQL 语句个数上限,当实际执行的 SQL 语句种类超过设定个数后最早执行的 SQL 语句信息将被丢弃。若您发现界面上呈现的 SQL 语句信息不完整,建议在内存允许的情况下调大本参数。 - refresh_interval: 时间窗大小 (min) - refresh_interval_tooltip: 缩小时间窗大小可以使得选择的时间范围更精细。 - history_size: 时间窗个数 - history_size_tooltip: 扩大时间窗个数可以保留更长时间的执行历史,但也会引入更大的内存开销。 - keep_duration: SQL 语句历史保留时长 - keep_duration_tooltip: 时间窗大小 × 时间窗个数 - internal_query: 收集内部查询 - internal_query_tooltip: 开启后 {{distro.tidb}} 内部执行的 SQL 语句信息也将被收集。 - actions: - save: 保存 - close: 确认 - cancel: 取消 - fields: - related_schemas: 数据库 - related_schemas_tooltip: SQL 语句涉及的数据库 - plan_digest: 执行计划 ID - plan_digest_tooltip: 不同的执行计划有不同的 ID - digest_text: SQL 模板 - digest_text_tooltip: 相似的 SQL 查询即使查询参数不一样也具有相同的 SQL 模板 - sum_latency: 累计耗时 - sum_latency_tooltip: 该类 SQL 语句在时间段内的累计执行时间 - exec_count: 执行次数 - exec_count_tooltip: 该类 SQL 语句在时间段内被执行的总次数 - plan_count: 计划数 - plan_count_tooltip: 该类 SQL 语句在时间段内的不同执行计划数量 - avg_latency: 平均耗时 - avg_latency_tooltip: 单条 SQL 查询的执行时间 - avg_mem: 平均内存 - avg_mem_tooltip: 单条 SQL 查询的消耗内存大小 - max_mem: 最大内存 - max_mem_tooltip: 最大单条 SQL 查询消耗内存大小 - avg_disk: 平均磁盘空间 - avg_disk_tooltip: 单条 SQL 查询占用的磁盘空间大小 - max_disk: 最大磁盘空间 - max_disk_tooltip: 最大单条 SQL 查询占用的磁盘空间大小 - table_names: 表名 - index_names: 索引名 - index_names_tooltip: SQL 执行时使用的索引名称 - first_seen: 首次出现时间 - last_seen: 最后出现时间 - sample_user: 执行用户名 - sample_user_tooltip: 执行该类 SQL 的用户名,可能存在多个执行用户,仅显示其中某一个 - sum_errors: 累计 Error 个数 - sum_warnings: 累计 Warning 个数 - errors_warnings: 错误 / 警告 - errors_warnings_tooltip: 累计错误和警告个数 - parse_latency: 解析耗时 - parse_latency_tooltip: 解析 SQL 查询的耗时 - compile_latency: 优化耗时 - compile_latency_tooltip: 编译并优化 SQL 查询的耗时 - wait_time: Coprocessor 等待耗时 - wait_time_tooltip: SQL 查询在 {{distro.tikv}} Coprocessor 上被等待执行的耗时,单个 SQL 查询所有 Coprocessor 任务累计后计算 - process_time: Coprocessor 执行耗时 - process_time_tooltip: SQL 查询在 {{distro.tikv}} Coprocessor 上的执行耗时,单个 SQL 查询所有 Coprocessor 任务累计后计算 - total_process_time: 所有执行耗时 - total_wait_time: 所有等待耗时 - backoff_time: 重试等待耗时 - backoff_time_tooltip: 单个 SQL 查询所有重试累计后计算 - get_commit_ts_time: 取 Commit Ts 耗时 - get_commit_ts_time_tooltip: 从 {{distro.pd}} 取递交时间戳(事务号)步骤的耗时 - local_latch_wait_time: Local Latch Wait 耗时 - local_latch_wait_time_tooltip: 事务在 {{distro.tidb}} 本地与其他事务产生了锁冲突并等待的耗时 - resolve_lock_time: Resolve Lock 耗时 - resolve_lock_time_tooltip: 事务在 {{distro.tikv}} 与其他事务产生了锁冲突并处理锁冲突的耗时 - prewrite_time: Prewrite 阶段耗时 - commit_time: Commit 阶段耗时 - commit_backoff_time: Commit 重试等待耗时 - latency: 执行耗时 - query_time2: SQL 执行时间 - query_time2_tooltip: 由于存在并行执行,因此 SQL 执行时间可能远小于上述各项时间 - sum_cop_task_num: 累计 Coprocessor 请求数 - sum_cop_task_num_tooltip: 时间段内该类 SQL 语句累计发送的 Coprocessor 请求数 - avg_processed_keys: 单 SQL 查询平均可见版本数 - max_processed_keys: 单 SQL 查询最大可见版本数 - avg_total_keys: 单 SQL 查询平均遇到版本数 - avg_total_keys_tooltip: 含已删除或覆盖但未 GC 的版本 - max_total_keys: 单 SQL 查询最大遇到版本数 - avg_affected_rows: 平均影响行数 - sum_backoff_times: 累计重试次数 - sum_backoff_times_tooltip: 这类 SQL 语句遇到需要重试的错误后的总重试次数 - avg_write_keys: 平均写入 Key 个数 - max_write_keys: 最大写入 Key 个数 - avg_write_size: 平均写入数据量 - max_write_size: 最大写入数据量 - avg_prewrite_regions: Prewrite 平均涉及 Region 个数 - max_prewrite_regions: Prewrite 最大涉及 Region 个数 - avg_txn_retry: 事务平均重试次数 - max_txn_retry: 事务最大重试次数 - digest: SQL 模板 ID - digest_tooltip: SQL 模板的唯一标识(SQL 指纹) - schema_name: 执行数据库 - schema_name_tooltip: 执行该 SQL 查询时使用的数据库名称 - query_sample_text: SQL 查询样例 - prev_sample_text: 前一条 SQL 查询样例 - prev_sample_text_tooltip: 一般来说你可能只需要看 COMMIT 语句的前一条 SQL 查询 - plan: 执行计划 - - avg_rocksdb_delete_skipped_count: RocksDB 已删除 Key 平均扫描数 - avg_rocksdb_delete_skipped_count_tooltip: RocksDB 扫数据时遇到的已删除 (tombstone) Key 数量 (delete_skipped_count) - max_rocksdb_delete_skipped_count: RocksDB 已删除 Key 最大扫描数 - avg_rocksdb_key_skipped_count: RocksDB Key 平均扫描数 - avg_rocksdb_key_skipped_count_tooltip: RocksDB 扫数据时所有遇到的 Key 数量 (key_skipped_count) - max_rocksdb_key_skipped_count: RocksDB Key 最大扫描数 - avg_rocksdb_block_cache_hit_count: RocksDB 缓存平均读次数 - avg_rocksdb_block_cache_hit_count_tooltip: RocksDB 从 Block Cache 缓存中读数据的次数 (block_cache_hit_count) - max_rocksdb_block_cache_hit_count: RocksDB 缓存最大读次数 - avg_rocksdb_block_read_count: RocksDB 文件系统平均读次数 - avg_rocksdb_block_read_count_tooltip: RocksDB 从文件系统中读数据的次数 (block_read_count) - max_rocksdb_block_read_count: RocksDB 文件系统最大读次数 - avg_rocksdb_block_read_byte: RocksDB 文件系统平均读数据量 - avg_rocksdb_block_read_byte_tooltip: RocksDB 从文件系统中读数据的数据量 (block_read_byte) - max_rocksdb_block_read_byte: RocksDB 文件系统最大读数据量 diff --git a/ui-ori/lib/apps/Statement/utils/tableColumns.tsx b/ui-ori/lib/apps/Statement/utils/tableColumns.tsx deleted file mode 100644 index 2c252ffb48..0000000000 --- a/ui-ori/lib/apps/Statement/utils/tableColumns.tsx +++ /dev/null @@ -1,310 +0,0 @@ -import { Tooltip } from 'antd' -import { max } from 'lodash' -import { - ColumnActionsMode, - IColumn, -} from 'office-ui-fabric-react/lib/DetailsList' -import React from 'react' -import { orange, red } from '@ant-design/colors' - -import { StatementModel } from '@lib/client' -import { Bar, Pre } from '@lib/components' -import { - formatVal, - genDerivedBarSources, - TableColumnFactory, - Column, -} from '@lib/utils/tableColumnFactory' - -/////////////////////////////////////// -// statements order list in local by fieldName of IColumn -// slow query order list in backend by key of IColumn -const TRANS_KEY_PREFIX = 'statement.fields' - -export const derivedFields = { - avg_latency: genDerivedBarSources( - 'avg_latency', - 'max_latency', - 'min_latency' - ), - parse_latency: genDerivedBarSources('avg_parse_latency', 'max_parse_latency'), - compile_latency: genDerivedBarSources( - 'avg_compile_latency', - 'max_compile_latency' - ), - process_time: genDerivedBarSources( - 'avg_cop_process_time', - 'max_cop_process_time' - ), - wait_time: genDerivedBarSources('avg_cop_wait_time', 'max_cop_wait_time'), - total_process_time: genDerivedBarSources( - 'avg_process_time', - 'max_process_time' - ), - total_wait_time: genDerivedBarSources('avg_wait_time', 'max_wait_time'), - backoff_time: genDerivedBarSources('avg_backoff_time', 'max_backoff_time'), - avg_write_keys: genDerivedBarSources('avg_write_keys', 'max_write_keys'), - avg_processed_keys: genDerivedBarSources( - 'avg_processed_keys', - 'max_processed_keys' - ), - avg_total_keys: genDerivedBarSources('avg_total_keys', 'max_total_keys'), - prewrite_time: genDerivedBarSources('avg_prewrite_time', 'max_prewrite_time'), - commit_time: genDerivedBarSources('avg_commit_time', 'max_commit_time'), - get_commit_ts_time: genDerivedBarSources( - 'avg_get_commit_ts_time', - 'max_get_commit_ts_time' - ), - commit_backoff_time: genDerivedBarSources( - 'avg_commit_backoff_time', - 'max_commit_backoff_time' - ), - resolve_lock_time: genDerivedBarSources( - 'avg_resolve_lock_time', - 'max_resolve_lock_time' - ), - local_latch_wait_time: genDerivedBarSources( - 'avg_local_latch_wait_time', - 'max_local_latch_wait_time' - ), - avg_write_size: genDerivedBarSources('avg_write_size', 'max_write_size'), - avg_prewrite_regions: genDerivedBarSources( - 'avg_prewrite_regions', - 'max_prewrite_regions' - ), - avg_txn_retry: genDerivedBarSources('avg_txn_retry', 'max_txn_retry'), - avg_mem: genDerivedBarSources('avg_mem', 'max_mem'), - avg_disk: genDerivedBarSources('avg_disk', 'max_disk'), - sum_errors: ['sum_errors', 'sum_warnings'], - related_schemas: ['table_names'], - avg_rocksdb_delete_skipped_count: genDerivedBarSources( - 'avg_rocksdb_delete_skipped_count', - 'max_rocksdb_delete_skipped_count' - ), - avg_rocksdb_key_skipped_count: genDerivedBarSources( - 'avg_rocksdb_key_skipped_count', - 'max_rocksdb_key_skipped_count' - ), - avg_rocksdb_block_cache_hit_count: genDerivedBarSources( - 'avg_rocksdb_block_cache_hit_count', - 'max_rocksdb_block_cache_hit_count' - ), - avg_rocksdb_block_read_count: genDerivedBarSources( - 'avg_rocksdb_block_read_count', - 'max_rocksdb_block_read_count' - ), - avg_rocksdb_block_read_byte: genDerivedBarSources( - 'avg_rocksdb_block_read_byte', - 'max_rocksdb_block_read_byte' - ), -} - -////////////////////////////////////////// - -function avgMinMaxLatencyColumn( - tcf: TableColumnFactory, - rows?: { max_latency?: number; min_latency?: number; avg_latency?: number }[] -): Column { - return tcf.bar.multiple({ sources: derivedFields.avg_latency }, 'ns', rows) -} - -function errorsWarningsColumn( - tcf: TableColumnFactory, - rows?: { sum_errors?: number; sum_warnings?: number }[] -): Column { - const capacity = rows - ? max(rows.map((v) => v.sum_errors! + v.sum_warnings!)) ?? 0 - : 0 - const key = 'sum_errors' - return tcf.control({ - name: 'errors_warnings', - key, - fieldName: key, - minWidth: 140, - maxWidth: 200, - columnActionsMode: ColumnActionsMode.clickable, - onRender: (rec) => { - const errorsFmtVal = formatVal(rec.sum_errors, 'short') - const warningsFmtVal = formatVal(rec.sum_warnings, 'short') - const tooltipContent = ` -Errors: ${errorsFmtVal} -Warnings: ${warningsFmtVal}` - return ( - {tooltipContent.trim()}}> - - {`${errorsFmtVal} / ${warningsFmtVal}`} - - - ) - }, - }) -} - -//////////////////////////////////////////////// -// util methods - -function avgMaxColumn( - tcf: TableColumnFactory, - displayTransKey: string, - unit: string, - rows?: T[] -): Column { - return tcf.bar.multiple( - { - displayTransKey, - sources: derivedFields[displayTransKey], - }, - unit, - rows - ) -} - -//////////////////////////////////////////////// - -export function statementColumns( - rows: StatementModel[], - tableSchemaColumns: string[], - showFullSQL?: boolean -): IColumn[] { - const tcf = new TableColumnFactory(TRANS_KEY_PREFIX, tableSchemaColumns) - - return tcf.columns([ - evictedRenderColumn( - tcf.sqlText('digest_text', showFullSQL, rows).getConfig() - ), - evictedRenderColumn(tcf.textWithTooltip('digest', rows).getConfig()), - tcf.bar.single('sum_latency', 'ns', rows), - avgMinMaxLatencyColumn(tcf, rows), - tcf.bar.single('exec_count', 'short', rows), - tcf.textWithTooltip('plan_count', rows).patchConfig({ - minWidth: 100, - maxWidth: 300, - columnActionsMode: ColumnActionsMode.clickable, - }), - avgMaxColumn(tcf, 'avg_mem', 'bytes', rows), - avgMaxColumn(tcf, 'avg_disk', 'bytes', rows), - errorsWarningsColumn(tcf, rows), - avgMaxColumn(tcf, 'parse_latency', 'ns', rows), - avgMaxColumn(tcf, 'compile_latency', 'ns', rows), - tcf.bar.single('sum_cop_task_num', 'short', rows), - avgMaxColumn(tcf, 'process_time', 'ns', rows), - avgMaxColumn(tcf, 'wait_time', 'ns', rows), - avgMaxColumn(tcf, 'total_process_time', 'ns', rows), - avgMaxColumn(tcf, 'total_wait_time', 'ns', rows), - avgMaxColumn(tcf, 'backoff_time', 'ns', rows), - avgMaxColumn(tcf, 'avg_write_keys', 'short', rows), - avgMaxColumn(tcf, 'avg_processed_keys', 'short', rows), - avgMaxColumn(tcf, 'avg_total_keys', 'short', rows), - avgMaxColumn(tcf, 'prewrite_time', 'ns', rows), - avgMaxColumn(tcf, 'commit_time', 'ns', rows), - avgMaxColumn(tcf, 'get_commit_ts_time', 'ns', rows), - avgMaxColumn(tcf, 'commit_backoff_time', 'ns', rows), - avgMaxColumn(tcf, 'resolve_lock_time', 'ns', rows), - avgMaxColumn(tcf, 'local_latch_wait_time', 'ns', rows), - avgMaxColumn(tcf, 'avg_write_size', 'bytes', rows), - avgMaxColumn(tcf, 'avg_prewrite_regions', 'short', rows), - avgMaxColumn(tcf, 'avg_txn_retry', 'short', rows), - - tcf.bar.single('sum_backoff_times', 'short', rows), - tcf.bar.single('avg_affected_rows', 'short', rows), - - tcf.timestamp('first_seen', rows), - tcf.timestamp('last_seen', rows), - tcf.textWithTooltip('sample_user', rows), - - tcf.sqlText('query_sample_text', showFullSQL, rows), - tcf.sqlText('prev_sample_text', showFullSQL, rows), - - tcf.textWithTooltip('schema_name', rows), - tcf.textWithTooltip('table_names', rows), - tcf.textWithTooltip('index_names', rows), - - tcf.textWithTooltip('plan_digest', rows), - - tcf.textWithTooltip('related_schemas', rows).patchConfig({ - minWidth: 160, - maxWidth: 240, - }), - - // rocksdb - avgMaxColumn( - tcf, - 'avg_rocksdb_delete_skipped_count', - 'short', - rows - ).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - avgMaxColumn( - tcf, - 'avg_rocksdb_key_skipped_count', - 'short', - rows - ).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - avgMaxColumn( - tcf, - 'avg_rocksdb_block_cache_hit_count', - 'short', - rows - ).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - avgMaxColumn( - tcf, - 'avg_rocksdb_block_read_count', - 'short', - rows - ).patchConfig({ - minWidth: 220, - maxWidth: 250, - }), - avgMaxColumn(tcf, 'avg_rocksdb_block_read_byte', 'bytes', rows).patchConfig( - { - minWidth: 220, - maxWidth: 250, - } - ), - ]) -} - -export function planColumns(rows: StatementModel[]): IColumn[] { - const tcf = new TableColumnFactory(TRANS_KEY_PREFIX) - - return tcf.columns([ - tcf.textWithTooltip('plan_digest').patchConfig({ - minWidth: 100, - maxWidth: 300, - }), - tcf.bar.single('sum_latency', 'ns', rows), - avgMinMaxLatencyColumn(tcf, rows), - tcf.bar.single('exec_count', 'short', rows), - avgMaxColumn(tcf, 'avg_mem', 'bytes', rows), - ]) -} - -export function evictedRenderColumn(defaultRenderColumn: IColumn): IColumn { - return { - ...defaultRenderColumn, - onRender: (...props) => { - const rec = props[0] - // the evicted record's digest is empty string - return rec.digest ? ( - defaultRenderColumn.onRender!(...props) - ) : ( - - Others - - ) - }, - } -} diff --git a/ui-ori/lib/apps/Statement/utils/useSchemaColumns.ts b/ui-ori/lib/apps/Statement/utils/useSchemaColumns.ts deleted file mode 100644 index 67a0317f4b..0000000000 --- a/ui-ori/lib/apps/Statement/utils/useSchemaColumns.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useEffect, useState } from 'react' - -import client from '@lib/client' -import { useClientRequest } from '@lib/utils/useClientRequest' - -export const useSchemaColumns = () => { - const [schemaColumns, setSchemaColumns] = useState([]) - const { data, isLoading } = useClientRequest((options) => { - return client.getInstance().statementsTableColumnsGet(options) - }) - - useEffect(() => { - if (!data) { - return - } - setSchemaColumns(data.map((d) => d.toLowerCase())) - }, [data]) - - return { - schemaColumns, - isLoading, - } -} diff --git a/ui-ori/lib/apps/Statement/utils/useStatementTableController.ts b/ui-ori/lib/apps/Statement/utils/useStatementTableController.ts deleted file mode 100644 index 3b9fd70626..0000000000 --- a/ui-ori/lib/apps/Statement/utils/useStatementTableController.ts +++ /dev/null @@ -1,317 +0,0 @@ -import { useEffect, useMemo, useState } from 'react' -import { useSessionStorageState } from 'ahooks' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' - -import client, { - ErrorStrategy, - StatementModel, - StatementTimeRange, -} from '@lib/client' -import { IColumnKeys, stringifyTimeRange } from '@lib/components' -import { getSelectedFields } from '@lib/utils/tableColumnFactory' -import { CacheMgr } from '@lib/utils/useCache' -import useOrderState, { IOrderOptions } from '@lib/utils/useOrderState' -import useCacheItemIndex from '@lib/utils/useCacheItemIndex' - -import { - calcValidStatementTimeRange, - DEFAULT_TIME_RANGE, - TimeRange, -} from '../pages/List/TimeRangeSelector' -import { derivedFields, statementColumns } from './tableColumns' -import { useSchemaColumns } from './useSchemaColumns' -import { useStatements } from './useStatements' - -export const DEF_STMT_COLUMN_KEYS: IColumnKeys = { - digest_text: true, - sum_latency: true, - avg_latency: true, - exec_count: true, - plan_count: true, - related_schemas: true, -} - -const QUERY_OPTIONS = 'statement.query_options' - -const DEF_ORDER_OPTIONS: IOrderOptions = { - orderBy: 'sum_latency', - desc: true, -} - -export interface IStatementQueryOptions { - timeRange: TimeRange - schemas: string[] - stmtTypes: string[] - searchText: string -} - -export const DEF_STMT_QUERY_OPTIONS: IStatementQueryOptions = { - timeRange: DEFAULT_TIME_RANGE, - schemas: [], - stmtTypes: [], - searchText: '', -} - -export interface IStatementTableController { - queryOptions: IStatementQueryOptions - setQueryOptions: (options: IStatementQueryOptions) => void - orderOptions: IOrderOptions - changeOrder: (orderBy: string, desc: boolean) => void - refresh: () => void - - enable: boolean - allTimeRanges: StatementTimeRange[] - allSchemas: string[] - allStmtTypes: string[] - statementsTimeRange: StatementTimeRange - loadingStatements: boolean - statements: StatementModel[] - isTimeRangeOutdated: boolean - - errors: Error[] - - tableColumns: IColumn[] - visibleColumnKeys: IColumnKeys - - downloadCSV: () => Promise - downloading: boolean - - saveClickedItemIndex: (idx: number) => void - getClickedItemIndex: () => number -} - -export default function useStatementTableController( - cacheMgr: CacheMgr | null, - visibleColumnKeys: IColumnKeys, - showFullSQL: boolean, - options?: IStatementQueryOptions, - needSave: boolean = true -): IStatementTableController { - const { orderOptions, changeOrder } = useOrderState( - 'statement', - needSave, - DEF_ORDER_OPTIONS - ) - - const [memoryQueryOptions, setMemoryQueryOptions] = useState( - options || DEF_STMT_QUERY_OPTIONS - ) - const [sessionQueryOptions, setSessionQueryOptions] = useSessionStorageState( - QUERY_OPTIONS, - options || DEF_STMT_QUERY_OPTIONS - ) - const queryOptions = useMemo( - () => (needSave ? sessionQueryOptions : memoryQueryOptions), - [needSave, memoryQueryOptions, sessionQueryOptions] - ) - - const [enable, setEnable] = useState(true) - const [allTimeRanges, setAllTimeRanges] = useState([]) - const [allSchemas, setAllSchemas] = useState([]) - const [allStmtTypes, setAllStmtTypes] = useState([]) - - const validTimeRange = useMemo( - () => calcValidStatementTimeRange(queryOptions.timeRange, allTimeRanges), - [queryOptions, allTimeRanges] - ) - - const [loading, setLoading] = useState(true) - - const [refreshTimes, setRefreshTimes] = useState(0) - - function setQueryOptions(newOptions: IStatementQueryOptions) { - if (needSave) { - setSessionQueryOptions(newOptions) - } else { - setMemoryQueryOptions(newOptions) - } - } - - const [errors, setErrors] = useState([]) - - useEffect(() => { - errors.length && setLoading(false) - }, [errors]) - - const selectedFields = useMemo( - () => getSelectedFields(visibleColumnKeys, derivedFields).join(','), - [visibleColumnKeys] - ) - - const cacheKey = useMemo(() => { - const { schemas, stmtTypes, searchText, timeRange } = queryOptions - const cacheKey = `${schemas.join(',')}_${stmtTypes.join( - ',' - )}_${searchText}_${stringifyTimeRange(timeRange)}_${selectedFields}` - return cacheKey - }, [queryOptions, selectedFields]) - - function refresh() { - cacheMgr?.remove(cacheKey) - - setErrors([]) - setLoading(true) - setRefreshTimes((prev) => prev + 1) - } - - useEffect(() => { - async function queryStatementStatus() { - try { - const res = await client.getInstance().statementsConfigGet({ - errorStrategy: ErrorStrategy.Custom, - }) - setEnable(res?.data.enable!) - } catch (e) { - setErrors((prev) => prev.concat(e)) - } - } - - async function querySchemas() { - try { - const res = await client.getInstance().infoListDatabases({ - errorStrategy: ErrorStrategy.Custom, - }) - setAllSchemas(res?.data || []) - } catch (e) { - setErrors((prev) => prev.concat(e)) - } - } - - async function queryTimeRanges() { - try { - const res = await client.getInstance().statementsTimeRangesGet({ - errorStrategy: ErrorStrategy.Custom, - }) - setAllTimeRanges(res?.data || []) - } catch (e) { - setErrors((prev) => prev.concat(e)) - } - } - - async function queryStmtTypes() { - try { - const res = await client.getInstance().statementsStmtTypesGet({ - errorStrategy: ErrorStrategy.Custom, - }) - setAllStmtTypes(res?.data || []) - } catch (e) { - setErrors((prev) => prev.concat(e)) - } - } - - queryStatementStatus() - querySchemas() - queryTimeRanges() - queryStmtTypes() - }, [refreshTimes]) - - const { statements, setStatements, statementsTimeRange, queryStatements } = - useStatements(cacheKey) - const { schemaColumns, isLoading: isSchemaLoading } = useSchemaColumns() - const tableColumns = useMemo( - () => statementColumns(statements, schemaColumns, showFullSQL), - [statements, schemaColumns, showFullSQL] - ) - - useEffect(() => { - async function queryStatementList() { - if ( - !selectedFields.length || - isSchemaLoading || - allTimeRanges.length === 0 - ) { - setStatements([]) - setLoading(false) - return - } - - setLoading(true) - try { - await queryStatements( - validTimeRange.begin_time!, - validTimeRange.end_time!, - selectedFields, - queryOptions.schemas, - queryOptions.stmtTypes, - queryOptions.searchText, - { - errorStrategy: ErrorStrategy.Custom, - } - ) - } catch (e) { - setErrors((prev) => prev.concat(e)) - } finally { - setLoading(false) - } - } - - queryStatementList() - // eslint-disable-next-line - }, [ - queryOptions, - allTimeRanges, - validTimeRange, - selectedFields, - cacheKey, - isSchemaLoading, - ]) - - const [downloading, setDownloading] = useState(false) - - async function downloadCSV() { - try { - setDownloading(true) - const res = await client.getInstance().statementsDownloadTokenPost({ - begin_time: validTimeRange.begin_time, - end_time: validTimeRange.end_time, - fields: '*', - schemas: queryOptions.schemas, - stmt_types: queryOptions.stmtTypes, - text: queryOptions.searchText, - }) - const token = res.data - if (token) { - window.location.href = `${client.getBasePath()}/statements/download?token=${token}` - } - } finally { - setDownloading(false) - } - } - - const { saveClickedItemIndex, getClickedItemIndex } = - useCacheItemIndex(cacheMgr) - - const isTimeRangeOutdated = - !!statementsTimeRange.begin_time && - !!statementsTimeRange.end_time && - (validTimeRange.begin_time !== statementsTimeRange.begin_time || - validTimeRange.end_time !== statementsTimeRange.end_time) - - return { - queryOptions, - setQueryOptions, - orderOptions, - changeOrder, - refresh, - - enable, - allTimeRanges, - allSchemas, - allStmtTypes, - statementsTimeRange, - loadingStatements: loading, - statements, - isTimeRangeOutdated, - - errors, - - tableColumns, - visibleColumnKeys, - - downloadCSV, - downloading, - - saveClickedItemIndex, - getClickedItemIndex, - } -} diff --git a/ui-ori/lib/apps/Statement/utils/useStatements.ts b/ui-ori/lib/apps/Statement/utils/useStatements.ts deleted file mode 100644 index e7f81964b7..0000000000 --- a/ui-ori/lib/apps/Statement/utils/useStatements.ts +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2021 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { useCallback, useContext, useState } from 'react' - -import client, { - DefaultApi, - StatementModel, - StatementTimeRange, -} from '@lib/client' -import { CacheContext, CacheMgr } from '@lib/utils/useCache' - -interface StatementCache { - data: StatementModel[] - timeRange: StatementTimeRange -} - -export function useStatements(cacheKey: string) { - const { getCache, setCache } = useCache() - const [statements, setStatements] = useState([]) - const [statementsTimeRange, setStatementsTimeRange] = - useState({}) - const queryStatements = useCallback( - async (...params: Parameters) => { - const cache = getCache(cacheKey) - if (cache) { - setStatements(cache.data) - setStatementsTimeRange(cache.timeRange) - return - } - - const [begin_time, end_time] = params - const timeRange = { begin_time, end_time } - setStatementsTimeRange(timeRange) - - const res = await client.getInstance().statementsListGet(...params) - const data = res?.data || [] - setStatements(data) - setCache(cacheKey, { data, timeRange }) - }, - [cacheKey, getCache, setCache] - ) - - return { statements, setStatements, statementsTimeRange, queryStatements } -} - -function useCache() { - const cacheMgr = useContext(CacheContext) - const getCache = ( - ...params: Parameters - ): StatementCache | undefined => { - if (!cacheMgr) { - return - } - return cacheMgr.get(...params) - } - const setCache = (...params: Parameters) => { - if (!cacheMgr) { - return - } - return cacheMgr.set(...params) - } - - return { getCache, setCache } -} diff --git a/ui-ori/lib/apps/SystemReport/components/ReportHistory.tsx b/ui-ori/lib/apps/SystemReport/components/ReportHistory.tsx deleted file mode 100644 index 7a9dbb1de6..0000000000 --- a/ui-ori/lib/apps/SystemReport/components/ReportHistory.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { Badge } from 'antd' -import dayjs from 'dayjs' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import React, { useMemo } from 'react' -import { useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' -import { usePersistFn } from 'ahooks' -import type { TFunction } from 'i18next' - -import client, { DiagnoseReport } from '@lib/client' -import { CardTable, DateTime } from '@lib/components' -import openLink from '@lib/utils/openLink' -import { useClientRequest } from '@lib/utils/useClientRequest' - -const tableColumns = (t: TFunction): IColumn[] => [ - { - name: t('system_report.list_table.id'), - key: 'id', - fieldName: 'id', - minWidth: 200, - maxWidth: 350, - }, - { - name: t('system_report.list_table.report_create_time'), - key: 'created_at', - minWidth: 100, - maxWidth: 200, - onRender: (rec: DiagnoseReport) => ( - - ), - }, - { - name: t('system_report.list_table.status'), - key: 'progress', - minWidth: 100, - maxWidth: 150, - onRender: (rec: DiagnoseReport) => { - if (rec.progress! < 100) { - return ( - - ) - } else { - return ( - - ) - } - }, - }, - { - name: t('system_report.list_table.range'), - key: 'start_time', - minWidth: 200, - maxWidth: 350, - onRender: (rec: DiagnoseReport) => { - return ( - - {' '} - ~{' '} - - - ) - }, - }, - { - name: t('system_report.list_table.compare_range'), - key: 'compare_start_time', - minWidth: 200, - maxWidth: 350, - onRender: (rec: DiagnoseReport) => - rec.compare_start_time && ( - - {' '} - ~{' '} - - - ), - }, -] - -export default function ReportHistory() { - const navigate = useNavigate() - const { t } = useTranslation() - const { data, isLoading, error } = useClientRequest((reqConfig) => - client.getInstance().diagnoseReportsGet(reqConfig) - ) - const columns = useMemo(() => tableColumns(t), [t]) - - const handleRowClick = usePersistFn( - (rec, _idx, ev: React.MouseEvent) => { - openLink(`/system_report/detail?id=${rec.id}`, ev, navigate) - } - ) - - return ( - - ) -} diff --git a/ui-ori/lib/apps/SystemReport/index.meta.ts b/ui-ori/lib/apps/SystemReport/index.meta.ts deleted file mode 100644 index c795ebe6b5..0000000000 --- a/ui-ori/lib/apps/SystemReport/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { SnippetsOutlined } from '@ant-design/icons' - -export default { - id: 'system_report', - routerPrefix: '/system_report', - icon: SnippetsOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_system_report" */ '.'), -} diff --git a/ui-ori/lib/apps/SystemReport/index.tsx b/ui-ori/lib/apps/SystemReport/index.tsx deleted file mode 100644 index fe5c63879d..0000000000 --- a/ui-ori/lib/apps/SystemReport/index.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react' -import { HashRouter as Router, Route, Routes } from 'react-router-dom' - -import { ParamsPageWrapper, Root } from '@lib/components' -import { ReportGenerator, ReportStatus } from './pages' - -const App = () => ( - - - - } /> - - - - } - /> - - - -) - -export default App diff --git a/ui-ori/lib/apps/SystemReport/pages/ReportGenerator.tsx b/ui-ori/lib/apps/SystemReport/pages/ReportGenerator.tsx deleted file mode 100644 index 1d99f935be..0000000000 --- a/ui-ori/lib/apps/SystemReport/pages/ReportGenerator.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import { Button, Form, Input, InputNumber, Select, Switch } from 'antd' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { useNavigate } from 'react-router-dom' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import client from '@lib/client' -import { Card } from '@lib/components' -import { DatePicker } from '@lib/components' - -import ReportHistory from '../components/ReportHistory' - -const useFinishHandler = (navigate) => { - return async (fieldsValue) => { - const start_time = fieldsValue['rangeBegin'].unix() - let range_duration = fieldsValue['rangeDuration'] - if (fieldsValue['rangeDuration'] === 0) { - range_duration = fieldsValue['rangeDurationCustom'] - } - const is_compare = fieldsValue['isCompare'] - const compare_range_begin = fieldsValue['compareRangeBegin'] - - const end_time = start_time + range_duration * 60 - const compare_start_time = is_compare ? compare_range_begin.unix() : 0 - const compare_end_time = is_compare - ? compare_start_time + range_duration * 60 - : 0 - - const res = await client.getInstance().diagnoseReportsPost({ - start_time, - end_time, - compare_start_time, - compare_end_time, - }) - navigate(`/system_report/detail?id=${res.data}`) - } -} - -const DURATIONS = [5, 10, 30, 60, 24 * 60] - -export default function ReportGenerator() { - const { t } = useTranslation() - const navigate = useNavigate() - const handleFinish = useFinishHandler(navigate) - - return ( -
    - -
    - - - - - - - - - - prev.rangeDuration !== cur.rangeDuration - } - > - {({ getFieldValue }) => { - return ( - getFieldValue('rangeDuration') === 0 && ( - - `${value} min`} - parser={(value) => value?.replace(/[^\d]/g, '') || ''} - style={{ width: 120 }} - /> - - ) - ) - }} - - - - - - - prev.isCompare !== cur.isCompare} - > - {({ getFieldValue }) => { - return ( - getFieldValue('isCompare') && ( - - - - ) - ) - }} - - - - -
    -
    - -
    - - - -
    -
    - ) -} diff --git a/ui-ori/lib/apps/SystemReport/pages/ReportStatus.tsx b/ui-ori/lib/apps/SystemReport/pages/ReportStatus.tsx deleted file mode 100644 index 9367777eae..0000000000 --- a/ui-ori/lib/apps/SystemReport/pages/ReportStatus.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { Button, Descriptions, Progress } from 'antd' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { Link } from 'react-router-dom' -import { ArrowLeftOutlined } from '@ant-design/icons' - -import client from '@lib/client' -import publicPathPrefix from '@lib/utils/publicPathPrefix' -import { AnimatedSkeleton, DateTime, ErrorBar, Head } from '@lib/components' -import { useClientRequestWithPolling } from '@lib/utils/useClientRequest' -import useQueryParams from '@lib/utils/useQueryParams' - -function ReportStatus() { - const { id } = useQueryParams() - const { t } = useTranslation() - - const { - data: report, - isLoading, - error, - } = useClientRequestWithPolling( - (reqConfig) => - client.getInstance().diagnoseReportsIdStatusGet(id, reqConfig), - { - shouldPoll: (data) => data?.progress! < 100, - } - ) - - return ( - - {t('system_report.status.head.back')} - - } - titleExtra={ - report && ( - - ) - } - > - - {error && } - {report && ( - - - - - - - - {report.compare_start_time && ( - - - - )} - - - - - )} - - - ) -} - -export default ReportStatus diff --git a/ui-ori/lib/apps/SystemReport/pages/index.ts b/ui-ori/lib/apps/SystemReport/pages/index.ts deleted file mode 100644 index 793643cb0b..0000000000 --- a/ui-ori/lib/apps/SystemReport/pages/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import ReportGenerator from './ReportGenerator' -import ReportStatus from './ReportStatus' - -export { ReportGenerator, ReportStatus } diff --git a/ui-ori/lib/apps/SystemReport/translations/en.yaml b/ui-ori/lib/apps/SystemReport/translations/en.yaml deleted file mode 100644 index 8de4716f7b..0000000000 --- a/ui-ori/lib/apps/SystemReport/translations/en.yaml +++ /dev/null @@ -1,28 +0,0 @@ -system_report: - nav_title: System Report - generate: - title: New System Report - range_begin: Range Start Time - range_duration: Range Duration - is_compare: Compare by Baseline - compare_range_begin: Baseline Range Start Time - submit: Start - list_table: - id: Report ID - report_create_time: Report At - status: Status - status_running: Running - status_finish: Finish - range: Range - compare_range: Baseline Range - status: - head: - title: Report Status - back: New System Report - view: View Full System Report - range_begin: Range Start Time - range_end: Range End Time - baseline_begin: Baseline Range Start Time - progress: Progress - time_duration: - custom: Custom diff --git a/ui-ori/lib/apps/SystemReport/translations/zh.yaml b/ui-ori/lib/apps/SystemReport/translations/zh.yaml deleted file mode 100644 index 57dd594707..0000000000 --- a/ui-ori/lib/apps/SystemReport/translations/zh.yaml +++ /dev/null @@ -1,28 +0,0 @@ -system_report: - nav_title: 系统报告 - generate: - title: 生成系统报告 - range_begin: 区间起始时间 - range_duration: 区间长度 - is_compare: 与基线区间对比 - compare_range_begin: 基线区间起始时间 - submit: 开始 - list_table: - id: 报告 ID - report_create_time: 报告时间 - status: 状态 - status_running: 诊断中 - status_finish: 完成 - range: 报告区间 - compare_range: 对比区间 - status: - head: - title: 报告状态 - back: 生成系统报告 - view: 查看完整系统报告 - range_begin: 区间起始时间 - range_end: 区间结束时间 - baseline_begin: 基线区间起始时间 - progress: 生成进度 - time_duration: - custom: 自定义 diff --git a/ui-ori/lib/apps/UserProfile/Form.Language.tsx b/ui-ori/lib/apps/UserProfile/Form.Language.tsx deleted file mode 100644 index 8bd019c103..0000000000 --- a/ui-ori/lib/apps/UserProfile/Form.Language.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Form, Select } from 'antd' -import React, { useCallback } from 'react' -import { DEFAULT_FORM_ITEM_STYLE } from './constants' -import { ALL_LANGUAGES } from '@lib/utils/i18n' -import _ from 'lodash' -import { useTranslation } from 'react-i18next' - -export function LanguageForm() { - const { t, i18n } = useTranslation() - - const handleLanguageChange = useCallback( - (langKey) => { - i18n.changeLanguage(langKey) - }, - [i18n] - ) - - return ( -
    - - - -
    - ) -} diff --git a/ui-ori/lib/apps/UserProfile/Form.PrometheusAddr.tsx b/ui-ori/lib/apps/UserProfile/Form.PrometheusAddr.tsx deleted file mode 100644 index 732c136700..0000000000 --- a/ui-ori/lib/apps/UserProfile/Form.PrometheusAddr.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import client from '@lib/client' -import { AnimatedSkeleton, Blink, ErrorBar } from '@lib/components' -import { useIsWriteable } from '@lib/utils/store' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { Button, Form, Input, Radio, Space, Typography } from 'antd' -import React from 'react' -import { useCallback, useEffect, useRef, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { DEFAULT_FORM_ITEM_STYLE } from './constants' - -export function PrometheusAddressForm() { - const { t } = useTranslation() - const isWriteable = useIsWriteable() - const [isChanged, setIsChanged] = useState(false) - const [isPosting, setIsPosting] = useState(false) - const handleValuesChange = useCallback(() => setIsChanged(true), []) - const { error, isLoading, data } = useClientRequest((reqConfig) => - client.getInstance().metricsGetPromAddress(reqConfig) - ) - const isInitialLoad = useRef(true) - const initialForm = useRef(null) // Used for "Cancel" behaviour - const [form] = Form.useForm() - - useEffect(() => { - if (data && isInitialLoad.current) { - isInitialLoad.current = false - form.setFieldsValue({ - sourceType: - (data.customized_addr?.length ?? 0) > 0 ? 'custom' : 'deployment', - customAddr: data.customized_addr, - }) - initialForm.current = { ...form.getFieldsValue() } - } - }, [data, form]) - - const handleFinish = useCallback( - async (values) => { - let address = '' - if (values.sourceType === 'custom') { - address = values.customAddr || '' - } - try { - setIsPosting(true) - const resp = await client.getInstance().metricsSetCustomPromAddress({ - address, - }) - const customAddr = resp?.data?.normalized_address ?? '' - form.setFieldsValue({ customAddr }) - initialForm.current = { ...form.getFieldsValue() } - setIsChanged(false) - } finally { - setIsPosting(false) - } - }, - [form] - ) - - const handleCancel = useCallback(() => { - form.setFieldsValue({ ...initialForm.current }) - setIsChanged(false) - }, [form]) - - return ( - -
    - - - - - {error && } - - - - {t( - 'user_profile.service_endpoints.prometheus.form.deployed' - )} - - - {(data?.deployed_addr?.length ?? 0) > 0 && - `(${data!.deployed_addr})`} - {data && data.deployed_addr?.length === 0 && ( - - ( - {t( - 'user_profile.service_endpoints.prometheus.form.not_deployed' - )} - ) - - )} - - - - - {t('user_profile.service_endpoints.prometheus.form.custom')} - - - - - - - {(f) => - f.getFieldValue('sourceType') === 'custom' && ( - - - - ) - } - - {isChanged && ( - - - - - - - )} -
    -
    - ) -} diff --git a/ui-ori/lib/apps/UserProfile/Form.SSO.tsx b/ui-ori/lib/apps/UserProfile/Form.SSO.tsx deleted file mode 100755 index ea582b490d..0000000000 --- a/ui-ori/lib/apps/UserProfile/Form.SSO.tsx +++ /dev/null @@ -1,319 +0,0 @@ -import { CheckCircleFilled } from '@ant-design/icons' -import client, { SsoSSOImpersonationModel } from '@lib/client' -import { AnimatedSkeleton, ErrorBar } from '@lib/components' -import { useIsFeatureSupport, useIsWriteable } from '@lib/utils/store' -import { useClientRequest } from '@lib/utils/useClientRequest' -import { - Alert, - Button, - Checkbox, - Form, - Input, - Modal, - Space, - Switch, - Typography, -} from 'antd' -import React from 'react' -import { useEffect } from 'react' -import { useCallback, useRef, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { DEFAULT_FORM_ITEM_STYLE } from './constants' - -interface IUserAuthInputProps { - value?: SsoSSOImpersonationModel - onChange?: (value: SsoSSOImpersonationModel) => void -} - -function isImpersonationNotFailed(imp?: SsoSSOImpersonationModel) { - return Boolean( - imp && - imp.last_impersonate_status !== 'auth_fail' && - imp.last_impersonate_status !== 'insufficient_privileges' - ) -} - -function UserAuthInput({ value, onChange }: IUserAuthInputProps) { - const { t } = useTranslation() - const [modalVisible, setModalVisible] = useState(false) - const [isPosting, setIsPosting] = useState(false) - const isWriteable = useIsWriteable() - const handleClose = useCallback(() => { - setModalVisible(false) - }, []) - - const handleAuthnClick = useCallback(() => { - setModalVisible(true) - }, []) - - const supportNonRootLogin = useIsFeatureSupport('nonRootLogin') - - const handleFinish = useCallback( - async (data) => { - setIsPosting(true) - try { - const resp = await client.getInstance().userSSOCreateImpersonation({ - sql_user: data.user, - password: data.password, - }) - setModalVisible(false) - onChange?.(resp.data) - } finally { - setIsPosting(false) - } - }, - [onChange] - ) - - return ( - <> - {Boolean(!value) && ( - - - - )} - {Boolean(value) && ( - - {value!.sql_user} - - {isImpersonationNotFailed(value) && ( - - {' '} - {t('user_profile.sso.form.user.authn_status.ok')} - - )} - {value?.last_impersonate_status === 'auth_fail' && ( - - {' '} - {t('user_profile.sso.form.user.authn_status.auth_failed')} - - )} - {value?.last_impersonate_status === 'insufficient_privileges' && ( - - {' '} - {t( - 'user_profile.sso.form.user.authn_status.insufficient_privileges' - )} - - )} - - - - )} - -
    - - - - - - - - - - - - - - - -
    -
    - - ) -} - -const UserAuthInputMemo = React.memo(UserAuthInput) - -export function SSOForm() { - const { t } = useTranslation() - const [isChanged, setIsChanged] = useState(false) - const [isPosting, setIsPosting] = useState(false) - const handleValuesChange = useCallback(() => setIsChanged(true), []) - const [form] = Form.useForm() - const { - error, - isLoading, - data: config, - sendRequest, - } = useClientRequest((reqConfig) => - client.getInstance().userSSOGetConfig(reqConfig) - ) - const { - error: impError, - isLoading: impIsLoading, - data: impData, - sendRequest: impSendRequest, - } = useClientRequest((reqConfig) => - client.getInstance().userSSOListImpersonations(reqConfig) - ) - const initialForm = useRef(null) // Used for "Cancel" behaviour - const isWriteable = useIsWriteable() - - useEffect(() => { - if (config) { - form.setFieldsValue(config) - initialForm.current = { ...config } - } - // ignore form - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [config]) - - useEffect(() => { - if (impData) { - let rootImp: SsoSSOImpersonationModel | undefined = impData[0] - const update = { user_authenticated: rootImp } - form.setFieldsValue(update) - initialForm.current = { - ...initialForm.current, - ...update, - } - } - // ignore form - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [impData]) - - // TODO: Extract common logic - const handleCancel = useCallback(() => { - form.setFieldsValue({ ...initialForm.current }) - setIsChanged(false) - }, [form]) - - const handleFinish = useCallback( - async (data) => { - setIsPosting(true) - try { - await client.getInstance().userSSOSetConfig({ config: data }) - sendRequest() - setIsChanged(false) - } finally { - setIsPosting(false) - } - }, - [sendRequest] - ) - - const handleAuthStateChange = useCallback(() => { - impSendRequest() - }, [impSendRequest]) - - return ( -
    - - {(error || impError) && } - - - - - {(f) => - f.getFieldValue('enabled') && ( - <> - - - - - - - - - - - - - - ) - } - - {isChanged && ( - - - - - - - )} - -
    - ) -} diff --git a/ui-ori/lib/apps/UserProfile/Form.Session.tsx b/ui-ori/lib/apps/UserProfile/Form.Session.tsx deleted file mode 100644 index cc5d5c8a92..0000000000 --- a/ui-ori/lib/apps/UserProfile/Form.Session.tsx +++ /dev/null @@ -1,221 +0,0 @@ -import { CopyToClipboard } from 'react-copy-to-clipboard' -import { - CheckOutlined, - CopyOutlined, - LogoutOutlined, - QuestionCircleOutlined, - ShareAltOutlined, -} from '@ant-design/icons' -import client from '@lib/client' -import { - Alert, - Button, - Divider, - Form, - Modal, - Select, - Space, - Tooltip, -} from 'antd' -import React from 'react' -import { useCallback, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { Pre } from '@lib/components' -import { getValueFormat } from '@baurine/grafana-value-formats' -import * as auth from '@lib/utils/auth' -import ReactMarkdown from 'react-markdown' -import Checkbox from 'antd/lib/checkbox/Checkbox' -import { store } from '@lib/utils/store' - -const SHARE_SESSION_EXPIRY_HOURS = [ - 0.25, - 0.5, - 1, - 2, - 3, - 6, - 12, - 24, - 24 * 3, - 24 * 7, - 24 * 30, -] - -function ShareSessionButton() { - const { t } = useTranslation() - const [visible, setVisible] = useState(false) - const [isPosting, setIsPosting] = useState(false) - const [code, setCode] = useState(undefined) - const [isCopied, setIsCopied] = useState(false) - const whoAmI = store.useState((s) => s.whoAmI) - - const handleOpen = useCallback(() => { - setVisible(true) - }, []) - - const handleClose = useCallback(() => { - setVisible(false) - setCode(undefined) - setIsPosting(false) - setIsCopied(false) - }, []) - - const handleFinish = useCallback(async (values) => { - try { - setIsPosting(true) - const r = await client.getInstance().userShareSession({ - expire_in_sec: values.expire * 60 * 60, - revoke_write_priv: !!values.read_only, - }) - setCode(r.data.code) - } finally { - setIsPosting(false) - } - }, []) - - const handleCopy = useCallback(() => { - setIsCopied(true) - }, []) - - let button = ( - - ) - - if (whoAmI && !whoAmI.is_shareable) { - button = ( - - {button} - - ) - } - - return ( - <> - {button} - - - - - - - } - visible={!!code} - > - {code}} - type="success" - showIcon - /> - - - - - -
    - - - - - - - - - - - - -
    -
    - - ) -} - -export function SessionForm() { - const { t } = useTranslation() - - const handleLogout = useCallback(async () => { - let signOutURL: string | undefined = undefined - try { - const resp = await client - .getInstance() - .userGetSignOutInfo( - `${window.location.protocol}//${window.location.host}${window.location.pathname}` - ) - signOutURL = resp.data.end_session_url - } catch (e) { - console.error(e) - } - - auth.clearAuthToken() - if (signOutURL) { - window.location.href = signOutURL - } else { - window.location.reload() - } - }, []) - - return ( - - - - - ) -} diff --git a/ui-ori/lib/apps/UserProfile/Form.Version.tsx b/ui-ori/lib/apps/UserProfile/Form.Version.tsx deleted file mode 100644 index f075dcf8c2..0000000000 --- a/ui-ori/lib/apps/UserProfile/Form.Version.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { CopyLink, Descriptions, TextWithInfo } from '@lib/components' -import { store } from '@lib/utils/store' -import { Space } from 'antd' -import React from 'react' - -export function VersionForm() { - const info = store.useState((s) => s.appInfo) - - return ( - <> - {Boolean(info) && ( - - - - - - } - > - {info!.version?.internal_version} - - - - - - } - > - {info!.version?.build_git_hash} - - - } - > - {info!.version?.build_time} - - - } - > - {info!.version?.standalone} - - - - - - } - > - {info!.version?.pd_version} - - - )} - - ) -} diff --git a/ui-ori/lib/apps/UserProfile/constants.tsx b/ui-ori/lib/apps/UserProfile/constants.tsx deleted file mode 100644 index 2afed22bb4..0000000000 --- a/ui-ori/lib/apps/UserProfile/constants.tsx +++ /dev/null @@ -1 +0,0 @@ -export const DEFAULT_FORM_ITEM_STYLE = { width: 200 } diff --git a/ui-ori/lib/apps/UserProfile/index.meta.ts b/ui-ori/lib/apps/UserProfile/index.meta.ts deleted file mode 100644 index f935559aab..0000000000 --- a/ui-ori/lib/apps/UserProfile/index.meta.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { UserOutlined } from '@ant-design/icons' - -export default { - id: 'user_profile', - routerPrefix: '/user_profile', - icon: UserOutlined, - translations: require.context('./translations/', false, /\.yaml$/), - reactRoot: () => import(/* webpackChunkName: "app_user_profile" */ '.'), -} diff --git a/ui-ori/lib/apps/UserProfile/index.tsx b/ui-ori/lib/apps/UserProfile/index.tsx deleted file mode 100644 index d9773715a4..0000000000 --- a/ui-ori/lib/apps/UserProfile/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react' -import { useTranslation } from 'react-i18next' -import { HashRouter as Router } from 'react-router-dom' -import { Card, Root } from '@lib/components' -import { SSOForm } from './Form.SSO' -import { SessionForm } from './Form.Session' -import { PrometheusAddressForm } from './Form.PrometheusAddr' -import { VersionForm } from './Form.Version' -import { LanguageForm } from './Form.Language' - -function App() { - const { t } = useTranslation() - return ( - - - - - - - - - - - - - - - - - - - - ) -} - -export default App diff --git a/ui-ori/lib/apps/UserProfile/translations/en.yaml b/ui-ori/lib/apps/UserProfile/translations/en.yaml deleted file mode 100755 index 4058dec6ea..0000000000 --- a/ui-ori/lib/apps/UserProfile/translations/en.yaml +++ /dev/null @@ -1,78 +0,0 @@ -user_profile: - sso: - title: Single Sign-On (SSO) - switch: - label: Enable to use SSO when sign into {{distro.tidb}} Dashboard - extra: OIDC based SSO is supported - form: - client_id: OIDC Client ID - discovery_url: OIDC Discovery URL - is_read_only: Sign in as read-only privilege - user: - label: Impersonate SQL User - extra: The SSO signed-in user will be using {{distro.tidb}} Dashboard on behalf of this SQL user and shares its permissions. - must_auth: You must authorize to continue - authn_button: Authorize Impersonation - modify_authn_button: Modify Authorization - authn_dialog: - title: Authorize Impersonation - user: SQL User to Impersonate - password: SQL User Password - info: The password of the SQL user will be stored encrypted. The impersonation will fail after SQL user changes the password. - submit: Authorize and Save - close: Cancel - authn_status: - ok: Authorized - auth_failed: 'Cannot impersonate: SQL user password is changed.' - insufficient_privileges: 'Cannot impersonate: Has no sufficient privileges to accsss {{distro.tidb}} dashboard.' - update: Update - cancel: Cancel - service_endpoints: - title: Service Endpoints - prometheus: - title: Prometheus Data Source - form: - deployed: Use deployed address - not_deployed: Prometheus is not deployed - custom: Use customized address - update: Update - cancel: Cancel - custom_form: - address: Customize Prometheus Address - i18n: - title: Language & Localization - language: Language - session: - title: Session - sign_out: Sign Out - share: Share Current Session - share_unavailable_tooltip: Current session is not allowed to be shared - share_session: - text: > - You can invite others to access this {{distro.tidb}} Dashboard by sharing your - current session via an **Authorization Code**: - - - The Authorization Code can be used multiple times. - - - The shared session will be invalidated after the expiry time you specified. - - - The shared session has the same privilege as your current session. - warning: > - Warning: Shared session will remain valid and cannot be revoked until it is expired. - Keep the Authorization Code safe! - form: - expire: Expire in - read_only: Share as read-only privilege - submit: Generate Authorization Code - close: Close - success_dialog: - title: Authorization Code Generated - copy: Copy - copied: Copied - version: - title: Version Information - internal_version: '{{distro.tidb}} Dashboard Internal Version' - build_git_hash: '{{distro.tidb}} Dashboard Build Git Hash' - build_time: '{{distro.tidb}} Dashboard Build Time' - standalone: '{{distro.tidb}} Dashboard Run in Standalone Mode' - pd_version: '{{distro.pd}} Version' diff --git a/ui-ori/lib/apps/UserProfile/translations/zh.yaml b/ui-ori/lib/apps/UserProfile/translations/zh.yaml deleted file mode 100755 index 27961124d3..0000000000 --- a/ui-ori/lib/apps/UserProfile/translations/zh.yaml +++ /dev/null @@ -1,76 +0,0 @@ -user_profile: - sso: - title: 单点登录 (SSO) - switch: - label: 允许使用 SSO 登录到 {{distro.tidb}} Dashboard - extra: 支持基于 OIDC 的 SSO 登录 - form: - client_id: OIDC Client ID - discovery_url: OIDC Discovery URL - is_read_only: 以只读权限登录 - user: - label: 实际登录 SQL 用户 - extra: SSO 登录成功后将被视为使用该 SQL 用户登录使用 {{distro.tidb}} Dashboard,并具有该用户对应的操作权限。 - must_auth: 必须完成授权后才能继续 - authn_button: 授权登录 - modify_authn_button: 修改授权 - authn_dialog: - title: SSO 登录授权 - user: 实际被登录的 SQL 用户 - password: SQL 用户的登录密码 - info: 登录密码将被加密存储;在 SQL 用户修改密码后 SSO 登录将失败(可重新进行登录授权)。 - submit: 授权并保存 - close: 取消 - authn_status: - ok: 已授权 - auth_failed: 授权失败:SQL 用户密码已变更 - insufficient_privileges: 授权失败:缺少访问 {{distro.tidb}} Dashboard 所需的权限 - update: 更新 - cancel: 取消 - service_endpoints: - title: 服务端点 - prometheus: - title: Prometheus 数据源 - form: - deployed: 使用已部署的组件地址 - not_deployed: 未部署 Prometheus 组件 - custom: 使用自定义地址 - update: 更新 - cancel: 取消 - custom_form: - address: 自定义 Prometheus 数据源地址 - i18n: - title: 语言和本地化 - language: 语言 - session: - title: 会话 - sign_out: 登出 - share: 分享当前会话 - share_unavailable_tooltip: 当前会话被禁止分享 - share_session: - text: > - 您可以生成一个**授权码**来将您当前的会话分享给其他人、邀请他们使用该 {{distro.tidb}} Dashboard: - - - 授权码可以被重复使用。 - - - 分享的会话将在您指定的有效时间后过期。 - - - 分享的会话和您当前会话具有相同权限。 - warning: > - 警告:已分享的会话无法被提前注销,将保持有效直到有效时间过期,因此请妥善保管授权码。 - form: - expire: 有效时间 - read_only: 以只读权限分享 - submit: 生成授权码 - close: 关闭 - success_dialog: - title: 授权码已生成 - copy: 复制 - copied: 已复制 - version: - title: 版本信息 - internal_version: '{{distro.tidb}} Dashboard 内部版本号' - build_git_hash: '{{distro.tidb}} Dashboard 编译 Git Hash' - build_time: '{{distro.tidb}} Dashboard 编译时间' - standalone: '{{distro.tidb}} Dashboard 运行于独立模式' - pd_version: '{{distro.pd}} 版本号' diff --git a/ui-ori/lib/client/api/.gitignore b/ui-ori/lib/client/api/.gitignore deleted file mode 100644 index 1a3a5aef43..0000000000 --- a/ui-ori/lib/client/api/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!.openapi-generator-ignore -!.gitignore diff --git a/ui-ori/lib/client/api/.openapi-generator-ignore b/ui-ori/lib/client/api/.openapi-generator-ignore deleted file mode 100644 index 3fbf70c8ae..0000000000 --- a/ui-ori/lib/client/api/.openapi-generator-ignore +++ /dev/null @@ -1,2 +0,0 @@ -git_push.sh -.gitignore diff --git a/ui-ori/lib/client/baseUrl.ts b/ui-ori/lib/client/baseUrl.ts deleted file mode 100644 index b7b36b3a94..0000000000 --- a/ui-ori/lib/client/baseUrl.ts +++ /dev/null @@ -1,20 +0,0 @@ -import publicPathPrefix from '@lib/utils/publicPathPrefix' - -export const API_HOST = (function getApiHost(): string { - let apiPrefix - if (process.env.NODE_ENV === 'development') { - if (process.env.REACT_APP_DASHBOARD_API_URL) { - apiPrefix = `${process.env.REACT_APP_DASHBOARD_API_URL}/dashboard` - } else { - apiPrefix = 'http://127.0.0.1:12333/dashboard' - } - } else { - apiPrefix = publicPathPrefix - } - - return apiPrefix -})() - -export function getApiBasePath(): string { - return `${API_HOST}/api` -} diff --git a/ui-ori/lib/client/index.tsx b/ui-ori/lib/client/index.tsx deleted file mode 100755 index e7aec83246..0000000000 --- a/ui-ori/lib/client/index.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import React from 'react' -import i18next from 'i18next' -import axios, { AxiosInstance } from 'axios' -import { message, Modal, notification } from 'antd' -import * as singleSpa from 'single-spa' - -import * as auth from '@lib/utils/auth' -import * as routing from '@lib/utils/routing' -import * as i18n from '@lib/utils/i18n' -import { reportError } from '@lib/utils/sentryHelpers' - -import { DefaultApi } from './api' -import { getApiBasePath } from './baseUrl' - -export * from './api' - -////////////////////////////// - -let basePath: string -let apiClientInstance: DefaultApi -let rawAxiosInstance: AxiosInstance - -function save( - instanceBasePath: string, - instance: DefaultApi, - axiosInstace: AxiosInstance -) { - basePath = instanceBasePath - apiClientInstance = instance - rawAxiosInstance = axiosInstace -} - -function getInstance(): DefaultApi { - return apiClientInstance -} - -function getBasePath(): string { - return basePath -} - -function getAxiosInstance(): AxiosInstance { - return rawAxiosInstance -} - -export default { getInstance, getBasePath, getAxiosInstance } - -////////////////////////////// - -export enum ErrorStrategy { - Default = 'default', - Custom = 'custom', -} - -const ERR_CODE_OTHER = 'error.api.other' - -function applyErrorHandlerInterceptor(instance: AxiosInstance) { - instance.interceptors.response.use(undefined, async function (err) { - const { response, config } = err - const errorStrategy = config.errorStrategy as ErrorStrategy - const method = (config.method as string).toLowerCase() - - let errCode: string - let content: string - if (err.message === 'Network Error') { - errCode = 'error.network' - } else { - errCode = response?.data?.code - } - if (errCode !== ERR_CODE_OTHER && i18next.exists(errCode ?? '')) { - content = i18next.t(errCode) - } else { - content = - response?.data?.message || err.message || i18next.t(ERR_CODE_OTHER) - } - err.message = content - err.errCode = errCode - - if (errCode === 'error.api.unauthorized') { - // Handle unauthorized error in a unified way - if (!routing.isLocationMatch('/') && !routing.isSignInPage()) { - message.error({ content, key: errCode }) - } - auth.clearAuthToken() - singleSpa.navigateToUrl('#' + routing.signInRoute) - err.handled = true - } else if (errorStrategy === ErrorStrategy.Default) { - if (method === 'get') { - const fullUrl = config.url as string - const API = fullUrl.replace(getBasePath(), '').split('?')[0] - notification.error({ - key: API, - message: i18next.t('error.title'), - description: ( - - API: {API} -
    - {content} -
    - ), - }) - } else if (['post', 'put', 'delete', 'patch'].includes(method)) { - Modal.error({ - title: i18next.t('error.title'), - content: content, - zIndex: 2000, // higher than popover - }) - } - err.handled = true - } - - reportError(err) - return Promise.reject(err) - }) -} - -function initAxios() { - i18n.addTranslations(require.context('./translations/', false, /\.yaml$/)) - - const instance = axios.create() - applyErrorHandlerInterceptor(instance) - - return instance -} - -function init() { - const basePath = getApiBasePath() - const axiosInstance = initAxios() - const dashboardClient = new DefaultApi( - { - basePath, - apiKey: () => auth.getAuthTokenAsBearer() || '', - baseOptions: { - errorStrategy: ErrorStrategy.Default, - }, - }, - undefined, - axiosInstance - ) - - save(basePath, dashboardClient, axiosInstance) -} - -init() diff --git a/ui-ori/lib/client/translations/en.yaml b/ui-ori/lib/client/translations/en.yaml deleted file mode 100755 index 435af99de7..0000000000 --- a/ui-ori/lib/client/translations/en.yaml +++ /dev/null @@ -1,28 +0,0 @@ -error: - title: Error - network: Network connection error - api: - unauthorized: Session is expired. Please sign in again. - insufficient_privilege: You don't have sufficient privilege to perform this action. - user: - signin: - invalid_code: Authorization Code is invalid or expired - insufficient_privileges: 'The user does not have sufficient privileges to access {{distro.tidb}} Dashboard. ' - slow_query: - export_no_data: No slow queires can be exported - statement: - export_no_data: No statements can be exported - continuous_profiling: - ng_monitoring_not_deploy: | - To use or learn more about "Continuous Profiling" feature, please search for "Continuous Profiling" in the {{distro.tidb}} official docs for more information. - If it doesn't resove the issue, please contact the product's technical support. - ng_monitoring_not_start: | - To use or learn more about "Continuous Profiling" feature, please search for "Continuous Profiling" in the {{distro.tidb}} official docs for more information. - If it doesn't resove the issue, please contact the product's technical support. - feature_not_supported: The cluster of this version doesn't support or can't use this feature, please contact with technical support to get more information. - other: Other error - tidb: - no_alive_tidb: No alive {{distro.tidb}} instance - pd_access_failed: Failed to access {{distro.pd}} node - tidb_conn_failed: Failed to connect to {{distro.tidb}} - tidb_auth_failed: '{{distro.tidb}} authentication failed' diff --git a/ui-ori/lib/client/translations/zh.yaml b/ui-ori/lib/client/translations/zh.yaml deleted file mode 100755 index 49eaf957f2..0000000000 --- a/ui-ori/lib/client/translations/zh.yaml +++ /dev/null @@ -1,28 +0,0 @@ -error: - title: 错误 - network: 网络连接失败 - api: - unauthorized: 会话已过期,请重新登录 - insufficient_privilege: 您没有足够的权限进行该操作 - user: - signin: - invalid_code: 授权码无效或已过期 - insufficient_privileges: 此用户缺少访问 {{distro.tidb}} Dashboard 所需的权限。 - slow_query: - export_no_data: 没有可导出的慢查询日志 - statement: - export_no_data: 没有可导出的语句 - continuous_profiling: - ng_monitoring_not_deploy: | - 想使用或深入了解“持续性能分析”功能,请在 {{distro.tidb}} 官方文档搜索“持续性能分析”查看更多内容。 - 若未能解决问题,请联系本产品技术支持。 - ng_monitoring_not_start: | - 想使用或深入了解“持续性能分析”功能,请在 {{distro.tidb}} 官方文档搜索“持续性能分析”查看更多内容。 - 若未能解决问题,请联系本产品技术支持。 - feature_not_supported: 当前版本的集群不支持或无法使用该功能,请联系技术支持了解详细情况。 - other: 其他错误 - tidb: - no_alive_tidb: 没有正在运行的 {{distro.tidb}} 实例 - pd_access_failed: 无法访问 {{distro.pd}} 节点 - tidb_conn_failed: 无法连接到 {{distro.tidb}} - tidb_auth_failed: '{{distro.tidb}} 登录验证失败' diff --git a/ui-ori/lib/components/AnimatedSkeleton/index.module.less b/ui-ori/lib/components/AnimatedSkeleton/index.module.less deleted file mode 100644 index f6014fe661..0000000000 --- a/ui-ori/lib/components/AnimatedSkeleton/index.module.less +++ /dev/null @@ -1,19 +0,0 @@ -@import '~antd/es/style/mixins/motion.less'; - -.container :global { - .skeletonAnimationFirstTime { - animation: 0.5s linear 0.5s antFadeIn; - animation-fill-mode: both; - animation-iteration-count: 1; - } - .skeletonAnimationNotFirstTime { - animation: 0.5s linear 0 antFadeIn; - animation-fill-mode: both; - animation-iteration-count: 1; - } - - .contentAnimation { - animation: 0.2s linear 0s antFadeIn; - animation-fill-mode: both; - } -} diff --git a/ui-ori/lib/components/AnimatedSkeleton/index.tsx b/ui-ori/lib/components/AnimatedSkeleton/index.tsx deleted file mode 100644 index 6b1b990c94..0000000000 --- a/ui-ori/lib/components/AnimatedSkeleton/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React, { useEffect, useState } from 'react' -import cx from 'classnames' -import { Skeleton } from 'antd' -import { SkeletonProps } from 'antd/lib/skeleton' -import { AppearAnimate } from '..' - -import styles from './index.module.less' - -export interface IAnimatedSkeletonProps extends SkeletonProps { - showSkeleton?: boolean - children?: React.ReactNode - style?: React.CSSProperties -} - -function AnimatedSkeleton({ - showSkeleton, - children, - style, - ...restProps -}: IAnimatedSkeletonProps) { - const [skeletonAppears, setSkeletonAppears] = useState(0) - - useEffect(() => { - if (showSkeleton) { - setSkeletonAppears((v) => v + 1) - } - }, [showSkeleton]) - - return ( -
    - {showSkeleton && ( -
    1, - })} - > - -
    - )} - {!showSkeleton && ( - {children} - )} -
    - ) -} - -export default React.memo(AnimatedSkeleton) diff --git a/ui-ori/lib/components/AppearAnimate/index.tsx b/ui-ori/lib/components/AppearAnimate/index.tsx deleted file mode 100644 index 4130321bf7..0000000000 --- a/ui-ori/lib/components/AppearAnimate/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import cx from 'classnames' -import React, { useState, useCallback, useRef } from 'react' -import { useEventListener } from 'ahooks' - -export interface IAppearAnimateProps - extends React.HTMLAttributes { - motionName: string -} - -// A component similar to CSSMotion but is simpler, and avoids some edge case bugs. -// It simply removes the animation class after animation completes. -function AppearAnimate({ - className, - motionName, - children, -}: IAppearAnimateProps) { - const [isFirst, setIsFirst] = useState(true) - - const handleAnimationEnd = useCallback(() => { - setIsFirst(false) - }, []) - - const ref = useRef(null) - useEventListener('animationend', handleAnimationEnd, { target: ref }) - - return ( -
    - {children} -
    - ) -} - -export default React.memo(AppearAnimate) diff --git a/ui-ori/lib/components/Bar/Bar.module.less b/ui-ori/lib/components/Bar/Bar.module.less deleted file mode 100644 index 3739dd3df3..0000000000 --- a/ui-ori/lib/components/Bar/Bar.module.less +++ /dev/null @@ -1,67 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -@bar-height: 8px; -@bar-color: lighten(@primary-color, 10%); -@bar-stack-color: @gray-3; -@error-bar-height: 6px; -@error-bar-color: @gold-5; -@error-line-width: 2px; - -.container { - display: flex; - flex-direction: row; - align-items: center; - min-height: 1em; - height: unit(@line-height-base, em); -} - -.text { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - padding-right: 5px; -} - -.bar_container { - flex-grow: 1; - position: relative; - height: @bar-height; - background: @bar-stack-color; -} - -.bar { - position: absolute; - top: 0; - height: 100%; - background-color: @bar-color; -} - -.error_bar { - position: absolute; - top: 50%; - height: @error-line-width; - margin-top: -@error-line-width / 2; - background-color: @error-bar-color; - - &::before { - content: ''; - position: absolute; - height: @error-bar-height; - width: @error-line-width; - margin-top: -@error-bar-height / 2; - background-color: @error-bar-color; - top: 50%; - } - - &.min_bar { - &::before { - left: 0; - } - } - - &.max_bar { - &::before { - right: 0; - } - } -} diff --git a/ui-ori/lib/components/Bar/Bar.tsx b/ui-ori/lib/components/Bar/Bar.tsx deleted file mode 100644 index b7338205f7..0000000000 --- a/ui-ori/lib/components/Bar/Bar.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import React, { useMemo } from 'react' -import cx from 'classnames' -import clamp from 'lodash/clamp' -import sum from 'lodash/sum' - -import styles from './Bar.module.less' - -export interface IBarProps { - value: number[] | number - colors?: (string | null)[] - capacity: number - min?: number - max?: number - className?: string - children?: React.ReactNode - textWidth?: number | string -} - -function Bar({ - value, - colors, - capacity, - min, - max, - className, - children, - textWidth, - ...rest -}: IBarProps) { - const clampedValues = useMemo(() => { - if (value instanceof Array) { - const r: [number, number][] = [] - let sum = 0 - value.forEach((value) => { - let v: number - if (sum + value <= capacity) { - v = value - } else if (sum < capacity) { - v = capacity - sum - } else { - v = 0 - } - r.push([sum, v]) - sum += v - }) - return r - } else { - return [[0, clamp(value, 0, capacity)]] - } - }, [value, capacity]) - - const valuesSum = useMemo( - () => sum(clampedValues.map(([_s, v]) => v)), - [clampedValues] - ) - - if (min != null) { - min = clamp(min, 0, valuesSum) - if ((valuesSum - min) / capacity < 0.01) { - min = undefined - } - } - if (max != null) { - max = clamp(max, valuesSum, capacity) - if ((max - valuesSum) / capacity < 0.01) { - max = undefined - } - } - - return ( -
    - {children && ( -
    - {children} -
    - )} -
    - {clampedValues.map(([offset, value], idx) => ( -
    - ))} - {min != null && ( -
    - )} - {max != null && ( -
    - )} -
    -
    - ) -} - -export default Bar diff --git a/ui-ori/lib/components/Bar/index.tsx b/ui-ori/lib/components/Bar/index.tsx deleted file mode 100644 index 4d74d167f8..0000000000 --- a/ui-ori/lib/components/Bar/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import Bar from './Bar' -export * from './Bar' -export default Bar diff --git a/ui-ori/lib/components/BaseSelect/index.module.less b/ui-ori/lib/components/BaseSelect/index.module.less deleted file mode 100644 index b0572755bc..0000000000 --- a/ui-ori/lib/components/BaseSelect/index.module.less +++ /dev/null @@ -1,102 +0,0 @@ -@import '~antd/es/style/themes/default.less'; -@import '~antd/es/style/mixins/index'; -@import '~antd/es/input/style/mixin'; -@import '~antd/es/select/style/index'; - -.baseSelect { - .reset-component; - position: relative; - display: inline-block; -} - -.baseSelectInner { - position: relative; - background-color: @select-background; - border: @border-width-base @border-style-base @select-border-color; - border-radius: @border-radius-base; - transition: all 0.3s @ease-in-out; - display: flex; - width: 100%; - height: @input-height-base; - padding: 0 @input-padding-horizontal-base; - cursor: pointer; - color: @text-color; - - &.focused { - .active(); - } - - &.disabled { - color: @disabled-color; - background: @input-disabled-bg; - cursor: not-allowed; - - .baseSelectInput { - cursor: not-allowed; - } - } - - &:not(.disabled):hover { - .hover(); - } -} - -:global(.ant-form-item-has-error) { - .baseSelectInner { - border-color: @error-color !important; - &.focused { - .active(@error-color); - } - } -} - -.baseSelectInput { - opacity: 0; - position: absolute; - top: 0; - left: 0; - background: transparent; - border: none; - outline: none; - cursor: pointer; - width: 100%; - height: @select-height-without-border; -} - -.baseSelectValueDisplay { - position: relative; - display: block; - padding-right: @selection-item-padding; - font-weight: normal; - font-size: @select-dropdown-font-size; - line-height: @select-height-without-border; - transition: all 0.3s; - pointer-events: none; - width: 100%; - - &.isPlaceholder { - opacity: 0.4; - } -} - -.baseSelectArrow { - position: absolute; - top: 53%; // The same as Ant-design's select - right: @input-padding-horizontal-base; - width: @font-size-sm; - height: @font-size-sm; - margin-top: -@font-size-sm / 2; - color: @disabled-color; - font-size: @font-size-sm; - line-height: 1; - text-align: center; - pointer-events: none; -} - -.baseSelectOverlay { - background-color: @select-dropdown-bg; - border-radius: @border-radius-base; - outline: none; - box-shadow: @box-shadow-base; - box-sizing: border-box; -} diff --git a/ui-ori/lib/components/BaseSelect/index.stories.tsx b/ui-ori/lib/components/BaseSelect/index.stories.tsx deleted file mode 100644 index 94ebf91e1f..0000000000 --- a/ui-ori/lib/components/BaseSelect/index.stories.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react' -import { Button } from 'antd' - -import BaseSelect from '.' - -export default { - title: 'Select/Base Select', -} - -export const shortContent = () => ( -
    Content
    } - valueRender={() => Short} - /> -) - -export const longContent = () => ( -
    Content
    } - valueRender={() => Very Lonnnnnnnnng Value} - /> -) - -export const disabled = () => ( -
    Content
    } - valueRender={() => Disabled} - /> -) - -export const antdButton = () => diff --git a/ui-ori/lib/components/BaseSelect/index.tsx b/ui-ori/lib/components/BaseSelect/index.tsx deleted file mode 100644 index d05460d562..0000000000 --- a/ui-ori/lib/components/BaseSelect/index.tsx +++ /dev/null @@ -1,264 +0,0 @@ -import React, { useState, useCallback, useRef, useMemo } from 'react' -import cx from 'classnames' -import { useEventListener } from 'ahooks' -import { DownOutlined } from '@ant-design/icons' -import Trigger from 'rc-trigger' -import KeyCode from 'rc-util/lib/KeyCode' -import _ from 'lodash' - -import { TextWrap } from '..' - -import styles from './index.module.less' - -export interface IBaseSelectProps - extends Omit< - React.HTMLAttributes, - 'onChange' | 'placeholder' - > { - dropdownRender: () => React.ReactElement - value?: T - valueRender: (value?: T) => React.ReactNode - placeholder?: React.ReactNode - overlayClassName?: string - disabled?: boolean - tabIndex?: number - autoFocus?: boolean - onOpen?: () => void - onOpened?: () => void - onClose?: () => void - onClosed?: () => void -} - -const builtinPlacements = { - bottomLeft: { - ignoreShake: true, - points: ['tl', 'bl'], - offset: [0, 4], - overflow: { - adjustX: 0, - adjustY: 0, - }, - }, -} - -function BaseSelect({ - dropdownRender, - value, - valueRender, - placeholder, - disabled, - tabIndex, - autoFocus, - className, - overlayClassName, - onFocus, - onBlur, - onKeyDown, - onOpen, - onOpened, - onClose, - onClosed, - ...restProps -}: IBaseSelectProps) { - const [dropdownVisible, setDropdownVisible] = useState(false) - const toggleDropdownVisible = useCallback(() => { - if (disabled) { - return - } - setDropdownVisible((v) => !v) - }, [disabled]) - - const [isFocused, setFocused] = useState(false) - - const handleDebouncedContainerFocus = useCallback( - (ev: React.FocusEvent) => { - setFocused(true) - onFocus && onFocus(ev) - }, - [onFocus] - ) - - const handleDebouncedContainerBlur = useCallback( - (ev: React.FocusEvent) => { - setDropdownVisible(false) - setFocused(false) - onBlur && onBlur(ev) - }, - [onBlur] - ) - - const debouncedFocusOrBlur = useMemo(() => { - return _.debounce( - (isFocus: boolean, ev: React.FocusEvent) => { - if (isFocus) { - handleDebouncedContainerFocus(ev) - } else { - handleDebouncedContainerBlur(ev) - } - }, - 50 - ) - }, [handleDebouncedContainerFocus, handleDebouncedContainerBlur]) - - const handleContainerFocus = useCallback( - (ev) => { - debouncedFocusOrBlur(true, ev) - }, - [debouncedFocusOrBlur] - ) - - const handleContainerBlur = useCallback( - (ev) => { - debouncedFocusOrBlur(false, ev) - }, - [debouncedFocusOrBlur] - ) - - const handleContainerKeyDown = useCallback( - (ev: React.KeyboardEvent) => { - if (ev.which === KeyCode.ENTER) { - toggleDropdownVisible() - } else if (ev.which === KeyCode.ESC) { - setDropdownVisible(false) - } - onKeyDown && onKeyDown(ev) - }, - [toggleDropdownVisible, onKeyDown] - ) - - const handleSelectorMouseDown = useCallback(() => { - toggleDropdownVisible() - }, [toggleDropdownVisible]) - - const handleOverlayMouseDown = useCallback( - (ev: React.MouseEvent) => { - // Prevent dropdown container blur event - ev.preventDefault() - }, - [] - ) - - const handlePopupVisibleChange = useCallback( - (visible: boolean) => { - if (visible) { - onOpen?.() - } else { - onClose?.() - } - }, - [onOpen, onClose] - ) - - const handleAfterPopupVisibleChange = useCallback( - (visible: boolean) => { - if (visible) { - onOpened?.() - } else { - onClosed?.() - } - }, - [onOpened, onClosed] - ) - - const dropdownOverlayRef = useRef(null) - const containerRef = useRef(null) - - const overlay = useMemo(() => { - return ( -
    - {dropdownRender()} -
    - ) - }, [dropdownRender, overlayClassName, handleOverlayMouseDown]) - - useEventListener('mousedown', (ev: MouseEvent) => { - // Close the dropdown if click outside - if (!dropdownVisible) { - return - } - const hitElements = [dropdownOverlayRef.current, containerRef.current] - if ( - hitElements.every( - (e) => - !e || - !ev.target || - (!e.contains(ev.target as HTMLElement) && e !== ev.target) - ) - ) { - setDropdownVisible(false) - } - }) - - // Close dropdown when disabled change - React.useEffect(() => { - setDropdownVisible((v) => { - if (v && !disabled) { - return false - } - return v - }) - }, [disabled]) - - const renderedValue = valueRender(value) - const displayAsPlaceholder = renderedValue == null - - return ( -
    - -
    -
    - -
    - - {displayAsPlaceholder ? placeholder : renderedValue} - -
    -
    -
    - -
    -
    -
    -
    - ) -} - -export default React.memo(BaseSelect) diff --git a/ui-ori/lib/components/Blink/index.module.less b/ui-ori/lib/components/Blink/index.module.less deleted file mode 100644 index e5c3382429..0000000000 --- a/ui-ori/lib/components/Blink/index.module.less +++ /dev/null @@ -1,17 +0,0 @@ -@import '~antd/lib/style/themes/default.less'; - -.blinkActive { - animation: blink 0.7s 2 ease-in-out; -} - -@keyframes blink { - 0% { - background-color: transparent; - } - 50% { - background-color: rgba(@gold-5, 0.4); - } - 100% { - background-color: transparent; - } -} diff --git a/ui-ori/lib/components/Blink/index.tsx b/ui-ori/lib/components/Blink/index.tsx deleted file mode 100644 index cd02933761..0000000000 --- a/ui-ori/lib/components/Blink/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import useQueryParams from '@lib/utils/useQueryParams' -import React from 'react' -import cx from 'classnames' - -import styles from './index.module.less' - -export interface IBlinkProps extends React.HTMLAttributes { - activeId: string -} - -export default function Blink({ - activeId, - children, - className, - ...restProps -}: IBlinkProps) { - const { blink } = useQueryParams() - - return ( -
    - {children} -
    - ) -} diff --git a/ui-ori/lib/components/Card/index.module.less b/ui-ori/lib/components/Card/index.module.less deleted file mode 100644 index 2e997790ad..0000000000 --- a/ui-ori/lib/components/Card/index.module.less +++ /dev/null @@ -1,73 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.cardContainer { - // &:before, - // &:after { - // // Handle margin collapse - // content: ' '; - // display: table; - // } -} - -.cardInner { - margin: @padding-page; - - &.noMargin { - margin: 0; - } - - &.noMarginTop { - margin-top: 0; - } - - &.noMarginBottom { - margin-bottom: 0; - } - - &.noMarginLeft { - margin-left: 0; - } - - &.noMarginRight { - margin-right: 0; - } -} - -.cardTitleSection { - margin: @padding-lg 0; - display: flex; - flex-direction: row; - align-items: center; -} - -.cardTitle { - color: @heading-color; - font-size: @heading-4-size; - line-height: 32px; - margin-right: @padding-md; -} - -.cardSubTitle { - margin-left: @padding-md; - margin-right: @padding-md; -} - -.cardTitleSpacer { - flex-grow: 1; -} - -.hasTitle > .cardContent { - margin-top: @padding-lg; -} - -.cardContainer.flexGrow { - display: flex; - flex-grow: 1; - flex-direction: column; - - .cardInner, - .cardContent { - display: flex; - flex-grow: 1; - } -} diff --git a/ui-ori/lib/components/Card/index.tsx b/ui-ori/lib/components/Card/index.tsx deleted file mode 100644 index 13c0500026..0000000000 --- a/ui-ori/lib/components/Card/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React, { ReactNode } from 'react' -import cx from 'classnames' -import styles from './index.module.less' - -export interface ICardProps - extends Omit, 'title'> { - title?: ReactNode - subTitle?: ReactNode - extra?: ReactNode - noMargin?: boolean - noMarginTop?: boolean - noMarginBottom?: boolean - noMarginLeft?: boolean - noMarginRight?: boolean - flexGrow?: boolean -} - -export default function Card({ - title, - subTitle, - extra, - className, - noMargin, - noMarginTop, - noMarginBottom, - noMarginLeft, - noMarginRight, - flexGrow, - children, - ...rest -}: ICardProps) { - return ( -
    -
    - {(title || subTitle || extra) && ( -
    - {title &&
    {title}
    } - {subTitle &&
    {subTitle}
    } -
    - {extra &&
    {extra}
    } -
    - )} - {children &&
    {children}
    } -
    -
    - ) -} diff --git a/ui-ori/lib/components/CardTable/GroupHeader.tsx b/ui-ori/lib/components/CardTable/GroupHeader.tsx deleted file mode 100644 index 5e0532ff98..0000000000 --- a/ui-ori/lib/components/CardTable/GroupHeader.tsx +++ /dev/null @@ -1,115 +0,0 @@ -// FIXME: This is mostly a clone from https://github.com/microsoft/fluentui/blob/master/packages/office-ui-fabric-react/src/components/GroupedList/GroupHeader.base.tsx, but replaced with Ant'd Checkbox -// Drop it after https://github.com/microsoft/fluentui/issues/13144 is resolved - -import React from 'react' -import { - classNamesFunction, - styled, -} from 'office-ui-fabric-react/lib/Utilities' -import { - IGroupHeaderStyleProps, - IGroupHeaderStyles, - IGroupHeaderProps, - GroupSpacer, -} from 'office-ui-fabric-react/lib/GroupedList' -import { - FocusZone, - FocusZoneDirection, -} from 'office-ui-fabric-react/lib/FocusZone' -import { getStyles } from 'office-ui-fabric-react/lib/components/GroupedList/GroupHeader.styles' - -import { Icon } from 'office-ui-fabric-react/lib/Icon' -import { Checkbox } from 'antd' -import { usePersistFn } from 'ahooks' - -const getClassNames = classNamesFunction< - IGroupHeaderStyleProps, - IGroupHeaderStyles ->() - -function BaseAntCheckboxGroupHeader(props: IGroupHeaderProps) { - const _classNames = getClassNames(props.styles, { - theme: props.theme!, - className: props.className, - selected: props.selected, - isCollapsed: props.group?.isCollapsed, - compact: props.compact, - }) - - const _onHeaderClick = usePersistFn(() => { - if (props.onToggleSelectGroup) { - props.onToggleSelectGroup(props.group!) - } - }) - - const _onToggleSelectGroupClick = usePersistFn( - (ev: React.MouseEvent) => { - if (props.onToggleSelectGroup) { - props.onToggleSelectGroup(props.group!) - } - ev.preventDefault() - ev.stopPropagation() - } - ) - - const _onToggleCollapse = usePersistFn( - (ev: React.MouseEvent) => { - if (props.onToggleCollapse) { - props.onToggleCollapse(props.group!) - } - ev.stopPropagation() - ev.preventDefault() - } - ) - - return ( -
    - - - - - -
    - {props.group?.name} -
    -
    -
    - ) -} - -export const AntCheckboxGroupHeader: React.FunctionComponent = - styled( - BaseAntCheckboxGroupHeader, - getStyles, - undefined, - { - scope: 'GroupHeader', - } - ) diff --git a/ui-ori/lib/components/CardTable/index.module.less b/ui-ori/lib/components/CardTable/index.module.less deleted file mode 100644 index af3857d6a5..0000000000 --- a/ui-ori/lib/components/CardTable/index.module.less +++ /dev/null @@ -1,61 +0,0 @@ -.cardTable { - :global { - .ms-DetailsRow { - > :first-child.ms-DetailsRow-fields { - font-size: 0.8rem; - > :first-child { - padding-left: @padding-page; - } - } - } - } -} - -.cardTable.contentExtended { - :global { - .ms-DetailsRow { - > :first-child.ms-DetailsRow-fields { - > :last-child { - padding-right: @padding-page; - } - } - } - } -} - -.tableHeader { - :global { - .ms-DetailsHeader { - padding-top: 0; - - > :first-child .ms-DetailsHeader-cellTitle { - padding-left: @padding-page; - } - - // FIXME: For sticky headers, when there is `.contentExtended`, we - // need to add padding right. - - // > :nth-last-child(2) .ms-DetailsHeader-cellTitle { - // padding-right: @padding-page; - // } - - // &.is-resizingColumn > :nth-last-child(3) .ms-DetailsHeader-cellTitle { - // // FIXME: This is highly magical - // padding-right: @padding-page; - // } - } - } -} - -.clickableTableRow { - cursor: pointer; -} - -.highlightRow { - border: 1px solid; -} - -.cardTableContent { - margin-left: -@padding-page; - margin-right: -@padding-page; -} diff --git a/ui-ori/lib/components/CardTable/index.tsx b/ui-ori/lib/components/CardTable/index.tsx deleted file mode 100644 index 011bdbf085..0000000000 --- a/ui-ori/lib/components/CardTable/index.tsx +++ /dev/null @@ -1,267 +0,0 @@ -import { IRenderFunction } from '@uifabric/utilities' -import { usePersistFn } from 'ahooks' -import { Checkbox } from 'antd' -import cx from 'classnames' -import { - ColumnActionsMode, - ConstrainMode, - DetailsList, - DetailsListLayoutMode, - IColumn, - IDetailsList, - IDetailsListProps, - SelectionMode, - IDetailsRowProps, -} from 'office-ui-fabric-react/lib/DetailsList' -import { Sticky, StickyPositionType } from 'office-ui-fabric-react/lib/Sticky' -import React, { useCallback, useEffect, useMemo, useRef } from 'react' - -import AnimatedSkeleton from '../AnimatedSkeleton' -import Card from '../Card' -import ErrorBar from '../ErrorBar' - -import styles from './index.module.less' - -export { AntCheckboxGroupHeader } from './GroupHeader' - -DetailsList['whyDidYouRender'] = { - customName: 'DetailsList', -} - -function renderStickyHeader(props, defaultRender) { - if (!props) { - return null - } - return ( - -
    {defaultRender!(props)}
    -
    - ) -} - -function renderCheckbox(props) { - return -} - -export function ImprovedDetailsList(props: IDetailsListProps) { - return ( - - ) -} - -ImprovedDetailsList.whyDidYouRender = true - -export const MemoDetailsList = React.memo(ImprovedDetailsList) - -function copyAndSort( - items: T[], - columnKey: string, - isSortedDescending?: boolean -): T[] { - const key = columnKey as keyof T - return items - .slice(0) - .sort((a: T, b: T) => - (isSortedDescending ? a[key] < b[key] : a[key] > b[key]) ? 1 : -1 - ) -} - -export interface ICardTableProps extends IDetailsListProps { - title?: React.ReactNode - subTitle?: React.ReactNode - className?: string - style?: object - loading?: boolean - hideLoadingWhenNotEmpty?: boolean // Whether loading animation should not show when data is not empty - errors?: any[] - - cardExtra?: React.ReactNode - cardNoMargin?: boolean - cardNoMarginTop?: boolean - extendLastColumn?: boolean - - // The keys of visible columns. If null, all columns will be shown. - visibleColumnKeys?: { [key: string]: boolean } - visibleItemsCount?: number - - // Handle sort - orderBy?: string - desc?: boolean - onChangeOrder?: (orderBy: string, desc: boolean) => void - - // Event triggered when a row is clicked. - onRowClicked?: ( - item: any, - itemIndex: number, - ev: React.MouseEvent - ) => void - clickedRowIndex?: number -} - -function useRenderClickableRow( - onRowClicked, - clickedRowIdx, - customRender?: IRenderFunction | undefined -) { - return useCallback( - (props, defaultRender) => { - if (!props) { - return null - } - return ( -
    onRowClicked?.(props.item, props.itemIndex, ev)} - > - {customRender ? customRender(props) : defaultRender!(props)} -
    - ) - }, - [onRowClicked, clickedRowIdx, customRender] - ) -} - -function dummyColumn(): IColumn { - return { - name: '', - key: 'dummy', - minWidth: 28, - maxWidth: 28, - onRender: (_rec) => null, - } -} - -export default function CardTable(props: ICardTableProps) { - const { - title, - subTitle, - className, - style, - loading = false, - hideLoadingWhenNotEmpty, - errors = [], - cardExtra, - cardNoMargin, - cardNoMarginTop, - extendLastColumn, - visibleColumnKeys, - visibleItemsCount, - orderBy, - desc = true, - onChangeOrder, - onRowClicked, - clickedRowIndex, - columns, - items, - onRenderRow, - ...restProps - } = props - const renderClickableRow = useRenderClickableRow( - onRowClicked, - clickedRowIndex || -1, - onRenderRow - ) - - const onColumnClick = usePersistFn( - (_ev: React.MouseEvent, column: IColumn) => { - if (!onChangeOrder) { - return - } - if (column.key === orderBy) { - onChangeOrder(orderBy, !desc) - } else { - onChangeOrder(column.key, true) - } - } - ) - - const finalColumns = useMemo(() => { - let newColumns: IColumn[] = columns || [] - if (visibleColumnKeys != null) { - newColumns = newColumns.filter((c) => visibleColumnKeys[c.key]) - } - newColumns = newColumns.map((c) => ({ - ...c, - isResizable: c.isResizable ?? true, - isSorted: c.key === orderBy, - isSortedDescending: desc, - onColumnClick, - columnActionsMode: c.columnActionsMode || ColumnActionsMode.disabled, - })) - if (!extendLastColumn) { - newColumns.push(dummyColumn()) - } - return newColumns - }, [ - onColumnClick, - columns, - visibleColumnKeys, - orderBy, - desc, - extendLastColumn, - ]) - - const finalItems = useMemo(() => { - let newItems = items || [] - const curColumn = finalColumns.find((col) => col.key === orderBy) - if (curColumn) { - newItems = copyAndSort( - newItems, - curColumn.fieldName!, - curColumn.isSortedDescending - ) - } - if (visibleItemsCount != null) { - newItems = newItems.slice(0, visibleItemsCount) - } - return newItems - }, [visibleItemsCount, items, orderBy, finalColumns]) - - const tableRef = useRef(null) - useEffect(() => { - if ((clickedRowIndex ?? -1) > 0) { - tableRef.current?.scrollToIndex(clickedRowIndex!) - } - }) - - return ( - - - -
    - -
    -
    -
    - ) -} diff --git a/ui-ori/lib/components/CardTabs/index.module.less b/ui-ori/lib/components/CardTabs/index.module.less deleted file mode 100644 index 307c039577..0000000000 --- a/ui-ori/lib/components/CardTabs/index.module.less +++ /dev/null @@ -1,9 +0,0 @@ -.tabs { - margin-left: -@padding-page; - margin-right: -@padding-page; - - .card_tab_navs { - padding-left: @padding-page; - padding-right: @padding-page; - } -} diff --git a/ui-ori/lib/components/CardTabs/index.tsx b/ui-ori/lib/components/CardTabs/index.tsx deleted file mode 100644 index 82cc871826..0000000000 --- a/ui-ori/lib/components/CardTabs/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, { useState } from 'react' -import { Tabs } from 'antd' -import cx from 'classnames' -import styles from './index.module.less' -import { TabsProps } from 'antd/es/tabs' - -type Tab = { - key: string - title: string - content: () => React.ReactNode -} - -export interface ICardTabsProps extends TabsProps { - className?: string - tabs: Tab[] -} - -function renderCardTabBar(props, DefaultTabBar) { - return -} - -function CardTabs({ - className, - tabs, - defaultActiveKey, - onChange, - renderTabBar, - ...restProps -}: ICardTabsProps) { - const [tabKey, setTabKey] = useState(defaultActiveKey || tabs[0].key) - const c = cx(styles.tabs, className) - const selectedTab = tabs.find((tab) => tab.key === tabKey) - - function changeTab(tabKey) { - setTabKey(tabKey) - onChange && onChange(tabKey) - } - - return ( - <> - - {tabs.map((tab) => ( - - ))} - - {selectedTab?.content()} - - ) -} - -export default CardTabs diff --git a/ui-ori/lib/components/ColumnsSelector/index.module.less b/ui-ori/lib/components/ColumnsSelector/index.module.less deleted file mode 100644 index 3d9118d274..0000000000 --- a/ui-ori/lib/components/ColumnsSelector/index.module.less +++ /dev/null @@ -1,14 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.title_container { - display: flex; - align-items: center; - justify-content: space-between; - height: 32px; -} - -.foot_container { - border-top: 1px solid @border-color-split; - margin: 0 -@popover-padding-horizontal; - padding: 8px @popover-padding-horizontal 0; -} diff --git a/ui-ori/lib/components/ColumnsSelector/index.tsx b/ui-ori/lib/components/ColumnsSelector/index.tsx deleted file mode 100644 index fa243f85e3..0000000000 --- a/ui-ori/lib/components/ColumnsSelector/index.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import React, { ReactNode, useMemo, useState, useEffect } from 'react' -import { Checkbox, Popover, Space, Button } from 'antd' -import { DownOutlined } from '@ant-design/icons' -import { useTranslation } from 'react-i18next' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import { addTranslationResource } from '@lib/utils/i18n' - -import styles from './index.module.less' - -const translations = { - en: { - trigger_text: 'Columns', - select: 'Select', - reset: 'Reset', - }, - zh: { - trigger_text: '选择列', - select: '选择', - reset: '重置', - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - columnsSelector: translations[key], - }, - }) -} - -export interface IColumnKeys { - [key: string]: boolean -} - -export interface IColumnsSelectorProps { - columns: IColumn[] - visibleColumnKeys?: IColumnKeys - defaultVisibleColumnKeys?: IColumnKeys - onChange?: (visibleKeys: IColumnKeys) => void - foot?: ReactNode -} - -export default function ColumnsSelector({ - columns, - visibleColumnKeys, - defaultVisibleColumnKeys, - onChange, - foot, -}: IColumnsSelectorProps) { - const { t } = useTranslation() - const [indeterminate, setIndeterminate] = useState(true) - const [checkedAll, setCheckedAll] = useState(false) - - const filteredColumns = useMemo( - () => columns.filter((c) => c.key !== 'dummy'), - [columns] - ) - - const visibleKeys = useMemo(() => { - if (visibleColumnKeys) { - return visibleColumnKeys - } - return columns.reduce((acc, cur) => { - acc[cur.key] = true - return acc - }, {}) - }, [visibleColumnKeys, columns]) - - useEffect(() => { - function updateCheckAllStatus(columnKeys) { - const checkedKeysCount = Object.keys(columnKeys).filter( - (k) => columnKeys[k] && k !== 'dummy' - ).length - setIndeterminate( - checkedKeysCount > 0 && checkedKeysCount < filteredColumns.length - ) - setCheckedAll(checkedKeysCount === filteredColumns.length) - } - - updateCheckAllStatus(visibleKeys) - }, [visibleKeys, filteredColumns]) - - function handleCheckAllChange(e) { - const checked = e.target.checked - const newVisibleKeys = columns.reduce((acc, cur) => { - acc[cur.key] = checked - return acc - }, {}) - onChange && onChange(newVisibleKeys) - } - - function handleCheckChange(e, column: IColumn) { - const checked = e.target.checked - const newVisibleKeys = { - ...visibleKeys, - [column.key]: checked, - } - onChange && onChange(newVisibleKeys) - } - - const title = ( -
    - - {t('component.columnsSelector.select')} - - {defaultVisibleColumnKeys && ( - - )} -
    - ) - - const content = ( -
    - - {filteredColumns.map((column) => ( - handleCheckChange(e, column)} - > - {column.name} - - ))} - - {foot &&
    {foot}
    } -
    - ) - - return ( - - - {t('component.columnsSelector.trigger_text')} - - - ) -} diff --git a/ui-ori/lib/components/CopyLink/index.module.less b/ui-ori/lib/components/CopyLink/index.module.less deleted file mode 100644 index 4f3c5735bd..0000000000 --- a/ui-ori/lib/components/CopyLink/index.module.less +++ /dev/null @@ -1,5 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.copiedText { - color: @success-color; -} diff --git a/ui-ori/lib/components/CopyLink/index.tsx b/ui-ori/lib/components/CopyLink/index.tsx deleted file mode 100644 index c17fb4d21e..0000000000 --- a/ui-ori/lib/components/CopyLink/index.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import React, { useState } from 'react' -import { CopyToClipboard } from 'react-copy-to-clipboard' -import { useTranslation } from 'react-i18next' -import { useTimeoutFn } from 'react-use' -import { CheckOutlined, CopyOutlined } from '@ant-design/icons' -import { addTranslationResource } from '@lib/utils/i18n' - -import styles from './index.module.less' - -type DisplayVariant = 'default' | 'original_sql' | 'formatted_sql' -const transKeys: { [K in DisplayVariant]: string } = { - default: 'copy', - original_sql: 'copyOriginal', - formatted_sql: 'copyFormatted', -} - -export interface ICopyLinkProps { - data?: string - displayVariant?: DisplayVariant -} - -const translations = { - en: { - copy: 'Copy', - copyOriginal: 'Copy Original', - copyFormatted: 'Copy Formatted', - success: 'Copied', - }, - zh: { - copy: '复制', - copyOriginal: '复制原始 SQL', - copyFormatted: '复制格式化 SQL', - success: '已复制', - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - copyLink: translations[key], - }, - }) -} - -function CopyLink({ data, displayVariant = 'default' }: ICopyLinkProps) { - const { t } = useTranslation() - const [showCopied, setShowCopied] = useState(false) - - const reset = useTimeoutFn(() => { - setShowCopied(false) - }, 1500)[2] - - const handleCopy = () => { - setShowCopied(true) - reset() - } - - return ( - - {!showCopied && ( - - - {t(`component.copyLink.${transKeys[displayVariant]}`)}{' '} - - - - )} - {showCopied && ( - - {t('component.copyLink.success')} - - )} - - ) -} - -export default React.memo(CopyLink) diff --git a/ui-ori/lib/components/DatePicker/index.tsx b/ui-ori/lib/components/DatePicker/index.tsx deleted file mode 100644 index 63ff7b1b5c..0000000000 --- a/ui-ori/lib/components/DatePicker/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { Dayjs } from 'dayjs' -import dayjsGenerateConfig from 'rc-picker/lib/generate/dayjs' -import generatePicker from 'antd/es/date-picker/generatePicker' -import 'antd/es/date-picker/style/index' - -const DatePicker = generatePicker(dayjsGenerateConfig) - -export default DatePicker diff --git a/ui-ori/lib/components/DateTime/Calendar.tsx b/ui-ori/lib/components/DateTime/Calendar.tsx deleted file mode 100644 index 542f89684a..0000000000 --- a/ui-ori/lib/components/DateTime/Calendar.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import React from 'react' -import { Tooltip } from 'antd' -import dayjs from 'dayjs' -import { useTranslation } from 'react-i18next' -import { addTranslationResource } from '@lib/utils/i18n' -import i18next from 'i18next' -import { format as longFormat } from './Long' -import { IDateTimeProps } from '.' - -import calendar from './calendarPlugin' -import weekOfYear from 'dayjs/plugin/weekOfYear' -import localizedFormat from 'dayjs/plugin/localizedFormat' -import timezone from 'dayjs/plugin/timezone' - -dayjs.extend(calendar) -dayjs.extend(weekOfYear) -dayjs.extend(localizedFormat) -dayjs.extend(timezone) - -const translations = { - en: { - sameDay: '[Today at] h:mm A (z)', - sameWeek: 'dddd h:mm A (z)', - nextDay: '[Tomorrow] h:mm A (z)', - nextWeek: '[Next] dddd h:mm A (z)', - lastDay: '[Yesterday] h:mm A (z)', - lastWeek: '[Last] dddd h:mm A (z)', - sameElse: 'lll (z)', - }, - zh: { - sameDay: '[今天] HH:mm (z)', - sameWeek: 'dddd HH:mm (z)', - nextDay: '[明天] HH:mm (z)', - nextWeek: '[下]dddd HH:mm (z)', - lastDay: '[昨天] HH:mm (z)', - lastWeek: '[上]dddd HH:mm (z)', - sameElse: 'lll (z)', - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - dateTime: { - calendar: translations[key], - }, - }, - }) -} - -function Calendar({ unixTimestampMs, ...rest }: IDateTimeProps) { - useTranslation() // Re-render when language changes - return ( - - {format(unixTimestampMs)} - - ) -} - -export function format(unixTimestampMs: number) { - return dayjs(unixTimestampMs).calendar(undefined, { - sameDay: i18next.t('component.dateTime.calendar.sameDay'), - sameWeek: i18next.t('component.dateTime.calendar.sameWeek'), - nextDay: i18next.t('component.dateTime.calendar.nextDay'), - nextWeek: i18next.t('component.dateTime.calendar.nextWeek'), - lastDay: i18next.t('component.dateTime.calendar.lastDay'), - lastWeek: i18next.t('component.dateTime.calendar.lastWeek'), - sameElse: i18next.t('component.dateTime.calendar.sameElse'), - }) -} - -export default React.memo(Calendar) diff --git a/ui-ori/lib/components/DateTime/Long.tsx b/ui-ori/lib/components/DateTime/Long.tsx deleted file mode 100644 index 1682aa1f0f..0000000000 --- a/ui-ori/lib/components/DateTime/Long.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' -import { Tooltip } from 'antd' -import dayjs from 'dayjs' -import { useTranslation } from 'react-i18next' -import { IDateTimeProps } from '.' - -import localizedFormat from 'dayjs/plugin/localizedFormat' - -dayjs.extend(localizedFormat) - -function Long({ unixTimestampMs, ...rest }: IDateTimeProps) { - useTranslation() // Re-render when language changes - return ( - - {format(unixTimestampMs)} - - ) -} - -export function format(unixTimestampMs: number) { - return dayjs(unixTimestampMs).format('ll LTS (z)') -} - -export default React.memo(Long) diff --git a/ui-ori/lib/components/DateTime/calendarPlugin.ts b/ui-ori/lib/components/DateTime/calendarPlugin.ts deleted file mode 100644 index e69f3ef824..0000000000 --- a/ui-ori/lib/components/DateTime/calendarPlugin.ts +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2021 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Inspired by: -// https://github.com/iamkun/dayjs/issues/1226#issuecomment-768796249 -// https://github.com/iamkun/dayjs/blob/dev/src/plugin/calendar/index.js - -declare module 'dayjs' { - interface Dayjs { - calendar(referenceTime?: ConfigType, formats?: object): string - } -} - -export default (o, c, d) => { - const LT = 'h:mm A' - const L = 'MM/DD/YYYY' - const calendarFormat = { - lastDay: `[Yesterday at] ${LT}`, - sameDay: `[Today at] ${LT}`, - nextDay: `[Tomorrow at] ${LT}`, - sameWeek: `dddd [at] ${LT}`, - nextWeek: `[Next] dddd [at] ${LT}`, - lastWeek: `[Last] dddd [at] ${LT}`, - sameElse: L, - } - const proto = c.prototype - proto.calendar = function (referenceTime, formats) { - const format = formats || this.$locale().calendar || calendarFormat - const referenceStartOfDay = d(referenceTime || undefined).startOf('d') - const diff = this.diff(referenceStartOfDay, 'd', true) - const weekDiff = this.week() - referenceStartOfDay.week() - const sameElse = 'sameElse' - /* eslint-disable no-nested-ternary */ - const retVal = - weekDiff < -1 || weekDiff > 1 - ? sameElse - : diff < -1 - ? weekDiff === 0 - ? 'sameWeek' - : 'lastWeek' - : diff < 0 - ? 'lastDay' - : diff < 1 - ? 'sameDay' - : diff < 2 - ? 'nextDay' - : weekDiff === 0 - ? 'sameWeek' - : 'nextWeek' - /* eslint-enable no-nested-ternary */ - const currentFormat = format[retVal] || calendarFormat[retVal] - if (typeof currentFormat === 'function') { - return currentFormat.call(this, d()) - } - return this.format(currentFormat) - } -} diff --git a/ui-ori/lib/components/DateTime/index.tsx b/ui-ori/lib/components/DateTime/index.tsx deleted file mode 100644 index c350cd1c3a..0000000000 --- a/ui-ori/lib/components/DateTime/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import Calendar from './Calendar' -import Long from './Long' - -export interface IDateTimeProps { - unixTimestampMs: number -} - -export default { Calendar, Long } diff --git a/ui-ori/lib/components/Descriptions/index.module.less b/ui-ori/lib/components/Descriptions/index.module.less deleted file mode 100644 index e24ef434e0..0000000000 --- a/ui-ori/lib/components/Descriptions/index.module.less +++ /dev/null @@ -1,52 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.descriptions { - :global { - .ant-descriptions-row { - line-height: 1; - } - - .ant-descriptions-row > th { - padding: 0; - padding-bottom: @padding-xs; - } - - .ant-descriptions-row > td { - padding: 0; - padding-bottom: @padding-md; - } - - .ant-descriptions-item-label { - color: @text-color-secondary; - } - - .ant-descriptions-item-content { - color: @text-color; - } - } -} - -.item { - // nothing for now -} - -.itemSingleline { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - > span { - display: inline; - } - pre { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} - -.itemMultiline { - overflow-wrap: break-word; - white-space: normal; - text-overflow: inherit; - overflow: auto; -} diff --git a/ui-ori/lib/components/Descriptions/index.tsx b/ui-ori/lib/components/Descriptions/index.tsx deleted file mode 100644 index 17c95e2947..0000000000 --- a/ui-ori/lib/components/Descriptions/index.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react' -import { Descriptions as AntDescriptions } from 'antd' -import type { DescriptionsItemProps } from 'antd/es/descriptions/Item' -import cx from 'classnames' - -import styles from './index.module.less' - -export interface IDescriptionsProps { - className?: string - children?: - | (React.ReactElement | null | undefined)[] - | React.ReactElement - column?: number -} - -export interface IDescriptionsItemProps extends DescriptionsItemProps { - className?: string - children: React.ReactNode - multiline?: boolean -} - -// FIXME: This logic duplicates to -function mapItem(item: React.ReactElement) { - const { props } = item - const { multiline, className, children, ...restProps } = props - const c = cx(className, styles.item, { - [styles.itemMultiline]: multiline, - [styles.itemSingleline]: !multiline, - }) - return ( - - {children} - - ) -} - -function Descriptions({ - className, - children, - column, - ...restProps -}: IDescriptionsProps) { - const c = cx(className, styles.descriptions) - let realChildren - if (children) { - if (Array.isArray(children)) { - realChildren = children.filter((v) => v != null).map((v) => mapItem(v!)) - } else { - realChildren = mapItem(children) - } - } - return ( - - {realChildren} - - ) -} - -Descriptions.Item = AntDescriptions.Item as React.FC - -export default Descriptions diff --git a/ui-ori/lib/components/ErrorBar/index.tsx b/ui-ori/lib/components/ErrorBar/index.tsx deleted file mode 100644 index 8ff81e1b2e..0000000000 --- a/ui-ori/lib/components/ErrorBar/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { Alert } from 'antd' -import _ from 'lodash' -import React, { useMemo } from 'react' - -export interface IErrorBarProps { - errors: any[] -} - -export default function ErrorBar({ errors }: IErrorBarProps) { - // show at most 3 kinds of errors - const errorMsgs = useMemo( - () => - _.uniq(_.map(errors, (err) => err?.message || '')) - .filter((msg) => msg !== '') - .slice(0, 3), - [errors] - ) - - if (errorMsgs.length === 0) { - return null - } else if (errorMsgs.length === 1) { - return - } else { - return ( - - {errorMsgs.map((msg, idx) => ( -
  • {msg}
  • - ))} - - } - /> - ) - } -} diff --git a/ui-ori/lib/components/Expand/index.tsx b/ui-ori/lib/components/Expand/index.tsx deleted file mode 100644 index 53c2564a87..0000000000 --- a/ui-ori/lib/components/Expand/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' -import { useTranslation } from 'react-i18next' -import { addTranslationResource } from '@lib/utils/i18n' - -export interface IExpandProps { - expanded?: boolean - collapsedContent?: React.ReactNode - children: React.ReactNode -} - -function Expand({ collapsedContent, children, expanded }: IExpandProps) { - // FIXME: Animations - return
    {expanded ? children : collapsedContent ?? children}
    -} - -const translations = { - en: { - expandText: 'Expand', - collapseText: 'Collapse', - }, - zh: { - expandText: '展开', - collapseText: '收起', - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - expandLink: translations[key], - }, - }) -} - -export interface IExpandLinkProps - extends React.AnchorHTMLAttributes { - expanded?: boolean -} - -function Link({ expanded, ...restProps }: IExpandLinkProps) { - const { t } = useTranslation() - return ( - - {expanded - ? t('component.expandLink.collapseText') - : t('component.expandLink.expandText')} - - ) -} - -Expand.Link = Link - -export default Expand diff --git a/ui-ori/lib/components/Head/index.module.less b/ui-ori/lib/components/Head/index.module.less deleted file mode 100644 index dfb3a02860..0000000000 --- a/ui-ori/lib/components/Head/index.module.less +++ /dev/null @@ -1,44 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.headContainer { - // &:before, - // &:after { - // // Handle margin collapse - // content: ' '; - // display: table; - // } -} - -.headInner { - margin-top: @padding-page; -} - -.headTitleSection { - margin: @padding-lg @padding-page; - display: flex; - flex-direction: row; - align-items: center; -} - -.headBack { - margin-right: @padding-lg; - flex-shrink: 0; -} - -.headTitle { - color: @heading-color; - font-size: @heading-4-size; - line-height: 32px; - flex-grow: 1; - margin-right: @padding-lg; -} - -.headContent { - margin: @padding-lg @padding-page; -} - -.headFooter { - margin-top: @padding-lg; - border-bottom: 1px solid @border-color-base; - padding: 0 @padding-page; -} diff --git a/ui-ori/lib/components/Head/index.tsx b/ui-ori/lib/components/Head/index.tsx deleted file mode 100644 index 6079e9bf06..0000000000 --- a/ui-ori/lib/components/Head/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React, { ReactNode } from 'react' -import cx from 'classnames' -import styles from './index.module.less' - -export interface IHeadProps { - title: string - titleExtra?: ReactNode - back?: ReactNode - footer?: ReactNode - className?: string - children?: ReactNode -} - -function Head({ - title, - titleExtra, - back, - footer, - className, - children, - ...rest -}: IHeadProps) { - return ( -
    -
    - {(title || titleExtra || back) && ( -
    - {back &&
    {back}
    } - {title &&
    {title}
    } - {titleExtra &&
    {titleExtra}
    } -
    - )} - {children &&
    {children}
    } - {footer &&
    {footer}
    } -
    -
    - ) -} - -export default Head diff --git a/ui-ori/lib/components/HighlightSQL/index.tsx b/ui-ori/lib/components/HighlightSQL/index.tsx deleted file mode 100644 index 7e6b2b5e2a..0000000000 --- a/ui-ori/lib/components/HighlightSQL/index.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React, { useMemo } from 'react' - -import { Light as SyntaxHighlighter } from 'react-syntax-highlighter' -import sql from 'react-syntax-highlighter/dist/esm/languages/hljs/sql' -import lightTheme from 'react-syntax-highlighter/dist/esm/styles/hljs/atom-one-light' -import darkTheme from 'react-syntax-highlighter/dist/esm/styles/hljs/atom-one-dark' -import Pre from '../Pre' -import formatSql from '@lib/utils/sqlFormatter' -import moize from 'moize' - -SyntaxHighlighter.registerLanguage('sql', sql) - -interface Props { - sql: string - compact?: boolean - theme?: 'dark' | 'light' -} - -function simpleSqlMinify(str) { - return str - .replace(/\s{1,}/g, ' ') - .replace(/\{\s{1,}/g, '{') - .replace(/\}\s{1,}/g, '}') - .replace(/;\s{1,}/g, ';') - .replace(/\/\*\s{1,}/g, '/*') - .replace(/\*\/\s{1,}/g, '*/') -} - -function HighlightSQL({ sql, compact, theme = 'light' }: Props) { - const formattedSql = useMemo(() => { - let f = formatSql(sql) - if (compact) { - f = simpleSqlMinify(f) - } - return f - }, [sql, compact]) - - return ( - - {formattedSql} - - ) -} - -export default moize.react(HighlightSQL, { - maxSize: 1000, -}) diff --git a/ui-ori/lib/components/InstanceSelect/DropOverlay.tsx b/ui-ori/lib/components/InstanceSelect/DropOverlay.tsx deleted file mode 100644 index 68805b30f7..0000000000 --- a/ui-ori/lib/components/InstanceSelect/DropOverlay.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React, { useState, useMemo } from 'react' -import { AntCheckboxGroupHeader } from '../' -import { IColumn, ISelection } from 'office-ui-fabric-react/lib/DetailsList' -import { - IInstanceTableItem, - filterInstanceTable, -} from '@lib/utils/instanceTable' -import { useTranslation } from 'react-i18next' -import TableWithFilter, { ITableWithFilterRefProps } from './TableWithFilter' - -const groupProps = { - onRenderHeader: (props) => , -} - -export interface IDropOverlayProps { - selection: ISelection - columns: IColumn[] - items: IInstanceTableItem[] - filterTableRef?: React.Ref - containerProps?: React.HTMLAttributes -} - -function DropOverlay({ - selection, - columns, - items, - filterTableRef, - containerProps, -}: IDropOverlayProps) { - const { t } = useTranslation() - const [keyword, setKeyword] = useState('') - - const [finalItems, finalGroups] = useMemo(() => { - return filterInstanceTable(items, keyword) - }, [items, keyword]) - - const { style: containerStyle, ...restContainerProps } = containerProps ?? {} - const finalContainerProps = useMemo(() => { - const style: React.CSSProperties = { - fontSize: '0.8rem', - ...containerStyle, - } - return { - style, - ...restContainerProps, - } as React.HTMLAttributes & Record - }, [containerStyle, restContainerProps]) - - return ( - - ) -} - -export default React.memo(DropOverlay) diff --git a/ui-ori/lib/components/InstanceSelect/TableWithFilter.module.less b/ui-ori/lib/components/InstanceSelect/TableWithFilter.module.less deleted file mode 100644 index 7f87a1f039..0000000000 --- a/ui-ori/lib/components/InstanceSelect/TableWithFilter.module.less +++ /dev/null @@ -1,13 +0,0 @@ -.tableWithFilterContainer { - :global { - .ms-DetailsHeader { - padding-top: 0; - } - - .ant-input-affix-wrapper { - border: 0; - box-shadow: none; - outline: 0; - } - } -} diff --git a/ui-ori/lib/components/InstanceSelect/TableWithFilter.tsx b/ui-ori/lib/components/InstanceSelect/TableWithFilter.tsx deleted file mode 100644 index 3e8cddedeb..0000000000 --- a/ui-ori/lib/components/InstanceSelect/TableWithFilter.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import React, { useMemo, useCallback, useRef } from 'react' -import cx from 'classnames' -import { ScrollablePane } from 'office-ui-fabric-react/lib/ScrollablePane' -import { MarqueeSelection } from 'office-ui-fabric-react/lib/MarqueeSelection' -import { SelectionMode } from 'office-ui-fabric-react/lib/Selection' -import { useSize } from 'ahooks' -import { - DetailsListLayoutMode, - ISelection, - IDetailsListProps, -} from 'office-ui-fabric-react/lib/DetailsList' -import { Input } from 'antd' -import { MemoDetailsList } from '../' - -import styles from './TableWithFilter.module.less' - -export interface ITableWithFilterProps extends IDetailsListProps { - selection: ISelection - filterPlaceholder?: string - filter?: string - onFilterChange?: (value: string) => void - tableMaxHeight?: number - tableWidth?: number - containerProps?: React.HTMLAttributes -} - -export interface ITableWithFilterRefProps { - focusFilterInput: () => void -} - -function TableWithFilter( - { - selection, - filterPlaceholder, - filter, - onFilterChange, - tableMaxHeight, - tableWidth, - containerProps, - ...restProps - }: ITableWithFilterProps, - ref: React.Ref -) { - const handleInputChange = useCallback( - (e: React.ChangeEvent) => { - onFilterChange?.(e.target.value) - }, - [onFilterChange] - ) - - const inputRef = useRef(null) - - React.useImperativeHandle(ref, () => ({ - focusFilterInput() { - inputRef.current?.focus() - }, - })) - - // FIXME: We should put Input inside ScrollablePane after https://github.com/microsoft/fluentui/issues/13557 is resolved - - const containerRef = useRef(null) - const containerSize = useSize(containerRef) - - const paneStyle = useMemo( - () => - ({ - position: 'relative', - height: containerSize.height, - maxHeight: tableMaxHeight ?? 400, - width: tableWidth ?? 400, - } as React.CSSProperties), - [containerSize.height, tableMaxHeight, tableWidth] - ) - - const { - className: containerClassName, - style: containerStyle, - ...containerRestProps - } = containerProps ?? {} - - return ( -
    - - -
    - - - -
    -
    -
    - ) -} - -export default React.memo(React.forwardRef(TableWithFilter)) diff --git a/ui-ori/lib/components/InstanceSelect/ValueDisplay.tsx b/ui-ori/lib/components/InstanceSelect/ValueDisplay.tsx deleted file mode 100644 index 50639166ad..0000000000 --- a/ui-ori/lib/components/InstanceSelect/ValueDisplay.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, { useMemo } from 'react' -import { - IInstanceTableItem, - InstanceKind, - InstanceKindName, -} from '@lib/utils/instanceTable' -import { useTranslation } from 'react-i18next' - -interface InstanceStat { - all: number - selected: number -} - -function newInstanceStat(): InstanceStat { - return { - all: 0, - selected: 0, - } -} - -export interface IValueDisplayProps { - items: IInstanceTableItem[] - selectedKeys: string[] -} - -export default function ValueDisplay({ - items, - selectedKeys, -}: IValueDisplayProps) { - const { t } = useTranslation() - - const text = useMemo(() => { - const selectedKeysMap = {} - selectedKeys.forEach((key) => (selectedKeysMap[key] = true)) - const instanceStats: { [key in InstanceKind]: InstanceStat } = { - pd: newInstanceStat(), - tidb: newInstanceStat(), - tikv: newInstanceStat(), - tiflash: newInstanceStat(), - } - items.forEach((item) => { - instanceStats[item.instanceKind].all++ - if (selectedKeysMap[item.key]) { - instanceStats[item.instanceKind].selected++ - } - }) - - let hasUnselected = false - const p: string[] = [] - for (const ik in instanceStats) { - const stats = instanceStats[ik] as InstanceStat - if (stats.selected !== stats.all) { - hasUnselected = true - } - if (stats.selected > 0) { - if (stats.all === stats.selected) { - p.push( - t('component.instanceSelect.selected.partial.all', { - component: InstanceKindName[ik], - }) - ) - } else { - p.push( - t('component.instanceSelect.selected.partial.n', { - n: stats.selected, - component: InstanceKindName[ik], - }) - ) - } - } - } - - if (!hasUnselected) { - return t('component.instanceSelect.selected.all') - } - - return p.join(', ') - }, [t, items, selectedKeys]) - - return <>{text} -} diff --git a/ui-ori/lib/components/InstanceSelect/index.stories.tsx b/ui-ori/lib/components/InstanceSelect/index.stories.tsx deleted file mode 100644 index 9495a8b375..0000000000 --- a/ui-ori/lib/components/InstanceSelect/index.stories.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React, { useState, useRef } from 'react' -import { Pre } from '@lib/components' - -import InstanceSelect, { IInstanceSelectRefProps } from '.' - -export default { - title: 'Select/Instance Select', -} - -const InstanceSelectRegion = () => { - const [instanceSelectValue, setInstanceSelectValue] = useState([]) - const s = useRef(null) - - return ( - <> - -
    -
    Instance select value = {JSON.stringify(instanceSelectValue)}
    -
    -          Instance select value instances ={' '}
    -          {JSON.stringify(
    -            s.current && s.current.getInstanceByKeys(instanceSelectValue)
    -          )}
    -        
    -
    - - ) -} - -export const uncontrolled = () => ( - -) - -export const controlled = () => diff --git a/ui-ori/lib/components/InstanceSelect/index.tsx b/ui-ori/lib/components/InstanceSelect/index.tsx deleted file mode 100644 index 2783b2e83c..0000000000 --- a/ui-ori/lib/components/InstanceSelect/index.tsx +++ /dev/null @@ -1,265 +0,0 @@ -import React, { useCallback, useRef, useMemo, useEffect } from 'react' -import { useTranslation } from 'react-i18next' -import { useShallowCompareEffect } from 'react-use' -import { Tooltip } from 'antd' -import { - IBaseSelectProps, - BaseSelect, - InstanceStatusBadge, - TextWrap, -} from '../' -import { useClientRequest } from '@lib/utils/useClientRequest' -import client from '@lib/client' -import { addTranslationResource } from '@lib/utils/i18n' -import { usePersistFn, useControllableValue } from 'ahooks' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import { - buildInstanceTable, - IInstanceTableItem, -} from '@lib/utils/instanceTable' -import SelectionWithFilter from '@lib/utils/selectionWithFilter' - -import DropOverlay from './DropOverlay' -import ValueDisplay from './ValueDisplay' -import { ITableWithFilterRefProps } from './TableWithFilter' - -export interface IInstanceSelectProps - extends Omit, 'dropdownRender' | 'valueRender'> { - onChange?: (value: string[]) => void - enableTiFlash?: boolean - defaultSelectAll?: boolean - dropContainerProps?: React.HTMLAttributes -} - -export interface IInstanceSelectRefProps { - getInstanceByKeys: (keys: string[]) => IInstanceTableItem[] - getInstanceByKey: (key: string) => IInstanceTableItem -} - -const translations = { - en: { - placeholder: 'Select Instances', - filterPlaceholder: 'Filter instance', - selected: { - all: 'All Instances', - partial: { - n: '{{n}} {{component}}', - all: 'All {{component}}', - }, - }, - columns: { - key: 'Instance', - status: 'Status', - }, - }, - zh: { - placeholder: '选择实例', - filterPlaceholder: '过滤实例', - selected: { - all: '所有实例', - partial: { - n: '{{n}} {{component}}', - all: '所有 {{component}}', - }, - }, - columns: { - key: '实例', - status: '状态', - }, - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - instanceSelect: translations[key], - }, - }) -} - -function InstanceSelect( - props: IInstanceSelectProps, - ref: React.Ref -) { - const [internalVal, setInternalVal] = useControllableValue(props) - const setInternalValPersist = usePersistFn(setInternalVal) - const { - enableTiFlash, - defaultSelectAll, - dropContainerProps, - value, // only to exclude from restProps - onChange, // only to exclude from restProps - ...restProps - } = props - - const { t } = useTranslation() - - const { data: dataTiDB, isLoading: loadingTiDB } = useClientRequest( - (reqConfig) => client.getInstance().getTiDBTopology(reqConfig) - ) - const { data: dataStores, isLoading: loadingStores } = useClientRequest( - (reqConfig) => client.getInstance().getStoreTopology(reqConfig) - ) - const { data: dataPD, isLoading: loadingPD } = useClientRequest((reqConfig) => - client.getInstance().getPDTopology(reqConfig) - ) - - const columns: IColumn[] = useMemo( - () => [ - { - name: t('component.instanceSelect.columns.key'), - key: 'key', - minWidth: 150, - maxWidth: 150, - onRender: (node: IInstanceTableItem) => { - return ( - - - {node.key} - - - ) - }, - }, - { - name: t('component.instanceSelect.columns.status'), - key: 'status', - minWidth: 100, - maxWidth: 100, - onRender: (node: IInstanceTableItem) => { - return ( - - - - ) - }, - }, - ], - [t] - ) - - const [tableItems] = useMemo(() => { - if (loadingTiDB || loadingStores || loadingPD) { - return [[], []] - } - return buildInstanceTable({ - dataPD, - dataTiDB, - dataTiKV: dataStores?.tikv, - dataTiFlash: dataStores?.tiflash, - includeTiFlash: enableTiFlash, - }) - }, [ - enableTiFlash, - dataTiDB, - dataStores, - dataPD, - loadingTiDB, - loadingStores, - loadingPD, - ]) - - const selection = useRef( - new SelectionWithFilter({ - onSelectionChanged: () => { - const s = selection.current.getAllSelection() as IInstanceTableItem[] - const keys = s.map((v) => v.key) - setInternalValPersist([...keys]) - }, - }) - ) - - useShallowCompareEffect(() => { - selection.current?.resetAllSelection(internalVal ?? []) - }, [internalVal]) - - const dataHasLoaded = useRef(false) - - useEffect(() => { - // When data is loaded for the first time, we need to: - // - Select all if `defaultSelectAll` is set and value is not given. - // - Update selection according to value - if (dataHasLoaded.current) { - return - } - if (tableItems.length === 0) { - return - } - const sel = selection.current - sel.setChangeEvents(false) - sel.setAllItems(tableItems) - if (internalVal && internalVal.length > 0) { - sel.resetAllSelection(internalVal) - } else if (defaultSelectAll) { - sel.setAllSelectionSelected(true) - } - sel.setChangeEvents(true) - dataHasLoaded.current = true - // [defaultSelectAll, internalVal] is not needed - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [tableItems]) - - const getInstanceByKeys = usePersistFn((keys: string[]) => { - const keyToItemMap = {} - for (const item of tableItems) { - keyToItemMap[item.key] = item - } - return keys.map((key) => keyToItemMap[key]) - }) - - const getInstanceByKey = usePersistFn((key: string) => { - return getInstanceByKeys([key])[0] - }) - - React.useImperativeHandle(ref, () => ({ - getInstanceByKey, - getInstanceByKeys, - })) - - const renderValue = useCallback( - (selectedKeys) => { - if ( - tableItems.length === 0 || - !selectedKeys || - selectedKeys.length === 0 - ) { - return null - } - return - }, - [tableItems] - ) - - const filterTableRef = useRef(null) - - const renderDropdown = useCallback( - () => ( - - ), - [columns, tableItems, dropContainerProps] - ) - - const handleOpened = useCallback(() => { - filterTableRef.current?.focusFilterInput() - }, []) - - return ( - - ) -} - -export default React.forwardRef(InstanceSelect) diff --git a/ui-ori/lib/components/InstanceStatusBadge/index.tsx b/ui-ori/lib/components/InstanceStatusBadge/index.tsx deleted file mode 100644 index 06cbde9544..0000000000 --- a/ui-ori/lib/components/InstanceStatusBadge/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from 'react' -import { useTranslation } from 'react-i18next' -import { InstanceStatus } from '@lib/utils/instanceTable' -import { Badge } from 'antd' -import { addTranslationResource } from '@lib/utils/i18n' - -const translations = { - en: { - status: { - up: 'Up', - down: 'Down', - tombstone: 'Tombstone', - offline: 'Leaving', - unknown: 'Unknown', - unreachable: 'Unreachable', - }, - }, - zh: { - status: { - up: '在线', - down: '离线', - tombstone: '已缩容下线', - offline: '下线中', - unknown: '未知', - unreachable: '无法访问', - }, - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - instanceStatusBadge: translations[key], - }, - }) -} - -export interface IInstanceStatusBadgeProps { - status?: number -} - -function InstanceStatusBadge({ status }: IInstanceStatusBadgeProps) { - const { t } = useTranslation() - switch (status) { - case InstanceStatus.Down: - return ( - - ) - case InstanceStatus.Unreachable: - return ( - - ) - case InstanceStatus.Up: - return ( - - ) - case InstanceStatus.Tombstone: - return ( - - ) - case InstanceStatus.Offline: - return ( - - ) - default: - return ( - - ) - } -} - -export default React.memo(InstanceStatusBadge) diff --git a/ui-ori/lib/components/LanguageDropdown/index.tsx b/ui-ori/lib/components/LanguageDropdown/index.tsx deleted file mode 100644 index 72686651b1..0000000000 --- a/ui-ori/lib/components/LanguageDropdown/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Dropdown, Menu } from 'antd' -import _ from 'lodash' -import React, { ReactNode } from 'react' -import { useTranslation } from 'react-i18next' - -import { ALL_LANGUAGES } from '@lib/utils/i18n' - -function LanguageDropdown({ children }: { children: ReactNode }) { - const { i18n } = useTranslation() - - function handleClick(e) { - i18n.changeLanguage(e.key) - } - - const menu = ( - - {_.map(ALL_LANGUAGES, (name, key) => { - return {name} - })} - - ) - - return ( - - {children} - - ) -} - -export default LanguageDropdown diff --git a/ui-ori/lib/components/MetricChart/index.stories.tsx b/ui-ori/lib/components/MetricChart/index.stories.tsx deleted file mode 100644 index 54422cc1c4..0000000000 --- a/ui-ori/lib/components/MetricChart/index.stories.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' -import MetricChart from '.' - -export default { - title: 'MetricChart', -} - -export const QPS = () => ( - -) - -export const Latency = () => ( - -) diff --git a/ui-ori/lib/components/MetricChart/index.tsx b/ui-ori/lib/components/MetricChart/index.tsx deleted file mode 100644 index cf0fba70ea..0000000000 --- a/ui-ori/lib/components/MetricChart/index.tsx +++ /dev/null @@ -1,304 +0,0 @@ -import 'echarts/lib/chart/bar' -import 'echarts/lib/chart/line' -import 'echarts/lib/component/grid' -import 'echarts/lib/component/legend' -import 'echarts/lib/component/tooltip' - -import { Space } from 'antd' -import dayjs from 'dayjs' -import ReactEchartsCore from 'echarts-for-react/lib/core' -import echarts from 'echarts/lib/echarts' -import _ from 'lodash' -import React, { useMemo, useRef } from 'react' -import { useInterval } from 'react-use' -import format from 'string-template' -import { LoadingOutlined, ReloadOutlined } from '@ant-design/icons' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import client from '@lib/client' -import { AnimatedSkeleton, Card } from '@lib/components' -import { useBatchClientRequest } from '@lib/utils/useClientRequest' -import ErrorBar from '../ErrorBar' -import { addTranslationResource } from '@lib/utils/i18n' -import { Link } from 'react-router-dom' -import { useTranslation } from 'react-i18next' - -export type GraphType = 'bar' | 'line' - -const translations = { - en: { - error: { - api: { - metrics: { - prom_not_found: - 'Prometheus is not deployed in the cluster. Metrics are unavailable.', - }, - }, - }, - components: { - metricChart: { - changePromButton: 'Change Prometheus Source', - }, - }, - }, - zh: { - error: { - api: { - metrics: { - prom_not_found: '集群中未部署 Prometheus 组件,监控不可用。', - }, - }, - }, - components: { - metricChart: { - changePromButton: '修改 Prometheus 源', - }, - }, - }, -} - -for (const key in translations) { - addTranslationResource(key, translations[key]) -} - -export interface ISeries { - query: string - name: string -} - -export interface IMetricChartProps { - title: React.ReactNode - - series: ISeries[] - // stepSec: number - // beginTimeSec: number - // endTimeSec: number - unit: string - type: GraphType -} - -const HEIGHT = 250 - -function getSeriesProps(type: GraphType) { - if (type === 'bar') { - return { - stack: 'bar_stack', - } - } else if (type === 'line') { - return { - showSymbol: false, - } - } -} - -// FIXME -function getTimeParams() { - return { - beginTimeSec: Math.floor((Date.now() - 60 * 60 * 1000) / 1000), - endTimeSec: Math.floor(Date.now() / 1000), - } -} - -export default function MetricChart({ - title, - series, - // stepSec, - // beginTimeSec, - // endTimeSec, - unit, - type, -}: IMetricChartProps) { - const timeParams = useRef(getTimeParams()) - const { t } = useTranslation() - - const { isLoading, data, error, sendRequest } = useBatchClientRequest( - series.map( - (s) => (reqConfig) => - client - .getInstance() - .metricsQueryGet( - timeParams.current.endTimeSec, - s.query, - timeParams.current.beginTimeSec, - 30, - reqConfig - ) - ) - ) - - const update = () => { - timeParams.current = getTimeParams() - sendRequest() - } - - useInterval(update, 60 * 1000) - - const valueFormatter = useMemo(() => getValueFormat(unit), [unit]) - - const opt = useMemo(() => { - const s: any[] = [] - data.forEach((dataBySeries, seriesIdx) => { - if (!dataBySeries) { - return - } - if (dataBySeries.status !== 'success') { - return - } - const r = (dataBySeries.data as any)?.result - if (!r) { - return - } - r.forEach((rData) => { - s.push({ - name: format(series[seriesIdx].name, rData.metric), - data: - rData.values.map(([ts, value]) => { - return [ts * 1000, value] - }) ?? [], - type, - ...getSeriesProps(type), - }) - }) - }) - - return { - xAxis: { - type: 'time', - splitLine: { - show: true, - }, - minorSplitLine: { - show: true, - }, - splitNumber: 10, - boundaryGap: false, - axisLabel: { - formatter: (v) => { - return dayjs(v).format('HH:mm') - }, - showMinLabel: false, - showMaxLabel: false, - }, - axisLine: { - lineStyle: { - width: 0, - }, - }, - axisTick: { - lineStyle: { - width: 0, - }, - }, - }, - legend: { - orient: 'horizontal', - x: 'left', // 'center' | 'left' | {number}, - y: 'bottom', - }, - yAxis: { - type: 'value', - axisLabel: { - formatter: (v) => { - return valueFormatter(v, 1) - }, - }, - splitLine: { - show: true, - }, - axisLine: { - lineStyle: { - width: 0, - }, - }, - axisTick: { - lineStyle: { - width: 0, - }, - }, - }, - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line', - animation: false, - snap: true, - }, - formatter: (series) => { - let tooltip = '' - - const title = dayjs(series[0].axisValue).format('YYYY-MM-DD HH:mm:ss') - tooltip += `
    ${title}
    ` - - series.forEach((s) => { - tooltip += `
    ${s.marker} ${s.seriesName}: ${valueFormatter( - s.value[1], - 1 - )}
    ` - }) - - return tooltip - }, - }, - animation: false, - grid: { - top: 10, - left: 10, - right: 0, - bottom: 60, - containLabel: true, - }, - series: s, - } - }, [data, valueFormatter, series, type]) - - const showSkeleton = isLoading && _.every(data, (d) => d === null) - - let inner - - if (showSkeleton) { - inner = null - } else if ( - _.every( - _.zip(data, error), - ([data, err]) => err || !data || data?.status !== 'success' - ) - ) { - inner = ( -
    - - - - {t('components.metricChart.changePromButton')} - - -
    - ) - } else { - inner = ( - - ) - } - - const subTitle = ( - - - - - {isLoading ? : null} - - ) - - return ( - - - {inner} - - - ) -} diff --git a/ui-ori/lib/components/MultiSelect/DropOverlay.tsx b/ui-ori/lib/components/MultiSelect/DropOverlay.tsx deleted file mode 100644 index 49952292ba..0000000000 --- a/ui-ori/lib/components/MultiSelect/DropOverlay.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React, { useState, useMemo } from 'react' -import { IColumn, ISelection } from 'office-ui-fabric-react/lib/DetailsList' -import { useTranslation } from 'react-i18next' -import TableWithFilter, { - ITableWithFilterRefProps, -} from '../InstanceSelect/TableWithFilter' -import { IItem } from '.' - -const containerProps: React.HTMLAttributes = { - style: { fontSize: '0.8rem' }, -} - -export interface IDropOverlayProps { - selection: ISelection - columns: IColumn[] - items: T[] - filterFn?: (keyword: string, item: T) => boolean - filterTableRef?: React.Ref -} - -function DropOverlay({ - selection, - columns, - items, - filterFn, - filterTableRef, -}: IDropOverlayProps) { - const { t } = useTranslation() - const [keyword, setKeyword] = useState('') - - const filteredItems = useMemo(() => { - if (keyword.length === 0) { - return items - } - const kw = keyword.toLowerCase() - const filter = - filterFn == null - ? (it: T) => - it.key.toLowerCase().indexOf(kw) > -1 || - (it.label ?? '').toLowerCase().indexOf(kw) > -1 - : (it: T) => filterFn(keyword, it) - return items.filter(filter) - }, [items, keyword, filterFn]) - - return ( - - ) -} - -const typedMemo: (c: T) => T = React.memo - -export default typedMemo(DropOverlay) diff --git a/ui-ori/lib/components/MultiSelect/Plain.tsx b/ui-ori/lib/components/MultiSelect/Plain.tsx deleted file mode 100644 index ff114b1926..0000000000 --- a/ui-ori/lib/components/MultiSelect/Plain.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import MultiSelect, { IMultiSelectProps, IItem } from '.' -import { useMemo } from 'react' -import React from 'react' - -export interface IPlainMultiSelectProps - extends Omit, 'items' | 'filterFn'> { - items?: string[] -} - -export default function PlainMultiSelect({ - items, - ...restProps -}: IPlainMultiSelectProps) { - const objectItems = useMemo( - () => items?.map((v) => ({ key: v })) ?? [], - [items] - ) - return -} diff --git a/ui-ori/lib/components/MultiSelect/index.stories.tsx b/ui-ori/lib/components/MultiSelect/index.stories.tsx deleted file mode 100644 index f9e484936e..0000000000 --- a/ui-ori/lib/components/MultiSelect/index.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, { useState } from 'react' -import { Pre } from '@lib/components' - -import MultiSelect from '.' - -export default { - title: 'Select/Multi Select', -} - -function genItems() { - const items: any[] = [] - const items2: any[] = [] - for (let i = 0; i < 100; i++) { - items.push({ key: String(i), label: `Item ${i}` }) - items2.push({ - key: String(i), - label: `Long Long Long Long Long Long Item ${i}`, - }) - } - return [items, items2] -} -const [items, items2] = genItems() - -const MultiSelectRegion = () => { - const [value, setValue] = useState([]) - - return ( - <> - -
    -
    Value = {JSON.stringify(value)}
    -
    - - ) -} - -export const uncontrolled = () => ( - -) - -export const controlled = () => diff --git a/ui-ori/lib/components/MultiSelect/index.tsx b/ui-ori/lib/components/MultiSelect/index.tsx deleted file mode 100644 index 830f618db9..0000000000 --- a/ui-ori/lib/components/MultiSelect/index.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import { IBaseSelectProps, BaseSelect, TextWrap } from '..' -import { ITableWithFilterRefProps } from '../InstanceSelect/TableWithFilter' -import React, { useMemo, useRef, useCallback, useEffect } from 'react' -import { useTranslation } from 'react-i18next' -import { usePersistFn, useControllableValue } from 'ahooks' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import SelectionWithFilter from '@lib/utils/selectionWithFilter' -import { useShallowCompareEffect } from 'react-use' -import { addTranslationResource } from '@lib/utils/i18n' -import { Tooltip } from 'antd' - -import DropOverlay from './DropOverlay' -import PlainMultiSelect from './Plain' - -const translations = { - en: { - filterPlaceholder: 'Filter', - selected: '{{n}} selected', - columnTitle: 'Items', - }, - zh: { - filterPlaceholder: '过滤', - selected: '已选择 {{n}} 项', - columnTitle: '选择项', - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - multiSelect: translations[key], - }, - }) -} - -export interface IItem { - key: string - label?: string -} - -export interface IMultiSelectProps - extends Omit, 'dropdownRender' | 'valueRender'> { - items?: T[] - filterFn?: (keyword: string, item: T) => boolean - onChange?: (value: string[]) => void - selectedValueTransKey?: string - columnTitle?: string -} - -function MultiSelect(props: IMultiSelectProps) { - const [internalVal, setInternalVal] = useControllableValue(props) - const setInternalValPersist = usePersistFn(setInternalVal) - const { - items, - filterFn, - selectedValueTransKey, - columnTitle, - placeholder, - value, // only to exclude from restProps - onChange, // only to exclude from restProps - ...restProps - } = props - - const { t } = useTranslation() - - const columns: IColumn[] = useMemo( - () => [ - { - name: columnTitle ?? t('component.multiSelect.columnTitle'), - key: 'name', - minWidth: 180, - onRender: (node: T) => { - let label - if ('label' in node) { - label = node.label - } else { - label = node.key - } - return ( - - - {label} - - - ) - }, - }, - ], - [t, columnTitle] - ) - - const selection = useRef( - new SelectionWithFilter({ - onSelectionChanged: () => { - if (process.env.NODE_ENV === 'development') { - console.groupCollapsed( - 'MultiSelect onSelectionChanged', - Math.random() - ) - console.trace() - console.groupEnd() - } - const s = selection.current.getAllSelection() as T[] - const keys = s.map((v) => v.key) - setInternalValPersist(keys) - }, - }) - ) - - useShallowCompareEffect(() => { - selection.current?.resetAllSelection(internalVal ?? []) - }, [internalVal]) - - useEffect(() => { - selection.current?.setAllItems(items ?? []) - // We may receive value first and then receive items. In this case, we need to re-assign - // the selection according to value after receiving new items, so that values in newly appeared - // items can be selected. - selection.current?.resetAllSelection(internalVal ?? []) - // internalVal is not needed - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [items]) - - const filterTableRef = useRef(null) - - const renderDropdown = useCallback( - () => ( - - columns={columns} - items={items ?? []} - selection={selection.current} - filterFn={filterFn} - filterTableRef={filterTableRef} - /> - ), - [columns, items, filterFn] - ) - - const handleOpened = useCallback(() => { - filterTableRef.current?.focusFilterInput() - }, []) - - const renderValue = useCallback(() => { - if (placeholder && (!internalVal || internalVal.length === 0)) { - return null - } - return t(selectedValueTransKey ?? 'component.multiSelect.selected', { - n: internalVal?.length ?? 0, - }) - }, [t, internalVal, selectedValueTransKey, placeholder]) - - return ( - - ) -} - -MultiSelect.Plain = PlainMultiSelect - -export default MultiSelect diff --git a/ui-ori/lib/components/ParamsPageWrapper/index.tsx b/ui-ori/lib/components/ParamsPageWrapper/index.tsx deleted file mode 100644 index 61f90eff2e..0000000000 --- a/ui-ori/lib/components/ParamsPageWrapper/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React, { ReactNode } from 'react' -import { useLocation } from 'react-router-dom' - -export default function ParamsPageWrapper({ - children, -}: { - children: ReactNode -}) { - const { search } = useLocation() - if (React.isValidElement(children)) { - return React.cloneElement(children, { key: search }) - } - return null -} diff --git a/ui-ori/lib/components/Pre/JetBrainsMonoNL-Regular.woff b/ui-ori/lib/components/Pre/JetBrainsMonoNL-Regular.woff deleted file mode 100644 index 0ff1529e28666913af8a924ba5be600e150f176a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51624 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�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
    |&AabI&?z0F1a5~nf-QAO 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 { - noWrap?: boolean -} - -export default function Pre({ - noWrap, - className, - children, - ...rest -}: IPreProps) { - return ( -
    -      {children}
    -    
    - ) -} diff --git a/ui-ori/lib/components/Root/index.tsx b/ui-ori/lib/components/Root/index.tsx deleted file mode 100644 index b5aa232050..0000000000 --- a/ui-ori/lib/components/Root/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import { - ArrowUpOutlined, - ArrowDownOutlined, - DownOutlined, - RightOutlined, -} from '@ant-design/icons' -import { createTheme, registerIcons } from 'office-ui-fabric-react/lib/Styling' -import { Customizations } from 'office-ui-fabric-react/lib/Utilities' - -import { ConfigProvider } from 'antd' -import i18next from 'i18next' -import enUS from 'antd/es/locale/en_US' -import zhCN from 'antd/es/locale/zh_CN' - -registerIcons({ - icons: { - SortUp: , - SortDown: , - chevronrightmed: , - tag: , - }, -}) - -const theme = createTheme({ - defaultFontStyle: { fontFamily: 'inherit', fontSize: '1em' }, -}) - -Customizations.applySettings({ theme }) - -export default function Root({ children }) { - return ( - - {children} - - ) -} diff --git a/ui-ori/lib/components/TextWithInfo/index.tsx b/ui-ori/lib/components/TextWithInfo/index.tsx deleted file mode 100644 index 26fc392e0d..0000000000 --- a/ui-ori/lib/components/TextWithInfo/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React from 'react' -import { Tooltip, Typography } from 'antd' -import type { TooltipPlacement } from 'antd/es/tooltip' -import { InfoCircleOutlined, WarningOutlined } from '@ant-design/icons' -import { useTranslation } from 'react-i18next' - -export interface ITextWithInfoProps { - tooltip?: React.ReactNode - placement?: TooltipPlacement - children: React.ReactNode - type?: 'warning' | 'danger' -} - -function TextWithInfo({ - tooltip, - placement, - children, - type, -}: ITextWithInfoProps) { - let textWithIcon - if (tooltip) { - const Icon = type ? WarningOutlined : InfoCircleOutlined - textWithIcon = ( - - {children} - - ) - } else { - textWithIcon = children - } - - let textWithColor - if (type) { - textWithColor = ( - {textWithIcon} - ) - } else { - textWithColor = textWithIcon - } - - if (!tooltip) { - return textWithColor - } - - return ( - - {textWithColor} - - ) -} - -export interface ITransKeyTextWithInfo { - transKey: string - placement?: TooltipPlacement - type?: 'warning' | 'danger' -} - -function TransKey({ transKey, placement, type }: ITransKeyTextWithInfo) { - const { t } = useTranslation() - const text = t(transKey) - const tooltip = t(`${transKey}_tooltip`, { - defaultValue: '', - fallbackLng: '_', - }) - return ( - - {text} - - ) -} - -TextWithInfo.TransKey = TransKey - -export default TextWithInfo diff --git a/ui-ori/lib/components/TextWrap/index.module.less b/ui-ori/lib/components/TextWrap/index.module.less deleted file mode 100644 index 3d2c3ada8a..0000000000 --- a/ui-ori/lib/components/TextWrap/index.module.less +++ /dev/null @@ -1,20 +0,0 @@ -.singleLine { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - > span { - display: inline; - } - pre { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} - -.multiLine { - overflow-wrap: break-word; - white-space: normal; - text-overflow: inherit; - overflow: auto; -} diff --git a/ui-ori/lib/components/TextWrap/index.tsx b/ui-ori/lib/components/TextWrap/index.tsx deleted file mode 100644 index 0f1a3cce54..0000000000 --- a/ui-ori/lib/components/TextWrap/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import cx from 'classnames' - -import styles from './index.module.less' - -export interface ITextWrapProps extends React.HTMLAttributes { - // When multiline enabled, text will be wrapped. When multiline disabled, - // overflow texts will be truncated with ellipsis. - multiline?: boolean -} - -export default function TextWrap({ - multiline, - className, - children, - ...rest -}: ITextWrapProps) { - const c = cx(className, { - [styles.multiLine]: multiline, - [styles.singleLine]: !multiline, - }) - return ( -
    - {children} -
    - ) -} diff --git a/ui-ori/lib/components/TimeRangeSelector/index.module.less b/ui-ori/lib/components/TimeRangeSelector/index.module.less deleted file mode 100644 index 221df0905e..0000000000 --- a/ui-ori/lib/components/TimeRangeSelector/index.module.less +++ /dev/null @@ -1,41 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.dropdown_content_container { - background-color: @select-dropdown-bg; - padding: @padding-md; - border-radius: @border-radius-base; - outline: none; - box-shadow: @box-shadow-base; - box-sizing: border-box; - - .usual_time_ranges { - span { - color: @gray-6; - } - - margin-bottom: 16px; - } - - .custom_time_ranges { - span { - color: @gray-6; - } - } - - .time_range_items { - max-width: 360px; - margin-top: 8px; - display: flex; - flex-wrap: wrap; - } - - .time_range_item { - width: 120px; - padding-bottom: 4px; - cursor: pointer; - } - - .time_range_item_active { - color: @primary-color; - } -} diff --git a/ui-ori/lib/components/TimeRangeSelector/index.tsx b/ui-ori/lib/components/TimeRangeSelector/index.tsx deleted file mode 100644 index d811bbae5a..0000000000 --- a/ui-ori/lib/components/TimeRangeSelector/index.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import React, { useState, useMemo, useCallback, useEffect } from 'react' -import { Dropdown, Button } from 'antd' -import DatePicker from '../DatePicker' -import { ClockCircleOutlined, DownOutlined } from '@ant-design/icons' -import { getValueFormat } from '@baurine/grafana-value-formats' -import cx from 'classnames' -import dayjs, { Dayjs } from 'dayjs' -import { useTranslation } from 'react-i18next' - -import styles from './index.module.less' - -const { RangePicker } = DatePicker - -const RECENT_SECONDS = [ - 15 * 60, - 30 * 60, - 60 * 60, - - 2 * 60 * 60, - 6 * 60 * 60, - 12 * 60 * 60, - - 24 * 60 * 60, - 2 * 24 * 60 * 60, - 3 * 24 * 60 * 60, - - 7 * 24 * 60 * 60, - 14 * 24 * 60 * 60, - 28 * 24 * 60 * 60, -] - -const DEFAULT_TIME_RANGE: TimeRange = { - type: 'recent', - value: 30 * 60, -} - -interface RecentSecTime { - type: 'recent' - value: number // unit: seconds -} - -interface RangeTime { - type: 'absolute' - value: [number, number] // unit: seconds -} - -export type TimeRange = RecentSecTime | RangeTime - -export function calcTimeRange(timeRange?: TimeRange): [number, number] { - let t2 = timeRange ?? DEFAULT_TIME_RANGE - if (t2.type === 'absolute') { - return t2.value - } else { - const now = dayjs().unix() - return [now - t2.value, now] - } -} - -export function stringifyTimeRange(timeRange?: TimeRange): string { - let t2 = timeRange ?? DEFAULT_TIME_RANGE - if (t2.type === 'absolute') { - return `${t2.type}_${t2.value[0]}_${t2.value[1]}` - } else { - return `${t2.type}_${t2.value}` - } -} - -export interface ITimeRangeSelectorProps { - value?: TimeRange - onChange?: (val: TimeRange) => void -} - -function TimeRangeSelector({ value, onChange }: ITimeRangeSelectorProps) { - const { t } = useTranslation() - const [dropdownVisible, setDropdownVisible] = useState(false) - - useEffect(() => { - if (!value) { - onChange?.(DEFAULT_TIME_RANGE) - } - // ignore [onChange] - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [value]) - - const rangePickerValue = useMemo(() => { - if (value?.type !== 'absolute') { - return null - } - return value.value.map((sec) => dayjs(sec * 1000)) as [Dayjs, Dayjs] - }, [value]) - - const handleRecentChange = useCallback( - (seconds: number) => { - onChange?.({ - type: 'recent', - value: seconds, - }) - setDropdownVisible(false) - }, - [onChange] - ) - - const handleRangePickerChange = useCallback( - (values) => { - if (values === null) { - onChange?.(DEFAULT_TIME_RANGE) - } else { - onChange?.({ - type: 'absolute', - value: values.map((v) => v.unix()), - }) - } - setDropdownVisible(false) - }, - [onChange] - ) - - const dropdownContent = ( -
    -
    - - {t( - 'statement.pages.overview.toolbar.time_range_selector.usual_time_ranges' - )} - -
    - {RECENT_SECONDS.map((seconds) => ( -
    handleRecentChange(seconds)} - data-e2e={`timerange-${seconds}`} - > - {t('statement.pages.overview.toolbar.time_range_selector.recent')}{' '} - {getValueFormat('s')(seconds, 0)} -
    - ))} -
    -
    -
    - - {t( - 'statement.pages.overview.toolbar.time_range_selector.custom_time_ranges' - )} - -
    - -
    -
    -
    - ) - - return ( - - - - ) -} - -export default React.memo(TimeRangeSelector) diff --git a/ui-ori/lib/components/Toolbar/index.module.less b/ui-ori/lib/components/Toolbar/index.module.less deleted file mode 100644 index 23fda8eca8..0000000000 --- a/ui-ori/lib/components/Toolbar/index.module.less +++ /dev/null @@ -1,18 +0,0 @@ -.toolbar_container { - display: flex; - - :global(.ant-space-item) { - margin-bottom: 8px; - } - - .left_space { - flex: 1; - display: flex; - flex-wrap: wrap; - } - - .right_space { - align-self: flex-start; - margin-top: 6px; - } -} diff --git a/ui-ori/lib/components/Toolbar/index.tsx b/ui-ori/lib/components/Toolbar/index.tsx deleted file mode 100644 index b8576ea039..0000000000 --- a/ui-ori/lib/components/Toolbar/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react' -import cx from 'classnames' -import { Space } from 'antd' - -import styles from './index.module.less' - -export default function Toolbar(props: React.HTMLAttributes) { - const { className, children, ...rest } = props - const c = cx(className, styles.toolbar_container) - - // https://stackoverflow.com/questions/27366077 - React.Children.forEach(children, (child) => { - if (!React.isValidElement(child) || child.type !== Space) { - console.error('Toolbar children only can be Space component') - } - }) - - return ( -
    - {React.Children.map(children, (child, idx) => { - // https://stackoverflow.com/questions/42261783 - if (React.isValidElement(child) && child.type === Space) { - const extraClassName = - idx === 0 ? styles.left_space : styles.right_space - return React.cloneElement(child, { - className: cx(child.props.className, extraClassName), - size: child.props.size || 'middle', - }) - } - })} -
    - ) -} diff --git a/ui-ori/lib/components/ValueWithTooltip/index.tsx b/ui-ori/lib/components/ValueWithTooltip/index.tsx deleted file mode 100644 index 434c19b77a..0000000000 --- a/ui-ori/lib/components/ValueWithTooltip/index.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react' -import { Tooltip } from 'antd' -import { getValueFormat, scaledUnits } from '@baurine/grafana-value-formats' - -interface IValueWithTooltip extends IInternalValueWithTooltip { - Short: typeof ShortValueWithTooltip - ScaledBytes: typeof ScaledBytesWithTooltip -} - -interface IInternalValueWithTooltip { - title: string - value: any -} - -function InternalValueWithTooltip({ title, value }: IValueWithTooltip) { - return ( - - {value} - - ) -} - -export interface IValueWithTooltipProps { - value?: number - scaledDecimal?: number -} - -function ShortValueWithTooltip({ - value = 0, - scaledDecimal = 1, -}: IValueWithTooltipProps) { - return ( - - {getValueFormat('short')(value || 0, 0, scaledDecimal)} - - ) -} - -const bytesScaler = scaledUnits(1024, ['', 'K', 'M', 'B', 'T']) - -function ScaledBytesWithTooltip({ - value = 0, - scaledDecimal = 2, -}: IValueWithTooltipProps) { - return ( - - {bytesScaler(value || 0, 0, scaledDecimal)} - - ) -} - -const ValueWithTooltip = - InternalValueWithTooltip as unknown as IValueWithTooltip - -ValueWithTooltip.Short = ShortValueWithTooltip -ValueWithTooltip.ScaledBytes = ScaledBytesWithTooltip - -export { ValueWithTooltip } diff --git a/ui-ori/lib/components/index.ts b/ui-ori/lib/components/index.ts deleted file mode 100644 index 174a34e264..0000000000 --- a/ui-ori/lib/components/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -export * from './Root' -export { default as Root } from './Root' -export * from './Head' -export { default as Head } from './Head' -export * from './Card' -export { default as Card } from './Card' -export * from './CardTabs' -export { default as CardTabs } from './CardTabs' -export * from './CardTable' -export { default as CardTable } from './CardTable' -export * from './Bar' -export { default as Bar } from './Bar' -export * from './HighlightSQL' -export { default as HighlightSQL } from './HighlightSQL' -export * from './TextWrap' -export { default as TextWrap } from './TextWrap' -export * from './Pre' -export { default as Pre } from './Pre' -export * from './Descriptions' -export { default as Descriptions } from './Descriptions' -export * from './TextWithInfo' -export { default as TextWithInfo } from './TextWithInfo' -export * from './DateTime' -export { default as DateTime } from './DateTime' -export * from './Expand' -export { default as Expand } from './Expand' -export * from './CopyLink' -export { default as CopyLink } from './CopyLink' -export * from './MetricChart' -export { default as MetricChart } from './MetricChart' -export * from './ColumnsSelector' -export { default as ColumnsSelector } from './ColumnsSelector' -export * from './Toolbar' -export { default as Toolbar } from './Toolbar' -export * from './TimeRangeSelector' -export { default as TimeRangeSelector } from './TimeRangeSelector' -export * from './AnimatedSkeleton' -export { default as AnimatedSkeleton } from './AnimatedSkeleton' -export * from './InstanceStatusBadge' -export { default as InstanceStatusBadge } from './InstanceStatusBadge' -export * from './BaseSelect' -export { default as BaseSelect } from './BaseSelect' -export * from './InstanceSelect' -export { default as InstanceSelect } from './InstanceSelect' -export * from './MultiSelect' -export { default as MultiSelect } from './MultiSelect' -export * from './ValueWithTooltip' -export * from './DatePicker' -export { default as DatePicker } from './DatePicker' -export * from './ErrorBar' -export { default as ErrorBar } from './ErrorBar' -export * from './AppearAnimate' -export { default as AppearAnimate } from './AppearAnimate' -export * from './Blink' -export { default as Blink } from './Blink' - -export { default as LanguageDropdown } from './LanguageDropdown' -export { default as ParamsPageWrapper } from './ParamsPageWrapper' diff --git a/ui-ori/lib/utils/appOptions.ts b/ui-ori/lib/utils/appOptions.ts deleted file mode 100644 index b0f0759233..0000000000 --- a/ui-ori/lib/utils/appOptions.ts +++ /dev/null @@ -1,27 +0,0 @@ -export type AppOptions = { - hideNav: boolean - lang: string -} - -const defAppOptions: AppOptions = { - hideNav: false, - lang: '', -} - -const optionsKey = 'dashboard_app_options' - -export function saveAppOptions(options: AppOptions) { - localStorage.setItem(optionsKey, JSON.stringify(options)) -} - -export function loadAppOptions(): AppOptions { - const s = localStorage.getItem(optionsKey) - if (s === null) { - return defAppOptions - } - const opt = JSON.parse(s) - if (!!opt && opt.constructor === Object) { - return opt - } - return defAppOptions -} diff --git a/ui-ori/lib/utils/auth.ts b/ui-ori/lib/utils/auth.ts deleted file mode 100644 index f397e1be22..0000000000 --- a/ui-ori/lib/utils/auth.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { EventEmitter2 } from 'eventemitter2' - -const tokenKey = 'dashboard_auth_token' - -export const authEvents = new EventEmitter2() - -export const EVENT_TOKEN_CHANGED = 'tokenChanged' - -export function getAuthToken() { - return localStorage.getItem(tokenKey) -} - -export function setAuthToken(token) { - const lastToken = getAuthToken() - if (lastToken !== token) { - localStorage.setItem(tokenKey, token) - authEvents.emit(EVENT_TOKEN_CHANGED, token) - } -} - -export function clearAuthToken() { - const lastToken = getAuthToken() - if (lastToken) { - localStorage.removeItem(tokenKey) - authEvents.emit(EVENT_TOKEN_CHANGED, null) - } -} - -export function getAuthTokenAsBearer() { - const token = getAuthToken() - if (!token) { - return null - } - return `Bearer ${token}` -} - -export enum AuthTypes { - SQLUser = 0, - SharingCode = 1, - SSO = 2, -} diff --git a/ui-ori/lib/utils/authSSO.ts b/ui-ori/lib/utils/authSSO.ts deleted file mode 100644 index ffab77d150..0000000000 --- a/ui-ori/lib/utils/authSSO.ts +++ /dev/null @@ -1,78 +0,0 @@ -import client, { ErrorStrategy } from '@lib/client' -import { Modal } from 'antd' -import * as auth from './auth' -import { AuthTypes } from './auth' - -function newRandomString(length: number) { - let text = '' - const possible = - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' - for (let i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)) - } - return text -} - -function getBaseURL() { - return `${window.location.protocol}//${window.location.host}${window.location.pathname}` -} - -function getRedirectURL() { - return `${getBaseURL()}?sso_callback=1` -} - -export async function getAuthURL() { - const codeVerifier = newRandomString(128) - const state = newRandomString(32) - - sessionStorage.setItem('sso.codeVerifier', codeVerifier) - sessionStorage.setItem('sso.state', state) - const resp = await client - .getInstance() - .userSSOGetAuthURL(codeVerifier, getRedirectURL(), state) - return resp.data -} - -export function isSSOCallback() { - const p = new URLSearchParams(window.location.search) - return p.has('sso_callback') -} - -async function handleSSOCallbackInner() { - const p = new URLSearchParams(window.location.search) - if (p.get('state') !== sessionStorage.getItem('sso.state')) { - throw new Error( - 'Invalid OIDC state: You may see this error when your SSO sign in is outdated.' - ) - } - const r = await client.getInstance().userLogin( - { - type: AuthTypes.SSO, - extra: JSON.stringify({ - code: p.get('code'), - code_verifier: sessionStorage.getItem('sso.codeVerifier'), - redirect_url: getRedirectURL(), - }), - }, - { errorStrategy: ErrorStrategy.Custom } - ) - - sessionStorage.removeItem('sso.codeVerifier') - sessionStorage.removeItem('sso.state') - - auth.setAuthToken(r.data.token) - window.location.replace(getBaseURL()) -} - -export async function handleSSOCallback() { - try { - await handleSSOCallbackInner() - } catch (e) { - Modal.error({ - title: 'SSO Sign In Failed', - content: '' + e, - okText: 'Sign In Again', - onOk: () => window.location.replace(getBaseURL()), - }) - } -} diff --git a/ui-ori/lib/utils/i18n.ts b/ui-ori/lib/utils/i18n.ts deleted file mode 100755 index d9cb3e56db..0000000000 --- a/ui-ori/lib/utils/i18n.ts +++ /dev/null @@ -1,65 +0,0 @@ -import 'dayjs/locale/zh' - -import dayjs from 'dayjs' -import i18next from 'i18next' -import LanguageDetector from 'i18next-browser-languagedetector' -import { initReactI18next } from 'react-i18next' - -import distro from '@lib/distribution.json' - -i18next.on('languageChanged', function (lng) { - dayjs.locale(lng.toLowerCase()) -}) - -export function addTranslations(requireContext) { - if (typeof requireContext === 'object') { - Object.keys(requireContext).forEach((key) => { - const translations = requireContext[key] - addTranslationResource(key, translations) - }) - return - } - - const keys = requireContext.keys() - keys.forEach((key) => { - const m = key.match(/\/(.+)\.yaml/) - if (!m) { - return - } - const lang = m[1] - const translations = requireContext(key) - addTranslationResource(lang, translations) - }) -} - -export function addTranslationResource(lang, translations) { - i18next.addResourceBundle(lang, 'translation', translations, true, false) -} - -export const ALL_LANGUAGES = { - zh: '简体中文', - en: 'English', -} - -i18next - .use(LanguageDetector) - .use(initReactI18next) - .init({ - resources: { - en: { - translation: { - distro, - }, - }, - }, - fallbackLng: 'en', // fallbackLng won't change the detected language - whitelist: ['zh', 'en'], // whitelist will change the detected lanuage - interpolation: { - escapeValue: false, - defaultVariables: { distro }, - }, - }) - -const isDistro = process.env.REACT_APP_DISTRO_BUILD_TAG !== undefined - -export { distro, isDistro } diff --git a/ui-ori/lib/utils/instanceTable.ts b/ui-ori/lib/utils/instanceTable.ts deleted file mode 100644 index 1ac6b5467d..0000000000 --- a/ui-ori/lib/utils/instanceTable.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { - TopologyPDInfo, - TopologyTiDBInfo, - TopologyStoreInfo, -} from '@lib/client' -import { IGroup } from 'office-ui-fabric-react/lib/DetailsList' -import _ from 'lodash' -import i18next from 'i18next' - -export type InstanceKind = 'pd' | 'tidb' | 'tikv' | 'tiflash' - -export const InstanceStatus = { - Unreachable: 0, - Up: 1, - Tombstone: 2, - Offline: 3, - Down: 4, -} - -export const InstanceKindName: { [key in InstanceKind]: string } = { - pd: i18next.t('distro.pd'), - tidb: i18next.t('distro.tidb'), - tikv: i18next.t('distro.tikv'), - tiflash: i18next.t('distro.tiflash'), -} - -export const InstanceKinds = Object.keys(InstanceKindName) as InstanceKind[] - -export interface IInstanceTableItem - extends TopologyPDInfo, - TopologyTiDBInfo, - TopologyStoreInfo { - key: string - instanceKind: InstanceKind -} - -export interface IBuildInstanceTableProps { - dataPD?: TopologyPDInfo[] - dataTiDB?: TopologyTiDBInfo[] - dataTiKV?: TopologyStoreInfo[] - dataTiFlash?: TopologyStoreInfo[] - includeTiFlash?: boolean -} - -export function buildInstanceTable({ - dataPD, - dataTiDB, - dataTiKV, - dataTiFlash, - includeTiFlash, -}: IBuildInstanceTableProps): [IInstanceTableItem[], IGroup[]] { - const tableData: IInstanceTableItem[] = [] - const groupData: IGroup[] = [] - let startIndex = 0 - - const kinds: { - [key in InstanceKind]?: - | TopologyPDInfo[] - | TopologyTiDBInfo[] - | TopologyStoreInfo[] - | undefined - } = {} - kinds.pd = dataPD - kinds.tidb = dataTiDB - kinds.tikv = dataTiKV - if (includeTiFlash) { - kinds.tiflash = dataTiFlash - } - - for (const ik of InstanceKinds) { - const instances = kinds[ik] - if (!instances || instances.length === 0) { - continue - } - groupData.push({ - key: ik, - name: InstanceKindName[ik], - startIndex: startIndex, - count: instances.length, - level: 0, - }) - startIndex += instances.length - instances.forEach((instance) => { - const key = `${instance.ip}:${instance.port}` - tableData.push({ - key: key, - instanceKind: ik, - ...instance, - }) - }) - } - return [tableData, groupData] -} - -export function filterInstanceTable( - items: IInstanceTableItem[], - filterKeyword: string -): [IInstanceTableItem[], IGroup[]] { - const tableData: IInstanceTableItem[] = [] - const groupData: IGroup[] = [] - let startIndex = 0 - - const kw = filterKeyword.toLowerCase() - const filteredItems = items.filter((i) => { - if (filterKeyword.length === 0) { - return true - } - return ( - i.key.toLowerCase().indexOf(kw) > -1 || i.instanceKind.indexOf(kw) > -1 - ) - }) - const itemsByIk = _.groupBy(filteredItems, 'instanceKind') as { - [key in InstanceKind]: IInstanceTableItem[] - } - for (const ik of InstanceKinds) { - const instances = itemsByIk[ik] - if (!instances || instances.length === 0) { - continue - } - groupData.push({ - key: ik, - name: InstanceKindName[ik], - startIndex: startIndex, - count: instances.length, - level: 0, - }) - startIndex += instances.length - instances.forEach((instance) => { - tableData.push(instance) - }) - } - return [tableData, groupData] -} diff --git a/ui-ori/lib/utils/openLink.ts b/ui-ori/lib/utils/openLink.ts deleted file mode 100644 index 1ce1961df3..0000000000 --- a/ui-ori/lib/utils/openLink.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { NavigateFunction } from 'react-router' -import React from 'react' - -// the url param starts with '/', for example: '/statement/detail' -export default function openLink( - url: string, - ev: React.MouseEvent, - navigate: NavigateFunction -) { - const { origin, pathname } = window.location - const fullUrl = `${origin}${pathname}#${url}` - - if (ev.metaKey || ev.altKey || ev.ctrlKey) { - // open in a new tab - window.open(fullUrl, '_blank') - } else if (ev.shiftKey) { - // open in a new window - window.open(fullUrl) - } else { - navigate(url) - } -} diff --git a/ui-ori/lib/utils/publicPathPrefix.ts b/ui-ori/lib/utils/publicPathPrefix.ts deleted file mode 100644 index e3cc3f5a3e..0000000000 --- a/ui-ori/lib/utils/publicPathPrefix.ts +++ /dev/null @@ -1,9 +0,0 @@ -let prefix = document - .querySelector('meta[name="x-public-path-prefix"]') - ?.getAttribute('content') - -if (prefix === '__PUBLIC_PATH_PREFIX__') { - prefix = '/dashboard' -} - -export default prefix diff --git a/ui-ori/lib/utils/query.ts b/ui-ori/lib/utils/query.ts deleted file mode 100644 index bbe42e3bf9..0000000000 --- a/ui-ori/lib/utils/query.ts +++ /dev/null @@ -1,31 +0,0 @@ -export interface IQueryParams { - [key: string]: any -} - -export function parseQueryFn() { - return (qs: string): T => { - const p = new URLSearchParams(qs) - const json = p.get('query') - if (json == null) { - return {} as T - } - const r = JSON.parse(json) - if (!!r && r.constructor === Object) { - return r as T - } - return {} as T - } -} - -export function buildQueryFn() { - return (q: T): string => { - const json = JSON.stringify(q) - const p = new URLSearchParams() - p.set('query', json) - return p.toString() - } -} - -export function stripQueryString(url: string) { - return url.split('?')[0] -} diff --git a/ui-ori/lib/utils/registry.ts b/ui-ori/lib/utils/registry.ts deleted file mode 100644 index e0c1b9b24e..0000000000 --- a/ui-ori/lib/utils/registry.ts +++ /dev/null @@ -1,94 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import singleSpaReact from 'single-spa-react' -import * as singleSpa from 'single-spa' -import * as i18n from './i18n' -import * as routing from './routing' -import { AppOptions } from './appOptions' - -export default class AppRegistry { - public defaultRouter = '' - public apps = {} - public constructor(public appOptions: AppOptions) {} - - static newReactSpaApp = function (rootComponentAsyncLoader, targetDomId) { - const reactLifecycles = singleSpaReact({ - React, - ReactDOM, - loadRootComponent: async () => { - const component = await rootComponentAsyncLoader() - if (component.default) { - return component.default - } - return component - }, - domElementGetter: () => document.getElementById(targetDomId), - }) - return { - bootstrap: [reactLifecycles.bootstrap], - mount: [reactLifecycles.mount], - unmount: [reactLifecycles.unmount], - } - } - - /** - * Register a TiDB Dashboard application. - * - * This function is a light encapsulation over single-spa's registerApplication - * which provides some extra registry capabilities. - * - * @param {{ - * id: string, - * reactRoot: Function, - * routerPrefix: string, - * indexRoute: string, - * isDefaultRouter: boolean, - * icon: string, - * }} app - */ - register(app) { - if (app.translations) { - i18n.addTranslations(app.translations) - } - - singleSpa.registerApplication( - app.id, - AppRegistry.newReactSpaApp(app.reactRoot, '__spa_content__'), - () => { - return routing.isLocationMatchPrefix(app.routerPrefix) - }, - { - registry: this, - app, - } - ) - if (!app.indexRoute) { - app.indexRoute = app.routerPrefix - } - if (!this.defaultRouter || app.isDefaultRouter) { - this.defaultRouter = app.indexRoute - } - this.apps[app.id] = app - return this - } - - /** - * Get the default router for initial routing. - */ - getDefaultRouter() { - return this.defaultRouter || '/' - } - - /** - * Get the registry of the current active app. - */ - getActiveApp() { - const mountedApps = singleSpa.getMountedApps() - for (let i = 0; i < mountedApps.length; i++) { - const app = mountedApps[i] - if (this.apps[app] !== undefined) { - return this.apps[app] - } - } - } -} diff --git a/ui-ori/lib/utils/routing.ts b/ui-ori/lib/utils/routing.ts deleted file mode 100644 index 523ca6fbc0..0000000000 --- a/ui-ori/lib/utils/routing.ts +++ /dev/null @@ -1,35 +0,0 @@ -export const signInRoute = '/signin' -export const portalRoute = '/portal' - -export function isLocationMatch(s, matchPrefix = false): boolean { - let hash = window.location.hash - if (!hash || hash === '#') { - hash = '#/' - } - if (matchPrefix) { - return hash.indexOf(`#${s}`) === 0 - } else { - return hash.trim() === `#${s}` - } -} - -export function isLocationMatchPrefix(s): boolean { - return isLocationMatch(s, true) -} - -export function isSignInPage(): boolean { - return isLocationMatchPrefix(signInRoute) -} - -export function isPortalPage(): boolean { - return isLocationMatchPrefix(portalRoute) -} - -export function getPathInLocationHash(): string { - const hash = window.location.hash - const pos = hash.indexOf('?') - if (pos === -1) { - return hash - } - return hash.substring(0, pos) -} diff --git a/ui-ori/lib/utils/selectionWithFilter.ts b/ui-ori/lib/utils/selectionWithFilter.ts deleted file mode 100644 index f7d230dc72..0000000000 --- a/ui-ori/lib/utils/selectionWithFilter.ts +++ /dev/null @@ -1,291 +0,0 @@ -import { - ISelection, - IObjectWithKey, - Selection, - SelectionMode, - ISelectionOptions, - ISelectionOptionsWithRequiredGetKey, - EventGroup, - SELECTION_CHANGE, -} from 'office-ui-fabric-react/lib/Utilities' - -export default class SelectionWithFilter - implements ISelection -{ - private _inner: Selection - - private _allItems: T[] = [] - private _allItemsMap: Map = new Map() - private _allSelectedKeysSet: Set = new Set() - private _itemKeysSet: Set = new Set() - - private _allSelectionCache: T[] | null = null - private _onSelectionChangedOriginal?: () => void - - get count(): number { - return this._inner.count - } - set count(v: number) { - this._inner.count = v - } - get mode(): SelectionMode { - return this._inner.mode - } - canSelectItem(item: T, index?: number): boolean { - return this._inner.canSelectItem(item, index) - } - setChangeEvents(isEnabled: boolean, suppressChange?: boolean) { - return this._inner.setChangeEvents(isEnabled, suppressChange) - } - getItems(): T[] { - return this._inner.getItems() - } - getSelection(): T[] { - return this._inner.getSelection() - } - getSelectedIndices(): number[] { - return this._inner.getSelectedIndices() - } - getSelectedCount(): number { - return this._inner.getSelectedCount() - } - isRangeSelected(fromIndex: number, count: number): boolean { - return this._inner.isRangeSelected(fromIndex, count) - } - isAllSelected(): boolean { - return this._inner.isAllSelected() - } - isKeySelected(key: string): boolean { - return this._inner.isKeySelected(key) - } - isIndexSelected(index: number): boolean { - return this._inner.isIndexSelected(index) - } - setKeySelected( - key: string, - isSelected: boolean, - shouldAnchor: boolean - ): void { - this._inner.setKeySelected(key, isSelected, shouldAnchor) - } - setIndexSelected( - index: number, - isSelected: boolean, - shouldAnchor: boolean - ): void { - this._inner.setIndexSelected(index, isSelected, shouldAnchor) - } - selectToKey(key: string, clearSelection?: boolean | undefined): void { - this._inner.selectToKey(key, clearSelection) - } - selectToIndex(index: number, clearSelection?: boolean | undefined): void { - this._inner.selectToIndex(index, clearSelection) - } - toggleAllSelected(): void { - this.setAllSelected(!this._inner.isAllSelected()) - } - toggleKeySelected(key: string): void { - this._inner.toggleKeySelected(key) - } - toggleIndexSelected(index: number): void { - this._inner.toggleIndexSelected(index) - } - toggleRangeSelected(fromIndex: number, count: number): void { - this._inner.toggleRangeSelected(fromIndex, count) - } - // Override - setItems(items: T[], shouldClear?: boolean) { - this._allSelectionCache = null - if (shouldClear) { - this._allSelectedKeysSet.clear() - } - - // Only items in AllItems can be added - const itemSubset: T[] = [] - this._itemKeysSet.clear() - for (const item of items) { - const key = this._inner.getKey(item) - if (this._allItemsMap.has(key)) { - this._itemKeysSet.add(key) - itemSubset.push(item) - } else { - if (process.env.NODE_ENV === 'development') { - console.warn( - 'Warning: SelectionWithFilter::setItems is called with an item not in allItems', - item, - key - ) - } - } - } - - this._inner.setChangeEvents(false) - this._inner.setItems(itemSubset, shouldClear) - // Re-select if newly added items are selected in allSelected - for (const key of this._allSelectedKeysSet) { - if (this._itemKeysSet.has(key)) { - this._inner.setKeySelected(key, true, false) - } - } - this._inner.setChangeEvents(true) - } - // Override - setAllSelected(isAllSelected: boolean) { - if (isAllSelected && this._itemKeysSet.size !== this._allItemsMap.size) { - // If items is a true subset of allItems, we emulate a selectAll by selecting one by one. - this._inner.setChangeEvents(false) - for (const key of this._itemKeysSet) { - this._inner.setKeySelected(key, true, false) - } - this._inner.setChangeEvents(true) - } else { - this._inner.setAllSelected(isAllSelected) - } - } - - constructor( - ...options: T extends IObjectWithKey - ? [] | [ISelectionOptions] - : [ISelectionOptionsWithRequiredGetKey] - ) { - const { onSelectionChanged, ...rest } = - options[0] || ({} as ISelectionOptions) - this._onSelectionChangedOriginal = onSelectionChanged - this._inner = new (Selection as any)({ - onSelectionChanged: () => this._handleSelectionChanged(), - ...rest, - }) - } - - private _handleSelectionChanged() { - this._triggerSelectionChanged() - } - - private _triggerSelectionChanged() { - this._allSelectionCache = null - EventGroup.raise(this, SELECTION_CHANGE) - if (this._onSelectionChangedOriginal) { - this._onSelectionChangedOriginal() - } - } - - setAllItems(items: T[]) { - this._allSelectionCache = null - this._allItems = items - this._allItemsMap.clear() - for (const item of items) { - const key = this._inner.getKey(item) - this._allItemsMap.set(key, item) - } - // Ensure `items` is a subset of `alllItems`. If not, update `items`. - const filteredItems = this._inner.getItems() - const newItems: T[] = [] - for (const item of filteredItems) { - const key = this._inner.getKey(item) - if (this._allItemsMap.has(key)) { - newItems.push(item) - } else { - if (process.env.NODE_ENV === 'development') { - console.log( - 'Note: SelectionWithFilter::setAllItems is filtering away an item previously in items but not in allItems', - item, - key - ) - } - } - } - if (filteredItems.length !== newItems.length) { - this.setItems(newItems) - } - } - - getAllItems(): T[] { - return this._allItems - } - - getAllSelection(): T[] { - if (!this._allSelectionCache) { - this._allSelectionCache = [] - for (const [key, item] of this._allItemsMap) { - // Selected state of the internal Selection takes precedence - if (this._itemKeysSet.has(key)) { - if (this._inner.isKeySelected(key)) { - this._allSelectionCache.push(item) - } - } else { - if (this._allSelectedKeysSet.has(key)) { - this._allSelectionCache.push(item) - } - } - } - // Sync current selection to _allSelectedKeysSet. This is optional but - // can avoid unnecessary selectionChanged event when calling `resetAllSelection` - // again with the same selection. - this._allSelectedKeysSet.clear() - for (const key of this._allSelectionCache) { - this._allSelectedKeysSet.add(this._inner.getKey(key)) - } - } - - return this._allSelectionCache - } - - resetAllSelection(selectedKeys: string[]) { - if (process.env.NODE_ENV === 'development') { - console.groupCollapsed('SelectionWithFilter.resetAllSelection') - console.log('selectedKeys', selectedKeys) - console.log('_allSelectedKeysSet', this._allSelectedKeysSet) - console.groupEnd() - } - // Check whether update can be avoided - let unChanged = true - let validSelectedKeysCount = 0 - for (const key of selectedKeys) { - if (this._allItemsMap.has(key)) { - validSelectedKeysCount++ - if (!this._allSelectedKeysSet.has(key)) { - unChanged = false - break - } - } - } - if (validSelectedKeysCount !== this._allSelectedKeysSet.size) { - unChanged = false - } - if (unChanged) { - return - } - - this._allSelectedKeysSet.clear() - for (const key of selectedKeys) { - if (this._allItemsMap.has(key)) { - this._allSelectedKeysSet.add(key) - } - } - // Update selection subset - this._inner.setChangeEvents(false) - this._inner.setAllSelected(false) - for (const key of selectedKeys) { - if (this._itemKeysSet.has(key)) { - this._inner.setKeySelected(key, true, false) - } - } - this._inner.setChangeEvents(true, true) - this._triggerSelectionChanged() // Force trigger a selection change anyway - } - - setAllSelectionSelected(isAllSelected: boolean) { - this._inner.setChangeEvents(false) - if (!isAllSelected) { - this._allSelectedKeysSet.clear() - this._inner.setAllSelected(false) - } else { - for (const key of this._allItemsMap.keys()) { - this._allSelectedKeysSet.add(key) - } - this._inner.setAllSelected(true) - } - this._inner.setChangeEvents(true, true) - this._triggerSelectionChanged() // Force trigger a selection change anyway - } -} diff --git a/ui-ori/lib/utils/sentryHelpers.ts b/ui-ori/lib/utils/sentryHelpers.ts deleted file mode 100644 index 09883bc082..0000000000 --- a/ui-ori/lib/utils/sentryHelpers.ts +++ /dev/null @@ -1,109 +0,0 @@ -import * as url from 'url' -import { AxiosInstance } from 'axios' -import * as Sentry from '@sentry/react' -import { stripQueryString } from './query' - -const firstMountTransaction = Sentry.startTransaction({ name: 'first mount' }) -const transactionHub = new Map() - -export const sentryEnabled = process.env.REACT_APP_SENTRY_ENABLED === 'true' - -export function markStart(name: string, op?: string) { - const transaction = Sentry.startTransaction({ name, op }) - transactionHub.set(transaction.name, transaction) - transactionHub.set(transaction.traceId, transaction) - return transaction -} - -export function markEnd(name: string, traceId?: string) { - const transaction = traceId - ? transactionHub.get(traceId) - : transactionHub.get(name) - if (transaction) { - transaction.finish() - transactionHub.delete(name) - if (traceId) { - transactionHub.delete(traceId) - } - } -} - -export function markTag(key: string, value: string | number, traceId: string) { - const transaction = transactionHub.get(traceId) - if (transaction) { - transaction.setTag(key, value) - } -} - -export const reportError: typeof Sentry.captureException = (...args) => { - if (sentryEnabled) { - return Sentry.captureException(...args) - } - return '' -} - -export function initSentryRoutingInstrument() { - window.addEventListener('single-spa:first-mount', () => { - firstMountTransaction.finish() - }) - - window.addEventListener('single-spa:before-routing-event', (e: any) => { - const { hash: newUrlHash } = url.parse(e.detail.newUrl) - const { hash: oldUrlHash } = url.parse(e.detail.oldUrl) - - if (!newUrlHash) return - - const from = stripQueryString(oldUrlHash || '/') - const to = stripQueryString(newUrlHash) - const transaction = markStart(to, 'routing') - transaction.setTag('routing.from', from) - transaction.setTag('routing.to', to) - transaction.setTag( - 'routing.mount', - e.detail.appsByNewStatus.MOUNTED.join(',') - ) - transaction.setTag( - 'routing.unmount', - e.detail.appsByNewStatus.NOT_MOUNTED.join(',') - ) - }) - - window.addEventListener('single-spa:routing-event', (e: any) => { - const { hash: newUrlHash } = url.parse(e.detail.newUrl) - markEnd(stripQueryString(newUrlHash!)) - }) -} - -export function applySentryTracingInterceptor(instance: AxiosInstance) { - instance.interceptors.request.use((config) => { - if (config.url && config.method) { - const { pathname } = url.parse(config.url) - const transaction = markStart(pathname!, 'http') - transaction.setTag('http.method', config.method.toUpperCase()) - config.headers['x-sentry-trace'] = transaction.traceId - } - return config - }) - - instance.interceptors.response.use( - (response) => { - const id = response.config?.headers['x-sentry-trace'] - if (id) { - const { pathname } = url.parse(response.config.url!) - markTag('http.status', response.status, id) - markEnd(pathname!, id) - } - return response - }, - (error) => { - const id = error?.config?.headers['x-sentry-trace'] - if (id) { - const { pathname } = url.parse(error.config.url) - markTag(id, 'error', error.message) - markEnd(pathname!, id) - } - - return Promise.reject(error) - } - ) -} diff --git a/ui-ori/lib/utils/sqlFormatter/TiDBSQLFormatter.ts b/ui-ori/lib/utils/sqlFormatter/TiDBSQLFormatter.ts deleted file mode 100644 index e91656fe87..0000000000 --- a/ui-ori/lib/utils/sqlFormatter/TiDBSQLFormatter.ts +++ /dev/null @@ -1,371 +0,0 @@ -// This file is copied from 'sql-formatter-plus-plus/src/languages/StandardSqlFormatter.js'. -// And changed the following lines: -// `namedPlaceholderTypes: ['@', ':'],` => `namedPlaceholderTypes: [':'],` -// Add the following line which copied from Db2Formatter.js: -// `specialWordChars: ['@'],` - -import Formatter from 'sql-formatter-plus-plus/src/core/Formatter' -import Tokenizer from 'sql-formatter-plus-plus/src/core/Tokenizer' - -const reservedWords = [ - 'ACCESSIBLE', - 'ACTION', - 'AGAINST', - 'AGGREGATE', - 'ALGORITHM', - 'ALL', - 'ALTER', - 'ANALYSE', - 'ANALYZE', - 'AS', - 'ASC', - 'AUTOCOMMIT', - 'AUTO_INCREMENT', - 'BACKUP', - 'BEGIN', - 'BETWEEN', - 'BINLOG', - 'BOTH', - 'CASCADE', - 'CASE', - 'CHANGE', - 'CHANGED', - 'CHARACTER SET', - 'CHARSET', - 'CHECK', - 'CHECKSUM', - 'COLLATE', - 'COLLATION', - 'COLUMN', - 'COLUMNS', - 'COMMENT', - 'COMMIT', - 'COMMITTED', - 'COMPRESSED', - 'CONCURRENT', - 'CONSTRAINT', - 'CONTAINS', - 'CONVERT', - 'CREATE', - 'CROSS', - 'CURRENT_TIMESTAMP', - 'DATABASE', - 'DATABASES', - 'DAY', - 'DAY_HOUR', - 'DAY_MINUTE', - 'DAY_SECOND', - 'DEFAULT', - 'DEFINER', - 'DELAYED', - 'DELETE', - 'DESC', - 'DESCRIBE', - 'DETERMINISTIC', - 'DISTINCT', - 'DISTINCTROW', - 'DIV', - 'DO', - 'DROP', - 'DUMPFILE', - 'DUPLICATE', - 'DYNAMIC', - 'ELSE', - 'ENCLOSED', - 'END', - 'ENGINE', - 'ENGINES', - 'ENGINE_TYPE', - 'ESCAPE', - 'ESCAPED', - 'EVENTS', - 'EXEC', - 'EXECUTE', - 'EXISTS', - 'EXPLAIN', - 'EXTENDED', - 'FAST', - 'FETCH', - 'FIELDS', - 'FILE', - 'FIRST', - 'FIXED', - 'FLUSH', - 'FOR', - 'FORCE', - 'FOREIGN', - 'FULL', - 'FULLTEXT', - 'FUNCTION', - 'GLOBAL', - 'GRANT', - 'GRANTS', - 'GROUP_CONCAT', - 'HEAP', - 'HIGH_PRIORITY', - 'HOSTS', - 'HOUR', - 'HOUR_MINUTE', - 'HOUR_SECOND', - 'IDENTIFIED', - 'IF', - 'IFNULL', - 'IGNORE', - 'IN', - 'INDEX', - 'INDEXES', - 'INFILE', - 'INSERT', - 'INSERT_ID', - 'INSERT_METHOD', - 'INTERVAL', - 'INTO', - 'INVOKER', - 'IS', - 'ISOLATION', - 'KEY', - 'KEYS', - 'KILL', - 'LAST_INSERT_ID', - 'LEADING', - 'LEVEL', - 'LIKE', - 'LINEAR', - 'LINES', - 'LOAD', - 'LOCAL', - 'LOCK', - 'LOCKS', - 'LOGS', - 'LOW_PRIORITY', - 'MARIA', - 'MASTER', - 'MASTER_CONNECT_RETRY', - 'MASTER_HOST', - 'MASTER_LOG_FILE', - 'MATCH', - 'MAX_CONNECTIONS_PER_HOUR', - 'MAX_QUERIES_PER_HOUR', - 'MAX_ROWS', - 'MAX_UPDATES_PER_HOUR', - 'MAX_USER_CONNECTIONS', - 'MEDIUM', - 'MERGE', - 'MINUTE', - 'MINUTE_SECOND', - 'MIN_ROWS', - 'MODE', - 'MODIFY', - 'MONTH', - 'MRG_MYISAM', - 'MYISAM', - 'NAMES', - 'NATURAL', - 'NOT', - 'NOW()', - 'NULL', - 'OFFSET', - 'ON DELETE', - 'ON UPDATE', - 'ON', - 'ONLY', - 'OPEN', - 'OPTIMIZE', - 'OPTION', - 'OPTIONALLY', - 'OUTFILE', - 'PACK_KEYS', - 'PAGE', - 'PARTIAL', - 'PARTITION', - 'PARTITIONS', - 'PASSWORD', - 'PRIMARY', - 'PRIVILEGES', - 'PROCEDURE', - 'PROCESS', - 'PROCESSLIST', - 'PURGE', - 'QUICK', - 'RAID0', - 'RAID_CHUNKS', - 'RAID_CHUNKSIZE', - 'RAID_TYPE', - 'RANGE', - 'READ', - 'READ_ONLY', - 'READ_WRITE', - 'REFERENCES', - 'REGEXP', - 'RELOAD', - 'RENAME', - 'REPAIR', - 'REPEATABLE', - 'REPLACE', - 'REPLICATION', - 'RESET', - 'RESTORE', - 'RESTRICT', - 'RETURN', - 'RETURNS', - 'REVOKE', - 'RLIKE', - 'ROLLBACK', - 'ROW', - 'ROWS', - 'ROW_FORMAT', - 'SECOND', - 'SECURITY', - 'SEPARATOR', - 'SERIALIZABLE', - 'SESSION', - 'SHARE', - 'SHOW', - 'SHUTDOWN', - 'SLAVE', - 'SONAME', - 'SOUNDS', - 'SQL', - 'SQL_AUTO_IS_NULL', - 'SQL_BIG_RESULT', - 'SQL_BIG_SELECTS', - 'SQL_BIG_TABLES', - 'SQL_BUFFER_RESULT', - 'SQL_CACHE', - 'SQL_CALC_FOUND_ROWS', - 'SQL_LOG_BIN', - 'SQL_LOG_OFF', - 'SQL_LOG_UPDATE', - 'SQL_LOW_PRIORITY_UPDATES', - 'SQL_MAX_JOIN_SIZE', - 'SQL_NO_CACHE', - 'SQL_QUOTE_SHOW_CREATE', - 'SQL_SAFE_UPDATES', - 'SQL_SELECT_LIMIT', - 'SQL_SLAVE_SKIP_COUNTER', - 'SQL_SMALL_RESULT', - 'SQL_WARNINGS', - 'START', - 'STARTING', - 'STATUS', - 'STOP', - 'STORAGE', - 'STRAIGHT_JOIN', - 'STRING', - 'STRIPED', - 'SUPER', - 'TABLE', - 'TABLES', - 'TEMPORARY', - 'TERMINATED', - 'THEN', - 'TO', - 'TRAILING', - 'TRANSACTIONAL', - 'TRUE', - 'TRUNCATE', - 'TYPE', - 'TYPES', - 'UNCOMMITTED', - 'UNIQUE', - 'UNLOCK', - 'UNSIGNED', - 'USAGE', - 'USE', - 'USING', - 'VARIABLES', - 'VIEW', - 'WHEN', - 'WITH', - 'WORK', - 'WRITE', - 'YEAR_MONTH', -] - -const reservedTopLevelWords = [ - 'ADD', - 'AFTER', - 'ALTER COLUMN', - 'ALTER TABLE', - 'DELETE FROM', - 'EXCEPT', - 'FETCH FIRST', - 'FROM', - 'GROUP BY', - 'GO', - 'HAVING', - 'INSERT INTO', - 'INSERT', - 'LIMIT', - 'MODIFY', - 'ORDER BY', - 'SELECT', - 'SET CURRENT SCHEMA', - 'SET SCHEMA', - 'SET', - 'UPDATE', - 'VALUES', - 'WHERE', -] - -const reservedTopLevelWordsNoIndent = [ - 'INTERSECT', - 'INTERSECT ALL', - 'MINUS', - 'UNION', - 'UNION ALL', -] - -const reservedNewlineWords = [ - 'AND', - 'CROSS APPLY', - 'CROSS JOIN', - 'ELSE', - 'INNER JOIN', - 'JOIN', - 'LEFT JOIN', - 'LEFT OUTER JOIN', - 'OR', - 'OUTER APPLY', - 'OUTER JOIN', - 'RIGHT JOIN', - 'RIGHT OUTER JOIN', - 'WHEN', - 'XOR', -] - -let tokenizer - -export default class TiDBSQLFormatter { - /** - * @param {Object} cfg Different set of configurations - */ - constructor(public cfg) { - this.cfg = cfg - } - - /** - * Format the whitespace in a Standard SQL string to make it easier to read - * - * @param {String} query The Standard SQL string - * @return {String} formatted string - */ - format(query) { - if (!tokenizer) { - tokenizer = new Tokenizer({ - reservedWords, - reservedTopLevelWords, - reservedNewlineWords, - reservedTopLevelWordsNoIndent, - stringTypes: [`""`, "N''", "''", '``', '[]'], - openParens: ['(', 'CASE'], - closeParens: [')', 'END'], - indexedPlaceholderTypes: ['?'], - namedPlaceholderTypes: [':'], - lineCommentTypes: ['#', '--'], - specialWordChars: ['@'], - }) - } - return new Formatter(this.cfg, tokenizer).format(query) - } -} diff --git a/ui-ori/lib/utils/sqlFormatter/index.ts b/ui-ori/lib/utils/sqlFormatter/index.ts deleted file mode 100644 index 9405055f5f..0000000000 --- a/ui-ori/lib/utils/sqlFormatter/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import TiDBSQLFormatter from './TiDBSQLFormatter' - -const mySqlFormatter = new TiDBSQLFormatter({ uppercase: true }) - -export default function formatSql(sql?: string): string { - return mySqlFormatter.format(sql || '') -} diff --git a/ui-ori/lib/utils/store.ts b/ui-ori/lib/utils/store.ts deleted file mode 100644 index 91a46ca347..0000000000 --- a/ui-ori/lib/utils/store.ts +++ /dev/null @@ -1,58 +0,0 @@ -import client, { - ErrorStrategy, - InfoInfoResponse, - InfoWhoAmIResponse, -} from '@lib/client' -import { Store } from 'pullstate' -import { authEvents, EVENT_TOKEN_CHANGED, getAuthToken } from './auth' - -interface StoreState { - whoAmI?: InfoWhoAmIResponse - appInfo?: InfoInfoResponse -} - -export const store = new Store({}) - -export const useIsWriteable = () => - store.useState((s) => Boolean(s.whoAmI && s.whoAmI.is_writeable)) - -export const useIsFeatureSupport = (feature: string) => - store.useState( - (s) => (s.appInfo?.supported_features?.indexOf(feature) ?? -1) !== -1 - ) - -export async function reloadWhoAmI() { - if (!getAuthToken()) { - store.update((s) => { - s.whoAmI = undefined - }) - return - } - - try { - const resp = await client.getInstance().infoWhoami({ - errorStrategy: ErrorStrategy.Custom, - }) - store.update((s) => { - s.whoAmI = resp.data - }) - } catch (ex) { - store.update((s) => { - s.whoAmI = undefined - }) - } -} - -export async function mustLoadAppInfo(): Promise { - const resp = await client.getInstance().infoGet({ - errorStrategy: ErrorStrategy.Custom, - }) - store.update((s) => { - s.appInfo = resp.data - }) - return resp.data -} - -authEvents.on(EVENT_TOKEN_CHANGED, async () => { - await reloadWhoAmI() -}) diff --git a/ui-ori/lib/utils/tableColumnFactory.tsx b/ui-ori/lib/utils/tableColumnFactory.tsx deleted file mode 100644 index bb2e7e0dba..0000000000 --- a/ui-ori/lib/utils/tableColumnFactory.tsx +++ /dev/null @@ -1,335 +0,0 @@ -import { Tooltip } from 'antd' -import { max as _max, capitalize } from 'lodash' -import { - IColumn, - ColumnActionsMode, -} from 'office-ui-fabric-react/lib/DetailsList' -import React from 'react' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import { - Bar, - Pre, - TextWithInfo, - TextWrap, - DateTime, - HighlightSQL, - IColumnKeys, -} from '@lib/components' - -export type DerivedField = { - displayTransKey?: string // it is same as avg field name default - sources: T[] -} - -export type DerivedBar = DerivedField<{ - tooltipPrefix: string - fieldName: string -}> - -export type DerivedCol = DerivedField - -export function formatVal(val: number, unit: string, decimals: number = 1) { - const formatFn = getValueFormat(unit) - return unit === 'short' ? formatFn(val, 0, decimals) : formatFn(val, decimals) -} - -export function TranslatedColumnName( - transPrefix: string, - fieldName: string -): any { - const fullTransKey = `${transPrefix}.${fieldName}` - return -} - -export class Column { - constructor( - private config: IColumn, - private options: { transPrefix?: string } = {} - ) {} - - getConfig(): IColumn { - const { transPrefix } = this.options - return { - ...this.config, - name: transPrefix - ? TranslatedColumnName(transPrefix, this.config.name) - : this.config.name, - } - } - - setConfig(config: IColumn) { - this.config = config - return this - } - - patchConfig(config: Partial) { - this.config = { ...this.config, ...config } - return this - } -} - -export class ColumnArray { - controls: Column[] - - // could be IColumn or Column mixed array type, not (IColumn | Column)[] type - constructor(controlsConfig: any[]) { - this.controls = controlsConfig.map((c) => - c instanceof Column ? c : new Column(c) - ) - } - - getConfig(): IColumn[] { - return this.controls.map((c) => c.getConfig()) - } -} - -export class TableColumnFactory { - bar: BarColumn = new BarColumn(this) - - private allowColumnsMap: { [f: string]: boolean } - - constructor( - private transPrefix: string, - private allowColumns: string[] = [] - ) { - this.allowColumnsMap = allowColumns.reduce((prev, f) => { - prev[f] = true - return prev - }, {} as { [f: string]: boolean }) - } - - control(config: IColumn): Column { - return new Column(config, { transPrefix: this.transPrefix }) - } - - array(controlsConfig: any[]): ColumnArray { - return new ColumnArray(controlsConfig) - } - - columns(controlsConfig: any[]): IColumn[] { - const columns = this.array(controlsConfig).getConfig() - const needFilterColumn = this.allowColumns.length - if (!needFilterColumn) { - return columns - } - return columns.filter((c) => this.allowColumnsMap[c.fieldName!]) - } - - textWithTooltip( - fieldName: T, - _rows?: U[] - ): Column { - return this.control({ - ...this.getDefaultColumnConfig(fieldName), - maxWidth: 150, - onRender: (rec: U) => ( - - {rec[fieldName]} - - ), - }) - } - - singleBar( - fieldName: T, - unit: string, - rows?: U[] - ): Column { - const capacity = rows ? _max(rows.map((v) => v[fieldName])) ?? 0 : 0 - return this.control({ - ...this.getDefaultColumnConfig(fieldName), - minWidth: 140, - maxWidth: 200, - columnActionsMode: ColumnActionsMode.clickable, - onRender: (rec: U) => { - const fmtVal = formatVal(rec[fieldName]!, unit) - return ( - - {fmtVal} - - ) - }, - }) - } - - multipleBar(barsConfig: DerivedBar, unit: string, rows?: T[]): Column { - const { - displayTransKey, - sources: [avg, max, min], - } = barsConfig - - const tooltipPrefixLens: number[] = [] - - tooltipPrefixLens.push(avg.tooltipPrefix.length) - tooltipPrefixLens.push(max.tooltipPrefix.length) - if (min) { - tooltipPrefixLens.push(min.tooltipPrefix.length) - } - - const maxTooltipPrefixLen = _max(tooltipPrefixLens) || 0 - - const capacity = rows ? _max(rows.map((v) => v[max.fieldName])) ?? 0 : 0 - - return this.control({ - ...this.getDefaultColumnConfig(avg.fieldName), - name: displayTransKey || avg.fieldName, - minWidth: 140, - maxWidth: 200, - columnActionsMode: ColumnActionsMode.clickable, - onRender: (rec) => { - const avgVal = rec[avg.fieldName] - const maxVal = rec[max.fieldName] - const minVal = min ? rec[min.fieldName] : undefined - const tooltips = [avg, min, max] - .filter((el) => el !== undefined) - .map((bar) => { - const prefix = capitalize(bar!.tooltipPrefix + ':').padEnd( - maxTooltipPrefixLen + 2 - ) - const fmtVal = formatVal(rec[bar!.fieldName], unit) - return `${prefix}${fmtVal}` - }) - .join('\n') - return ( - {tooltips.trim()}}> - - {formatVal(avgVal, unit)} - - - ) - }, - }) - } - - timestamp( - fieldName: T, - _rows?: U[] - ): Column { - return this.control({ - ...this.getDefaultColumnConfig(fieldName), - maxWidth: 150, - columnActionsMode: ColumnActionsMode.clickable, - onRender: (rec: U) => ( - - - - ), - }) - } - - sqlText( - fieldName: T, - showFullSQL?: boolean, - _rows?: U[] - ): Column { - return this.control({ - ...this.getDefaultColumnConfig(fieldName), - maxWidth: 500, - isMultiline: showFullSQL, - onRender: (rec: U) => - showFullSQL ? ( - - - - ) : ( - } - placement="right" - > - - - - - ), - }) - } - - private getDefaultColumnConfig(fieldName: string) { - return { - name: fieldName, - key: fieldName, - fieldName: fieldName, - minWidth: 100, - } - } -} - -export class BarColumn { - constructor(public factory: TableColumnFactory) {} - - single( - fieldName: T, - unit: string, - rows?: U[] - ) { - return this.factory.singleBar(fieldName, unit, rows) - } - - multiple(bars: DerivedBar, unit: string, rows?: T[]) { - return this.factory.multipleBar(bars, unit, rows) - } -} - -//////////////////////////////////////////// - -export type DerivedFields = Record< - string, - DerivedBar['sources'] | DerivedCol['sources'] -> - -export function genDerivedBarSources( - avg: string, - max: string, - min?: string -): DerivedBar['sources'] { - const res = [ - { - tooltipPrefix: 'mean', - fieldName: avg, - }, - { - tooltipPrefix: 'max', - fieldName: max, - }, - ] - if (min) { - res.push({ - tooltipPrefix: 'min', - fieldName: min, - }) - } - return res -} - -function isDerivedBarSources(v: any): v is DerivedBar['sources'] { - return !!v[0].fieldName -} - -export function getSelectedFields( - visibleColumnKeys: IColumnKeys, - derivedFields: DerivedFields -) { - let fields: string[] = [] - let sources: DerivedFields[keyof DerivedFields] - for (const columnKey in visibleColumnKeys) { - if (visibleColumnKeys[columnKey]) { - if ((sources = derivedFields[columnKey])) { - if (isDerivedBarSources(sources)) { - fields.push(...sources.map((b) => b.fieldName)) - } else { - fields.push(...sources) - } - } else { - fields.push(columnKey) - } - } - } - return fields -} diff --git a/ui-ori/lib/utils/tableColumns.tsx b/ui-ori/lib/utils/tableColumns.tsx deleted file mode 100644 index e1be90c17b..0000000000 --- a/ui-ori/lib/utils/tableColumns.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { Tooltip } from 'antd' -import { max } from 'lodash' -import { IColumn } from 'office-ui-fabric-react/lib/DetailsList' -import React from 'react' -import { useTranslation } from 'react-i18next' -import { getValueFormat } from '@baurine/grafana-value-formats' - -import { Bar, Pre } from '@lib/components' -import { addTranslationResource } from './i18n' -import { TranslatedColumnName } from './tableColumnFactory' - -const translations = { - en: { - name: 'Name', - value: 'Value', - time: 'Time', - desc: 'Description', - }, - zh: { - name: '名称', - value: '值', - time: '时间', - desc: '描述', - }, -} - -for (const key in translations) { - addTranslationResource(key, { - component: { - commonColumn: translations[key], - }, - }) -} - -function TransText({ - transKey, - noFallback, -}: { - transKey: string - noFallback?: boolean -}) { - const { t } = useTranslation() - let opt - if (noFallback) { - opt = { - defaultValue: '', - fallbackLng: '_', - } - } - return {t(transKey, opt)} -} - -//////////////////////////////////// -const TRANS_KEY_PREFIX = 'component.commonColumn' - -function fieldsKeyColumn(transKeyPrefix: string): IColumn { - return { - name: TranslatedColumnName(TRANS_KEY_PREFIX, 'name'), - key: 'key', - minWidth: 150, - maxWidth: 250, - onRender: (rec) => { - return ( -
    - {rec.keyDisplay ?? ( - - )} -
    - ) - }, - } -} - -function fieldsValueColumn(): IColumn { - return { - name: TranslatedColumnName(TRANS_KEY_PREFIX, 'value'), - key: 'value', - fieldName: 'value', - minWidth: 150, - maxWidth: 250, - } -} - -function fieldsTimeValueColumn( - rows?: { avg?: number; min?: number; max?: number; value?: number }[] -): IColumn { - const capacity = rows - ? max(rows.map((v) => max([v.max, v.min, v.avg, v.value]))) ?? 0 - : 0 - return { - name: TranslatedColumnName(TRANS_KEY_PREFIX, 'time'), - key: 'time', - minWidth: 150, - maxWidth: 200, - onRender: (rec) => { - const tooltipContent: string[] = [] - if (rec.avg) { - tooltipContent.push(`Mean: ${getValueFormat('ns')(rec.avg, 1)}`) - } - if (rec.min) { - tooltipContent.push(`Min: ${getValueFormat('ns')(rec.min, 1)}`) - } - if (rec.max) { - tooltipContent.push(`Max: ${getValueFormat('ns')(rec.max, 1)}`) - } - const bar = ( - - {rec.avg != null - ? getValueFormat('ns')(rec.avg, 1) - : getValueFormat('ns')(rec.value, 1)} - - ) - if (tooltipContent.length > 0) { - return ( - {tooltipContent.join('\n').trim()}}> - {bar} - - ) - } else { - return bar - } - }, - } -} - -function fieldsDescriptionColumn(transKeyPrefix: string): IColumn { - return { - name: TranslatedColumnName(TRANS_KEY_PREFIX, 'desc'), - key: 'description', - minWidth: 150, - maxWidth: 300, - onRender: (rec) => { - const content = ( - - ) - return ( - - {content} - - ) - }, - } -} - -//////////////////////////////////////////// - -export function valueColumns(transKeyPrefix: string) { - return [ - fieldsKeyColumn(transKeyPrefix), - fieldsValueColumn(), - fieldsDescriptionColumn(transKeyPrefix), - ] -} - -export function timeValueColumns( - transKeyPrefix: string, - items?: { avg?: number; min?: number; max?: number; value?: number }[] -) { - return [ - fieldsKeyColumn(transKeyPrefix), - fieldsTimeValueColumn(items), - fieldsDescriptionColumn(transKeyPrefix), - ] -} diff --git a/ui-ori/lib/utils/useCache.ts b/ui-ori/lib/utils/useCache.ts deleted file mode 100644 index a3506edd20..0000000000 --- a/ui-ori/lib/utils/useCache.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { useRef, createContext } from 'react' - -type CacheItem = { - expireAt: number - data: any -} - -type Cache = Record - -const ONE_HOUR_TIME = 1 * 60 * 60 * 1000 - -export type CacheMgr = { - get: (key: string) => any - set: (key: string, val: any, expire?: number) => void - remove: (key: string) => void -} - -export const CacheContext = createContext(null) - -export default function useCache( - capacity: number = 1, - globalExpire: number = ONE_HOUR_TIME -): CacheMgr { - const cache = useRef({}) - const cacheItemKeys = useRef([]) - - function get(key: string): any { - const item = cache.current[key] - if (item === undefined) { - return undefined - } - if (item.expireAt < new Date().valueOf()) { - remove(key) - return undefined - } - return item.data - } - - function set(key: string, val: any, expire?: number) { - const curTime = new Date().valueOf() - let expireAt: number - if (expire) { - expireAt = curTime + expire - } else { - expireAt = curTime + globalExpire - } - cache.current[key] = { - expireAt, - data: val, - } - - // put the latest key in the end of cacheItemKeys - cacheItemKeys.current = cacheItemKeys.current - .filter((k) => k !== key) - .concat(key) - // if size beyonds the capacity - // remove the old ones - while (capacity > 0 && cacheItemKeys.current.length > capacity) { - remove(cacheItemKeys.current[0]) - } - } - - function remove(key: string) { - delete cache.current[key] - cacheItemKeys.current = cacheItemKeys.current.filter((k) => k !== key) - } - - return { get, set, remove } -} diff --git a/ui-ori/lib/utils/useCacheItemIndex.ts b/ui-ori/lib/utils/useCacheItemIndex.ts deleted file mode 100644 index cde12ccff0..0000000000 --- a/ui-ori/lib/utils/useCacheItemIndex.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CacheMgr } from './useCache' - -export default function useCacheItemIndex(cacheMgr: CacheMgr | null) { - const CLICKED_ITEM_INDEX = 'clicked_item_index' - function saveClickedItemIndex(idx: number) { - cacheMgr?.set(CLICKED_ITEM_INDEX, idx) - } - function getClickedItemIndex(): number { - return cacheMgr?.get(CLICKED_ITEM_INDEX) || -1 - } - - return { - saveClickedItemIndex, - getClickedItemIndex, - } -} diff --git a/ui-ori/lib/utils/useClientRequest.ts b/ui-ori/lib/utils/useClientRequest.ts deleted file mode 100644 index cdcfd4bbc6..0000000000 --- a/ui-ori/lib/utils/useClientRequest.ts +++ /dev/null @@ -1,288 +0,0 @@ -import { useMount, useUnmount, usePersistFn } from 'ahooks' -import { useState, useRef, useEffect } from 'react' -import axios, { CancelToken, AxiosPromise, CancelTokenSource } from 'axios' - -import { ErrorStrategy } from '@lib/client' - -export interface ReqConfig { - cancelToken: CancelToken - errorStrategy: ErrorStrategy -} - -export interface RequestFactory { - (reqConfig: ReqConfig): AxiosPromise -} - -interface Options { - immediate?: boolean - afterRequest?: () => void - beforeRequest?: () => void -} - -interface State { - isLoading: boolean - data?: T - error?: any -} - -export function useClientRequest( - reqFactory: RequestFactory, - options?: Options -) { - const { - immediate = true, - afterRequest = null, - beforeRequest = null, - } = options || {} - - const [state, setState] = useState>({ - isLoading: immediate, - }) - - // If `cancelTokenSource` is null, it means there is no running requests. - const cancelTokenSource = useRef(null) - const mounted = useRef(false) - - const sendRequest = usePersistFn(async () => { - if (!mounted.current) { - return - } - if (cancelTokenSource.current) { - return - } - - beforeRequest && beforeRequest() - - cancelTokenSource.current = axios.CancelToken.source() - - setState((s) => ({ - ...s, - isLoading: true, - error: undefined, - })) - - try { - const reqConfig: ReqConfig = { - cancelToken: cancelTokenSource.current.token, - errorStrategy: ErrorStrategy.Custom, // handle the error by component self - } - const resp = await reqFactory(reqConfig) - if (mounted.current) { - setState({ - data: resp.data, - isLoading: false, - }) - } - } catch (e) { - if (mounted.current) { - setState({ - error: e, - isLoading: false, - }) - } - } - - cancelTokenSource.current = null - - afterRequest && afterRequest() - }) - - useMount(() => { - mounted.current = true - if (immediate) { - sendRequest() - } - }) - - useUnmount(() => { - mounted.current = false - if (cancelTokenSource.current != null) { - cancelTokenSource.current.cancel() - cancelTokenSource.current = null - } - }) - - return { - ...state, - sendRequest, - } -} - -export interface BatchState { - isLoading: boolean - data: (T | null)[] - error: (any | null)[] -} - -export function useBatchClientRequest( - reqFactories: RequestFactory[], - options?: Options -) { - const { - immediate = true, - afterRequest = null, - beforeRequest = null, - } = options || {} - - const [state, setState] = useState>({ - isLoading: immediate, - data: reqFactories.map((_) => null), - error: reqFactories.map((_) => null), - }) - - const cancelTokenSource = useRef(null) - const mounted = useRef(false) - - const sendRequestEach = async (idx) => { - try { - const reqConfig: ReqConfig = { - cancelToken: cancelTokenSource.current![idx].token, - errorStrategy: ErrorStrategy.Custom, - } - const resp = await reqFactories[idx](reqConfig) - if (mounted.current) { - setState((s) => { - s.data[idx] = resp.data - return { ...s, data: [...s.data] } - }) - } - } catch (e) { - if (mounted.current) { - setState((s) => { - s.error[idx] = e - return { ...s, error: [...s.error] } - }) - } - } - } - - const sendRequest = usePersistFn(async () => { - if (!mounted.current) { - return - } - if (cancelTokenSource.current) { - return - } - - beforeRequest && beforeRequest() - - cancelTokenSource.current = reqFactories.map((_) => - axios.CancelToken.source() - ) - setState((s) => ({ - ...s, - isLoading: true, - error: reqFactories.map((_) => null), - })) - - const p = reqFactories.map((_, idx) => sendRequestEach(idx)) - await Promise.all(p) - if (mounted.current) { - setState((s) => ({ - ...s, - isLoading: false, - })) - } - - cancelTokenSource.current = null - - afterRequest && afterRequest() - }) - - useMount(() => { - mounted.current = true - if (immediate) { - sendRequest() - } - }) - - useUnmount(() => { - mounted.current = false - if (cancelTokenSource.current != null) { - cancelTokenSource.current.forEach((c) => c.cancel()) - cancelTokenSource.current = null - } - }) - - return { - ...state, - sendRequest, - } -} - -interface OptionsWithPolling extends Options { - pollingInterval?: number - shouldPoll?: ((data: T) => boolean) | null -} - -export function useClientRequestWithPolling( - reqFactory: RequestFactory, - options?: OptionsWithPolling -) { - const { - pollingInterval = 1000, - shouldPoll = null, - afterRequest = null, - beforeRequest = null, - immediate = true, - } = options || {} - const mounted = useRef(false) - const pollingTimer = useRef | null>(null) - - const scheduleNextPoll = () => { - if (pollingTimer.current == null && mounted.current) { - pollingTimer.current = setTimeout(() => { - retRef.current.sendRequest() - pollingTimer.current = null - }, pollingInterval) - } - } - - const cancelNextPoll = () => { - if (pollingTimer.current != null) { - clearTimeout(pollingTimer.current) - pollingTimer.current = null - } - } - - const myBeforeRequest = () => { - beforeRequest?.() - cancelNextPoll() - } - - const myAfterRequest = () => { - let triggerPoll = true - if (retRef.current.error) { - triggerPoll = false - } else if (retRef.current.data && shouldPoll) { - triggerPoll = shouldPoll(retRef.current.data) - } - if (triggerPoll) { - scheduleNextPoll() - } - afterRequest?.() - } - - const ret = useClientRequest(reqFactory, { - immediate, - beforeRequest: myBeforeRequest, - afterRequest: myAfterRequest, - }) - - const retRef = useRef(ret) - - useEffect(() => { - retRef.current = ret - }, [ret]) - - useMount(() => { - mounted.current = true - }) - - useUnmount(() => { - mounted.current = false - cancelNextPoll() - }) - - return ret -} diff --git a/ui-ori/lib/utils/useLocalStorageState.ts b/ui-ori/lib/utils/useLocalStorageState.ts deleted file mode 100644 index a600c163f0..0000000000 --- a/ui-ori/lib/utils/useLocalStorageState.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useLocalStorageState as useAhooksLocalStorageState } from 'ahooks' - -// attachVersion will use the version field in package.json as the postfix for the localstorage key -// we can **update version field in package.json** to upgrade local storage version key -export function useLocalStorageState( - key: string, - defaultValue: T | (() => T), - attachVersion = false -) { - return useAhooksLocalStorageState( - attachVersion ? `${key}.v${process.env.REACT_APP_VERSION}` : key, - defaultValue - ) -} diff --git a/ui-ori/lib/utils/useOrderState.ts b/ui-ori/lib/utils/useOrderState.ts deleted file mode 100644 index 469abae414..0000000000 --- a/ui-ori/lib/utils/useOrderState.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { useState, useMemo } from 'react' - -import { useLocalStorageState } from './useLocalStorageState' - -export interface IOrderOptions { - orderBy: string - desc: boolean -} - -export default function useOrderState( - storeKeyPrefix: string, - needSave: boolean, - options: IOrderOptions -) { - const storeKey = `${storeKeyPrefix}.order_options` - const [memoryOrderOptions, setMemoryOrderOptions] = useState(options) - const [localOrderOptions, setLocalOrderOptions] = useLocalStorageState( - storeKey, - options, - true - ) - const orderOptions = useMemo( - () => (needSave ? localOrderOptions : memoryOrderOptions), - [needSave, memoryOrderOptions, localOrderOptions] - ) - - function changeOrder(orderBy: string, desc: boolean) { - if (needSave) { - setLocalOrderOptions({ - orderBy, - desc, - }) - } else { - setMemoryOrderOptions({ - orderBy, - desc, - }) - } - } - - return { - orderOptions, - changeOrder, - } -} diff --git a/ui-ori/lib/utils/useQueryParams.ts b/ui-ori/lib/utils/useQueryParams.ts deleted file mode 100644 index 4718326ee7..0000000000 --- a/ui-ori/lib/utils/useQueryParams.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useMemo } from 'react' -import { useLocation } from 'react-router' - -export default function useQueryParams() { - // Note: seems that history.location can be outdated sometimes. - - const { search } = useLocation() - - const params = useMemo(() => { - const searchParams = new URLSearchParams(search) - let _params: { [k: string]: any } = {} - for (const [k, v] of searchParams) { - _params[k] = v - } - return _params - }, [search]) - - return params -} diff --git a/ui-ori/lib/utils/wdyr.ts b/ui-ori/lib/utils/wdyr.ts deleted file mode 100644 index 50003057ed..0000000000 --- a/ui-ori/lib/utils/wdyr.ts +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react' - -if (process.env.NODE_ENV === 'development') { - console.log('Development mode, enable render trackers') - const whyDidYouRender = require('@welldone-software/why-did-you-render') - whyDidYouRender(React) -} diff --git a/ui-ori/package.json b/ui-ori/package.json deleted file mode 100644 index 806068af55..0000000000 --- a/ui-ori/package.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "name": "tidb-dashboard-ui", - "version": "0.1.0", - "private": true, - "engines": { - "node": ">=12.0.0" - }, - "dependencies": { - "@ant-design/icons": "^4.2.1", - "@baurine/grafana-value-formats": "^1.0.0", - "@fortawesome/fontawesome-free": "^5.14.0", - "@g07cha/flexbox-react": "^5.0.0", - "@sentry/react": "^6.3.2", - "@sentry/tracing": "^6.3.2", - "@welldone-software/why-did-you-render": "^4.2.7", - "ace-builds": "^1.4.12", - "ahooks": "^2.9.2", - "antd": "~4.8.5", - "axios": "^0.21.1", - "bulma": "^0.9.0", - "classnames": "^2.2.6", - "d3": "^5.16.0", - "dayjs": "^1.9.6", - "echarts": "^4.8.0", - "echarts-for-react": "^2.0.16", - "esbuild": "^0.13.13", - "eventemitter2": "^6.4.4", - "history": "^5.0.0", - "i18next": "^19.6.3", - "i18next-browser-languagedetector": "^5.0.0", - "lodash": "^4.17.21", - "moize": "^5.4.7", - "nprogress": "^0.2.0", - "office-ui-fabric-react": "^7.123.10", - "pullstate": "^1.22.1", - "rc-animate": "^3.1.0", - "react": "^16.13.1", - "react-ace": "^9.1.1", - "react-copy-to-clipboard": "^5.0.2", - "react-dom": "^16.13.1", - "react-highlight-words": "^0.16.0", - "react-i18next": "^11.7.0", - "react-router": "^6.0.0-alpha.3", - "react-router-dom": "^6.0.0-alpha.3", - "react-split": "^2.0.9", - "react-spring": "^8.0.27", - "react-syntax-highlighter": "^13.0.0", - "react-use": "^15.3.3", - "single-spa": "^5.9.2", - "single-spa-react": "^3.0.1", - "sql-formatter-plus-plus": "^1.4.0", - "string-template": "^1.0.0" - }, - "scripts": { - "start": "gulp dev", - "build": "gulp build", - "test": "react-app-rewired test", - "fmt": "prettier --write .", - "gen:browserlist": "gulp gen:browserlist", - "storybook": "start-storybook -p 9009 -s public" - }, - "husky": { - "hooks": { - "pre-commit": "pretty-quick --staged" - } - }, - "homepage": "/dashboard", - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@babel/plugin-proposal-decorators": "^7.10.5", - "@openapitools/openapi-generator-cli": "^1.0.15-4.3.1", - "@storybook/addon-actions": "^6.0.0-rc.3", - "@storybook/addon-links": "^6.0.0-rc.3", - "@storybook/addons": "^6.0.0-rc.3", - "@storybook/preset-create-react-app": "^3.1.4", - "@storybook/react": "^6.0.0-rc.3", - "@types/d3": "^5.7.2", - "@types/live-server": "^1.2.1", - "@types/lodash": "^4.14.158", - "@types/node": "^14.0.27", - "@types/react": "^16.9.43", - "@types/react-copy-to-clipboard": "^5.0.1", - "@types/react-dom": "^16.9.8", - "@types/webpack-env": "^1.15.2", - "babel-plugin-dynamic-import-node": "^2.3.0", - "babel-plugin-import": "^1.13.0", - "browserslist-useragent-regexp": "^2.1.0", - "chokidar": "^3.5.2", - "customize-cra": "^1.0.0", - "esm": "^3.2.25", - "gulp": "^4.0.2", - "gulp-cli": "^2.3.0", - "gulp-shell": "^0.8.0", - "http-proxy-middleware": "^1.0.5", - "husky": "^4.2.5", - "less": "^3.12.2", - "less-loader": "^5.0.0", - "live-server": "^1.2.1", - "prettier": "2.4.1", - "pretty-quick": "^2.0.1", - "react-app-rewire-alias": "^0.1.6", - "react-app-rewire-html-webpack-plugin": "^1.0.3", - "react-app-rewire-multiple-entry": "^2.1.0", - "react-app-rewire-yaml": "^1.1.0", - "react-app-rewired": "^2.1.5", - "react-markdown": "^4.3.1", - "react-scripts": "3.4.1", - "typescript": "^3.9.7", - "webpack-bundle-analyzer": "^3.7.0", - "webpackbar": "^4.0.0" - } -} diff --git a/ui-ori/public/compat.js b/ui-ori/public/compat.js deleted file mode 100644 index cff5812340..0000000000 --- a/ui-ori/public/compat.js +++ /dev/null @@ -1,64 +0,0 @@ -// Consider this js file must run normally in the old browsers likes IE 6, -// so we can't use the new grammars and APIs (likes let/const, string interpolator, querySelector, etc) in this file. -// We need to handle the compatibility carefully. - -// This line code is auto generated by `yarn gen:browserlist` command. -// Don't edit it. -var __SUPPORTED_BROWSERS__ = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(9[_\.]3|9[_\.]([4-9]|\d{2,})|([1-9]\d|\d{3,})[_\.]\d+|11[_\.]3|11[_\.]([4-9]|\d{2,})|(1[2-9]|[2-9]\d|\d{3,})[_\.]\d+|12[_\.]0|12[_\.]([1-9]|\d{2,})|12[_\.]4|12[_\.]([5-9]|\d{2,})|(1[3-9]|[2-9]\d|\d{3,})[_\.]\d+|13[_\.]0|13[_\.]([1-9]|\d{2,})|13[_\.]3|13[_\.]([4-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})[_\.]\d+)(?:[_\.]\d+)?)|(CFNetwork\/8.* Darwin\/16\.5\.\d+)|(CFNetwork\/8.* Darwin\/16\.6\.\d+)|(CFNetwork\/8.* Darwin\/16\.7\.\d+)|(SamsungBrowser\/(10\.1|10\.([2-9]|\d{2,})|(1[1-9]|[2-9]\d|\d{3,})\.\d+))|(Edge\/(18(?:\.0)?|18(?:\.([1-9]|\d{2,}))?|(19|[2-9]\d|\d{3,})(?:\.\d+)?))|((Chromium|Chrome)\/(49\.0|49\.([1-9]|\d{2,})|([5-9]\d|\d{3,})\.\d+|79\.0|79\.([1-9]|\d{2,})|([8-9]\d|\d{3,})\.\d+)(?:\.\d+)?([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$)))|(Version\/(12\.1|12\.([2-9]|\d{2,})|(1[3-9]|[2-9]\d|\d{3,})\.\d+|13\.0|13\.([1-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)? Safari\/)|(Trident\/7\.0)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|74\.0|74\.([1-9]|\d{2,})|(7[5-9]|[8-9]\d|\d{3,})\.\d+)\.\d+)|(Firefox\/(68\.0|68\.([1-9]|\d{2,})|(69|[7-9]\d|\d{3,})\.\d+|74\.0|74\.([1-9]|\d{2,})|(7[5-9]|[8-9]\d|\d{3,})\.\d+)(pre|[ab]\d+[a-z]*)?)|(([MS]?IE) (11\.0|11\.([1-9]|\d{2,})|(1[2-9]|[2-9]\d|\d{3,})\.\d+))/ - -function browserLang() { - // https://zzz.buzz/2016/01/13/detect-browser-language-in-javascript/ - // https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a3d78aaf-9f70-4826-954d-19183173c1c3/how-to-change-navigatoruserlanguage-in-ie11 - return ( - (navigator.languages && navigator.languages[0]) || - navigator.language || - navigator.browserLanguage || - navigator.userLanguage || - 'en' - ) -} - -function checkBrowser() { - if (!__SUPPORTED_BROWSERS__.test(navigator.userAgent)) { - var text - if (browserLang().indexOf('zh') === 0) { - text = - '一些功能在此浏览器上可能无法工作,请使用最新版本的 Chrome/Edge/Firefox/Safari 浏览器。' - } else { - text = - 'Some features may not work in your browser. Please use latest Chrome/Edge/Firefox/Safari browsers.' - } - - const content = - '
    ' + - '' + - text + - 'X
    ' - - var d = document.createElement('div') - d.innerHTML = content - d.getElementsByTagName('a')[0].onclick = function () { - d.getElementsByTagName('div')[0].style.top = '-60px' - } - document.body.insertBefore(d, document.body.firstChild) - } -} - -checkBrowser() - -// Dealing with compatibility issues manually for special cases - -// Object.entries -// see https://github.com/pingcap/tidb-dashboard/issues/770 -// polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries -if (!Object.entries) { - Object.entries = function( obj ){ - var ownProps = Object.keys( obj ), - i = ownProps.length, - resArray = new Array(i); // preallocate the Array - while (i--) - resArray[i] = [ownProps[i], obj[ownProps[i]]]; - - return resArray; - }; -} diff --git a/ui-ori/public/diagnoseReport.html b/ui-ori/public/diagnoseReport.html deleted file mode 100644 index 07ef29efed..0000000000 --- a/ui-ori/public/diagnoseReport.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - <%= htmlWebpackPlugin.options.distro_tidb %> Dashboard Diagnosis Report - - - - - - -
    - - diff --git a/ui-ori/public/favicon.ico b/ui-ori/public/favicon.ico deleted file mode 100755 index 9d5d2b14e13a2802cf3d0da548c89c751a4aa180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15406 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 - - - - - - - - - <%= htmlWebpackPlugin.options.distro_tidb %> Dashboard - - - - -
    -
    - - diff --git a/ui-ori/public/robots.txt b/ui-ori/public/robots.txt deleted file mode 100644 index 01b0f9a107..0000000000 --- a/ui-ori/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * diff --git a/ui-ori/src/index.ts b/ui-ori/src/index.ts deleted file mode 100644 index 431457d34d..0000000000 --- a/ui-ori/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import './publicPath' -import './sentry' - -import '@dashboard' diff --git a/ui-ori/src/publicPath.ts b/ui-ori/src/publicPath.ts deleted file mode 100644 index a5bc5bd8fb..0000000000 --- a/ui-ori/src/publicPath.ts +++ /dev/null @@ -1,2 +0,0 @@ -import publicPathPrefix from '@lib/utils/publicPathPrefix' -__webpack_public_path__ = publicPathPrefix + '/' diff --git a/ui-ori/src/react-app-env.d.ts b/ui-ori/src/react-app-env.d.ts deleted file mode 100644 index fd6e7f08fc..0000000000 --- a/ui-ori/src/react-app-env.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/// - -declare module '*.module.css' { - const classes: { readonly [key: string]: string } - export default classes -} - -declare module '*.module.less' { - const classes: { readonly [key: string]: string } - export default classes -} diff --git a/ui-ori/src/sentry.ts b/ui-ori/src/sentry.ts deleted file mode 100644 index 5f8e300e03..0000000000 --- a/ui-ori/src/sentry.ts +++ /dev/null @@ -1,24 +0,0 @@ -import * as Sentry from '@sentry/react' -import { Integrations } from '@sentry/tracing' - -import { sentryEnabled } from '@lib/utils/sentryHelpers' - -if (sentryEnabled) { - const release = process.env.REACT_APP_RELEASE_VERSION - - // this is on purpose - console.log('current release: ', release) - - const SAMPLE_RATE_PROD = 0.6 - - // sentry also provides a beforeSend hook, but it intentionally ignores transactions. - // see https://github.com/getsentry/sentry-javascript/blob/de87032dbe0dc4720400e92f673c5292d452f51c/packages/core/src/baseclient.ts#L510-L512 - Sentry.init({ - dsn: process.env.REACT_APP_SENTRY_DSN, - integrations: [new Integrations.BrowserTracing()], - tracesSampleRate: - process.env.NODE_ENV === 'production' ? SAMPLE_RATE_PROD : 1.0, - release, - environment: process.env.NODE_ENV, - }) -} diff --git a/ui-ori/src/setupProxy.js b/ui-ori/src/setupProxy.js deleted file mode 100644 index aa14ca8cba..0000000000 --- a/ui-ori/src/setupProxy.js +++ /dev/null @@ -1,30 +0,0 @@ -const { paths } = require('react-app-rewired') -const { createProxyMiddleware } = require('http-proxy-middleware') - -const dashboardApiPrefix = - process.env.REACT_APP_DASHBOARD_API_URL || 'http://127.0.0.1:12333' - -// The diagnose report will be served via WebpackDevServer. - -// In debug mode, frontend host is localhost:3001, while the backend is 127.0.0.1:12333 -// In productio mode, frontend and backend host is the same -module.exports = function (app) { - // Proxy the `data.js` trick to the backend server. - // Proxy http://localhost:3001/dashboard/api/diagnose/reports/*/data.js to - // http://127.0.0.1:12333/dashboard/api/diagnose/reports/*/data.js - app.use( - '/', - createProxyMiddleware('/dashboard/api/diagnose/reports/*/data.js', { - target: dashboardApiPrefix, - changeOrigin: true, - }) - ) - - // Rewrite the webpage to our static HTML. - // Rewrite http://localhost:3001/dashboard/api/diagnose/reports/*/detail - // to http://localhost:3001/dashboard/diagnoseReport.html - app.use('/dashboard/api/diagnose/reports/:id/detail', function (req, res) { - req.url = paths.publicUrlOrPath + 'diagnoseReport.html' - app.handle(req, res) - }) -} diff --git a/ui-ori/tests/config-portal-test.html b/ui-ori/tests/config-portal-test.html deleted file mode 100755 index 5a9568925f..0000000000 --- a/ui-ori/tests/config-portal-test.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - TiDB Dashboard iframe Test - - - -
    -

    iframe test

    - -
    - -
    -
    - - diff --git a/ui-ori/tests/e2e/_config.ts b/ui-ori/tests/e2e/_config.ts deleted file mode 100644 index 384c05c1aa..0000000000 --- a/ui-ori/tests/e2e/_config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const SERVER_URL = - (process.env.SERVER_URL || 'http://localhost:3001/dashboard') + '#' -export const LOGIN_URL = SERVER_URL + '/signin' -export const OVERVIEW_URL = SERVER_URL + '/overview' diff --git a/ui-ori/tests/e2e/_preset.js b/ui-ori/tests/e2e/_preset.js deleted file mode 100644 index b65d085471..0000000000 --- a/ui-ori/tests/e2e/_preset.js +++ /dev/null @@ -1,4 +0,0 @@ -const ts_preset = require('ts-jest/jest-preset') -const puppeteer_preset = require('jest-puppeteer/jest-preset') - -module.exports = Object.assign(ts_preset, puppeteer_preset) diff --git a/ui-ori/tests/e2e/_setup.js b/ui-ori/tests/e2e/_setup.js deleted file mode 100644 index 719a473b6e..0000000000 --- a/ui-ori/tests/e2e/_setup.js +++ /dev/null @@ -1 +0,0 @@ -jest.setTimeout(10000) diff --git a/ui-ori/tests/e2e/search_log.test.ts b/ui-ori/tests/e2e/search_log.test.ts deleted file mode 100644 index e8ab6635c8..0000000000 --- a/ui-ori/tests/e2e/search_log.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import 'expect-puppeteer' -import { do_sign_in } from './utils/sign_in' - -describe('Search Logs', () => { - it( - 'should search correct logs', - async () => { - await do_sign_in() - - await Promise.all([page.waitForNavigation(), page.click('a#search_logs')]) - - // Fill keyword - await expect(page).toFill('[data-e2e="log_search_keywords"]', 'Welcome') - - // Deselect PD instance - await page.click('[data-e2e="log_search_instances"]') - await expect(page).toClick( - '[data-e2e="log_search_instances_drop"] .ms-GroupHeader-title', - { - text: 'PD', - } - ) - await page.click('[data-e2e="log_search_instances"]') - - // Start search - await page.click('[data-e2e="log_search_submit"]') - - await page.waitForSelector('[data-e2e="log_search_result"]') - await page.waitForFunction( - `document - .querySelector('[data-e2e="log_search_result"]') - .innerText - .includes("Welcome to TiDB")`, - { timeout: 5000 } - ) - }, - 30 * 1000 - ) -}) diff --git a/ui-ori/tests/e2e/sign_in.test.ts b/ui-ori/tests/e2e/sign_in.test.ts deleted file mode 100644 index 5e20fae316..0000000000 --- a/ui-ori/tests/e2e/sign_in.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import 'expect-puppeteer' -import { do_sign_in } from './utils/sign_in' -import { LOGIN_URL, OVERVIEW_URL } from './_config' - -describe('Sign In', () => { - it('should fail to sign in using incorrect password', async () => { - await page.goto(LOGIN_URL) - - await expect(page).toFill( - '[data-e2e="signin_password_input"]', - 'incorrect_password' - ) - await expect(page).toClick('[data-e2e="signin_submit"]') - await page.waitForFunction( - `document - .querySelector('[data-e2e="signin_password_form_item"]') - .innerText - .includes("TiDB authentication failed")`, - { timeout: 5000 } - ) - }) - - it('should sign in using correct password', async () => { - await do_sign_in() - const url = await page.url() - expect(url).toBe(OVERVIEW_URL) - }) -}) diff --git a/ui-ori/tests/e2e/utils/sign_in.ts b/ui-ori/tests/e2e/utils/sign_in.ts deleted file mode 100644 index e358fc6e84..0000000000 --- a/ui-ori/tests/e2e/utils/sign_in.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LOGIN_URL } from '../_config' - -export async function do_sign_in() { - await page.goto(LOGIN_URL) - await page.waitForSelector('[data-e2e="signin_submit"]') - - await Promise.all([ - page.waitForNavigation(), - page.click('[data-e2e="signin_submit"]'), - ]) -} diff --git a/ui-ori/tests/jest-puppeteer.config.js b/ui-ori/tests/jest-puppeteer.config.js deleted file mode 100644 index c52e6f49c5..0000000000 --- a/ui-ori/tests/jest-puppeteer.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - launch: { - headless: process.env.HEADLESS !== 'false', - }, -} diff --git a/ui-ori/tests/jest.config.js b/ui-ori/tests/jest.config.js deleted file mode 100644 index 1fb0901893..0000000000 --- a/ui-ori/tests/jest.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - preset: './e2e/_preset.js', - setupFilesAfterEnv: ['expect-puppeteer', './e2e/_setup.js'], -} diff --git a/ui-ori/tests/package.json b/ui-ori/tests/package.json deleted file mode 100644 index f37afc0cef..0000000000 --- a/ui-ori/tests/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "tests", - "version": "1.0.0", - "license": "MIT", - "scripts": { - "test": "jest --runInBand" - }, - "devDependencies": { - "@types/expect-puppeteer": "^4.4.0", - "@types/jest": "^25.1.4", - "@types/jest-environment-puppeteer": "^4.4.0", - "@types/puppeteer": "^2.0.1", - "expect-puppeteer": "^4.4.0", - "jest": "^25.1.0", - "jest-puppeteer": "^4.4.0", - "puppeteer": "^2.1.1", - "ts-jest": "^25.2.1", - "typescript": "^3.7.4" - } -} diff --git a/ui-ori/tests/tsconfig.json b/ui-ori/tests/tsconfig.json deleted file mode 100644 index 09ccb2c636..0000000000 --- a/ui-ori/tests/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["e2e"], - "exclude": ["node_modules"] -} diff --git a/ui-ori/tests/yarn.lock b/ui-ori/tests/yarn.lock deleted file mode 100644 index f02b7e1528..0000000000 --- a/ui-ori/tests/yarn.lock +++ /dev/null @@ -1,4101 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" - integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== - dependencies: - "@babel/types" "^7.9.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@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" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@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" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@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" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" - integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== - -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== - -"@babel/plugin-syntax-bigint@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/template@^7.7.4", "@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" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" - 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.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" - integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.3": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.1.0.tgz#1fc765d44a1e11aec5029c08e798246bd37075ab" - integrity sha512-3P1DpqAMK/L07ag/Y9/Jup5iDEG9P4pRAuZiMQnU0JB3UOvCyYCjCoxr7sIA80SeyUCUKrr24fKAxVpmBgQonA== - dependencies: - "@jest/source-map" "^25.1.0" - chalk "^3.0.0" - jest-util "^25.1.0" - slash "^3.0.0" - -"@jest/core@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.1.0.tgz#3d4634fc3348bb2d7532915d67781cdac0869e47" - integrity sha512-iz05+NmwCmZRzMXvMo6KFipW7nzhbpEawrKrkkdJzgytavPse0biEnCNr2wRlyCsp3SmKaEY+SGv7YWYQnIdig== - dependencies: - "@jest/console" "^25.1.0" - "@jest/reporters" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.3" - jest-changed-files "^25.1.0" - jest-config "^25.1.0" - jest-haste-map "^25.1.0" - jest-message-util "^25.1.0" - jest-regex-util "^25.1.0" - jest-resolve "^25.1.0" - jest-resolve-dependencies "^25.1.0" - jest-runner "^25.1.0" - jest-runtime "^25.1.0" - jest-snapshot "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" - jest-watcher "^25.1.0" - micromatch "^4.0.2" - p-each-series "^2.1.0" - realpath-native "^1.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.1.0.tgz#4a97f64770c9d075f5d2b662b5169207f0a3f787" - integrity sha512-cTpUtsjU4cum53VqBDlcW0E4KbQF03Cn0jckGPW/5rrE9tb+porD3+hhLtHAwhthsqfyF+bizyodTlsRA++sHg== - dependencies: - "@jest/fake-timers" "^25.1.0" - "@jest/types" "^25.1.0" - jest-mock "^25.1.0" - -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.1.0.tgz#a1e0eff51ffdbb13ee81f35b52e0c1c11a350ce8" - integrity sha512-Eu3dysBzSAO1lD7cylZd/CVKdZZ1/43SF35iYBNV1Lvvn2Undp3Grwsv8PrzvbLhqwRzDd4zxrY4gsiHc+wygQ== - dependencies: - "@jest/types" "^25.1.0" - jest-message-util "^25.1.0" - jest-mock "^25.1.0" - jest-util "^25.1.0" - lolex "^5.0.0" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/reporters@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.1.0.tgz#9178ecf136c48f125674ac328f82ddea46e482b0" - integrity sha512-ORLT7hq2acJQa8N+NKfs68ZtHFnJPxsGqmofxW7v7urVhzJvpKZG9M7FAcgh9Ee1ZbCteMrirHA3m5JfBtAaDg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.1.0" - "@jest/environment" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.0" - jest-haste-map "^25.1.0" - jest-resolve "^25.1.0" - jest-runtime "^25.1.0" - jest-util "^25.1.0" - jest-worker "^25.1.0" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^3.1.0" - terminal-link "^2.0.0" - v8-to-istanbul "^4.0.1" - optionalDependencies: - node-notifier "^6.0.0" - -"@jest/source-map@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.1.0.tgz#b012e6c469ccdbc379413f5c1b1ffb7ba7034fb0" - integrity sha512-ohf2iKT0xnLWcIUhL6U6QN+CwFWf9XnrM2a6ybL9NXxJjgYijjLSitkYHIdzkd8wFliH73qj/+epIpTiWjRtAA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.3" - source-map "^0.6.0" - -"@jest/test-result@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.1.0.tgz#847af2972c1df9822a8200457e64be4ff62821f7" - integrity sha512-FZzSo36h++U93vNWZ0KgvlNuZ9pnDnztvaM7P/UcTx87aPDotG18bXifkf1Ji44B7k/eIatmMzkBapnAzjkJkg== - dependencies: - "@jest/console" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.1.0.tgz#4df47208542f0065f356fcdb80026e3c042851ab" - integrity sha512-WgZLRgVr2b4l/7ED1J1RJQBOharxS11EFhmwDqknpknE0Pm87HLZVS2Asuuw+HQdfQvm2aXL2FvvBLxOD1D0iw== - dependencies: - "@jest/test-result" "^25.1.0" - jest-haste-map "^25.1.0" - jest-runner "^25.1.0" - jest-runtime "^25.1.0" - -"@jest/transform@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.1.0.tgz#221f354f512b4628d88ce776d5b9e601028ea9da" - integrity sha512-4ktrQ2TPREVeM+KxB4zskAT84SnmG1vaz4S+51aTefyqn3zocZUnliLLm5Fsl85I3p/kFPN4CRp1RElIfXGegQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^25.1.0" - babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.1.0" - jest-regex-util "^25.1.0" - jest-util "^25.1.0" - micromatch "^4.0.2" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@>=24 && <=26", "@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395" - integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@sinonjs/commons@^1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" - integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@types/babel__core@^7.1.0": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" - integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" - integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== - dependencies: - "@babel/types" "^7.3.0" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/expect-puppeteer@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@types/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz#8e1ee1e7ed7e12f36efcfe81c17d4d6b817cb3d2" - integrity sha512-j2zKlMms/qrdr5clPWWnhTqFGc2HFWv465gowMmCfBkorrFhDXpYgTduJRFSAwYcmNOopK5pgNXKb7dwon8pqQ== - dependencies: - "@types/jest" "*" - "@types/puppeteer" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest-environment-puppeteer@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@types/jest-environment-puppeteer/-/jest-environment-puppeteer-4.4.0.tgz#8d343035934610accdbfd4582e765823b948aa94" - integrity sha512-BjJWUmaui6CZE449y/xGVPPvOcNwlHZXxWekv38kZqu1Pda+Jn90pKaxWtxM5NAC2HaUEabsCWlTeHiJvno/hg== - dependencies: - "@jest/types" ">=24 && <=26" - "@types/puppeteer" "*" - jest-environment-node ">=24 && <=26" - -"@types/jest@*", "@types/jest@^25.1.4": - version "25.1.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760" - integrity sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw== - dependencies: - jest-diff "^25.1.0" - pretty-format "^25.1.0" - -"@types/mime-types@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" - integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= - -"@types/node@*": - version "13.9.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d" - integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA== - -"@types/puppeteer@*", "@types/puppeteer@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-2.0.1.tgz#83a1d7f0a1c2e0edbbb488b4d8fb54b14ec9d455" - integrity sha512-G8vEyU83Bios+dzs+DZGpAirDmMqRhfFBJCkFrg+A5+6n5EPPHxwBLImJto3qjh0mrBXbLBCyuahhhtTrAfR5g== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== - dependencies: - "@types/yargs-parser" "*" - -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn@^6.0.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== - -ajv@^6.5.5: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== - -babel-jest@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.1.0.tgz#206093ac380a4b78c4404a05b3277391278f80fb" - integrity sha512-tz0VxUhhOE2y+g8R2oFrO/2VtVjA1lkJeavlhExuRBg3LdNJY9gwQ+Vcvqt9+cqy71MCTJhewvTB7Qtnnr9SWg== - dependencies: - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.1.0" - chalk "^3.0.0" - slash "^3.0.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.1.0.tgz#fb62d7b3b53eb36c97d1bc7fec2072f9bd115981" - integrity sha512-oIsopO41vW4YFZ9yNYoLQATnnN46lp+MZ6H4VvPKFkcc2/fkl3CfE/NZZSmnEIEsJRmJAgkVEK0R7Zbl50CpTw== - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-preset-jest@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.1.0.tgz#d0aebfebb2177a21cde710996fce8486d34f1d33" - integrity sha512-eCGn64olaqwUMaugXsTtGAM2I0QTahjEtnRu0ql8Ie+gDWAc1N6wqN0k2NilnyTunM69Pad7gJY7LOtwLimoFQ== - dependencies: - "@babel/plugin-syntax-bigint" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^25.1.0" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@1.x, buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" - integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - 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== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^2.6.5: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssom@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" - integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== - dependencies: - cssom "~0.3.6" - -cwd@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" - integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= - dependencies: - find-pkg "^0.1.2" - fs-exists-sync "^0.1.0" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32" - integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw== - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@^1.11.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" - integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= - dependencies: - os-homedir "^1.0.1" - -expect-puppeteer@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz#1c948af08acdd6c8cbdb7f90e617f44d86888886" - integrity sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA== - -expect@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.1.0.tgz#7e8d7b06a53f7d66ec927278db3304254ee683ee" - integrity sha512-wqHzuoapQkhc3OKPlrpetsfueuEiMf3iWh0R8+duCu9PIjXoP7HgD5aeypwTnXUAjC8aMsiVDaWwlbJ1RlQ38g== - dependencies: - "@jest/types" "^25.1.0" - ansi-styles "^4.0.0" - jest-get-type "^25.1.0" - jest-matcher-utils "^25.1.0" - jest-message-util "^25.1.0" - jest-regex-util "^25.1.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-zip@^1.6.6: - version "1.6.7" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" - integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= - dependencies: - concat-stream "1.6.2" - debug "2.6.9" - mkdirp "0.5.1" - yauzl "2.4.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= - dependencies: - pend "~1.2.0" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-file-up@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" - integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= - dependencies: - fs-exists-sync "^0.1.0" - resolve-dir "^0.1.0" - -find-pkg@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" - integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= - dependencies: - find-file-up "^0.1.2" - -find-process@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.4.tgz#52820561162fda0d1feef9aed5d56b3787f0fd6e" - integrity sha512-rRSuT1LE4b+BFK588D2V8/VG9liW0Ark1XJgroxZXI0LtwmQJOb490DvDYvbm+Hek9ETFzTutGfJ90gumITPhQ== - dependencies: - chalk "^4.0.0" - commander "^5.1.0" - debug "^4.1.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" - integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" - -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" - integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= - dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -homedir-polyfill@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" - integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" - integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== - dependencies: - agent-base "5" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-buffer@^1.0.2, is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" - integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" - integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== - dependencies: - "@babel/core" "^7.7.5" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.0.tgz#d4d16d035db99581b6194e119bbf36c963c5eb70" - integrity sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.1.0.tgz#73dae9a7d9949fdfa5c278438ce8f2ff3ec78131" - integrity sha512-bdL1aHjIVy3HaBO3eEQeemGttsq1BDlHgWcOjEOIAcga7OOEGWHD2WSu8HhL7I1F0mFFyci8VKU4tRNk+qtwDA== - dependencies: - "@jest/types" "^25.1.0" - execa "^3.2.0" - throat "^5.0.0" - -jest-cli@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.1.0.tgz#75f0b09cf6c4f39360906bf78d580be1048e4372" - integrity sha512-p+aOfczzzKdo3AsLJlhs8J5EW6ffVidfSZZxXedJ0mHPBOln1DccqFmGCoO8JWd4xRycfmwy1eoQkMsF8oekPg== - dependencies: - "@jest/core" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" - chalk "^3.0.0" - exit "^0.1.2" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^15.0.0" - -jest-config@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.1.0.tgz#d114e4778c045d3ef239452213b7ad3ec1cbea90" - integrity sha512-tLmsg4SZ5H7tuhBC5bOja0HEblM0coS3Wy5LTCb2C8ZV6eWLewHyK+3qSq9Bi29zmWQ7ojdCd3pxpx4l4d2uGw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.1.0" - "@jest/types" "^25.1.0" - babel-jest "^25.1.0" - chalk "^3.0.0" - glob "^7.1.1" - jest-environment-jsdom "^25.1.0" - jest-environment-node "^25.1.0" - jest-get-type "^25.1.0" - jest-jasmine2 "^25.1.0" - jest-regex-util "^25.1.0" - jest-resolve "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" - micromatch "^4.0.2" - pretty-format "^25.1.0" - realpath-native "^1.1.0" - -jest-dev-server@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/jest-dev-server/-/jest-dev-server-4.4.0.tgz#557113faae2877452162696aa94c1e44491ab011" - integrity sha512-STEHJ3iPSC8HbrQ3TME0ozGX2KT28lbT4XopPxUm2WimsX3fcB3YOptRh12YphQisMhfqNSNTZUmWyT3HEXS2A== - dependencies: - chalk "^3.0.0" - cwd "^0.10.0" - find-process "^1.4.3" - prompts "^2.3.0" - spawnd "^4.4.0" - tree-kill "^1.2.2" - wait-on "^3.3.0" - -jest-diff@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.1.0.tgz#58b827e63edea1bc80c1de952b80cec9ac50e1ad" - integrity sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.1.0" - jest-get-type "^25.1.0" - pretty-format "^25.1.0" - -jest-docblock@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.1.0.tgz#0f44bea3d6ca6dfc38373d465b347c8818eccb64" - integrity sha512-370P/mh1wzoef6hUKiaMcsPtIapY25suP6JqM70V9RJvdKLrV4GaGbfUseUVk4FZJw4oTZ1qSCJNdrClKt5JQA== - dependencies: - detect-newline "^3.0.0" - -jest-each@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.1.0.tgz#a6b260992bdf451c2d64a0ccbb3ac25e9b44c26a" - integrity sha512-R9EL8xWzoPySJ5wa0DXFTj7NrzKpRD40Jy+zQDp3Qr/2QmevJgkN9GqioCGtAJ2bW9P/MQRznQHQQhoeAyra7A== - dependencies: - "@jest/types" "^25.1.0" - chalk "^3.0.0" - jest-get-type "^25.1.0" - jest-util "^25.1.0" - pretty-format "^25.1.0" - -jest-environment-jsdom@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.1.0.tgz#6777ab8b3e90fd076801efd3bff8e98694ab43c3" - integrity sha512-ILb4wdrwPAOHX6W82GGDUiaXSSOE274ciuov0lztOIymTChKFtC02ddyicRRCdZlB5YSrv3vzr1Z5xjpEe1OHQ== - dependencies: - "@jest/environment" "^25.1.0" - "@jest/fake-timers" "^25.1.0" - "@jest/types" "^25.1.0" - jest-mock "^25.1.0" - jest-util "^25.1.0" - jsdom "^15.1.1" - -"jest-environment-node@>=24 && <=26": - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-environment-node@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.1.0.tgz#797bd89b378cf0bd794dc8e3dca6ef21126776db" - integrity sha512-U9kFWTtAPvhgYY5upnH9rq8qZkj6mYLup5l1caAjjx9uNnkLHN2xgZy5mo4SyLdmrh/EtB9UPpKFShvfQHD0Iw== - dependencies: - "@jest/environment" "^25.1.0" - "@jest/fake-timers" "^25.1.0" - "@jest/types" "^25.1.0" - jest-mock "^25.1.0" - jest-util "^25.1.0" - -jest-environment-puppeteer@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-puppeteer/-/jest-environment-puppeteer-4.4.0.tgz#d82a37e0e0c51b63cc6b15dea101d53967508860" - integrity sha512-iV8S8+6qkdTM6OBR/M9gKywEk8GDSOe05hspCs5D8qKSwtmlUfdtHfB4cakdc68lC6YfK3AUsLirpfgodCHjzQ== - dependencies: - chalk "^3.0.0" - cwd "^0.10.0" - jest-dev-server "^4.4.0" - merge-deep "^3.0.2" - -jest-get-type@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876" - integrity sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw== - -jest-haste-map@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.1.0.tgz#ae12163d284f19906260aa51fd405b5b2e5a4ad3" - integrity sha512-/2oYINIdnQZAqyWSn1GTku571aAfs8NxzSErGek65Iu5o8JYb+113bZysRMcC/pjE5v9w0Yz+ldbj9NxrFyPyw== - dependencies: - "@jest/types" "^25.1.0" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.1.0" - jest-util "^25.1.0" - jest-worker "^25.1.0" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.1.0.tgz#681b59158a430f08d5d0c1cce4f01353e4b48137" - integrity sha512-GdncRq7jJ7sNIQ+dnXvpKO2MyP6j3naNK41DTTjEAhLEdpImaDA9zSAZwDhijjSF/D7cf4O5fdyUApGBZleaEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.1.0" - "@jest/source-map" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" - chalk "^3.0.0" - co "^4.6.0" - expect "^25.1.0" - is-generator-fn "^2.0.0" - jest-each "^25.1.0" - jest-matcher-utils "^25.1.0" - jest-message-util "^25.1.0" - jest-runtime "^25.1.0" - jest-snapshot "^25.1.0" - jest-util "^25.1.0" - pretty-format "^25.1.0" - throat "^5.0.0" - -jest-leak-detector@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.1.0.tgz#ed6872d15aa1c72c0732d01bd073dacc7c38b5c6" - integrity sha512-3xRI264dnhGaMHRvkFyEKpDeaRzcEBhyNrOG5oT8xPxOyUAblIAQnpiR3QXu4wDor47MDTiHbiFcbypdLcLW5w== - dependencies: - jest-get-type "^25.1.0" - pretty-format "^25.1.0" - -jest-matcher-utils@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220" - integrity sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ== - dependencies: - chalk "^3.0.0" - jest-diff "^25.1.0" - jest-get-type "^25.1.0" - pretty-format "^25.1.0" - -jest-message-util@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.1.0.tgz#702a9a5cb05c144b9aa73f06e17faa219389845e" - integrity sha512-Nr/Iwar2COfN22aCqX0kCVbXgn8IBm9nWf4xwGr5Olv/KZh0CZ32RKgZWMVDXGdOahicM10/fgjdimGNX/ttCQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^1.0.1" - -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.1.0.tgz#411d549e1b326b7350b2e97303a64715c28615fd" - integrity sha512-28/u0sqS+42vIfcd1mlcg4ZVDmSUYuNvImP4X2lX5hRMLW+CN0BeiKVD4p+ujKKbSPKd3rg/zuhCF+QBLJ4vag== - dependencies: - "@jest/types" "^25.1.0" - -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== - -jest-puppeteer@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/jest-puppeteer/-/jest-puppeteer-4.4.0.tgz#4b906e638a5e3782ed865e7b673c82047b85952e" - integrity sha512-ZaiCTlPZ07B9HW0erAWNX6cyzBqbXMM7d2ugai4epBDKpKvRDpItlRQC6XjERoJELKZsPziFGS0OhhUvTvQAXA== - dependencies: - expect-puppeteer "^4.4.0" - jest-environment-puppeteer "^4.4.0" - -jest-regex-util@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.1.0.tgz#efaf75914267741838e01de24da07b2192d16d87" - integrity sha512-9lShaDmDpqwg+xAd73zHydKrBbbrIi08Kk9YryBEBybQFg/lBWR/2BDjjiSE7KIppM9C5+c03XiDaZ+m4Pgs1w== - -jest-resolve-dependencies@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.1.0.tgz#8a1789ec64eb6aaa77fd579a1066a783437e70d2" - integrity sha512-Cu/Je38GSsccNy4I2vL12ZnBlD170x2Oh1devzuM9TLH5rrnLW1x51lN8kpZLYTvzx9j+77Y5pqBaTqfdzVzrw== - dependencies: - "@jest/types" "^25.1.0" - jest-regex-util "^25.1.0" - jest-snapshot "^25.1.0" - -jest-resolve@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.1.0.tgz#23d8b6a4892362baf2662877c66aa241fa2eaea3" - integrity sha512-XkBQaU1SRCHj2Evz2Lu4Czs+uIgJXWypfO57L7JYccmAXv4slXA6hzNblmcRmf7P3cQ1mE7fL3ABV6jAwk4foQ== - dependencies: - "@jest/types" "^25.1.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-runner@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.1.0.tgz#fef433a4d42c89ab0a6b6b268e4a4fbe6b26e812" - integrity sha512-su3O5fy0ehwgt+e8Wy7A8CaxxAOCMzL4gUBftSs0Ip32S0epxyZPDov9Znvkl1nhVOJNf4UwAsnqfc3plfQH9w== - dependencies: - "@jest/console" "^25.1.0" - "@jest/environment" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.3" - jest-config "^25.1.0" - jest-docblock "^25.1.0" - jest-haste-map "^25.1.0" - jest-jasmine2 "^25.1.0" - jest-leak-detector "^25.1.0" - jest-message-util "^25.1.0" - jest-resolve "^25.1.0" - jest-runtime "^25.1.0" - jest-util "^25.1.0" - jest-worker "^25.1.0" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.1.0.tgz#02683218f2f95aad0f2ec1c9cdb28c1dc0ec0314" - integrity sha512-mpPYYEdbExKBIBB16ryF6FLZTc1Rbk9Nx0ryIpIMiDDkOeGa0jQOKVI/QeGvVGlunKKm62ywcioeFVzIbK03bA== - dependencies: - "@jest/console" "^25.1.0" - "@jest/environment" "^25.1.0" - "@jest/source-map" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.3" - jest-config "^25.1.0" - jest-haste-map "^25.1.0" - jest-message-util "^25.1.0" - jest-mock "^25.1.0" - jest-regex-util "^25.1.0" - jest-resolve "^25.1.0" - jest-snapshot "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" - realpath-native "^1.1.0" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.0.0" - -jest-serializer@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.1.0.tgz#73096ba90e07d19dec4a0c1dd89c355e2f129e5d" - integrity sha512-20Wkq5j7o84kssBwvyuJ7Xhn7hdPeTXndnwIblKDR2/sy1SUm6rWWiG9kSCgJPIfkDScJCIsTtOKdlzfIHOfKA== - -jest-snapshot@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.1.0.tgz#d5880bd4b31faea100454608e15f8d77b9d221d9" - integrity sha512-xZ73dFYN8b/+X2hKLXz4VpBZGIAn7muD/DAg+pXtDzDGw3iIV10jM7WiHqhCcpDZfGiKEj7/2HXAEPtHTj0P2A== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^25.1.0" - chalk "^3.0.0" - expect "^25.1.0" - jest-diff "^25.1.0" - jest-get-type "^25.1.0" - jest-matcher-utils "^25.1.0" - jest-message-util "^25.1.0" - jest-resolve "^25.1.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^25.1.0" - semver "^7.1.1" - -jest-util@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.1.0.tgz#7bc56f7b2abd534910e9fa252692f50624c897d9" - integrity sha512-7did6pLQ++87Qsj26Fs/TIwZMUFBXQ+4XXSodRNy3luch2DnRXsSnmpVtxxQ0Yd6WTipGpbhh2IFP1mq6/fQGw== - dependencies: - "@jest/types" "^25.1.0" - chalk "^3.0.0" - is-ci "^2.0.0" - mkdirp "^0.5.1" - -jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.1.0.tgz#1469fa19f627bb0a9a98e289f3e9ab6a668c732a" - integrity sha512-kGbZq1f02/zVO2+t1KQGSVoCTERc5XeObLwITqC6BTRH3Adv7NZdYqCpKIZLUgpLXf2yISzQ465qOZpul8abXA== - dependencies: - "@jest/types" "^25.1.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.1.0" - leven "^3.1.0" - pretty-format "^25.1.0" - -jest-watcher@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.1.0.tgz#97cb4a937f676f64c9fad2d07b824c56808e9806" - integrity sha512-Q9eZ7pyaIr6xfU24OeTg4z1fUqBF/4MP6J801lyQfg7CsnZ/TCzAPvCfckKdL5dlBBEKBeHV0AdyjFZ5eWj4ig== - dependencies: - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.1.0" - string-length "^3.1.0" - -jest-worker@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" - integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.1.0.tgz#b85ef1ddba2fdb00d295deebbd13567106d35be9" - integrity sha512-FV6jEruneBhokkt9MQk0WUFoNTwnF76CLXtwNMfsc0um0TlB/LG2yxUd0KqaFjEJ9laQmVWQWS0sG/t2GsuI0w== - dependencies: - "@jest/core" "^25.1.0" - import-local "^3.0.2" - jest-cli "^25.1.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^15.1.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@2.x, json5@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" - integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== - dependencies: - minimist "^1.2.5" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash@^4.17.13, lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== - dependencies: - "@sinonjs/commons" "^1.7.0" - -make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== - dependencies: - semver "^6.0.0" - -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -merge-deep@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" - integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - -mime-types@^2.1.12, mime-types@^2.1.25, mime-types@~2.1.19: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== - dependencies: - mime-db "1.43.0" - -mime@^2.0.3: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@0.x, mkdirp@^0.5.1: - version "0.5.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" - integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== - dependencies: - minimist "^1.2.5" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== - dependencies: - growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" - shellwords "^0.1.1" - which "^1.3.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-limit@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-format@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8" - integrity sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ== - dependencies: - "@jest/types" "^25.1.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -prompts@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -proxy-from-env@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -psl@^1.1.28: - version "1.7.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" - integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -puppeteer@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-2.1.1.tgz#ccde47c2a688f131883b50f2d697bd25189da27e" - integrity sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg== - dependencies: - "@types/mime-types" "^2.1.0" - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^4.0.0" - mime "^2.0.3" - mime-types "^2.1.25" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -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== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" - integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= - dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@1.x, resolve@^1.3.2: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== - dependencies: - path-parse "^1.0.6" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -rx@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= - -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - -semver@^5.4.1, semver@^5.5, semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.1.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" - integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -sisteransi@^1.0.4, sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spawnd@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-4.4.0.tgz#bb52c5b34a22e3225ae1d3acb873b2cd58af0886" - integrity sha512-jLPOfB6QOEgMOQY15Z6+lwZEhH3F5ncXxIaZ7WHPIapwNNLyjrs61okj3VJ3K6tmP5TZ6cO0VAu9rEY4MD4YQg== - dependencies: - exit "^0.1.2" - signal-exit "^3.0.2" - tree-kill "^1.2.2" - wait-port "^0.2.7" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - -stack-utils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -ts-jest@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.2.1.tgz#49bf05da26a8b7fbfbc36b4ae2fcdc2fef35c85d" - integrity sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A== - dependencies: - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - mkdirp "0.x" - resolve "1.x" - semver "^5.5" - yargs-parser "^16.1.0" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.7.4: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-to-istanbul@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.2.tgz#387d173be5383dbec209d21af033dcb892e3ac82" - integrity sha512-G9R+Hpw0ITAmPSr47lSlc5A1uekSYzXxTMlFxso2xoffwo4jQnzbv1p9yXIinO8UMZKfAFewaCHwWvnH4Jb4Ug== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -wait-on@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-3.3.0.tgz#9940981d047a72a9544a97b8b5fca45b2170a082" - integrity sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ== - dependencies: - "@hapi/joi" "^15.0.3" - core-js "^2.6.5" - minimist "^1.2.0" - request "^2.88.0" - rx "^4.1.0" - -wait-port@^0.2.7: - version "0.2.9" - resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-0.2.9.tgz#3905cf271b5dbe37a85c03b85b418b81cb24ee55" - integrity sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ== - dependencies: - chalk "^2.4.2" - commander "^3.0.2" - debug "^4.1.1" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.12, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^6.1.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7.0.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" - integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.1: - version "18.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" - integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^15.0.0: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= - dependencies: - fd-slicer "~1.0.1" diff --git a/ui-ori/tsconfig.json b/ui-ori/tsconfig.json deleted file mode 100644 index b77d76eb4b..0000000000 --- a/ui-ori/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "extends": "./tsconfig.paths.json", - "compilerOptions": { - "target": "es6", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "noImplicitAny": false, - "noImplicitThis": false, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "experimentalDecorators": true, - "jsx": "react" - }, - "include": [ - "src", - "lib", - "dashboardApp", - "diagnoseReportApp" - ] -} diff --git a/ui-ori/tsconfig.paths.json b/ui-ori/tsconfig.paths.json deleted file mode 100644 index b3f796dc77..0000000000 --- a/ui-ori/tsconfig.paths.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@lib/*": ["lib/*"], - "@dashboard/*": ["dashboardApp/*"], - "@diagnoseReport/*": ["diagnoseReportApp/*"] - } - } -} diff --git a/ui-ori/yarn.lock b/ui-ori/yarn.lock deleted file mode 100644 index 0e3adf3b7b..0000000000 --- a/ui-ori/yarn.lock +++ /dev/null @@ -1,18440 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ahooksjs/use-request@^2.8.1": - version "2.8.1" - resolved "https://registry.yarnpkg.com/@ahooksjs/use-request/-/use-request-2.8.1.tgz#bf06a63368df1859b6b79a946612eb0d2889ab6f" - integrity sha512-+C+5jyRUf45ao8yM333vaYxaNrZOgcboy56aqiBthV0tN18FwxHEhRw9Ddoku/6EU658z7erhPGLksAabIU2bQ== - dependencies: - lodash.debounce "^4.0.8" - lodash.throttle "^4.1.1" - -"@ant-design/colors@^3.1.0": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-3.2.2.tgz#5ad43d619e911f3488ebac303d606e66a8423903" - integrity sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ== - dependencies: - tinycolor2 "^1.4.1" - -"@ant-design/colors@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-5.0.0.tgz#46b73b4cc6935b35fc8b84555e8e42c8cfc190e6" - integrity sha512-Pe1rYorgVC1v4f+InDXvIlQH715pO1g7BsOhy/ehX/U6ebPKqojmkYJKU3lF+84Zmvyar7ngZ28hesAa1nWjLg== - dependencies: - "@ctrl/tinycolor" "^3.1.6" - -"@ant-design/css-animation@^1.7.2": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.3.tgz#60a1c970014e86b28f940510d69e503e428f1136" - integrity sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA== - -"@ant-design/icons-svg@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c" - integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ== - -"@ant-design/icons@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.2.1.tgz#6f3ea5d98ab782072e4e9cbb70f25e4403ae1a6b" - integrity sha512-245ZI40MOr5GGws+sNSiJIRRoEf/J2xvPSMgwRYf3bv8mVGQZ6XTQI/OMeV16KtiSZ3D+mBKXVYSBz2fhigOXQ== - dependencies: - "@ant-design/colors" "^3.1.0" - "@ant-design/icons-svg" "^4.0.0" - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - insert-css "^2.0.0" - rc-util "^5.0.1" - -"@ant-design/icons@^4.2.2", "@ant-design/icons@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.3.0.tgz#420e0cd527486c0fe57f81310d681950fc4cfacf" - integrity sha512-UoIbw4oz/L/msbkgqs2nls2KP7XNKScOxVR54wRrWwnXOzJaGNwwSdYjHQz+5ETf8C53YPpzMOnRX99LFCdeIQ== - dependencies: - "@ant-design/colors" "^5.0.0" - "@ant-design/icons-svg" "^4.0.0" - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - insert-css "^2.0.0" - rc-util "^5.0.1" - -"@ant-design/react-slick@~0.27.0": - version "0.27.14" - resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.27.14.tgz#a1082c4734e57c7ba9c41d035375f5bf577f3b5e" - integrity sha512-s6JVexqFmU5rs5Pm828ojtm5rCp8jDXyrc5OxEtCE2z58SIyQlkpnU9BJh98LEeBZyj02WFkGN8CWpSaD+G4PA== - dependencies: - "@babel/runtime" "^7.10.4" - classnames "^2.2.5" - json2mq "^0.2.0" - lodash "^4.17.15" - resize-observer-polyfill "^1.5.0" - -"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/compat-data@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" - integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/compat-data@^7.9.0", "@babel/compat-data@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" - integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== - dependencies: - browserslist "^4.11.1" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/core@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.4.5": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" - integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.6" - "@babel/parser" "^7.9.6" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.7.5", "@babel/core@^7.9.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" - integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" - integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== - dependencies: - "@babel/types" "^7.10.4" - 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.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" - integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== - dependencies: - "@babel/types" "^7.9.6" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== - dependencies: - "@babel/types" "^7.10.4" - -"@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" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-builder-react-jsx-experimental@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.4.tgz#d0ffb875184d749c63ffe1f4f65be15143ec322d" - integrity sha512-LyacH/kgQPgLAuaWrvvq1+E7f5bLyT8jXCh7nM67sRsy2cpIGfgWJ+FCnAKQXfY+F0tXUaN6FqLkp4JiCzdK8Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-builder-react-jsx-experimental@^7.9.0": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" - integrity sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-module-imports" "^7.8.3" - "@babel/types" "^7.9.5" - -"@babel/helper-builder-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" - integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-builder-react-jsx@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" - integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/types" "^7.9.0" - -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" - integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== - dependencies: - "@babel/compat-data" "^7.10.4" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-compilation-targets@^7.8.7", "@babel/helper-compilation-targets@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" - integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== - dependencies: - "@babel/compat-data" "^7.9.6" - browserslist "^4.11.1" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" - integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - -"@babel/helper-create-class-features-plugin@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" - integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.5" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - -"@babel/helper-create-class-features-plugin@^7.8.3", "@babel/helper-create-class-features-plugin@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897" - integrity sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow== - dependencies: - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.9.6" - "@babel/helper-split-export-declaration" "^7.8.3" - -"@babel/helper-create-regexp-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" - integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.0" - -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" - integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" - -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" - integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== - dependencies: - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== - dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@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" - integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.9.5" - -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" - -"@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" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-hoist-variables@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" - integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-member-expression-to-functions@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" - integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== - dependencies: - "@babel/types" "^7.10.5" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.0.0", "@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" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-transforms@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" - integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-plugin-utils@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" - integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" - integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== - dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" - integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== - dependencies: - "@babel/types" "^7.10.4" - -"@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" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@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" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helper-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" - integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - 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" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" - integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== - -"@babel/parser@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" - integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== - -"@babel/plugin-proposal-async-generator-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" - integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@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" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-decorators@7.8.3", "@babel/plugin-proposal-decorators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" - integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - -"@babel/plugin-proposal-decorators@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.5.tgz#42898bba478bc4b1ae242a703a953a7ad350ffb4" - integrity sha512-Sc5TAQSZuLzgY0664mMDn24Vw2P8g/VhyLyGPaWiHahhgLqeZvcGeyBZOrJW0oSKIK2mvQ22a1ENXBIQLhrEiQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.5" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-decorators" "^7.10.4" - -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-export-default-from@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz#08f66eef0067cbf6a7bc036977dcdccecaf0c6c5" - integrity sha512-G1l00VvDZ7Yk2yRlC5D8Ybvu3gmeHS3rCHoUYdjrqGYUtdeOBoRypnvDZ5KQqxyaiiGHWnVDeSEzA5F9ozItig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-export-default-from" "^7.10.4" - -"@babel/plugin-proposal-json-strings@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" - integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" - integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@7.8.3", "@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.9.0", "@babel/plugin-proposal-object-rest-spread@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" - integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.9.5" - -"@babel/plugin-proposal-optional-catch-binding@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@7.9.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.10.1", "@babel/plugin-proposal-optional-chaining@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" - integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-private-methods@^7.10.4", "@babel/plugin-proposal-private-methods@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" - integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.0": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-decorators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" - integrity sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-decorators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" - integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-default-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz#e5494f95006355c10292a0ff1ce42a5746002ec8" - integrity sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-flow@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" - integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-flow@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" - integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-json-strings@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" - integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-jsx@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" - integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" - integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-typescript@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" - integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-arrow-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - -"@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - -"@babel/plugin-transform-block-scoped-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-block-scoping@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" - integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - lodash "^4.17.13" - -"@babel/plugin-transform-block-scoping@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" - integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.9.0", "@babel/plugin-transform-classes@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" - integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-computed-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-destructuring@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-destructuring@^7.8.3", "@babel/plugin-transform-destructuring@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" - integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-dotall-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-duplicate-keys@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" - integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" - integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.10.4" - -"@babel/plugin-transform-for-of@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-for-of@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" - integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-member-expression-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-modules-amd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" - integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-amd@^7.9.0", "@babel/plugin-transform-modules-amd@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" - integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.9.0", "@babel/plugin-transform-modules-commonjs@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" - integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" - integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== - dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.9.0", "@babel/plugin-transform-modules-systemjs@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" - integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-modules-umd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" - integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - -"@babel/plugin-transform-new-target@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-new-target@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-object-super@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - -"@babel/plugin-transform-object-super@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" - integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-parameters@^7.8.7", "@babel/plugin-transform-parameters@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" - integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-property-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-property-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz#a75abc936a3819edec42d3386d9f1c93f28d9d9e" - integrity sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-constant-elements@^7.9.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz#0f485260bf1c29012bb973e7e404749eaac12c9e" - integrity sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" - integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-display-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" - integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-react-jsx-development@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" - integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== - dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" - -"@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" - integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== - dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx-self@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" - integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" - -"@babel/plugin-transform-react-jsx-self@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" - integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx-source@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.4.tgz#86baf0fcccfe58084e06446a80858e1deae8f291" - integrity sha512-FTK3eQFrPv2aveerUSazFmGygqIdTtvskG50SnGnbEUnRPcGx2ylBhdFIzoVS1ty44hEgcPoCAyw5r3VDEq+Ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" - -"@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" - integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" - integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== - dependencies: - "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" - -"@babel/plugin-transform-react-jsx@^7.9.1", "@babel/plugin-transform-react-jsx@^7.9.4": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" - integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== - dependencies: - "@babel/helper-builder-react-jsx" "^7.9.0" - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-pure-annotations@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" - integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-regenerator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-regenerator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" - integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-reserved-words@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" - integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" - integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" - integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-sticky-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - -"@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - -"@babel/plugin-transform-template-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" - integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-template-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typeof-symbol@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" - integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz#8b01cb8d77f795422277cc3fcf45af72bc68ba78" - integrity sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.10.4" - -"@babel/plugin-transform-typescript@^7.9.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.6.tgz#2248971416a506fc78278fc0c0ea3179224af1e9" - integrity sha512-8OvsRdvpt3Iesf2qsAn+YdlwAJD7zJ+vhFZmDCa4b8dTp7MmHtKk5FF2mCsGxjZwuwsy/yIIay/nLmxST1ctVQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.9.6" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-typescript" "^7.8.3" - -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-unicode-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/polyfill@^7.7.0": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.7.tgz#151ec24c7135481336168c3bd8b8bf0cf91c032f" - integrity sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w== - dependencies: - core-js "^2.6.5" - regenerator-runtime "^0.13.4" - -"@babel/preset-env@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-env@^7.4.5": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" - integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== - dependencies: - "@babel/compat-data" "^7.9.6" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.5" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.9.5" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.6" - "@babel/plugin-transform-modules-commonjs" "^7.9.6" - "@babel/plugin-transform-modules-systemjs" "^7.9.6" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.9.5" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.6" - browserslist "^4.11.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-env@^7.9.5", "@babel/preset-env@^7.9.6": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" - integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== - dependencies: - "@babel/compat-data" "^7.10.4" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.10.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.10.4" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.10.4" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.4" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-flow@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" - integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-flow-strip-types" "^7.10.4" - -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@7.9.1": - version "7.9.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" - integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.1" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" - -"@babel/preset-react@^7.0.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" - integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.4" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" - -"@babel/preset-react@^7.8.3", "@babel/preset-react@^7.9.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" - integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.10.4" - "@babel/plugin-transform-react-jsx" "^7.10.4" - "@babel/plugin-transform-react-jsx-development" "^7.10.4" - "@babel/plugin-transform-react-jsx-self" "^7.10.4" - "@babel/plugin-transform-react-jsx-source" "^7.10.4" - "@babel/plugin-transform-react-pure-annotations" "^7.10.4" - -"@babel/preset-typescript@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" - integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-typescript" "^7.9.0" - -"@babel/preset-typescript@^7.9.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" - integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.10.4" - -"@babel/runtime-corejs3@^7.8.3": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz#67aded13fffbbc2cb93247388cf84d77a4be9a71" - integrity sha512-6toWAfaALQjt3KMZQc6fABqZwUDDuWzz+cAfPhqyEnzxvdWOAkjwPNxgF8xlmo7OWLsSjaKjsskpKHRLaMArOA== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime-corejs3@^7.9.6": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.3.tgz#931ed6941d3954924a7aa967ee440e60c507b91a" - integrity sha512-HA7RPj5xvJxQl429r5Cxr2trJwOfPjKiqhCXcdQPSqO2G0RHPZpXu4fkYmBaTKCp2c/jRaMK9GB/lN+7zvvFPw== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" - integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" - integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.5.0", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" - integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@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" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" - integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.6" - "@babel/types" "^7.9.6" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" - integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - 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", "@babel/types@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" - integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== - dependencies: - "@babel/helper-validator-identifier" "^7.9.5" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" - integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" - integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@baurine/grafana-value-formats@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@baurine/grafana-value-formats/-/grafana-value-formats-1.0.2.tgz#f1129cf19ca0a887b77451cdefa31f94afc8500a" - integrity sha512-LdT/B7mHGSQ/k+o6B0oEjGpRRqMlLvnTezerp71wWW8Io89eePd1q/Lk0JWj/Vspv2RIdQzhE1Z7HZJtjc3IFg== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== - -"@ctrl/tinycolor@^3.1.6": - version "3.1.7" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.1.7.tgz#1585f67629882002a9f8e15a2941c9a4321bf80c" - integrity sha512-/0C6fjXbCwu22k8mMsKRSAo9zgu61d2p75Or9IuIC0Vu5CWN88t2QHK93LhNnxnqHWf5SFwFU28w9cKfTmnfvg== - -"@emotion/cache@^10.0.27": - version "10.0.29" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" - integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== - dependencies: - "@emotion/sheet" "0.9.4" - "@emotion/stylis" "0.8.5" - "@emotion/utils" "0.11.3" - "@emotion/weak-memoize" "0.2.5" - -"@emotion/core@^10.0.20": - version "10.0.28" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.28.tgz#bb65af7262a234593a9e952c041d0f1c9b9bef3d" - integrity sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA== - dependencies: - "@babel/runtime" "^7.5.5" - "@emotion/cache" "^10.0.27" - "@emotion/css" "^10.0.27" - "@emotion/serialize" "^0.11.15" - "@emotion/sheet" "0.9.4" - "@emotion/utils" "0.11.3" - -"@emotion/css@^10.0.27": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" - integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== - dependencies: - "@emotion/serialize" "^0.11.15" - "@emotion/utils" "0.11.3" - babel-plugin-emotion "^10.0.27" - -"@emotion/hash@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== - -"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.6": - 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/serialize@^0.11.15", "@emotion/serialize@^0.11.16": - version "0.11.16" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" - integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== - dependencies: - "@emotion/hash" "0.8.0" - "@emotion/memoize" "0.7.4" - "@emotion/unitless" "0.7.5" - "@emotion/utils" "0.11.3" - csstype "^2.5.7" - -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== - -"@emotion/styled-base@^10.0.27": - version "10.0.31" - resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.0.31.tgz#940957ee0aa15c6974adc7d494ff19765a2f742a" - integrity sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ== - dependencies: - "@babel/runtime" "^7.5.5" - "@emotion/is-prop-valid" "0.8.8" - "@emotion/serialize" "^0.11.15" - "@emotion/utils" "0.11.3" - -"@emotion/styled@^10.0.17": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" - integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== - dependencies: - "@emotion/styled-base" "^10.0.27" - babel-plugin-emotion "^10.0.27" - -"@emotion/stylis@0.8.5": - 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.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - -"@emotion/utils@0.11.3": - version "0.11.3" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" - integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== - -"@emotion/weak-memoize@0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== - -"@fluentui/date-time-utilities@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@fluentui/date-time-utilities/-/date-time-utilities-7.3.0.tgz#e6ee84a7b5097ca98e1cb8779dd001a1707c5cea" - integrity sha512-VymHB/GFaQM6LebrLHuPrHgk6Ra85CNjMB4+R8MAkna04w3sf07ivTfBUO3eLhAfxuW9YmlB7um8eavHq2xoDw== - dependencies: - "@uifabric/set-version" "^7.0.18" - tslib "^1.10.0" - -"@fluentui/keyboard-key@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@fluentui/keyboard-key/-/keyboard-key-0.2.7.tgz#5a907d917b7c2ec0c06ca5938c5424f5cb36540e" - integrity sha512-NX6BPT/hXOocYCksnqSw3gTFwaMHaIsaqfe6ZbGZpfBIN4idwhVUYDLwcyjUx0FmUJoWfaVsa61fbelg35USiA== - dependencies: - tslib "^1.10.0" - -"@fluentui/react-focus@^7.12.25": - version "7.12.25" - resolved "https://registry.yarnpkg.com/@fluentui/react-focus/-/react-focus-7.12.25.tgz#fd7c5d371fd79a551d6b8e30f0d7526398230b07" - integrity sha512-NRh5HXNJ7X52I48B+SJGOM0X8vqpoD4NO8KlBpcDJFwN3VV/5Mi5BGRUq87rpbpKdPB2q4Ni3o8E2LB4qQmL0A== - dependencies: - "@fluentui/keyboard-key" "^0.2.7" - "@uifabric/merge-styles" "^7.16.3" - "@uifabric/set-version" "^7.0.18" - "@uifabric/styling" "^7.14.5" - "@uifabric/utilities" "^7.24.5" - tslib "^1.10.0" - -"@fluentui/react-icons@^0.1.40": - version "0.1.40" - resolved "https://registry.yarnpkg.com/@fluentui/react-icons/-/react-icons-0.1.40.tgz#d643c5e982941a31b7c9a64acd9e377f4deae7c6" - integrity sha512-UFGMeQgajjfFwWtoEvk7eHd6Bye4aeVzOVTVKQ9MWxZZQIzP5gzA8Qk8dMfwSrPV5oplsMlTKijl7kULdY+H6g== - dependencies: - "@microsoft/load-themed-styles" "^1.10.26" - "@uifabric/set-version" "^7.0.18" - "@uifabric/utilities" "^7.24.5" - tslib "^1.10.0" - -"@fortawesome/fontawesome-free@^5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.14.0.tgz#a371e91029ebf265015e64f81bfbf7d228c9681f" - integrity sha512-OfdMsF+ZQgdKHP9jUbmDcRrP0eX90XXrsXIdyjLbkmSBzmMXPABB8eobUJtivaupucYaByz6WNe1PI1JuYm3qA== - -"@g07cha/flexbox-react@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@g07cha/flexbox-react/-/flexbox-react-5.0.0.tgz#159b0f8b7c5b8ee41a19256fb0024238abe01b3f" - integrity sha512-OiszZSDH/oZmN/jhpGZhYTtDIEVwT3E4ArWk0mUMPTUaiSDJRykMLuOC6fWuNm1nrti04ihtXPr4Tr4S9kSeyg== - dependencies: - styled-components "^2.0.0" - optionalDependencies: - "@types/react" "^16.0.34" - "@types/react-dom" "^16.0.3" - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@icons/material@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" - integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== - -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" - -"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== - dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - -"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" - -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== - dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/types@^24.3.0", "@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@microsoft/load-themed-styles@^1.10.26": - version "1.10.50" - resolved "https://registry.yarnpkg.com/@microsoft/load-themed-styles/-/load-themed-styles-1.10.50.tgz#16b1a7fd82163cceb71796bbd088e44ba7591e54" - integrity sha512-Fl0K/N2hNA++Rg7vQfjcaIen3ol/ZqCvXRlzswKpv5GMBL0zKqpvFCbTXVr344dp2ZFZWcsjxMi4DAvkpCshXA== - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@npmcli/move-file@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" - integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== - dependencies: - mkdirp "^1.0.4" - -"@openapitools/openapi-generator-cli@^1.0.15-4.3.1": - version "1.0.15-4.3.1" - resolved "https://registry.yarnpkg.com/@openapitools/openapi-generator-cli/-/openapi-generator-cli-1.0.15-4.3.1.tgz#25ef943eba3c82e82379b30f858bb05ed97dae0b" - integrity sha512-U+sanspDmeBElVNjYHQ4U7BbSEJUQzjNKmiTzXpcEw/r93sgxmzS2Sew5t+Zj6kyN1YTvjhRjJikNcW9/bmTKA== - -"@reach/router@^1.3.3": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" - integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== - dependencies: - create-react-context "0.3.0" - invariant "^2.2.3" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - -"@sentry/browser@6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/browser/download/@sentry/browser-6.3.2.tgz?cache=0&sync_timestamp=1619605243785&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fbrowser%2Fdownload%2F%40sentry%2Fbrowser-6.3.2.tgz#15ae31a0acdbdc5ed60bdadb047643580152bb79" - integrity sha1-Fa4xoKzb3F7WC9rbBHZDWAFSu3k= - dependencies: - "@sentry/core" "6.3.2" - "@sentry/types" "6.3.2" - "@sentry/utils" "6.3.2" - tslib "^1.9.3" - -"@sentry/core@6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/core/download/@sentry/core-6.3.2.tgz?cache=0&sync_timestamp=1619604898016&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fcore%2Fdownload%2F%40sentry%2Fcore-6.3.2.tgz#301b07fae95ac830faa6c2e7ca3a6b9041940704" - integrity sha1-MBsH+ulayDD6psLnyjprkEGUBwQ= - dependencies: - "@sentry/hub" "6.3.2" - "@sentry/minimal" "6.3.2" - "@sentry/types" "6.3.2" - "@sentry/utils" "6.3.2" - tslib "^1.9.3" - -"@sentry/hub@6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/hub/download/@sentry/hub-6.3.2.tgz?cache=0&sync_timestamp=1619605245362&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fhub%2Fdownload%2F%40sentry%2Fhub-6.3.2.tgz#f83101bc8864f47b9d229b6bef5237da5d571b23" - integrity sha1-+DEBvIhk9HudIptr71I32l1XGyM= - dependencies: - "@sentry/types" "6.3.2" - "@sentry/utils" "6.3.2" - tslib "^1.9.3" - -"@sentry/minimal@6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/minimal/download/@sentry/minimal-6.3.2.tgz?cache=0&sync_timestamp=1619605245845&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Fminimal%2Fdownload%2F%40sentry%2Fminimal-6.3.2.tgz#fc4ecc4ff33ee7300bba360af21d21ca98fdc909" - integrity sha1-/E7MT/M+5zALujYK8h0hypj9yQk= - dependencies: - "@sentry/hub" "6.3.2" - "@sentry/types" "6.3.2" - tslib "^1.9.3" - -"@sentry/react@^6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/react/download/@sentry/react-6.3.2.tgz?cache=0&sync_timestamp=1619604716385&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Freact%2Fdownload%2F%40sentry%2Freact-6.3.2.tgz#c5465a27176e4483d84785e5d23394ed57cb2e1c" - integrity sha1-xUZaJxduRIPYR4Xl0jOU7VfLLhw= - dependencies: - "@sentry/browser" "6.3.2" - "@sentry/minimal" "6.3.2" - "@sentry/types" "6.3.2" - "@sentry/utils" "6.3.2" - hoist-non-react-statics "^3.3.2" - tslib "^1.9.3" - -"@sentry/tracing@^6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/tracing/download/@sentry/tracing-6.3.2.tgz?cache=0&sync_timestamp=1619604716729&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40sentry%2Ftracing%2Fdownload%2F%40sentry%2Ftracing-6.3.2.tgz#b4f55be0d20cf1a10f7f158fc0434b50872decd2" - integrity sha1-tPVb4NIM8aEPfxWPwENLUIct7NI= - dependencies: - "@sentry/hub" "6.3.2" - "@sentry/minimal" "6.3.2" - "@sentry/types" "6.3.2" - "@sentry/utils" "6.3.2" - tslib "^1.9.3" - -"@sentry/types@6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/types/download/@sentry/types-6.3.2.tgz#7e7bdb253d1d242e97a3eb54610ef27a30675759" - integrity sha1-fnvbJT0dJC6Xo+tUYQ7yejBnV1k= - -"@sentry/utils@6.3.2": - version "6.3.2" - resolved "https://registry.nlark.com/@sentry/utils/download/@sentry/utils-6.3.2.tgz#640851fca3a7d1bebd1b2c11cad6d9cf7fee8148" - integrity sha1-ZAhR/KOn0b69GywRytbZz3/ugUg= - dependencies: - "@sentry/types" "6.3.2" - tslib "^1.9.3" - -"@storybook/addon-actions@^6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.0.0-rc.3.tgz#2c8d6230bf15c5fcced5b4291a366cc3d8aec631" - integrity sha512-EGX1CzLARZGMbZmfN0CaNssJjrRSofuWVw9m5AMeww6u9OaxUbmGunn+4rP31cTu455MQtsysmJstSFt2t+mdg== - dependencies: - "@storybook/addons" "6.0.0-rc.3" - "@storybook/api" "6.0.0-rc.3" - "@storybook/client-api" "6.0.0-rc.3" - "@storybook/components" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - "@storybook/theming" "6.0.0-rc.3" - core-js "^3.0.1" - fast-deep-equal "^3.1.1" - global "^4.3.2" - lodash "^4.17.15" - polished "^3.4.4" - prop-types "^15.7.2" - react "^16.8.3" - react-inspector "^5.0.1" - regenerator-runtime "^0.13.3" - ts-dedent "^1.1.1" - util-deprecate "^1.0.2" - uuid "^8.0.0" - -"@storybook/addon-links@^6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.0.0-rc.3.tgz#7f228ee9dcaff3f7ada1f9c46a46b34410ee7645" - integrity sha512-I5M97fq9rn13YFIo6dDt6O7Sxb+mNEangpvMuRn/VncxfeZx5kH/gEg+elsG0/IZyfO0UHjA46QDSdiyZFaNnQ== - dependencies: - "@storybook/addons" "6.0.0-rc.3" - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - "@storybook/csf" "0.0.1" - "@storybook/router" "6.0.0-rc.3" - "@types/qs" "^6.9.0" - core-js "^3.0.1" - global "^4.3.2" - prop-types "^15.7.2" - qs "^6.6.0" - regenerator-runtime "^0.13.3" - ts-dedent "^1.1.1" - -"@storybook/addons@6.0.0-rc.3", "@storybook/addons@^6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.0.0-rc.3.tgz#165ae8ba6d36b19133a51aa9f72463f225b6a19c" - integrity sha512-oFGS1mNnNsfNPTvv3IAZSMTzztR4vfbn2CXcWnnA7yPEbo8WsNPql3A8PoumY2HZtZjZEEpCODJtW09Q1bP6Cw== - dependencies: - "@storybook/api" "6.0.0-rc.3" - "@storybook/channels" "6.0.0-rc.3" - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - "@storybook/router" "6.0.0-rc.3" - "@storybook/theming" "6.0.0-rc.3" - core-js "^3.0.1" - global "^4.3.2" - regenerator-runtime "^0.13.3" - -"@storybook/api@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.0.0-rc.3.tgz#5b23ca76c996e863c48cb53f8769bf219ff35219" - integrity sha512-N+DADwbaevSE7C4/bjxtsFzNZ7/jAgRZa0vfiq8Lxwbmj2cYpPn9p8SkPA75TZco6XM/LX6QXl5ghg2zs8f/UQ== - dependencies: - "@reach/router" "^1.3.3" - "@storybook/channels" "6.0.0-rc.3" - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - "@storybook/csf" "0.0.1" - "@storybook/router" "6.0.0-rc.3" - "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.0.0-rc.3" - "@types/reach__router" "^1.3.5" - core-js "^3.0.1" - fast-deep-equal "^3.1.1" - global "^4.3.2" - lodash "^4.17.15" - memoizerific "^1.11.3" - react "^16.8.3" - regenerator-runtime "^0.13.3" - store2 "^2.7.1" - telejson "^4.0.0" - ts-dedent "^1.1.1" - util-deprecate "^1.0.2" - -"@storybook/channel-postmessage@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.0.0-rc.3.tgz#bc239f3b8aff4c98e7c9a7de63b05573ff3ad920" - integrity sha512-y/FyknuOYh8f5UgFlVkzWko9JcTlOUTapFPMtV7w52rZMkv0TJVVzn2Az3aDMKNhbyXhMVHP+Cbflj2qxLSyVQ== - dependencies: - "@storybook/channels" "6.0.0-rc.3" - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - core-js "^3.0.1" - global "^4.3.2" - qs "^6.6.0" - telejson "^4.0.0" - -"@storybook/channels@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.0.0-rc.3.tgz#1c7b0356eebad2dc422fd77d7b5e3c82c42786b0" - integrity sha512-kJjdP/Wp1rEOr+Fn9eQyzHml2V7va3wnpgWXYqPZXn/xrUKJg5UeOqvImVQUDfuwSWINZfHsG/yV11pXpWhMKg== - dependencies: - core-js "^3.0.1" - ts-dedent "^1.1.1" - util-deprecate "^1.0.2" - -"@storybook/client-api@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.0.0-rc.3.tgz#310291e2d1105b1a14aa36404891d52d64bd2d6b" - integrity sha512-juf1IuE/8zAsF+GPidBvofE2mX9jq3mM+wtI9wEl+NmSS7Dj5Eb/Mu94n2UQLG2K/VpLUiFvHsW8GdR1+/HBzA== - dependencies: - "@storybook/addons" "6.0.0-rc.3" - "@storybook/channel-postmessage" "6.0.0-rc.3" - "@storybook/channels" "6.0.0-rc.3" - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - "@storybook/csf" "0.0.1" - "@types/qs" "^6.9.0" - "@types/webpack-env" "^1.15.2" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" - memoizerific "^1.11.3" - qs "^6.6.0" - stable "^0.1.8" - store2 "^2.7.1" - ts-dedent "^1.1.1" - util-deprecate "^1.0.2" - -"@storybook/client-logger@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.0.0-rc.3.tgz#113e9d153a97318c7251ba34a90727c36016e7f3" - integrity sha512-wMXEoY6tc7Yx6s/E7jTR8y82Zcc3vgzfmIW/7/UgOvUlsIPTXoV5uChmwWExQ64VlVX36yE/Mctygxr7HwzPkw== - dependencies: - core-js "^3.0.1" - global "^4.3.2" - -"@storybook/components@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.0.0-rc.3.tgz#106279fffec233d28bd98ddfdeba54af6683bf15" - integrity sha512-gXslr3rt+xt08c3ncVBSgG4A4IursP7D9IYrCjiDgNP15//gEdDOq/ciJa3MHNiHQ0rYzS4q5ATcO+zRmuN8LA== - dependencies: - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/csf" "0.0.1" - "@storybook/theming" "6.0.0-rc.3" - "@types/overlayscrollbars" "^1.9.0" - "@types/react-color" "^3.0.1" - "@types/react-syntax-highlighter" "11.0.4" - core-js "^3.0.1" - fast-deep-equal "^3.1.1" - global "^4.3.2" - lodash "^4.17.15" - markdown-to-jsx "^6.11.4" - memoizerific "^1.11.3" - overlayscrollbars "^1.10.2" - polished "^3.4.4" - popper.js "^1.14.7" - react "^16.8.3" - react-color "^2.17.0" - react-dom "^16.8.3" - react-popper-tooltip "^2.11.0" - react-syntax-highlighter "^12.2.1" - react-textarea-autosize "^8.1.1" - ts-dedent "^1.1.1" - -"@storybook/core-events@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.0.0-rc.3.tgz#e3c273feabbaf2180b01e42864aafe228e98afcf" - integrity sha512-J9KUnV/p2zvt0Cg1z4x6dTvqTJKjydNarAgwcNBnh3caIAIPETzO6CV9ns4TidFXyV2400sk+u6ZyCwOUc/hsQ== - dependencies: - core-js "^3.0.1" - -"@storybook/core@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.0.0-rc.3.tgz#d55cbaeba4e263c92c2f6fbb45c77cab1ee6b90b" - integrity sha512-sgjfL5umUP1duz71tv1GEk/2gKeZOQ5foKeZpjq4NEydWQu4VccHBqizc2KnGZXValERKiG+URbyDvFNz4MIhQ== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.8.3" - "@babel/plugin-proposal-export-default-from" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" - "@babel/plugin-proposal-object-rest-spread" "^7.9.6" - "@babel/plugin-proposal-optional-chaining" "^7.10.1" - "@babel/plugin-proposal-private-methods" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.5" - "@babel/plugin-transform-destructuring" "^7.9.5" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-parameters" "^7.9.5" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/preset-env" "^7.9.6" - "@babel/preset-react" "^7.8.3" - "@babel/preset-typescript" "^7.9.0" - "@storybook/addons" "6.0.0-rc.3" - "@storybook/api" "6.0.0-rc.3" - "@storybook/channel-postmessage" "6.0.0-rc.3" - "@storybook/channels" "6.0.0-rc.3" - "@storybook/client-api" "6.0.0-rc.3" - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/components" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - "@storybook/csf" "0.0.1" - "@storybook/node-logger" "6.0.0-rc.3" - "@storybook/router" "6.0.0-rc.3" - "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.0.0-rc.3" - "@storybook/ui" "6.0.0-rc.3" - "@types/glob-base" "^0.3.0" - "@types/micromatch" "^4.0.1" - "@types/node-fetch" "^2.5.4" - airbnb-js-shims "^2.2.1" - ansi-to-html "^0.6.11" - autoprefixer "^9.7.2" - babel-loader "^8.0.6" - babel-plugin-emotion "^10.0.20" - babel-plugin-macros "^2.8.0" - babel-preset-minify "^0.5.0 || 0.6.0-alpha.5" - better-opn "^2.0.0" - boxen "^4.1.0" - case-sensitive-paths-webpack-plugin "^2.2.0" - chalk "^4.0.0" - cli-table3 "0.6.0" - commander "^5.0.0" - core-js "^3.0.1" - css-loader "^3.5.3" - detect-port "^1.3.0" - dotenv-webpack "^1.7.0" - ejs "^3.1.2" - express "^4.17.0" - file-loader "^6.0.0" - file-system-cache "^1.0.5" - find-up "^4.1.0" - fork-ts-checker-webpack-plugin "^4.1.4" - fs-extra "^9.0.0" - glob "^7.1.6" - glob-base "^0.3.0" - glob-promise "^3.4.0" - global "^4.3.2" - html-webpack-plugin "^4.2.1" - inquirer "^7.0.0" - interpret "^2.0.0" - ip "^1.1.5" - json5 "^2.1.1" - lazy-universal-dotenv "^3.0.1" - micromatch "^4.0.2" - node-fetch "^2.6.0" - pkg-dir "^4.2.0" - pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "^4.1.0" - postcss-loader "^3.0.0" - pretty-hrtime "^1.0.3" - qs "^6.6.0" - raw-loader "^4.0.1" - react-dev-utils "^10.0.0" - regenerator-runtime "^0.13.3" - resolve-from "^5.0.0" - serve-favicon "^2.5.0" - shelljs "^0.8.3" - stable "^0.1.8" - style-loader "^1.2.1" - terser-webpack-plugin "^3.0.0" - ts-dedent "^1.1.1" - unfetch "^4.1.0" - url-loader "^4.0.0" - util-deprecate "^1.0.2" - webpack "^4.43.0" - webpack-dev-middleware "^3.7.0" - webpack-hot-middleware "^2.25.0" - webpack-virtual-modules "^0.2.2" - -"@storybook/csf@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" - integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== - dependencies: - lodash "^4.17.15" - -"@storybook/node-logger@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.0.0-rc.3.tgz#789577978e8667178c40ee7d0ca50d3fc983c952" - integrity sha512-E0ak1Gh33fudGd6Ew/mogjrrgxSRjRGDkzhG4draoDdwB0uu008RInLgpQjj+3i2OnlHNLQWAyqwidSf8l2msw== - dependencies: - "@types/npmlog" "^4.1.2" - chalk "^4.0.0" - core-js "^3.0.1" - npmlog "^4.1.2" - pretty-hrtime "^1.0.3" - -"@storybook/preset-create-react-app@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@storybook/preset-create-react-app/-/preset-create-react-app-3.1.4.tgz#64bb674f69fe860ef1a4909e686775adf6c05fdd" - integrity sha512-VwzGCvv+HnEDXxSwF6ITRIZ4EaMhiMu1Mxrwm+nb49XTT2VME8VTzmbDjrdpZXPXUJrwLYmvqzaBT/qGZoMlgA== - dependencies: - "@types/babel__core" "^7.1.7" - "@types/webpack" "^4.41.13" - babel-plugin-react-docgen "^4.1.0" - pnp-webpack-plugin "^1.6.4" - react-docgen-typescript-plugin "^0.5.0" - semver "^7.3.2" - -"@storybook/react@^6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.0.0-rc.3.tgz#f9102300b869ab596180276706451d1568ae27f1" - integrity sha512-q5Jmq/QpUfVFE3G7FoBGJeBcIv2R5SO5xDJCg271piEKvFTcCmjwLi2IOCndnLn+gBuADcv2reCEk318yiFj2Q== - dependencies: - "@babel/preset-flow" "^7.0.0" - "@babel/preset-react" "^7.0.0" - "@storybook/addons" "6.0.0-rc.3" - "@storybook/core" "6.0.0-rc.3" - "@storybook/node-logger" "6.0.0-rc.3" - "@storybook/semver" "^7.3.2" - "@svgr/webpack" "^5.4.0" - "@types/webpack-env" "^1.15.2" - babel-plugin-add-react-displayname "^0.0.5" - babel-plugin-named-asset-import "^0.3.1" - babel-plugin-react-docgen "^4.1.0" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" - prop-types "^15.7.2" - react-dev-utils "^10.0.0" - react-docgen-typescript-plugin "^0.5.1" - regenerator-runtime "^0.13.3" - ts-dedent "^1.1.1" - webpack "^4.43.0" - -"@storybook/router@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.0.0-rc.3.tgz#a227b1c8b052136e91eda6f75a5a70f546091dc9" - integrity sha512-FOpWJCPbiO5RDzjNqjUTZd+DoLslQj3GY+hHzk5Rarrqh9NfzDZ8x7AAs0CVEWbSY89wQeeeulTVA7mMkC/vRQ== - dependencies: - "@reach/router" "^1.3.3" - "@types/reach__router" "^1.3.5" - core-js "^3.0.1" - global "^4.3.2" - memoizerific "^1.11.3" - qs "^6.6.0" - -"@storybook/semver@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" - integrity sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg== - dependencies: - core-js "^3.6.5" - find-up "^4.1.0" - -"@storybook/theming@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.0.0-rc.3.tgz#8989cb3495122b9d91a56f66fe171166a3f9528c" - integrity sha512-QBx50lLv5TtO0+CCSuFY5qjk0GzqhDm8DUukFVUpjfjsANtDVXog8DbAChsUZI+yAI7WtjaS6OA44Mf1/rWejQ== - dependencies: - "@emotion/core" "^10.0.20" - "@emotion/is-prop-valid" "^0.8.6" - "@emotion/styled" "^10.0.17" - "@storybook/client-logger" "6.0.0-rc.3" - core-js "^3.0.1" - deep-object-diff "^1.1.0" - emotion-theming "^10.0.19" - global "^4.3.2" - memoizerific "^1.11.3" - polished "^3.4.4" - resolve-from "^5.0.0" - ts-dedent "^1.1.1" - -"@storybook/ui@6.0.0-rc.3": - version "6.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.0.0-rc.3.tgz#b52646e3bc454f0bfe6f4787e47685125a780233" - integrity sha512-OSDn4WIPeA72X2m790bufrp1xsNBqhOCcwhn5+xIM9lsg0rkkVk7Vxk6lTkHUOSwVRjYrN6HCdL2gK59+cvxLQ== - dependencies: - "@emotion/core" "^10.0.20" - "@storybook/addons" "6.0.0-rc.3" - "@storybook/api" "6.0.0-rc.3" - "@storybook/channels" "6.0.0-rc.3" - "@storybook/client-logger" "6.0.0-rc.3" - "@storybook/components" "6.0.0-rc.3" - "@storybook/core-events" "6.0.0-rc.3" - "@storybook/router" "6.0.0-rc.3" - "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.0.0-rc.3" - "@types/markdown-to-jsx" "^6.11.0" - "@types/rfdc" "^1.1.0" - copy-to-clipboard "^3.0.8" - core-js "^3.0.1" - core-js-pure "^3.0.1" - emotion-theming "^10.0.19" - fuse.js "^3.6.1" - global "^4.3.2" - lodash "^4.17.15" - markdown-to-jsx "^6.11.4" - memoizerific "^1.11.3" - polished "^3.4.4" - react "^16.8.3" - react-dom "^16.8.3" - react-draggable "^4.0.3" - react-helmet-async "^1.0.2" - react-hotkeys "2.0.0" - react-sizeme "^2.6.7" - regenerator-runtime "^0.13.3" - resolve-from "^5.0.0" - rfdc "^1.1.4" - store2 "^2.7.1" - -"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" - integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" - integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" - integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" - integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" - integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" - integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" - integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" - integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== - -"@svgr/babel-plugin-transform-svg-component@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.4.0.tgz#a2212b4d018e6075a058bb7e220a66959ef7a03c" - integrity sha512-zLl4Fl3NvKxxjWNkqEcpdSOpQ3LGVH2BNFQ6vjaK6sFo2IrSznrhURIPI0HAphKiiIwNYjAfE0TNoQDSZv0U9A== - -"@svgr/babel-preset@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" - integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" - "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" - "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" - "@svgr/babel-plugin-transform-svg-component" "^4.2.0" - -"@svgr/babel-preset@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.4.0.tgz#da21854643e1c4ad2279239baa7d5a8b128c1f15" - integrity sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.4.0" - -"@svgr/core@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" - integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== - dependencies: - "@svgr/plugin-jsx" "^4.3.3" - camelcase "^5.3.1" - cosmiconfig "^5.2.1" - -"@svgr/core@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.4.0.tgz#655378ee43679eb94fee3d4e1976e38252dff8e7" - integrity sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ== - dependencies: - "@svgr/plugin-jsx" "^5.4.0" - camelcase "^6.0.0" - cosmiconfig "^6.0.0" - -"@svgr/hast-util-to-babel-ast@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" - integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== - dependencies: - "@babel/types" "^7.4.4" - -"@svgr/hast-util-to-babel-ast@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz#bb5d002e428f510aa5b53ec0a02377a95b367715" - integrity sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg== - dependencies: - "@babel/types" "^7.9.5" - -"@svgr/plugin-jsx@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" - integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== - dependencies: - "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.3" - "@svgr/hast-util-to-babel-ast" "^4.3.2" - svg-parser "^2.0.0" - -"@svgr/plugin-jsx@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz#ab47504c55615833c6db70fca2d7e489f509787c" - integrity sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw== - dependencies: - "@babel/core" "^7.7.5" - "@svgr/babel-preset" "^5.4.0" - "@svgr/hast-util-to-babel-ast" "^5.4.0" - svg-parser "^2.0.2" - -"@svgr/plugin-svgo@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" - integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== - dependencies: - cosmiconfig "^5.2.1" - merge-deep "^3.0.2" - svgo "^1.2.2" - -"@svgr/plugin-svgo@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz#45d9800b7099a6f7b4d85ebac89ab9abe8592f64" - integrity sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA== - dependencies: - cosmiconfig "^6.0.0" - merge-deep "^3.0.2" - svgo "^1.2.2" - -"@svgr/webpack@4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" - integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== - dependencies: - "@babel/core" "^7.4.5" - "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.5" - "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.3" - "@svgr/plugin-jsx" "^4.3.3" - "@svgr/plugin-svgo" "^4.3.1" - loader-utils "^1.2.3" - -"@svgr/webpack@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.4.0.tgz#b68bc86e29cf007292b96ced65f80971175632e0" - integrity sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg== - dependencies: - "@babel/core" "^7.9.0" - "@babel/plugin-transform-react-constant-elements" "^7.9.0" - "@babel/preset-env" "^7.9.5" - "@babel/preset-react" "^7.9.4" - "@svgr/core" "^5.4.0" - "@svgr/plugin-jsx" "^5.4.0" - "@svgr/plugin-svgo" "^5.4.0" - loader-utils "^2.0.0" - -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== - -"@types/babel__core@^7.1.0": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.1.7": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" - integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== - dependencies: - "@babel/types" "^7.3.0" - -"@types/braces@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb" - integrity sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw== - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/d3-array@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-2.0.0.tgz#a0d63a296a2d8435a9ec59393dcac746c6174a96" - integrity sha512-rGqfPVowNDTszSFvwoZIXvrPG7s/qKzm9piCRIH6xwTTRu7pPZ3ootULFnPkTt74B6i5lN0FpLQL24qGOw1uZA== - -"@types/d3-array@^1": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-1.2.7.tgz#34dc654d34fc058c41c31dbca1ed68071a8fcc17" - integrity sha512-51vHWuUyDOi+8XuwPrTw3cFqyh2Slg9y8COYkRfjCPG9TfYqY0hoNPzv/8BrcAy0FeQBzqEo/D/8Nk2caOQJnA== - -"@types/d3-axis@*": - version "1.0.12" - resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-1.0.12.tgz#8c124edfcc02f3b3a9cdaa2a28b8a20341401799" - integrity sha512-BZISgSD5M8TgURyNtcPAmUB9sk490CO1Thb6/gIn0WZTt3Y50IssX+2Z0vTccoqZksUDTep0b+o4ofXslvNbqg== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-brush@*": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-1.1.0.tgz#3f1f01aa3d4d70aff2a358c49dd3295be10d774c" - integrity sha512-yz5Y94XpUARimOlLk+RWM1cZh1FrtmSGOyDQfCArsMa6kAnhjF3EserSTDnHAuVuNATMoTIOPHa7pjG2iTkPYA== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-chord@*": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-1.0.9.tgz#ccc5de03ff079025491b7aa6b750670a140b45ae" - integrity sha512-UA6lI9CVW5cT5Ku/RV4hxoFn4mKySHm7HEgodtfRthAj1lt9rKZEPon58vyYfk+HIAm33DtJJgZwMXy2QgyPXw== - -"@types/d3-collection@*": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-collection/-/d3-collection-1.0.8.tgz#aa9552c570a96e33c132e0fd20e331f64baa9dd5" - integrity sha512-y5lGlazdc0HNO0F3UUX2DPE7OmYvd9Kcym4hXwrJcNUkDaypR5pX+apuMikl9LfTxKItJsY9KYvzBulpCKyvuQ== - -"@types/d3-color@*": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.2.2.tgz#80cf7cfff7401587b8f89307ba36fe4a576bc7cf" - integrity sha512-6pBxzJ8ZP3dYEQ4YjQ+NVbQaOflfgXq/JbDiS99oLobM2o72uAST4q6yPxHv6FOTCRC/n35ktuo8pvw/S4M7sw== - -"@types/d3-contour@*": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-1.3.0.tgz#1a408b121fa5e341f715e3055303ef3079fc7eb0" - integrity sha512-AUCUIjEnC5lCGBM9hS+MryRaFLIrPls4Rbv6ktqbd+TK/RXZPwOy9rtBWmGpbeXcSOYCJTUDwNJuEnmYPJRxHQ== - dependencies: - "@types/d3-array" "*" - "@types/geojson" "*" - -"@types/d3-dispatch@*": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-1.0.7.tgz#6721aefbb9862ce78c20a87a1490c21f57c3ed7f" - integrity sha512-M+z84G7UKwK6hEPnGCSccOg8zJ3Nk2hgDQ9sCstHXgsFU0sMxlIZVKqKB5oxUDbALqQG6ucg0G9e8cmOSlishg== - -"@types/d3-drag@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-1.2.3.tgz#d8ddccca28e939e9c689bea6f40a937e48c39051" - integrity sha512-rWB5SPvkYVxW3sqUxHOJUZwifD0KqvKwvt1bhNqcLpW6Azsd0BJgRNcyVW8GAferaAk5r8dzeZnf9zKlg9+xMQ== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-dsv@*": - version "1.0.36" - resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-1.0.36.tgz#e91129d7c02b1b814838d001e921e8b9a67153d0" - integrity sha512-jbIWQ27QJcBNMZbQv0NSQMHnBDCmxghAxePxgyiPH1XPCRkOsTBei7jcdi3fDrUCGpCV3lKrSZFSlOkhUQVClA== - -"@types/d3-ease@*": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-1.0.9.tgz#1dd849bd7edef6426e915e220ed9970db5ea4e04" - integrity sha512-U5ADevQ+W6fy32FVZZC9EXallcV/Mi12A5Tkd0My5MrC7T8soMQEhlDAg88XUWm0zoCQlB4XV0en/24LvuDB4Q== - -"@types/d3-fetch@*": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-1.1.5.tgz#51601f79dd4653b5d84e6a3176d78145e065db5e" - integrity sha512-o9c0ItT5/Gl3wbNuVpzRnYX1t3RghzeWAjHUVLuyZJudiTxC4f/fC0ZPFWLQ2lVY8pAMmxpV8TJ6ETYCgPeI3A== - dependencies: - "@types/d3-dsv" "*" - -"@types/d3-force@*": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-1.2.1.tgz#c28803ea36fe29788db69efa0ad6c2dc09544e83" - integrity sha512-jqK+I36uz4kTBjyk39meed5y31Ab+tXYN/x1dn3nZEus9yOHCLc+VrcIYLc/aSQ0Y7tMPRlIhLetulME76EiiA== - -"@types/d3-format@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-1.3.1.tgz#35bf88264bd6bcda39251165bb827f67879c4384" - integrity sha512-KAWvReOKMDreaAwOjdfQMm0HjcUMlQG47GwqdVKgmm20vTd2pucj0a70c3gUSHrnsmo6H2AMrkBsZU2UhJLq8A== - -"@types/d3-geo@*": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.11.1.tgz#e96ec91f16221d87507fec66b2cc889f52d2493e" - integrity sha512-Ox8WWOG3igDRoep/dNsGbOiSJYdUG3ew/6z0ETvHyAtXZVBjOE0S96zSSmzgl0gqQ3RdZjn2eeJOj9oRcMZPkQ== - dependencies: - "@types/geojson" "*" - -"@types/d3-hierarchy@*": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-1.1.6.tgz#4c017521900813ea524c9ecb8d7985ec26a9ad9a" - integrity sha512-vvSaIDf/Ov0o3KwMT+1M8+WbnnlRiGjlGD5uvk83a1mPCTd/E5x12bUJ/oP55+wUY/4Kb5kc67rVpVGJ2KUHxg== - -"@types/d3-interpolate@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz#1c280511f622de9b0b47d463fa55f9a4fd6f5fc8" - integrity sha512-z8Zmi08XVwe8e62vP6wcA+CNuRhpuUU5XPEfqpG0hRypDE5BWNthQHB1UNWWDB7ojCbGaN4qBdsWp5kWxhT1IQ== - dependencies: - "@types/d3-color" "*" - -"@types/d3-path@*": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.8.tgz#48e6945a8ff43ee0a1ce85c8cfa2337de85c7c79" - integrity sha512-AZGHWslq/oApTAHu9+yH/Bnk63y9oFOMROtqPAtxl5uB6qm1x2lueWdVEjsjjV3Qc2+QfuzKIwIR5MvVBakfzA== - -"@types/d3-polygon@*": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-1.0.7.tgz#7b3947aa2d48287ff535230d3d396668ab17bfdf" - integrity sha512-Xuw0eSjQQKs8jTiNbntWH0S+Xp+JyhqxmQ0YAQ3rDu6c3kKMFfgsaGN7Jv5u3zG6yVX/AsLP/Xs/QRjmi9g43Q== - -"@types/d3-quadtree@*": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-1.0.7.tgz#8e29464ff5b326f6612c1428d9362b4b35de2b70" - integrity sha512-0ajFawWicfjsaCLh6NzxOyVDYhQAmMFbsiI3MPGLInorauHFEh9/Cl6UHNf+kt/J1jfoxKY/ZJaKAoDpbvde5Q== - -"@types/d3-random@*": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-1.1.2.tgz#6f77e8b7bb64ac393f92d33fe8f71038bc4f3cde" - integrity sha512-Jui+Zn28pQw/3EayPKaN4c/PqTvqNbIPjHkgIIFnxne1FdwNjfHtAIsZIBMKlquQNrrMjFzCrlF2gPs3xckqaA== - -"@types/d3-scale-chromatic@*": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#315367557d51b823bec848614fac095325613fc3" - integrity sha512-9/D7cOBKdZdTCPc6re0HeSUFBM0aFzdNdmYggUWT9SRRiYSOa6Ys2xdTwHKgc1WS3gGfwTMatBOdWCS863REsg== - -"@types/d3-scale@*": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-2.2.0.tgz#e5987a2857365823eb26ed5eb21bc566c4dcf1c0" - integrity sha512-oQFanN0/PiR2oySHfj+zAAkK1/p4LD32Nt1TMVmzk+bYHk7vgIg/iTXQWitp1cIkDw4LMdcgvO63wL+mNs47YA== - dependencies: - "@types/d3-time" "*" - -"@types/d3-selection@*": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.4.1.tgz#fa1f8710a6b5d7cfe5c6caa61d161be7cae4a022" - integrity sha512-bv8IfFYo/xG6dxri9OwDnK3yCagYPeRIjTlrcdYJSx+FDWlCeBDepIHUpqROmhPtZ53jyna0aUajZRk0I3rXNA== - -"@types/d3-shape@*": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.3.2.tgz#a41d9d6b10d02e221696b240caf0b5d0f5a588ec" - integrity sha512-LtD8EaNYCaBRzHzaAiIPrfcL3DdIysc81dkGlQvv7WQP3+YXV7b0JJTtR1U3bzeRieS603KF4wUo+ZkJVenh8w== - dependencies: - "@types/d3-path" "*" - -"@types/d3-time-format@*": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-2.1.1.tgz#dd2c79ec4575f1355484ab6b10407824668eba42" - integrity sha512-tJSyXta8ZyJ52wDDHA96JEsvkbL6jl7wowGmuf45+fAkj5Y+SQOnz0N7/H68OWmPshPsAaWMQh+GAws44IzH3g== - -"@types/d3-time@*": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-1.0.10.tgz#d338c7feac93a98a32aac875d1100f92c7b61f4f" - integrity sha512-aKf62rRQafDQmSiv1NylKhIMmznsjRN+MnXRXTqHoqm0U/UZzVpdrtRnSIfdiLS616OuC1soYeX1dBg2n1u8Xw== - -"@types/d3-timer@*": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-1.0.9.tgz#aed1bde0cf18920d33f5d44839d73de393633fd3" - integrity sha512-WvfJ3LFxBbWjqRGz9n7GJt08RrTHPJDVsIwwoCMROlqF+iDacYiAFjf9oqnq0mXpb2juA2N/qjKP+MKdal3YNQ== - -"@types/d3-transition@*": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-1.1.6.tgz#7e52da29749d874866cc803fad13925713a372da" - integrity sha512-/F+O2r4oz4G9ATIH3cuSCMGphAnl7VDx7SbENEK0NlI/FE8Jx2oiIrv0uTrpg7yF/AmuWbqp7AGdEHAPIh24Gg== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-voronoi@*": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz#7bbc210818a3a5c5e0bafb051420df206617c9e5" - integrity sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ== - -"@types/d3-zoom@*": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.7.4.tgz#9226ffd2bd3846ec0e4a4e2bff211612d3aafad5" - integrity sha512-5jnFo/itYhJeB2khO/lKe730kW/h2EbKMOvY0uNp3+7NdPm4w63DwPEMxifQZ7n902xGYK5DdU67FmToSoy4VA== - dependencies: - "@types/d3-interpolate" "*" - "@types/d3-selection" "*" - -"@types/d3@^5.7.2": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@types/d3/-/d3-5.7.2.tgz#52235eb71a1d3ca171d6dca52a58f5ccbe0254cc" - integrity sha512-7/wClB8ycneWGy3jdvLfXKTd5SoTg9hji7IdJ0RuO9xTY54YpJ8zlcFADcXhY1J3kCBwxp+/1jeN6a5OMwgYOw== - dependencies: - "@types/d3-array" "^1" - "@types/d3-axis" "*" - "@types/d3-brush" "*" - "@types/d3-chord" "*" - "@types/d3-collection" "*" - "@types/d3-color" "*" - "@types/d3-contour" "*" - "@types/d3-dispatch" "*" - "@types/d3-drag" "*" - "@types/d3-dsv" "*" - "@types/d3-ease" "*" - "@types/d3-fetch" "*" - "@types/d3-force" "*" - "@types/d3-format" "*" - "@types/d3-geo" "*" - "@types/d3-hierarchy" "*" - "@types/d3-interpolate" "*" - "@types/d3-path" "*" - "@types/d3-polygon" "*" - "@types/d3-quadtree" "*" - "@types/d3-random" "*" - "@types/d3-scale" "*" - "@types/d3-scale-chromatic" "*" - "@types/d3-selection" "*" - "@types/d3-shape" "*" - "@types/d3-time" "*" - "@types/d3-time-format" "*" - "@types/d3-timer" "*" - "@types/d3-transition" "*" - "@types/d3-voronoi" "*" - "@types/d3-zoom" "*" - -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/geojson@*": - version "7946.0.7" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" - integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== - -"@types/glob-base@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@types/glob-base/-/glob-base-0.3.0.tgz#a581d688347e10e50dd7c17d6f2880a10354319d" - integrity sha1-pYHWiDR+EOUN18F9byiAoQNUMZ0= - -"@types/glob@*": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/history@*": - version "4.7.6" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.6.tgz#ed8fc802c45b8e8f54419c2d054e55c9ea344356" - integrity sha512-GRTZLeLJ8ia00ZH8mxMO8t0aC9M1N9bN461Z2eaRurJo6Fpa+utgCwLzI4jQHcrdzuzp5WPN9jRwpsCQ1VhJ5w== - -"@types/html-minifier-terser@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" - integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== - -"@types/http-proxy@^1.17.4": - version "1.17.4" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" - integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== - dependencies: - "@types/node" "*" - -"@types/is-function@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.0.tgz#1b0b819b1636c7baf0d6785d030d12edf70c3e83" - integrity sha512-iTs9HReBu7evG77Q4EC8hZnqRt57irBDkK9nvmHroiOIVwYMQc4IvYvdRgwKfYepunIY7Oh/dBuuld+Gj9uo6w== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" - integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/js-cookie@2.2.6", "@types/js-cookie@^2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" - integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== - -"@types/json-schema@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== - -"@types/json-schema@^7.0.4": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" - integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== - -"@types/live-server@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/live-server/-/live-server-1.2.1.tgz#4d6588e1b888b415ed5fe8480224dcd225bc9eba" - integrity sha512-Yind497JdcZT8L9FF7u73nq44KmamiDitsZJEwrAi/pgBhFHThNvtR+2Z/YGNSMjyUoDBFdvhVSQmod06yd1Ng== - -"@types/lodash@^4.14.158": - version "4.14.158" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.158.tgz#b38ea8b6fe799acd076d7a8d7ab71c26ef77f785" - integrity sha512-InCEXJNTv/59yO4VSfuvNrZHt7eeNtWQEgnieIA+mIC+MOWM9arOWG2eQ8Vhk6NbOre6/BidiXhkZYeDY9U35w== - -"@types/markdown-to-jsx@^6.11.0": - version "6.11.1" - resolved "https://registry.yarnpkg.com/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.1.tgz#4d9464aa76337d798b874dd3f2d6b4c86ddd98ad" - integrity sha512-fm/II24OzSx7J7CzXnHjEIf0d+s82bmdcokbyzY7PFMUnhyhnuGJgedt8R+yZgDn1mqhCLHmMjBPMsL8K4Xp9g== - dependencies: - "@types/react" "*" - -"@types/micromatch@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/micromatch/-/micromatch-4.0.1.tgz#9381449dd659fc3823fd2a4190ceacc985083bc7" - integrity sha512-my6fLBvpY70KattTNzYOK6KU1oR1+UCz9ug/JbcF5UrEmeCt9P7DV2t7L8+t18mMPINqGQCE4O8PLOPbI84gxw== - dependencies: - "@types/braces" "*" - -"@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node-fetch@^2.5.4": - version "2.5.7" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" - integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "14.0.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" - integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== - -"@types/node@^14.0.27": - version "14.0.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" - integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== - -"@types/node@^14.0.4": - version "14.0.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.13.tgz#ee1128e881b874c371374c1f72201893616417c9" - integrity sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA== - -"@types/npmlog@^4.1.2": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.2.tgz#d070fe6a6b78755d1092a3dc492d34c3d8f871c4" - integrity sha512-4QQmOF5KlwfxJ5IGXFIudkeLCdMABz03RcUXu+LCb24zmln8QW6aDjuGl4d4XPVLf2j+FnjelHTP7dvceAFbhA== - -"@types/overlayscrollbars@^1.9.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@types/overlayscrollbars/-/overlayscrollbars-1.12.0.tgz#98456caceca8ad73bd5bb572632a585074e70764" - integrity sha512-h/pScHNKi4mb+TrJGDon8Yb06ujFG0mSg12wIO0sWMUF3dQIe2ExRRdNRviaNt9IjxIiOfnRr7FsQAdHwK4sMg== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@types/qs@^6.9.0": - version "6.9.3" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.3.tgz#b755a0934564a200d3efdf88546ec93c369abd03" - integrity sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA== - -"@types/reach__router@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.5.tgz#14e1e981cccd3a5e50dc9e969a72de0b9d472f6d" - integrity sha512-h0NbqXN/tJuBY/xggZSej1SKQEstbHO7J/omt1tYoFGmj3YXOodZKbbqD4mNDh7zvEGYd7YFrac1LTtAr3xsYQ== - dependencies: - "@types/history" "*" - "@types/react" "*" - -"@types/react-color@^3.0.1": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.4.tgz#c63daf012ad067ac0127bdd86725f079d02082bd" - integrity sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw== - dependencies: - "@types/react" "*" - "@types/reactcss" "*" - -"@types/react-copy-to-clipboard@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz#7d9c2c0af52e2e8106ebe2b9fde4f02859af7a3d" - integrity sha512-CDuRrJWEIdfKFC4vbwpXT3vk0O4gA/I/Kxu/1npUvGc2Yey5swPvsgO3JEnQkIUwdnYUbwUYDE/fTFQVgqr4oA== - dependencies: - "@types/react" "*" - -"@types/react-dom@^16.0.3", "@types/react-dom@^16.9.8": - version "16.9.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" - integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== - dependencies: - "@types/react" "*" - -"@types/react-syntax-highlighter@11.0.4": - version "11.0.4" - resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz#d86d17697db62f98046874f62fdb3e53a0bbc4cd" - integrity sha512-9GfTo3a0PHwQeTVoqs0g5bS28KkSY48pp5659wA+Dp4MqceDEa8EHBqrllJvvtyusszyJhViUEap0FDvlk/9Zg== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^16.0.34": - version "16.9.35" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" - integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== - dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" - -"@types/react@^16.9.43": - version "16.9.43" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b" - integrity sha512-PxshAFcnJqIWYpJbLPriClH53Z2WlJcVZE+NP2etUtWQs2s7yIMj3/LDKZT/5CHJ/F62iyjVCDu2H3jHEXIxSg== - dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" - -"@types/reactcss@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/reactcss/-/reactcss-1.2.3.tgz#af28ae11bbb277978b99d04d1eedfd068ca71834" - integrity sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA== - dependencies: - "@types/react" "*" - -"@types/rfdc@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@types/rfdc/-/rfdc-1.1.0.tgz#1fc5ffdc679575e2ca31399d4ee75f353afdd37b" - integrity sha512-Ez0Pc0H6m8C2L3Wif9SR5YlJTB/UnZIq0N9G/dPB2fmGo42oLo95o73hHHtoGvUucMD4OdlquscflSuKCZE8qA== - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/tapable@*", "@types/tapable@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" - integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== - -"@types/uglify-js@*": - version "3.9.3" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.3.tgz#d94ed608e295bc5424c9600e6b8565407b6b4b6b" - integrity sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w== - dependencies: - source-map "^0.6.1" - -"@types/webpack-env@^1.15.2": - version "1.15.2" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.15.2.tgz#927997342bb9f4a5185a86e6579a0a18afc33b0a" - integrity sha512-67ZgZpAlhIICIdfQrB5fnDvaKFcDxpKibxznfYRVAT4mQE41Dido/3Ty+E3xGBmTogc5+0Qb8tWhna+5B8z1iQ== - -"@types/webpack-sources@*": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.0.tgz#e58f1f05f87d39a5c64cf85705bdbdbb94d4d57e" - integrity sha512-c88dKrpSle9BtTqR6ifdaxu1Lvjsl3C5OsfvuUbUwdXymshv1TkufUAXBajCCUM/f/TmnkZC/Esb03MinzSiXQ== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4.41.13", "@types/webpack@^4.41.8": - version "4.41.21" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" - integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "*" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^13.0.0": - version "13.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" - integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^2.10.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== - dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^2.10.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@uifabric/foundation@^7.7.39": - version "7.7.39" - resolved "https://registry.yarnpkg.com/@uifabric/foundation/-/foundation-7.7.39.tgz#d3eb9e0a86a31c631db8eb4c41397304e81d3327" - integrity sha512-dQvUcSbLFPAiLagn8gxPXMVB+I//3pz6QB313mQaNlOgeSw45S8Hm1b/sy/KoMqHl8zCJRmZInX3IYTpmhKrJQ== - dependencies: - "@uifabric/merge-styles" "^7.16.3" - "@uifabric/set-version" "^7.0.18" - "@uifabric/styling" "^7.14.5" - "@uifabric/utilities" "^7.24.5" - tslib "^1.10.0" - -"@uifabric/icons@^7.3.65": - version "7.3.65" - resolved "https://registry.yarnpkg.com/@uifabric/icons/-/icons-7.3.65.tgz#584e5b38cd709504344ef0001472da0707516dd0" - integrity sha512-aDnuRS1+su/slD4pkIzdZfrDQxYfgosGdildvgIAKX9HSShw4BZKH7KkqenAdmhY3iBZoV5htr+kGFZGiCjWTw== - dependencies: - "@uifabric/set-version" "^7.0.18" - "@uifabric/styling" "^7.14.5" - tslib "^1.10.0" - -"@uifabric/merge-styles@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@uifabric/merge-styles/-/merge-styles-7.16.3.tgz#4e55748a7991bbb419240d828c3e18afb4bb4df1" - integrity sha512-MmLPDRVbFENixb77K041y9VlSohcULbYXHlolYedNW+KCr1tyu700GunnBwOnWRhKOoKgStvBZZdy5X7ty41xQ== - dependencies: - "@uifabric/set-version" "^7.0.18" - tslib "^1.10.0" - -"@uifabric/react-hooks@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@uifabric/react-hooks/-/react-hooks-7.6.2.tgz#1685e13b2b40a53a07eca08314f38a8e0419b009" - integrity sha512-ETokkVskutNvaWWGUy6x4bOFyek1/tVfUygG1NyiqNs78S2qfl4Pt8pyZs5PDOcGNfPor5IIKSi519ZmRayCIw== - dependencies: - "@uifabric/set-version" "^7.0.18" - "@uifabric/utilities" "^7.24.5" - tslib "^1.10.0" - -"@uifabric/set-version@^7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@uifabric/set-version/-/set-version-7.0.18.tgz#50860f5b8c2fceaa46ed7e22af0307d4318ca232" - integrity sha512-W/SD7FzukXw1tz8zeD7fy548as1I048dA9tTnfbWMH9iSAbRG1LWmkw2+4BgyoOcEDumcQlpGY2818+atpndyw== - dependencies: - tslib "^1.10.0" - -"@uifabric/styling@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@uifabric/styling/-/styling-7.14.5.tgz#db2b91d403607214a9f37a8e3898779c76316bff" - integrity sha512-9HFZsBMXqW6uilhbL/z9Ih2JwqK0IVM1Z0HYAG9cYOciXvCZ6MUUi08nnkwRq2bkOe6vgaiCovsAh2HkOhb+0Q== - dependencies: - "@microsoft/load-themed-styles" "^1.10.26" - "@uifabric/merge-styles" "^7.16.3" - "@uifabric/set-version" "^7.0.18" - "@uifabric/utilities" "^7.24.5" - tslib "^1.10.0" - -"@uifabric/utilities@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@uifabric/utilities/-/utilities-7.24.5.tgz#b9c59d140133ede887085c41c85db78e4df46daf" - integrity sha512-pg8pzEwNoytofrcTx0LHBm9NZNgyJqTiF6AQV0sRbL1eF27sxGZXb9PD7PBWv0rRJ79Q0xyEr4PiEsLZ2k/d5w== - dependencies: - "@uifabric/merge-styles" "^7.16.3" - "@uifabric/set-version" "^7.0.18" - prop-types "^15.7.2" - tslib "^1.10.0" - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webpack-contrib/schema-utils@^1.0.0-beta.0": - version "1.0.0-beta.0" - resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65" - integrity sha512-LonryJP+FxQQHsjGBi6W786TQB1Oym+agTpY0c+Kj8alnIw+DLUJb6SI8Y1GHGhLCH1yPRrucjObUmxNICQ1pg== - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chalk "^2.3.2" - strip-ansi "^4.0.0" - text-table "^0.2.0" - webpack-log "^1.1.2" - -"@welldone-software/why-did-you-render@^4.2.7": - version "4.2.7" - resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-4.2.7.tgz#7731bc42ef44e146be3c39f026bc4826dd4e5699" - integrity sha512-La1INHiFnHi9USYGAaRsPhMXMOt2x3qee8cXxRija0h3tQJY1/XmSSelyXDMQkVtDDa61DMfk3H59gxWDmnqsA== - dependencies: - lodash "^4" - -"@xobotyi/scrollbar-width@1.9.5": - version "1.9.5" - resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" - integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -ace-builds@^1.4.12, ace-builds@^1.4.6: - version "1.4.12" - resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.4.12.tgz#888efa386e36f4345f40b5233fcc4fe4c588fae7" - integrity sha512-G+chJctFPiiLGvs3+/Mly3apXTcfgE45dT5yp12BcWZ1kUs+gm0qd3/fv4gsz6fVag4mM0moHVpjHDIgph6Psg== - -acorn-globals@^4.1.0, acorn-globals@^4.3.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== - -acorn@^5.5.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1, acorn@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== - -add-dom-event-listener@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" - integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== - dependencies: - object-assign "4.x" - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -adjust-sourcemap-loader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" - integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== - dependencies: - assert "1.4.1" - camelcase "5.0.0" - loader-utils "1.2.3" - object-path "0.11.4" - regex-parser "2.2.10" - -aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ahooks@^2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/ahooks/-/ahooks-2.9.2.tgz#b8d9dc0f4d6e8ed64f425714f5e000fa4e9b14bc" - integrity sha512-rylm2FTl3ud9lxi95EZU249fBECLXPC85KRbJiqx3MUR/FoCgf2QQjDfUEJjZQ3VVJmvb6fGL71Sqgk6hca1HA== - dependencies: - "@ahooksjs/use-request" "^2.8.1" - "@types/js-cookie" "^2.2.6" - dayjs "^1.9.1" - intersection-observer "^0.7.0" - js-cookie "^2.2.1" - lodash.debounce "^4.0.8" - lodash.isequal "^4.5.0" - lodash.throttle "^4.1.1" - resize-observer-polyfill "^1.5.1" - screenfull "^5.0.0" - -airbnb-js-shims@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz#db481102d682b98ed1daa4c5baa697a05ce5c040" - integrity sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ== - dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - array.prototype.flatmap "^1.2.1" - es5-shim "^4.5.13" - es6-shim "^0.35.5" - function.prototype.name "^1.1.0" - globalthis "^1.0.0" - object.entries "^1.1.0" - object.fromentries "^2.0.0 || ^1.0.0" - object.getownpropertydescriptors "^2.0.3" - object.values "^1.1.0" - promise.allsettled "^1.0.0" - promise.prototype.finally "^3.1.0" - string.prototype.matchall "^4.0.0 || ^3.0.1" - string.prototype.padend "^3.0.0" - string.prototype.padstart "^3.0.0" - symbol.prototype.description "^1.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.12.2: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - -ansi-colors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== - dependencies: - ansi-wrap "^0.1.0" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -ansi-to-html@^0.6.11: - version "0.6.14" - resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.14.tgz#65fe6d08bba5dd9db33f44a20aec331e0010dad8" - integrity sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA== - dependencies: - entities "^1.1.2" - -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - -antd@~4.8.5: - version "4.8.5" - resolved "https://registry.yarnpkg.com/antd/-/antd-4.8.5.tgz#eb0af8154a6dffb070c016b344d4b49b6910ce4f" - integrity sha512-QN8//mMToHo1u7gRThbVYKW9rqdN+2x/5PAk5d76MkeALezE3J2Tf4mm2+COUf0qUNiV0ZNtdcLY3weTVlKpDg== - dependencies: - "@ant-design/colors" "^5.0.0" - "@ant-design/css-animation" "^1.7.2" - "@ant-design/icons" "^4.3.0" - "@ant-design/react-slick" "~0.27.0" - "@babel/runtime" "^7.11.2" - array-tree-filter "^2.1.0" - classnames "^2.2.6" - copy-to-clipboard "^3.2.0" - lodash "^4.17.20" - moment "^2.25.3" - omit.js "^2.0.2" - rc-animate "~3.1.0" - rc-cascader "~1.4.0" - rc-checkbox "~2.3.0" - rc-collapse "~2.0.0" - rc-dialog "~8.4.0" - rc-drawer "~4.1.0" - rc-dropdown "~3.2.0" - rc-field-form "~1.17.0" - rc-image "~4.0.0" - rc-input-number "~6.1.0" - rc-mentions "~1.5.0" - rc-menu "~8.10.0" - rc-motion "^2.4.0" - rc-notification "~4.5.2" - rc-pagination "~3.1.0" - rc-picker "~2.4.1" - rc-progress "~3.1.0" - rc-rate "~2.9.0" - rc-resize-observer "^0.2.3" - rc-select "~11.4.0" - rc-slider "~9.6.1" - rc-steps "~4.1.0" - rc-switch "~3.2.0" - rc-table "~7.11.0" - rc-tabs "~11.7.0" - rc-textarea "~0.3.0" - rc-tooltip "~5.0.0" - rc-tree "~3.11.0" - rc-tree-select "~4.1.1" - rc-upload "~3.3.1" - rc-util "^5.1.0" - scroll-into-view-if-needed "^2.2.25" - warning "^4.0.3" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apache-crypt@^1.1.2: - version "1.2.5" - resolved "https://registry.yarnpkg.com/apache-crypt/-/apache-crypt-1.2.5.tgz#4eb6b6dbaed2041ce5bc2d802f4421f5fdadc25e" - integrity sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg== - dependencies: - unix-crypt-td-js "^1.1.4" - -apache-md5@^1.0.6: - version "1.1.7" - resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.7.tgz#dcef1802700cc231d60c5e08fd088f2f9b36375a" - integrity sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw== - -app-root-dir@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" - integrity sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg= - -append-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^1.0.0" - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argue-cli@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/argue-cli/-/argue-cli-1.2.1.tgz#27b2304f86370642ad2dcbb69f00fd728215073f" - integrity sha512-Em3HDMlqiVLNOgXUCYz5NG1mx/44aijsxUOO8elmfvAN4/3ar1S3WPTua7WGhsMbeQm8clOwpDZ09sN7C2FnOg== - -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-filter@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" - integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= - dependencies: - make-iterator "^1.0.0" - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-map@^2.0.0, arr-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" - integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= - dependencies: - make-iterator "^1.0.0" - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-each@^1.0.0, array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.0.3, array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" - -array-initial@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" - integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= - dependencies: - array-slice "^1.0.0" - is-number "^4.0.0" - -array-last@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" - integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== - dependencies: - is-number "^4.0.0" - -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - -array-tree-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" - integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -array.prototype.flatmap@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" - integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - -array.prototype.map@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" - integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.4" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@~2.0.3, asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -ast-types@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" - integrity sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA== - -ast-types@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" - integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-done@^1.2.0, async-done@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" - integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.2" - process-nextick-args "^2.0.0" - stream-exhaust "^1.0.1" - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-settle@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" - integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= - dependencies: - async-done "^1.2.2" - -async-validator@^3.0.3: - version "3.5.1" - resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.1.tgz#cd62b9688b2465f48420e27adb47760ab1b5559f" - integrity sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ== - -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - -async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.6.1: - version "9.8.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" - integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001061" - chalk "^2.4.2" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.30" - postcss-value-parser "^4.1.0" - -autoprefixer@^9.7.2: - version "9.8.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa" - integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001097" - colorette "^1.2.0" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== - -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -axobject-query@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" - integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-helper-evaluate-path@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz#a62fa9c4e64ff7ea5cea9353174ef023a900a67c" - integrity sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA== - -babel-helper-flip-expressions@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz#3696736a128ac18bc25254b5f40a22ceb3c1d3fd" - integrity sha1-NpZzahKKwYvCUlS19AoizrPB0/0= - -babel-helper-is-nodes-equiv@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" - integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ= - -babel-helper-is-void-0@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz#7d9c01b4561e7b95dbda0f6eee48f5b60e67313e" - integrity sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4= - -babel-helper-mark-eval-scopes@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz#d244a3bef9844872603ffb46e22ce8acdf551562" - integrity sha1-0kSjvvmESHJgP/tG4izorN9VFWI= - -babel-helper-remove-or-void@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz#a4f03b40077a0ffe88e45d07010dee241ff5ae60" - integrity sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA= - -babel-helper-to-multiple-sequence-expressions@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" - integrity sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA== - -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-loader@8.1.0, babel-loader@^8.0.6: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-add-react-displayname@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" - integrity sha1-M51M3be2X9YtHfnbn+BN4TQSK9U= - -babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: - version "10.0.33" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" - integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@emotion/hash" "0.8.0" - "@emotion/memoize" "0.7.4" - "@emotion/serialize" "^0.11.16" - babel-plugin-macros "^2.0.0" - babel-plugin-syntax-jsx "^6.18.0" - convert-source-map "^1.5.0" - escape-string-regexp "^1.0.5" - find-root "^1.1.0" - source-map "^0.5.7" - -babel-plugin-import@^1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-import/-/babel-plugin-import-1.13.0.tgz#c532fd533df9db53b47d4d4db3676090fc5c07a5" - integrity sha512-bHU8m0SrY89ub2hBBuYjbennOeH0YUYkVpH6jxKFk0uD8rhN+0jNHIPtXnac+Vn7N/hgkLGGDcIoYK7je3Hhew== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/runtime" "^7.0.0" - -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" - -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@2.8.0, babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-minify-builtins@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b" - integrity sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag== - -babel-plugin-minify-constant-folding@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz#f84bc8dbf6a561e5e350ff95ae216b0ad5515b6e" - integrity sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ== - dependencies: - babel-helper-evaluate-path "^0.5.0" - -babel-plugin-minify-dead-code-elimination@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz#1a0c68e44be30de4976ca69ffc535e08be13683f" - integrity sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg== - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-mark-eval-scopes "^0.4.3" - babel-helper-remove-or-void "^0.4.3" - lodash "^4.17.11" - -babel-plugin-minify-flip-comparisons@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz#00ca870cb8f13b45c038b3c1ebc0f227293c965a" - integrity sha1-AMqHDLjxO0XAOLPB68DyJyk8llo= - dependencies: - babel-helper-is-void-0 "^0.4.3" - -babel-plugin-minify-guarded-expressions@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz#818960f64cc08aee9d6c75bec6da974c4d621135" - integrity sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA== - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-flip-expressions "^0.4.3" - -babel-plugin-minify-infinity@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz#dfb876a1b08a06576384ef3f92e653ba607b39ca" - integrity sha1-37h2obCKBldjhO8/kuZTumB7Oco= - -babel-plugin-minify-mangle-names@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz#bcddb507c91d2c99e138bd6b17a19c3c271e3fd3" - integrity sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw== - dependencies: - babel-helper-mark-eval-scopes "^0.4.3" - -babel-plugin-minify-numeric-literals@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz#8e4fd561c79f7801286ff60e8c5fd9deee93c0bc" - integrity sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw= - -babel-plugin-minify-replace@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz#d3e2c9946c9096c070efc96761ce288ec5c3f71c" - integrity sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q== - -babel-plugin-minify-simplify@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz#f21613c8b95af3450a2ca71502fdbd91793c8d6a" - integrity sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A== - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-flip-expressions "^0.4.3" - babel-helper-is-nodes-equiv "^0.0.1" - babel-helper-to-multiple-sequence-expressions "^0.5.0" - -babel-plugin-minify-type-constructors@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz#1bc6f15b87f7ab1085d42b330b717657a2156500" - integrity sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA= - dependencies: - babel-helper-is-void-0 "^0.4.3" - -babel-plugin-named-asset-import@^0.3.1, babel-plugin-named-asset-import@^0.3.6: - version "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-react-docgen@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.1.0.tgz#1dfa447dac9ca32d625a123df5733a9e47287c26" - integrity sha512-vzpnBlfGv8XOhJM2zbPyyqw2OLEbelgZZsaaRRTpVwNKuYuc+pUg4+dy7i9gCRms0uOQn4osX571HRcCJMJCmA== - dependencies: - lodash "^4.17.15" - react-docgen "^5.0.0" - recast "^0.14.7" - -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" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-transform-inline-consecutive-adds@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz#323d47a3ea63a83a7ac3c811ae8e6941faf2b0d1" - integrity sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE= - -babel-plugin-transform-member-expression-literals@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf" - integrity sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8= - -babel-plugin-transform-merge-sibling-variables@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae" - integrity sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4= - -babel-plugin-transform-minify-booleans@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198" - integrity sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg= - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-property-literals@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39" - integrity sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk= - dependencies: - esutils "^2.0.2" - -babel-plugin-transform-react-remove-prop-types@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-plugin-transform-regexp-constructors@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz#58b7775b63afcf33328fae9a5f88fbd4fb0b4965" - integrity sha1-WLd3W2OvzzMyj66aX4j71PsLSWU= - -babel-plugin-transform-remove-console@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780" - integrity sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A= - -babel-plugin-transform-remove-debugger@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2" - integrity sha1-QrcnYxyXl44estGZp67IShgznvI= - -babel-plugin-transform-remove-undefined@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz#80208b31225766c630c97fa2d288952056ea22dd" - integrity sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ== - dependencies: - babel-helper-evaluate-path "^0.5.0" - -babel-plugin-transform-simplify-comparison-operators@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9" - integrity sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk= - -babel-plugin-transform-undefined-to-void@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" - integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= - -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" - -"babel-preset-minify@^0.5.0 || 0.6.0-alpha.5": - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz#25f5d0bce36ec818be80338d0e594106e21eaa9f" - integrity sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg== - dependencies: - babel-plugin-minify-builtins "^0.5.0" - babel-plugin-minify-constant-folding "^0.5.0" - babel-plugin-minify-dead-code-elimination "^0.5.1" - babel-plugin-minify-flip-comparisons "^0.4.3" - babel-plugin-minify-guarded-expressions "^0.4.4" - babel-plugin-minify-infinity "^0.4.3" - babel-plugin-minify-mangle-names "^0.5.0" - babel-plugin-minify-numeric-literals "^0.4.3" - babel-plugin-minify-replace "^0.5.0" - babel-plugin-minify-simplify "^0.5.1" - babel-plugin-minify-type-constructors "^0.4.3" - babel-plugin-transform-inline-consecutive-adds "^0.4.3" - babel-plugin-transform-member-expression-literals "^6.9.4" - babel-plugin-transform-merge-sibling-variables "^6.9.4" - babel-plugin-transform-minify-booleans "^6.9.4" - babel-plugin-transform-property-literals "^6.9.4" - babel-plugin-transform-regexp-constructors "^0.4.3" - babel-plugin-transform-remove-console "^6.9.4" - babel-plugin-transform-remove-debugger "^6.9.4" - babel-plugin-transform-remove-undefined "^0.5.0" - babel-plugin-transform-simplify-comparison-operators "^6.9.4" - babel-plugin-transform-undefined-to-void "^6.9.4" - lodash "^4.17.11" - -babel-preset-react-app@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" - integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== - dependencies: - "@babel/core" "7.9.0" - "@babel/plugin-proposal-class-properties" "7.8.3" - "@babel/plugin-proposal-decorators" "7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.8.3" - "@babel/plugin-proposal-numeric-separator" "7.8.3" - "@babel/plugin-proposal-optional-chaining" "7.9.0" - "@babel/plugin-transform-flow-strip-types" "7.9.0" - "@babel/plugin-transform-react-display-name" "7.8.3" - "@babel/plugin-transform-runtime" "7.9.0" - "@babel/preset-env" "7.9.0" - "@babel/preset-react" "7.9.1" - "@babel/preset-typescript" "7.9.0" - "@babel/runtime" "7.9.0" - babel-plugin-macros "2.8.0" - babel-plugin-transform-react-remove-prop-types "0.4.24" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -bach@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" - integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= - dependencies: - arr-filter "^1.1.1" - arr-flatten "^1.0.1" - arr-map "^2.0.0" - array-each "^1.0.0" - array-initial "^1.0.0" - array-last "^1.1.1" - async-done "^1.2.2" - async-settle "^1.0.0" - now-and-later "^2.0.0" - -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -basic-auth@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - -batch-processor@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" - integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg= - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bcryptjs@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" - integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= - -better-opn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.0.0.tgz#c70d198e51164bdc220306a28a885d9ac7a14c44" - integrity sha512-PPbGRgO/K0LowMHbH/JNvaV3qY3Vt+A2nH28fzJxy16h/DfR5OsVti6ldGl6S9SMsyUqT13sltikiAVtI6tKLA== - dependencies: - open "^7.0.3" - -bfj@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" - integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== - dependencies: - bluebird "^3.5.5" - check-types "^8.0.3" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.3.5, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -bowser@^1.7.3: - version "1.9.4" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" - integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== - -boxen@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.2" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist-useragent-regexp@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/browserslist-useragent-regexp/-/browserslist-useragent-regexp-2.1.0.tgz#2485686e08ff9699ce298bb8ab4cc6b1bb4da7d3" - integrity sha512-tp2GxiN2g5/5T5TR5VtPc2bUYyHBrvdnoblJlKiF814kB+/U8++Qk8a/znxNVUNHLqEzjyX1Y2X5QmSrXSZJtQ== - dependencies: - "@babel/runtime-corejs3" "^7.9.6" - "@types/node" "^14.0.4" - argue-cli "^1.2.0" - browserslist "^4.5.6" - chalk "^4.0.0" - easy-table "^1.1.1" - useragent "^2.3.0" - -browserslist@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" - integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== - dependencies: - caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.378" - node-releases "^1.1.52" - pkg-up "^3.1.0" - -browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.5.6, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.12.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== - dependencies: - caniuse-lite "^1.0.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.0.3: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bulma@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.9.0.tgz#948c5445a49e9d7546f0826cb3820d17178a814f" - integrity sha512-rV75CJkubNUroAt0qCRkjznZLoaXq/ctfMXsMvKSL84UetbSyx5REl96e8GoQ04G4Tkw0XF3STECffTOQrbzOQ== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - -cacache@^15.0.4: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.0" - tar "^6.0.2" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== - dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" - -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - -camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== - -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" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: - version "1.0.30001066" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz#0a8a58a10108f2b9bf38e7b65c237b12fd9c5f04" - integrity sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw== - -caniuse-lite@^1.0.30001097: - version "1.0.30001099" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e" - integrity sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -case-sensitive-paths-webpack-plugin@2.3.0, case-sensitive-paths-webpack-plugin@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" - integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" - integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-entities-legacy@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" - integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== - -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-types@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" - integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== - -chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.3.0, chokidar@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" - integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-table3@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== - dependencies: - object-assign "^4.1.0" - string-width "^4.2.0" - optionalDependencies: - colors "^1.1.2" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -clipboard@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" - integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg== - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - -cliui@^3.0.3, cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collapse-white-space@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" - integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== - -collection-map@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" - integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= - dependencies: - arr-map "^2.0.2" - for-own "^1.0.0" - make-iterator "^1.0.0" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - 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== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "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.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -colorette@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== - -colors@^1.1.2, colors@latest: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -comma-separated-tokens@^1.0.0: - version "1.0.8" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" - integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== - -commander@2, commander@^2.11.0, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -compare-versions@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" - integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -compute-scroll-into-view@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" - integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0, concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -confusing-browser-globals@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -connect@^3.6.6: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -consola@^2.10.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.12.1.tgz#88e9311a02cb88a7f6f9488239dd30b6ba99cbb0" - integrity sha512-aEkkju9ZcEa9y2MhzNhfmTUws/CEZZ0LKu0FxftSU3HygPfVMMIMSYyYct+xBN6XNRhsaDZjw2HAv3m2ammXSA== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-props@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" - integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== - dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" - -copy-to-clipboard@^3, copy-to-clipboard@^3.0.8, copy-to-clipboard@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== - dependencies: - browserslist "^4.8.5" - semver "7.0.0" - -core-js-pure@^3.0.0, core-js-pure@^3.0.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= - -core-js@^2.4.0, core-js@^2.6.5: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - -core-js@^3.0.1, core-js@^3.0.4, core-js@^3.5.0, core-js@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cors@latest: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-react-context@0.3.0, create-react-context@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" - integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== - dependencies: - gud "^1.0.0" - warning "^4.0.3" - -cross-spawn@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - 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" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" - -css-in-js-utils@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" - integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== - dependencies: - hyphenate-style-name "^1.0.2" - isobject "^3.0.1" - -css-loader@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" - integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.23" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.1" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.2" - schema-utils "^2.6.0" - -css-loader@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" - integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^2.7.0" - semver "^6.3.0" - -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-to-react-native@^2.0.3: - version "2.3.2" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.2.tgz#e75e2f8f7aa385b4c3611c52b074b70a002f2e7d" - integrity sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^3.3.0" - -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" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39, css-tree@^1.0.0-alpha.28: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== - dependencies: - css-tree "1.0.0-alpha.39" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^1.0.0, cssstyle@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" - -csstype@^2.2.0, csstype@^2.5.5: - version "2.6.10" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" - integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== - -csstype@^2.5.7: - version "2.6.11" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" - integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== - -cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" - integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= - -customize-cra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/customize-cra/-/customize-cra-1.0.0.tgz#73286563631aa08127ad4d30a2e3c89cf4e93c8d" - integrity sha512-DbtaLuy59224U+xCiukkxSq8clq++MOtJ1Et7LED1fLszWe88EoblEYFBJ895sB1mC6B4uu3xPT/IjClELhMbA== - dependencies: - lodash.flow "^3.5.0" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" - integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== - -d3-axis@1: - version "1.0.12" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" - integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== - -d3-brush@1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" - integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3-chord@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" - integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== - dependencies: - d3-array "1" - d3-path "1" - -d3-collection@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" - integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== - -d3-color@1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" - integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== - -d3-contour@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" - integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== - dependencies: - d3-array "^1.1.1" - -d3-dispatch@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" - integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== - -d3-drag@1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" - integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== - dependencies: - d3-dispatch "1" - d3-selection "1" - -d3-dsv@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" - integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== - dependencies: - commander "2" - iconv-lite "0.4" - rw "1" - -d3-ease@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" - integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== - -d3-fetch@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz#957c8fbc6d4480599ba191b1b2518bf86b3e1be2" - integrity sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA== - dependencies: - d3-dsv "1" - -d3-force@1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" - integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" - -d3-format@1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" - integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== - -d3-geo@1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.0.tgz#58ddbdf4d9db5f199db69d1b7c93dca6454a6f24" - integrity sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w== - dependencies: - d3-array "1" - -d3-hierarchy@1: - version "1.1.9" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" - integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== - -d3-interpolate@1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" - integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== - dependencies: - d3-color "1" - -d3-path@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -d3-polygon@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" - integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== - -d3-quadtree@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" - integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== - -d3-random@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" - integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== - -d3-scale-chromatic@1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" - integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== - dependencies: - d3-color "1" - d3-interpolate "1" - -d3-scale@2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" - integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== - dependencies: - d3-array "^1.2.0" - d3-collection "1" - d3-format "1" - d3-interpolate "1" - d3-time "1" - d3-time-format "2" - -d3-selection@1, d3-selection@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" - integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== - -d3-shape@1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -d3-time-format@2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" - integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== - dependencies: - d3-time "1" - -d3-time@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" - integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== - -d3-timer@1: - version "1.0.10" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" - integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== - -d3-transition@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" - integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== - dependencies: - d3-color "1" - d3-dispatch "1" - d3-ease "1" - d3-interpolate "1" - d3-selection "^1.1.0" - d3-timer "1" - -d3-voronoi@1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" - integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== - -d3-zoom@1: - version "1.8.3" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" - integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/d3/-/d3-5.16.0.tgz#9c5e8d3b56403c79d4ed42fbd62f6113f199c877" - integrity sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw== - dependencies: - d3-array "1" - d3-axis "1" - d3-brush "1" - d3-chord "1" - d3-collection "1" - d3-color "1" - d3-contour "1" - d3-dispatch "1" - d3-drag "1" - d3-dsv "1" - d3-ease "1" - d3-fetch "1" - d3-force "1" - d3-format "1" - d3-geo "1" - d3-hierarchy "1" - d3-interpolate "1" - d3-path "1" - d3-polygon "1" - d3-quadtree "1" - d3-random "1" - d3-scale "2" - d3-scale-chromatic "1" - d3-selection "1" - d3-shape "1" - d3-time "1" - d3-time-format "2" - d3-timer "1" - d3-transition "1" - d3-voronoi "1" - d3-zoom "1" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" - integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.0.0, data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -date-fns@^2.15.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" - integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== - -dayjs@^1.8.30, dayjs@^1.9.6: - version "1.9.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" - integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== - -dayjs@^1.9.1: - version "1.9.7" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.7.tgz#4b260bb17dceed2d5f29038dfee03c65a6786fc0" - integrity sha512-IC877KBdMhBrCfBfJXHQlo0G8keZ0Opy7YIIq5QKtUbCuHMzim8S4PyiVK4YmihI3iOF9lhfUBW4AQWHTR5WHA== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-equal@^1.0.1, deep-equal@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deep-object-diff@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a" - integrity sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "http://mirrors.cloud.tencent.com/npm/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" - integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== - dependencies: - kind-of "^5.0.2" - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -default-resolution@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" - integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -detect-port@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" - integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -diff-match-patch@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" - integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== - -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-align@^1.7.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" - integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0, dom-serializer@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domhandler@^3.0, domhandler@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" - integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== - dependencies: - domelementtype "^2.0.1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16" - integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg== - dependencies: - dom-serializer "^0.2.1" - domelementtype "^2.0.1" - domhandler "^3.0.0" - -dot-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" - integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== - dependencies: - no-case "^3.0.3" - tslib "^1.10.0" - -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - -dotenv-defaults@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" - integrity sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q== - dependencies: - dotenv "^6.2.0" - -dotenv-expand@5.1.0, dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv-webpack@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz#7ca79cef2497dd4079d43e81e0796bc9d0f68a5e" - integrity sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg== - dependencies: - dotenv-defaults "^1.0.2" - -dotenv@8.2.0, dotenv@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -dotenv@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== - -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexer@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -each-props@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" - integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== - dependencies: - is-plain-object "^2.0.1" - object.defaults "^1.1.0" - -easy-table@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.1.1.tgz#c1b9b9ad68a017091a1c235e4bcba277540e143f" - integrity sha512-C9Lvm0WFcn2RgxbMnTbXZenMIWcBtkzMr+dWqq/JsVoGFSVUVlPqeOa5LP5kM0I3zoOazFpckOEb2/0LDFfToQ== - dependencies: - ansi-regex "^3.0.0" - optionalDependencies: - wcwidth ">=1.0.1" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -echarts-for-react@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/echarts-for-react/-/echarts-for-react-2.0.16.tgz#8134a53dff90882c1e6a95c45ceab21e00f6c9f5" - integrity sha512-VmHCktay2qKt/+wpL/C7thbvIa7dYBEey0/U4Zaqo+qeA4wx+uiCd5NeCsPIhD/0Pv+2qqNswqiNiUCtcgccOw== - dependencies: - fast-deep-equal "^2.0.1" - size-sensor "^1.0.0" - -echarts@^4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/echarts/-/echarts-4.8.0.tgz#b2c1cfb9229b13d368ee104fc8eea600b574d4c4" - integrity sha512-YwShpug8fWngj/RlgxDaYrLBoD+LsZUArrusjNPHpAF+is+gGe38xx4W848AwWMGoi745t3OXM52JedNrv+F6g== - dependencies: - zrender "4.3.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -ejs@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.3.tgz#514d967a8894084d18d3d47bd169a1c0560f093d" - integrity sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg== - dependencies: - jake "^10.6.1" - -electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413: - version "1.3.452" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.452.tgz#ef6877702722471aa044a2429336cd450629934d" - integrity sha512-IdbjgCEqDvcU/1kUQa6C49I2NZOY3SBmU9Eus7mdFdJJBqn0Lg1Epfi/T4nqVcxTNBEGhcjwMhY1EysMBsXZrw== - -element-resize-detector@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" - integrity sha512-BdFsPepnQr9fznNPF9nF4vQ457U/ZJXQDSNF1zBe7yaga8v9AdZf3/NElYxFdUh7SitSGt040QygiTo6dtatIw== - dependencies: - batch-processor "1.0.0" - -elliptic@^6.0.0, elliptic@^6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1, emoji-regex@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -emotion-theming@^10.0.19: - version "10.0.27" - resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.0.27.tgz#1887baaec15199862c89b1b984b79806f2b9ab10" - integrity sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw== - dependencies: - "@babel/runtime" "^7.5.5" - "@emotion/weak-memoize" "0.2.5" - hoist-non-react-statics "^3.3.0" - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -endent@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/endent/-/endent-2.0.1.tgz#fb18383a3f37ae3213a5d9f6c4a880d1061eb4c5" - integrity sha512-mADztvcC+vCk4XEZaCz6xIPO2NHQuprv5CAEjuVAu6aZwqAj7nVNlMyl1goPFYqCCpS2OJV9jwpumJLkotZrNw== - dependencies: - dedent "^0.7.0" - fast-json-parse "^1.0.3" - objectorarray "^1.0.4" - -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^1.1.1, entities@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" - integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== - -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-abstract@^1.17.0-next.0, es-abstract@^1.17.4: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== - dependencies: - es-abstract "^1.17.4" - has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" - is-string "^1.0.5" - isarray "^2.0.5" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es5-shim@^4.5.13: - version "4.5.14" - resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.14.tgz#90009e1019d0ea327447cb523deaff8fe45697ef" - integrity sha512-7SwlpL+2JpymWTt8sNLuC2zdhhc+wrfe5cMPI2j0o6WsPdfAiPwmFy2f0AocPB4RQVBOZ9kNTgi5YF7TdhkvEg== - -es6-iterator@2.0.3, es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-shim@^0.35.5: - version "0.35.5" - resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" - integrity sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg== - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -esbuild-android-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.13.tgz#da07b5fb2daf7d83dcd725f7cf58a6758e6e702a" - integrity sha512-T02aneWWguJrF082jZworjU6vm8f4UQ+IH2K3HREtlqoY9voiJUwHLRL6khRlsNLzVglqgqb7a3HfGx7hAADCQ== - -esbuild-darwin-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.13.tgz#e94e9fd3b4b5455a2e675cd084a19a71b6904bbf" - integrity sha512-wkaiGAsN/09X9kDlkxFfbbIgR78SNjMOfUhoel3CqKBDsi9uZhw7HBNHNxTzYUK8X8LAKFpbODgcRB3b/I8gHA== - -esbuild-darwin-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.13.tgz#8c320eafbb3ba2c70d8062128c5b71503e342471" - integrity sha512-b02/nNKGSV85Gw9pUCI5B48AYjk0vFggDeom0S6QMP/cEDtjSh1WVfoIFNAaLA0MHWfue8KBwoGVsN7rBshs4g== - -esbuild-freebsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.13.tgz#ce0ca5b8c4c274cfebc9326f9b316834bd9dd151" - integrity sha512-ALgXYNYDzk9YPVk80A+G4vz2D22Gv4j4y25exDBGgqTcwrVQP8rf/rjwUjHoh9apP76oLbUZTmUmvCMuTI1V9A== - -esbuild-freebsd-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.13.tgz#463da17562fdcfdf03b3b94b28497d8d8dcc8f62" - integrity sha512-uFvkCpsZ1yqWQuonw5T1WZ4j59xP/PCvtu6I4pbLejhNo4nwjW6YalqnBvBSORq5/Ifo9S/wsIlVHzkzEwdtlw== - -esbuild-linux-32@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.13.tgz#2035793160da2c4be48a929e5bafb14a31789acc" - integrity sha512-yxR9BBwEPs9acVEwTrEE2JJNHYVuPQC9YGjRfbNqtyfK/vVBQYuw8JaeRFAvFs3pVJdQD0C2BNP4q9d62SCP4w== - -esbuild-linux-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.13.tgz#fbe4802a8168c6d339d0749f977b099449b56f22" - integrity sha512-kzhjlrlJ+6ESRB/n12WTGll94+y+HFeyoWsOrLo/Si0s0f+Vip4b8vlnG0GSiS6JTsWYAtGHReGczFOaETlKIw== - -esbuild-linux-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.13.tgz#f08d98df28d436ed4aad1529615822bb74d4d978" - integrity sha512-KMrEfnVbmmJxT3vfTnPv/AiXpBFbbyExH13BsUGy1HZRPFMi5Gev5gk8kJIZCQSRfNR17aqq8sO5Crm2KpZkng== - -esbuild-linux-arm@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.13.tgz#6f968c3a98b64e30c80b212384192d0cfcb32e7f" - integrity sha512-hXub4pcEds+U1TfvLp1maJ+GHRw7oizvzbGRdUvVDwtITtjq8qpHV5Q5hWNNn6Q+b3b2UxF03JcgnpzCw96nUQ== - -esbuild-linux-mips64le@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.13.tgz#690c78dc4725efe7d06a1431287966fbf7774c7f" - integrity sha512-cJT9O1LYljqnnqlHaS0hdG73t7hHzF3zcN0BPsjvBq+5Ad47VJun+/IG4inPhk8ta0aEDK6LdP+F9299xa483w== - -esbuild-linux-ppc64le@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.13.tgz#7ec9048502de46754567e734aae7aebd2df6df02" - integrity sha512-+rghW8st6/7O6QJqAjVK3eXzKkZqYAw6LgHv7yTMiJ6ASnNvghSeOcIvXFep3W2oaJc35SgSPf21Ugh0o777qQ== - -esbuild-netbsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.13.tgz#439bdaefffa03a8fa84324f5d83d636f548a2de3" - integrity sha512-A/B7rwmzPdzF8c3mht5TukbnNwY5qMJqes09ou0RSzA5/jm7Jwl/8z853ofujTFOLhkNHUf002EAgokzSgEMpQ== - -esbuild-openbsd-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.13.tgz#c9958e5291a00a3090c1ec482d6bcdf2d5b5d107" - integrity sha512-szwtuRA4rXKT3BbwoGpsff6G7nGxdKgUbW9LQo6nm0TVCCjDNDC/LXxT994duIW8Tyq04xZzzZSW7x7ttDiw1w== - -esbuild-sunos-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.13.tgz#ac9ead8287379cd2f6d00bd38c5997fda9c1179e" - integrity sha512-ihyds9O48tVOYF48iaHYUK/boU5zRaLOXFS+OOL3ceD39AyHo46HVmsJLc7A2ez0AxNZCxuhu+P9OxfPfycTYQ== - -esbuild-windows-32@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.13.tgz#a3820fc86631ca594cb7b348514b5cc3f058cfd6" - integrity sha512-h2RTYwpG4ldGVJlbmORObmilzL8EECy8BFiF8trWE1ZPHLpECE9//J3Bi+W3eDUuv/TqUbiNpGrq4t/odbayUw== - -esbuild-windows-64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.13.tgz#1da748441f228d75dff474ddb7d584b81887323c" - integrity sha512-oMrgjP4CjONvDHe7IZXHrMk3wX5Lof/IwFEIbwbhgbXGBaN2dke9PkViTiXC3zGJSGpMvATXVplEhlInJ0drHA== - -esbuild-windows-arm64@0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.13.tgz#06dfa52a6b178a5932a9a6e2fdb240c09e6da30c" - integrity sha512-6fsDfTuTvltYB5k+QPah/x7LrI2+OLAJLE3bWLDiZI6E8wXMQU+wLqtEO/U/RvJgVY1loPs5eMpUBpVajczh1A== - -esbuild@^0.13.13: - version "0.13.13" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.13.tgz#0b5399c20f219f663c8c1048436fb0f59ab17a41" - integrity sha512-Z17A/R6D0b4s3MousytQ/5i7mTCbaF+Ua/yPfoe71vdTv4KBvVAvQ/6ytMngM2DwGJosl8WxaD75NOQl2QF26Q== - optionalDependencies: - esbuild-android-arm64 "0.13.13" - esbuild-darwin-64 "0.13.13" - esbuild-darwin-arm64 "0.13.13" - esbuild-freebsd-64 "0.13.13" - esbuild-freebsd-arm64 "0.13.13" - esbuild-linux-32 "0.13.13" - esbuild-linux-64 "0.13.13" - esbuild-linux-arm "0.13.13" - esbuild-linux-arm64 "0.13.13" - esbuild-linux-mips64le "0.13.13" - esbuild-linux-ppc64le "0.13.13" - esbuild-netbsd-64 "0.13.13" - esbuild-openbsd-64 "0.13.13" - esbuild-sunos-64 "0.13.13" - esbuild-windows-32 "0.13.13" - esbuild-windows-64 "0.13.13" - esbuild-windows-arm64 "0.13.13" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@^1.11.0, escodegen@^1.9.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-react-app@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" - integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== - dependencies: - confusing-browser-globals "^1.0.9" - -eslint-import-resolver-node@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" - integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-loader@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" - integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== - dependencies: - fs-extra "^8.1.0" - loader-fs-cache "^1.0.2" - loader-utils "^1.2.3" - object-hash "^2.0.1" - schema-utils "^2.6.1" - -eslint-module-utils@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== - dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" - -eslint-plugin-flowtype@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" - integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== - dependencies: - lodash "^4.17.15" - -eslint-plugin-import@2.20.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== - dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" - -eslint-plugin-jsx-a11y@6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== - dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.2.1" - -eslint-plugin-react-hooks@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" - integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== - -eslint-plugin-react@7.19.0: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== - dependencies: - array-includes "^3.1.1" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" - string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" - integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== - -eslint@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -esm@^3.2.25: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-stream@3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - -eventemitter2@^6.4.4: - version "6.4.4" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" - integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== - -eventemitter3@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" - integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^3.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== - dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" - -express@^4.16.3, express@^4.17.0, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fancy-log@^1.3.2, fancy-log@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - -fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-equals@^1.6.0: - version "1.6.3" - resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-1.6.3.tgz#84839a1ce20627c463e1892f2ae316380c81b459" - integrity sha512-4WKW0AL5+WEqO0zWavAfYGY1qwLsBgE//DN4TTcVEN2UlINgkv9b3vm2iHicoenWKSX9mKWmGOsU/iI5IST7pQ== - -fast-glob@^2.0.2: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-json-parse@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" - integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-shallow-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" - integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== - -fast-stringify@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fast-stringify/-/fast-stringify-1.1.2.tgz#f109b792d54343aec271b47882598d279402401d" - integrity sha512-SfslXjiH8km0WnRiuPfpUKwlZjW5I878qsOm+2x8x3TgqmElOOLh1rgJFb+PolNdNRK3r8urEefqx0wt7vx1dA== - -fastest-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" - integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= - -fault@^1.0.0, fault@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - -faye-websocket@0.11.x: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fbjs@^0.8.9: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" - -file-loader@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" - integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.5" - -file-system-cache@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-1.0.5.tgz#84259b36a2bbb8d3d6eb1021d3132ffe64cfff4f" - integrity sha1-hCWbNqK7uNPW6xAh0xMv/mTP/08= - dependencies: - bluebird "^3.3.5" - fs-extra "^0.30.0" - ramda "^0.21.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" - integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== - dependencies: - minimatch "^3.0.4" - -filesize@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" - integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== - -filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2, finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-versions@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" - integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== - dependencies: - semver-regex "^2.0.0" - -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -fined@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" - integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -fork-ts-checker-webpack-plugin@^4.1.4: - version "4.1.6" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" - integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== - dependencies: - "@babel/code-frame" "^7.5.5" - chalk "^2.4.1" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= - dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" - integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - functions-have-names "^1.2.0" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -functions-have-names@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" - integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== - -fuse.js@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.6.1.tgz#7de85fdd6e1b3377c23ce010892656385fd9b10c" - integrity sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw== - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-promise@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" - integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== - dependencies: - "@types/glob" "*" - -glob-stream@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= - dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" - is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob-watcher@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" - integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== - dependencies: - anymatch "^2.0.0" - async-done "^1.2.0" - chokidar "^2.0.0" - is-negated-glob "^1.0.0" - just-debounce "^1.0.0" - object.defaults "^1.1.0" - -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global@^4.3.2, global@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globalthis@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9" - integrity sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw== - dependencies: - define-properties "^1.1.3" - -globby@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -glogg@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" - integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== - dependencies: - sparkles "^1.0.0" - -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= - dependencies: - delegate "^3.1.2" - -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gud@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" - integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== - -gulp-cli@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.1.tgz#376e427661b7996430a89d71c15df75defa3360a" - integrity sha512-yEMxrXqY8mJFlaauFQxNrCpzWJThu0sH1sqlToaTOT063Hub9s/Nt2C+GSLe6feQ/IMWrHvGOOsyES7CQc9O+A== - dependencies: - ansi-colors "^1.0.1" - archy "^1.0.0" - array-sort "^1.0.0" - color-support "^1.1.3" - concat-stream "^1.6.0" - copy-props "^2.0.1" - fancy-log "^1.3.2" - gulplog "^1.0.0" - interpret "^1.1.0" - isobject "^3.0.1" - liftoff "^3.1.0" - matchdep "^2.0.0" - mute-stdout "^1.0.0" - pretty-hrtime "^1.0.0" - replace-homedir "^1.0.0" - semver-greatest-satisfied-range "^1.1.0" - v8flags "^3.0.1" - yargs "^7.1.0" - -gulp-cli@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" - integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== - dependencies: - ansi-colors "^1.0.1" - archy "^1.0.0" - array-sort "^1.0.0" - color-support "^1.1.3" - concat-stream "^1.6.0" - copy-props "^2.0.1" - fancy-log "^1.3.2" - gulplog "^1.0.0" - interpret "^1.4.0" - isobject "^3.0.1" - liftoff "^3.1.0" - matchdep "^2.0.0" - mute-stdout "^1.0.0" - pretty-hrtime "^1.0.0" - replace-homedir "^1.0.0" - semver-greatest-satisfied-range "^1.1.0" - v8flags "^3.2.0" - yargs "^7.1.0" - -gulp-shell@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/gulp-shell/-/gulp-shell-0.8.0.tgz#0ed4980de1d0c67e5f6cce971d7201fd0be50555" - integrity sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ== - dependencies: - chalk "^3.0.0" - fancy-log "^1.3.3" - lodash.template "^4.5.0" - plugin-error "^1.0.1" - through2 "^3.0.1" - tslib "^1.10.0" - -gulp@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" - integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== - dependencies: - glob-watcher "^5.0.3" - gulp-cli "^2.2.0" - undertaker "^1.2.1" - vinyl-fs "^3.0.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= - dependencies: - glogg "^1.0.0" - -gzip-size@5.1.1, gzip-size@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -harmony-reflect@^1.4.6: - version "1.6.1" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" - integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" - integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== - -hastscript@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" - integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== - dependencies: - comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.0.0" - property-information "^5.0.0" - space-separated-tokens "^1.0.0" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight-words-core@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" - integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== - -highlight.js@^10.1.1, highlight.js@~10.1.0: - version "10.1.2" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.1.2.tgz#c20db951ba1c22c055010648dfffd7b2a968e00c" - integrity sha512-Q39v/Mn5mfBlMff9r+zzA+gWxRsCRKwEMvYTiisLr/XUiFI/4puWt0Ojdko3R3JCNWGdOWaA5g/Yxqa23kC5AA== - -highlight.js@~9.15.0, highlight.js@~9.15.1: - version "9.15.10" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" - integrity sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw== - -history@5.0.0-beta.9: - version "5.0.0-beta.9" - resolved "https://registry.yarnpkg.com/history/-/history-5.0.0-beta.9.tgz#fe230706c18c5f7f132001e55215e71b4aaab6d6" - integrity sha512-iLpu0fzu3iM041KDMNsawyB6YZjPLB+Bn+Pvq2lMnY7xxpxDIYvEz7r4et3Na8FthWzbYeukjl74ZKGWXcLhIA== - dependencies: - "@babel/runtime" "^7.7.6" - -history@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.0.0.tgz#0cabbb6c4bbf835addb874f8259f6d25101efd08" - integrity sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg== - dependencies: - "@babel/runtime" "^7.7.6" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" - integrity sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs= - -hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: - 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== - dependencies: - react-is "^16.7.0" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-entities@^1.2.0, html-entities@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-parse-stringify2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" - integrity sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o= - dependencies: - void-elements "^2.0.1" - -html-to-react@^1.3.4: - version "1.4.3" - resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.3.tgz#1430a1cb581ef29533892ec70a2fdc4554b17ffd" - integrity sha512-txe09A3vxW8yEZGJXJ1is5gGDfBEVACmZDSgwDyH5EsfRdOubBwBCg63ZThZP0xBn0UE4FyvMXZXmohusCxDcg== - dependencies: - domhandler "^3.0" - htmlparser2 "^4.1.0" - lodash.camelcase "^4.3.0" - ramda "^0.27" - -html-webpack-plugin@4.0.0-beta.11: - version "4.0.0-beta.11" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" - integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== - dependencies: - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -html-webpack-plugin@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd" - integrity sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - -http-auth@3.1.x: - version "3.1.3" - resolved "https://registry.yarnpkg.com/http-auth/-/http-auth-3.1.3.tgz#945cfadd66521eaf8f7c84913d377d7b15f24e31" - integrity sha1-lFz63WZSHq+PfISRPTd9exXyTjE= - dependencies: - apache-crypt "^1.1.2" - apache-md5 "^1.0.6" - bcryptjs "^2.3.0" - uuid "^3.0.0" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy-middleware@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.0.5.tgz#4c6e25d95a411e3d750bc79ccf66290675176dc2" - integrity sha512-CKzML7u4RdGob8wuKI//H8Ein6wNTEQR7yjVEzPbhBLGdOfkfvgTnp2HLnniKBDP9QW4eG10/724iTWLBeER3g== - dependencies: - "@types/http-proxy" "^1.17.4" - http-proxy "^1.18.1" - is-glob "^4.0.1" - lodash "^4.17.19" - micromatch "^4.0.2" - -http-proxy@^1.17.0, http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -husky@^4.2.5: - version "4.2.5" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" - integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== - dependencies: - chalk "^4.0.0" - ci-info "^2.0.0" - compare-versions "^3.6.0" - cosmiconfig "^6.0.0" - find-versions "^3.2.0" - opencollective-postinstall "^2.0.2" - pkg-dir "^4.2.0" - please-upgrade-node "^3.2.0" - slash "^3.0.0" - which-pm-runs "^1.0.0" - -hyphenate-style-name@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" - integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== - -i18next-browser-languagedetector@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-5.0.0.tgz#9e946ed2ea5514a636913fe020a32455e82946e3" - integrity sha512-ekeKbRvTOsSOABSEPHFqyb6Q37JagZXjkISgQKHP84t/VZRW/B3FMVz+tBNQDVdZLsEaOe8fuJpeZsw2TvWeVQ== - dependencies: - "@babel/runtime" "^7.5.5" - -i18next@^19.6.3: - version "19.6.3" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.6.3.tgz#ce2346161b35c4c5ab691b0674119c7b349c0817" - integrity sha512-eYr98kw/C5z6kY21ti745p4IvbOJwY8F2T9tf/Lvy5lFnYRqE45+bppSgMPmcZZqYNT+xO0N0x6rexVR2wtZZQ== - dependencies: - "@babel/runtime" "^7.10.1" - -iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.6.tgz#643194ad4bf2712f37852e386b6998eff0db2106" - integrity sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - -immer@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" - integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== - -immer@^8.0.1: - version "8.0.4" - resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.4.tgz#3a21605a4e2dded852fb2afd208ad50969737b7a" - integrity sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.0, ini@^1.3.4, ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inline-style-prefixer@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz#d390957d26f281255fe101da863158ac6eb60911" - integrity sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg== - dependencies: - bowser "^1.7.3" - css-in-js-utils "^2.0.0" - -inquirer@7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -insert-css@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4" - integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ= - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== - dependencies: - es-abstract "^1.17.0-next.1" - has "^1.0.3" - side-channel "^1.0.2" - -interpret@^1.0.0, interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -interpret@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -intersection-observer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.7.0.tgz#ee16bee978db53516ead2f0a8154b09b400bbdc9" - integrity sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg== - -invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-alphabetical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" - integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== - -is-alphanumerical@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" - integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== - dependencies: - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.0.2, is-buffer@^1.1.4, is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-decimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" - integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== - -is-dom@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.1.0.tgz#af1fced292742443bb59ca3f76ab5e80907b4e8a" - integrity sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ== - dependencies: - is-object "^1.0.1" - is-window "^1.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-function@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" - integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== - -is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== - -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" - integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== - dependencies: - has-symbols "^1.0.1" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== - -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.4, is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - -is-whitespace-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" - integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== - -is-window@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" - integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-word-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" - integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== - dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" - -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" - -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== - dependencies: - html-escaper "^2.0.0" - -iterate-iterator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" - integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== - -iterate-value@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" - integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== - dependencies: - es-get-iterator "^1.0.2" - iterate-iterator "^1.0.1" - -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== - dependencies: - async "0.9.x" - chalk "^2.4.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== - dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" - -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== - dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" - -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" - -jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== - dependencies: - detect-newline "^2.1.0" - -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== - dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - -jest-environment-jsdom-fourteen@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" - integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== - dependencies: - "@jest/environment" "^24.3.0" - "@jest/fake-timers" "^24.3.0" - "@jest/types" "^24.3.0" - jest-mock "^24.0.0" - jest-util "^24.0.0" - jsdom "^14.1.0" - -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" - -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== - -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^24.9.0" - is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" - -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== - dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== - dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-mock@^24.0.0, jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== - -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== - -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== - dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" - -jest-resolve@24.9.0, jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== - dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" - -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" - -jest-util@^24.0.0, jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== - dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" - leven "^3.1.0" - pretty-format "^24.9.0" - -jest-watch-typeahead@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" - integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.1" - jest-regex-util "^24.9.0" - jest-watcher "^24.3.0" - slash "^3.0.0" - string-length "^3.1.0" - strip-ansi "^5.0.0" - -jest-watcher@^24.3.0, jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== - dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" - -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^25.1.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^26.0.0: - version "26.1.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d" - integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== - dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" - -js-cookie@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" - integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.5.2: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsdom@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" - integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== - dependencies: - abab "^2.0.0" - acorn "^6.0.4" - acorn-globals "^4.3.0" - array-equal "^1.0.0" - cssom "^0.3.4" - cssstyle "^1.1.1" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.0" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.1.3" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.5" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^2.5.0" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^6.1.2" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-loader@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json2mq@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" - integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= - dependencies: - string-convert "^0.2.0" - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.1, json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== - dependencies: - universalify "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.3.0.tgz#edd727794ea284d7fda575015ed1b0cde0289ab6" - integrity sha512-3HNoc7nZ1hpZIKB3hJ7BlFRkzCx2BynRtfSwbkqZdpRdvAPsGMnzclPwrvDBS7/lalHTj21NwIeaEpysHBOudg== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - -just-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" - integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0, kind-of@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -last-run@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" - integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= - dependencies: - default-resolution "^2.0.0" - es6-weak-map "^2.0.1" - -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -lazy-universal-dotenv@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" - integrity sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ== - dependencies: - "@babel/runtime" "^7.5.0" - app-root-dir "^1.0.2" - core-js "^3.0.4" - dotenv "^8.0.0" - dotenv-expand "^5.1.0" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -lead@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - -leprechaun@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/leprechaun/-/leprechaun-0.0.2.tgz#8b96514a9e634c53fbe59a8094f3378c8fb2084d" - integrity sha1-i5ZRSp5jTFP75ZqAlPM3jI+yCE0= - dependencies: - log-symbols "^1.0.2" - -less-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" - integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== - dependencies: - clone "^2.1.1" - loader-utils "^1.1.0" - pify "^4.0.1" - -less@^3.12.2: - version "3.12.2" - resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" - integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== - dependencies: - tslib "^1.10.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - native-request "^1.0.5" - source-map "~0.6.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -liftoff@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" - integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== - dependencies: - extend "^3.0.0" - findup-sync "^3.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -live-server@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/live-server/-/live-server-1.2.1.tgz#670630dd409d22fe9c513ab1c1894686c757153e" - integrity sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw== - dependencies: - chokidar "^2.0.4" - colors latest - connect "^3.6.6" - cors latest - event-stream "3.3.4" - faye-websocket "0.11.x" - http-auth "3.1.x" - morgan "^1.9.1" - object-assign latest - opn latest - proxy-middleware latest - send latest - serve-index "^1.9.1" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-fs-cache@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.flow@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" - integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.merge@^4.6.1: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.4.0, lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -"lodash@>=3.5 <5", lodash@^4, lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -loglevel@^1.6.6: - version "1.6.8" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" - integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== - -loglevelnext@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" - integrity sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A== - dependencies: - es6-symbol "^3.1.1" - object.assign "^4.1.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== - dependencies: - tslib "^1.10.0" - -lowlight@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.12.1.tgz#014acf8dd73a370e02ff1cc61debcde3bb1681eb" - integrity sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w== - dependencies: - fault "^1.0.2" - highlight.js "~9.15.0" - -lowlight@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.14.0.tgz#83ebc143fec0f9e6c0d3deffe01be129ce56b108" - integrity sha512-N2E7zTM7r1CwbzwspPxJvmjAbxljCPThTFawEX2Z7+P3NGrrvY54u8kyU16IY4qWfoVIxY8SYCS8jTkuG7TqYA== - dependencies: - fault "^1.0.0" - highlight.js "~10.1.0" - -lru-cache@4.1.x: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.0, map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-or-similar@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" - integrity sha1-beJlMXSt+12e3DPGnT6Sobdvrwg= - -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -markdown-escapes@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" - integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== - -markdown-to-jsx@^6.11.4: - version "6.11.4" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz#b4528b1ab668aef7fe61c1535c27e837819392c5" - integrity sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw== - dependencies: - prop-types "^15.6.2" - unquote "^1.1.0" - -matchdep@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" - integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= - dependencies: - findup-sync "^2.0.0" - micromatch "^3.0.4" - resolve "^1.4.0" - stack-trace "0.0.10" - -material-colors@^1.2.1: - version "1.2.6" - resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" - integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdast-add-list-metadata@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf" - integrity sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA== - dependencies: - unist-util-visit-parents "1.1.2" - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memoize-one@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" - integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== - -memoizerific@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" - integrity sha1-fIekZGREwy11Q4VwkF8tvRsagFo= - dependencies: - map-or-similar "^1.5.0" - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-deep@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" - integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micro-memoize@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-2.1.2.tgz#0787eeb1a12b4033a0fe162dfc9df4280291cee4" - integrity sha512-COjNutiFgnDHXZEIM/jYuZPwq2h8zMUeScf6Sh6so98a+REqdlpaNS7Cb2ffGfK5I+xfgoA3Rx49NGuNJTJq3w== - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@^2.1.26, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mime@1.6.0, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.4.5" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" - integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-css-extract-plugin@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -mini-store@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/mini-store/-/mini-store-3.0.6.tgz#44b86be5b2877271224ce0689b3a35a2dffb1ca9" - integrity sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ== - dependencies: - hoist-non-react-statics "^3.3.2" - shallowequal "^1.0.2" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" - integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" - integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moize@^5.4.7: - version "5.4.7" - resolved "https://registry.yarnpkg.com/moize/-/moize-5.4.7.tgz#bffa28806441d9f5cf1c4158b67a29413c438e83" - integrity sha512-7PZH8QFJ51cIVtDv7wfUREBd3gL59JB0v/ARA3RI9zkSRa9LyGjS1Bdldii2J1/NQXRQ/3OOVOSdnZrCcVaZlw== - dependencies: - fast-equals "^1.6.0" - fast-stringify "^1.1.0" - micro-memoize "^2.1.1" - -moment@^2.24.0, moment@^2.25.3: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -morgan@^1.9.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" - integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== - dependencies: - basic-auth "~2.0.1" - debug "2.6.9" - depd "~2.0.0" - on-finished "~2.3.0" - on-headers "~1.0.2" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -mri@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.5.tgz#ce21dba2c69f74a9b7cf8a1ec62307e089e223e0" - integrity sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -mute-stdout@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" - integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nano-css@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.0.tgz#9d3cd29788d48b6a07f52aa4aec7cf4da427b6b5" - integrity sha512-uM/9NGK9/E9/sTpbIZ/bQ9xOLOIHZwrrb/CRlbDHBU/GFS7Gshl24v/WJhwsVViWkpOXUmiZ66XO7fSB4Wd92Q== - dependencies: - css-tree "^1.0.0-alpha.28" - csstype "^2.5.5" - fastest-stable-stringify "^1.0.1" - inline-style-prefixer "^4.0.0" - rtl-css-js "^1.9.0" - sourcemap-codec "^1.4.1" - stacktrace-js "^2.0.0" - stylis "3.5.0" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -native-request@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856" - integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -nconf@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/nconf/-/nconf-0.10.0.tgz#da1285ee95d0a922ca6cee75adcf861f48205ad2" - integrity sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q== - dependencies: - async "^1.4.0" - ini "^1.3.0" - secure-keys "^1.0.0" - yargs "^3.19.0" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" - integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== - dependencies: - lower-case "^2.0.1" - tslib "^1.10.0" - -node-dir@^0.1.10: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= - dependencies: - minimatch "^3.0.2" - -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-releases@^1.1.52, node-releases@^1.1.53: - version "1.1.56" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" - integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -now-and-later@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" - integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== - dependencies: - once "^1.3.2" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" - integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== - dependencies: - path-key "^3.0.0" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= - -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.0.7, nwsapi@^2.1.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@4.x, object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1, object-assign@latest: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" - integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-path@0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.0.4, object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.defaults@^1.0.0, object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - -object.entries@^1.1.0, object.entries@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - has "^1.0.3" - -"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - -object.pick@^1.2.0, object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.reduce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" - integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - -object.values@^1.1.0, object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -objectorarray@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.4.tgz#d69b2f0ff7dc2701903d308bb85882f4ddb49483" - integrity sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w== - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -office-ui-fabric-react@^7.123.10: - version "7.123.10" - resolved "https://registry.yarnpkg.com/office-ui-fabric-react/-/office-ui-fabric-react-7.123.10.tgz#9774098c26a49c65e445eab8abd161f1aae04acf" - integrity sha512-EmVZMNOIFRDDsqNjBZb0XfLGcLvBWjIwMAZYfiWZpYpqn3uoK/8AQwKJBR2nGjj1Rg/qgv8WAB7B1S4cAL3Wdw== - dependencies: - "@fluentui/date-time-utilities" "^7.3.0" - "@fluentui/react-focus" "^7.12.25" - "@fluentui/react-icons" "^0.1.40" - "@microsoft/load-themed-styles" "^1.10.26" - "@uifabric/foundation" "^7.7.39" - "@uifabric/icons" "^7.3.65" - "@uifabric/merge-styles" "^7.16.3" - "@uifabric/react-hooks" "^7.6.2" - "@uifabric/set-version" "^7.0.18" - "@uifabric/styling" "^7.14.5" - "@uifabric/utilities" "^7.24.5" - prop-types "^15.7.2" - tslib "^1.10.0" - -omit.js@^2.0.0, omit.js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" - integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.2, open@^7.0.3: - version "7.0.4" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" - integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opencollective-postinstall@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" - integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== - -opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -opn@latest: - version "6.0.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" - integrity sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1, optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -overlayscrollbars@^1.10.2: - version "1.12.0" - resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.12.0.tgz#e3e257bbb8a179760c2c712ad08ac2c78583c9f6" - integrity sha512-zJGYLeBfaPx2VmiDfBMNTPzm9N8w8wZ6M7dm1ee8TGuet8tsK4nxOzGvEEu0SmueqMHQxhLsstf7iTWCGiYa9Q== - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" - integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== - dependencies: - dot-case "^3.0.3" - tslib "^1.10.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-entities@^1.1.0, parse-entities@^1.1.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse-node-version@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" - integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== - dependencies: - no-case "^3.0.3" - tslib "^1.10.0" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@3.1.0, pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -plugin-error@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" - integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== - dependencies: - ansi-colors "^1.0.1" - arr-diff "^4.0.0" - arr-union "^3.1.0" - extend-shallow "^3.0.2" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pnp-webpack-plugin@1.6.4, pnp-webpack-plugin@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -polished@^3.4.4: - version "3.6.5" - resolved "https://registry.yarnpkg.com/polished/-/polished-3.6.5.tgz#dbefdde64c675935ec55119fe2a2ab627ca82e9c" - integrity sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ== - dependencies: - "@babel/runtime" "^7.9.2" - -popper.js@^1.14.4, popper.js@^1.14.7: - version "1.16.1" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" - integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== - -portfinder@^1.0.25: - version "1.0.26" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" - integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== - dependencies: - postcss "^7" - -postcss-calc@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" - integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - dependencies: - postcss "^7.0.14" - -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" - -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-flexbugs-fixes@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" - integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== - dependencies: - postcss "^7.0.0" - -postcss-flexbugs-fixes@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" - integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== - dependencies: - postcss "^7.0.26" - -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" - -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" - -postcss-font-variant@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" - integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== - dependencies: - postcss "^7.0.2" - -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - dependencies: - postcss "^7.0.2" - -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-initial@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" - integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== - dependencies: - lodash.template "^4.5.0" - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0, postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" - -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" - integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.16" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.0" - -postcss-modules-scope@^2.1.1, postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - dependencies: - postcss "^7.0.2" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== - dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" - -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" - -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - dependencies: - postcss "^7.0.2" - -postcss-safe-parser@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" - integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== - dependencies: - postcss "^7.0.0" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" - integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" - integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7.0.26, postcss@^7.0.32: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prettier@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== - -pretty-bytes@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" - integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== - -pretty-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-hrtime@^1.0.0, pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - -pretty-quick@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-2.0.1.tgz#417ee605ade98ecc686e72f63b5d28a2c35b43e9" - integrity sha512-y7bJt77XadjUr+P1uKqZxFWLddvj3SKY6EU4BuQtMxmmEFSMpbN132pUWdSG1g1mtUfO0noBvn7wBf0BVeomHg== - dependencies: - chalk "^2.4.2" - execa "^2.1.0" - find-up "^4.1.0" - ignore "^5.1.4" - mri "^1.1.4" - multimatch "^4.0.0" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -prismjs@^1.20.0, prismjs@^1.8.4, prismjs@~1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.20.0.tgz#9b685fc480a3514ee7198eac6a3bf5024319ff03" - integrity sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ== - optionalDependencies: - clipboard "^2.0.0" - -prismjs@~1.17.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" - integrity sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q== - optionalDependencies: - clipboard "^2.0.0" - -private@^0.1.8, private@~0.1.5: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise.allsettled@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" - integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== - dependencies: - array.prototype.map "^1.0.1" - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - iterate-value "^1.0.0" - -promise.prototype.finally@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067" - integrity sha512-A2HuJWl2opDH0EafgdjwEw7HysI8ff/n4lW4QEVBCUXFk9QeGecBWv0Deph0UmLe3tTNYegz8MOjsVuE6SMoJA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.0" - function-bind "^1.1.1" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -promise@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -property-information@^5.0.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" - integrity sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA== - dependencies: - xtend "^4.0.0" - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -proxy-middleware@latest: - version "0.15.0" - resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" - integrity sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY= - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pullstate@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/pullstate/-/pullstate-1.22.1.tgz#ffdde634e8c721907de8e6d37a85c6083137ee8a" - integrity sha512-Xu3umsGOG6qCQ4IWxKSEikQqdR7GDsTHQPE7wquzQENMRZbPeHURA9dZgH/9ktuhDh3D1qnIDI9PyPftabme0A== - dependencies: - fast-deep-equal "^3.1.3" - immer "^8.0.1" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3, pumpify@^1.3.5: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@^6.6.0: - version "6.9.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" - integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0, querystring@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -raf@^3.4.0, raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -ramda@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" - integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU= - -ramda@^0.27: - version "0.27.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.0.tgz#915dc29865c0800bf3f69b8fd6c279898b59de43" - integrity sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-loader@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz#14e1f726a359b68437e183d5a5b7d33a3eba6933" - integrity sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.5" - -rc-align@^4.0.0: - version "4.0.9" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.9.tgz#46d8801c4a139ff6a65ad1674e8efceac98f85f2" - integrity sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - dom-align "^1.7.0" - rc-util "^5.3.0" - resize-observer-polyfill "^1.5.1" - -rc-animate@3.x, rc-animate@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.1.tgz#defdd863f56816c222534e4dc68feddecd081386" - integrity sha512-8wg2Zg3EETy0k/9kYuis30NJNQg1D6/WSQwnCiz6SvyxQXNet/rVraRz3bPngwY6rcU2nlRvoShiYOorXyF7Sg== - dependencies: - "@ant-design/css-animation" "^1.7.2" - classnames "^2.2.6" - raf "^3.4.0" - rc-util "^4.15.3" - -rc-animate@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.0.tgz#051b689c2c7194e4c8ae016d32a0e5f9de6c8baa" - integrity sha512-8FsM+3B1H+0AyTyGggY6JyVldHTs1CyYT8CfTmG/nGHHXlecvSLeICJhcKgRLjUiQlctNnRtB1rwz79cvBVmrw== - dependencies: - "@ant-design/css-animation" "^1.7.2" - classnames "^2.2.6" - raf "^3.4.0" - rc-util "^5.0.1" - -rc-cascader@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.0.tgz#d731ea8e07433558627941036091a2820e895474" - integrity sha512-6kgQljDQEKjVAVRkZtvvoi+2qv4u42M6oLuvt4ZDBa16r3X9ZN8TAq3atVyC840ivbGKlHT50OcdVx/iwiHc1w== - dependencies: - array-tree-filter "^2.1.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - warning "^4.0.1" - -rc-checkbox@~2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.1.tgz#2a61bc43017c783bd2e9f1a67553bf8efe7aa4d3" - integrity sha512-i290/iTqmZ0WtI2UPIryqT9rW6O99+an4KeZIyZDH3r+Jbb6YdddaWNdzq7g5m9zaNhJvgjf//wJtC4fvve2Tg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - -rc-collapse@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-2.0.1.tgz#99e7655acd9c237b72369a39dcb5c713451e1e92" - integrity sha512-sRNqwQovzQoptTh7dCwj3kfxrdor2oNXrGSBz+QJxSFS7N3Ujgf8X/KlN2ElCkwBKf7nNv36t9dwH0HEku4wJg== - dependencies: - "@ant-design/css-animation" "^1.7.2" - classnames "2.x" - rc-animate "3.x" - rc-util "^5.2.1" - shallowequal "^1.1.0" - -rc-dialog@~8.4.0: - version "8.4.3" - resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.4.3.tgz#de8650ce7d1fcb6c1f7e065b94a6894b9a5a54a4" - integrity sha512-LHsWXb+2Cy4vEOeJcPvk9M0WSr80Gi438ov5rXt3E6XB4j+53Z+vMFRr+TagnVuOVQRCLmmzT4qutfm2U1OK6w== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-motion "^2.3.0" - rc-util "^5.0.1" - -rc-drawer@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.1.0.tgz#d7bf0bc030300b62d282bc04e053b9acad6b08b4" - integrity sha512-kjeQFngPjdzAFahNIV0EvEBoIKMOnvUsAxpkSPELoD/1DuR4nLafom5ryma+TIxGwkFJ92W6yjsMi1U9aiOTeQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-util "^5.0.1" - -rc-dropdown@^3.1.3, rc-dropdown@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090" - integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-trigger "^5.0.4" - -rc-field-form@~1.17.0: - version "1.17.2" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.17.2.tgz#81b09d320f9b455673867bf3a1f5b2aac0fd0a15" - integrity sha512-+pufRy5x4G5yHxQ3k1nhgQqyqerPVJQ2jaLGojHjNpmZ2Si20o1KniMLsZxe6X8dfq4ePmH6M3IngfDnS+CrMA== - dependencies: - "@babel/runtime" "^7.8.4" - async-validator "^3.0.3" - rc-util "^5.0.0" - -rc-image@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-4.0.1.tgz#b54534684a01dcf8cb477f5ac6dda72545a9541f" - integrity sha512-1GxjwgtONtJjlvd7sM9VSLTAlDQhkqHI0wl72YSDpdm24w5zmDsTYLgTNh/vToFa9qAml10Gaidy03qpkTAQ+A== - dependencies: - "@ant-design/icons" "^4.2.2" - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-dialog "~8.4.0" - rc-util "^5.0.6" - -rc-input-number@~6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-6.1.1.tgz#818c426942d1b4dc4d6d2639d741ca67773a9118" - integrity sha512-9t2xf1G0YEism7FAXAvF1huBk7ZNABPBf6NL+3/aDL123WiT/vhhod4cldiDWTM1Yb2EDKR//ZIa546ScdsUaA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.0.1" - -rc-mentions@~1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.5.2.tgz#94559a369de73e7cc92f343badaf94499fb410a7" - integrity sha512-GqV0tOtHY3pLpOsFCxJ2i6Ad8AVfxFmz0NlD/8rb8IG8pMpthJKcdfnXlNZRx3Fa9O4YEgJpdSY1WEbmlx2DWQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-menu "^8.0.1" - rc-textarea "^0.3.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - -rc-menu@^8.0.1, rc-menu@^8.6.1, rc-menu@~8.10.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.10.0.tgz#f14ff6456073bcf29603da818774543a73e44e92" - integrity sha512-mafcLoKtVlH9HDW52NmwenQ9vjvgxtR46NfYAexJEIUTZ9Ze2veZUkEKjhOJlzrUHEYtCoNslpqyy4iVN08Glw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - mini-store "^3.0.1" - omit.js "^2.0.0" - rc-motion "^2.0.1" - rc-trigger "^5.1.2" - rc-util "^5.0.1" - resize-observer-polyfill "^1.5.0" - shallowequal "^1.1.0" - -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.1.tgz#323f47c8635e6b2bc0cba2dfad25fc415b58e1dc" - integrity sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-util "^5.2.1" - -rc-notification@~4.5.2: - version "4.5.4" - resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.4.tgz#1292e163003db4b9162c856a4630e5d0f1359356" - integrity sha512-VsN0ouF4uglE5g3C9oDsXLNYX0Sz++ZNUFYCswkxhpImYJ9u6nJOpyA71uOYDVCu6bAF54Y5Hi/b+EcnMzkepg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.2.0" - rc-util "^5.0.1" - -rc-pagination@~3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.2.tgz#ab5eacd9c51f869e350d2245064babe91bc1f046" - integrity sha512-KbJvkTvRiD51vTIAi0oTARPUHNb0iV6njbDBe8yLkc3PWYDJaszASfuss6YJ98EIxEeGzuEk6xsUAEKWRJgz2g== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - -rc-picker@~2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.4.2.tgz#e9d53f51cf768bb19f7024d0028f73008fce5163" - integrity sha512-ug5NTZTvaZuVysY9eubFtLoxoPCkEOZ7tY79+e/4N2ZvRVo2nNwyTjB7OQ+p7Xz8tHaYoQPnwLxr2fyDGIkZig== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - date-fns "^2.15.0" - dayjs "^1.8.30" - moment "^2.24.0" - rc-trigger "^5.0.4" - rc-util "^5.4.0" - shallowequal "^1.1.0" - -rc-progress@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.1.tgz#f7ba5eb33cc438862513ab5a71739feaf6b3ef4f" - integrity sha512-1ns3pW7ll9bHfdXtlVLF+vngdvlxiCDtiqwXnZFEdurst11JTiPxVdeqnCNbhWx5hP4kCKkAPqG1N0FVfTSUGA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - -rc-rate@~2.9.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.9.1.tgz#e43cb95c4eb90a2c1e0b16ec6614d8c43530a731" - integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.0.1" - -rc-resize-observer@^0.2.0, rc-resize-observer@^0.2.1, rc-resize-observer@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.2.6.tgz#c1b642f6d1293e34c4e3715f47f69443a167b825" - integrity sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-util "^5.0.0" - resize-observer-polyfill "^1.5.1" - -rc-select@^11.1.1: - version "11.5.0" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.5.0.tgz#360d2762207c2fef2622e7fcc542fc94dfc9d10f" - integrity sha512-izVcxMMo64ZbuYDaB+zsybPjli5Ub6fKM4OeChDqn4MwrHnPjCEsO3bXjeSEXK2LCC2DXQAdr1oYvHGw9QAGVw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - rc-virtual-list "^3.2.0" - warning "^4.0.3" - -rc-select@~11.4.0: - version "11.4.2" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.4.2.tgz#5b431ee7b2cc6e439886ca855774fc116e6fe6fb" - integrity sha512-DQHYwMcvAajnnlahKkYIW47AVTXgxpGj9CWbe+juXgvxawQRFUdd8T8L2Q05aOkMy02UTG0Qrs7EZfHmn5QHbA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - rc-virtual-list "^3.2.0" - warning "^4.0.3" - -rc-slider@~9.6.1: - version "9.6.4" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.6.4.tgz#19af39ad22927de2f6d524e0a14f3b1cf17ba659" - integrity sha512-TgmfOh1Jj9fHsW2eDeldFy4mOKwyHn4krl4K6gqbXhGFND7jVRdfA0m7TDUx3gGeX7A17fM1QZymMO/NRJmoLw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-tooltip "^5.0.1" - rc-util "^5.0.0" - shallowequal "^1.1.0" - -rc-steps@~4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-4.1.3.tgz#208580e22db619e3830ddb7fa41bc886c65d9803" - integrity sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA== - dependencies: - "@babel/runtime" "^7.10.2" - classnames "^2.2.3" - rc-util "^5.0.1" - -rc-switch@~3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-3.2.2.tgz#d001f77f12664d52595b4f6fb425dd9e66fba8e8" - integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-util "^5.0.1" - -rc-table@~7.11.0: - version "7.11.2" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.11.2.tgz#07fde8e6323e27c6ed3f534a35dae413e8212d51" - integrity sha512-srOWkqgDQU6OA+gpc4MsaZXFw6TRC9NizbytvFCAg+Ra06cOVnD+MVYimAnjM9GeTPHgU+yc17xr/VkUYCRbYQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-resize-observer "^0.2.0" - rc-util "^5.4.0" - shallowequal "^1.1.0" - -rc-tabs@~11.7.0: - version "11.7.1" - resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.7.1.tgz#c23fc53e59bd8b7250818a1a29bca1896450d79b" - integrity sha512-ZLQ5ou70j32GKcOKRZvd5JQZOJhcDy62dr9kqiWDvt6g5v8LkpxIGAc0dWtCWOEWkO/QezwuNqWufMborkfrnQ== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "2.x" - raf "^3.4.1" - rc-dropdown "^3.1.3" - rc-menu "^8.6.1" - rc-resize-observer "^0.2.1" - rc-util "^5.5.0" - -rc-textarea@^0.3.0, rc-textarea@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.1.tgz#e81e1ef6f0e29729f9f80bb266cf6769dd7ab69a" - integrity sha512-bO5Ol5uD6A++aWI6BJ0Pa/8OZcGeacP9LxIGkUqkCwPyOG3kaLOsWb8ya4xCfrsC2P4vDTsHsJmmmG5wuXGFRg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - omit.js "^2.0.0" - rc-resize-observer "^0.2.3" - -rc-tooltip@^5.0.1, rc-tooltip@~5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.0.1.tgz#b82c4259604d2cb62ca610ed7932dd37fc6ef61d" - integrity sha512-3AnxhUS0j74xAV3khrKw8o6rg+Ima3nw09DJBezMPnX3ImQUAnayWsPSlN1mEnihjA43rcFkGM1emiKE+CXyMQ== - dependencies: - "@babel/runtime" "^7.11.2" - rc-trigger "^5.0.0" - -rc-tree-select@~4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.1.3.tgz#1f88b7bf46652f9962ce425f8760a8f891fb5b78" - integrity sha512-vk/T1vHNvuBZyoq8CvOF6iaiyVe6Y8QmQflTYFgabVsTJ1d/obkO9tAXOvJELZgKJ9ljduDVaAZAgcq0Yap+mg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-select "^11.1.1" - rc-tree "^3.8.0" - rc-util "^5.0.5" - -rc-tree@^3.8.0, rc-tree@~3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-3.11.0.tgz#87edf01842bd88a05519e30dd7312bee3f7e2618" - integrity sha512-3RxA6fckbzX7WOk7g4gvO6AOad0znc8QW2nsv1IXSiljQaIMiyx1AK0zhzIEtABgWKbIs9QkhnBvIAHS4Rn9LA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-util "^5.0.0" - rc-virtual-list "^3.0.1" - -rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.1.2.tgz#f0f89bba2318699e704492bddb20506ecd8f8916" - integrity sha512-A6UdDy95masAEIaNmazPtqHW1EOFDWi2C2bJGDpr9OYpmObDpWKdxyNijVbFb6l1viTkAU9d3FyStgNPddgFzw== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-align "^4.0.0" - rc-motion "^2.0.0" - rc-util "^5.5.0" - -rc-upload@~3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.3.1.tgz#ad8658b2a796031930b35d2b07ab312b7cd4c9ed" - integrity sha512-KWkJbVM9BwU8qi/2jZwmZpAcdRzDkuyfn/yAOLu+nm47dyd6//MtxzQD3XZDFkC6jQ6D5FmlKn6DhmOfV3v43w== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.2.0" - -rc-util@^4.15.3: - version "4.21.1" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05" - integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg== - dependencies: - add-dom-event-listener "^1.1.0" - prop-types "^15.5.10" - react-is "^16.12.0" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.1.0, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.5.0.tgz#76321bcb5c12f01f42bff9b971f170ff19506e5a" - integrity sha512-YJB+zZGvCll/bhxXRVLAekr7lOvTgqMlRIhgINoINfUek7wQvi5sft46NOi3yYUYhocpuW4k8+5okW46sBsZAQ== - dependencies: - react-is "^16.12.0" - shallowequal "^1.1.0" - -rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.2.2.tgz#95f8f0c4238e081f4a998354492632eed6d71924" - integrity sha512-OepvZDQGUbQQBFk5m2Ds32rfO/tSj9gZkLbzwaIw/hwGgvatDmW+j97YQvFkUQp/XDgdSGcfFfj/6XTKpz0J4g== - dependencies: - classnames "^2.2.6" - rc-resize-observer "^0.2.3" - rc-util "^5.0.7" - -react-ace@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-9.1.1.tgz#fe27e1c668b0186dc1609c422198d1c2df34d2bf" - integrity sha512-dL0w6GwtnS1opsOoWhJaF7rF7xCM+NOEOfePmDfiaeU+EyZQ6nRWDBgyzKsuiB3hyXH3G9D6FX37ur/LKUdKjA== - dependencies: - ace-builds "^1.4.6" - diff-match-patch "^1.0.4" - lodash.get "^4.4.2" - lodash.isequal "^4.5.0" - prop-types "^15.7.2" - -react-app-polyfill@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" - integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== - dependencies: - core-js "^3.5.0" - object-assign "^4.1.1" - promise "^8.0.3" - raf "^3.4.1" - regenerator-runtime "^0.13.3" - whatwg-fetch "^3.0.0" - -react-app-rewire-alias@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/react-app-rewire-alias/-/react-app-rewire-alias-0.1.6.tgz#27fd6b47769871d97665393e2e572caf184948ef" - integrity sha512-RWI9danv1hw2YJQ1LrAImmB4g1TpGe56RZUbfyhZGS2dwpz2s1tz9JlA2HszSdNUUqcjat+Qcw544/Wz/zE8kw== - -react-app-rewire-html-webpack-plugin@^1.0.3: - version "1.0.3" - resolved "http://mirrors.cloud.tencent.com/npm/react-app-rewire-html-webpack-plugin/-/react-app-rewire-html-webpack-plugin-1.0.3.tgz#c00a16899071ae6ba17f9af77a0bfed4cb981987" - integrity sha512-cuTzm/oB3nUY7J1N0BYs9gMujFQyDEoNTDUX//823Km7htFayec3UvTASzRAmjw7moG0FAdmE+bQeRaHEczrhg== - dependencies: - deepmerge "^4.2.2" - -react-app-rewire-multiple-entry@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/react-app-rewire-multiple-entry/-/react-app-rewire-multiple-entry-2.2.0.tgz#76b33488a673d7934b973de26edbca7a23b72e20" - integrity sha512-J91dI4GY0nVdlbTI/EvhI3rper8URbIzas9E+K14kNc5pHgNCjH7ImJzVsCcfB1prCZbBNQV5ygwg/8T17igcg== - dependencies: - xxhashjs "^0.2.2" - -react-app-rewire-yaml@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/react-app-rewire-yaml/-/react-app-rewire-yaml-1.1.0.tgz#b6e73384c152514fb84e238fa2f13f37167f1126" - integrity sha512-JGz5PUP4zHAPGuLgEc4f4mCr20sHNWFy9Ipjgx7iib3zX840ntUqd+N4yuvZbf6EPOqdG8PXpVfMPZN6uDmQSw== - dependencies: - json-loader "^0.5.7" - yaml-lint-loader "^1.0.0" - yaml-loader "^0.5.0" - -react-app-rewired@^2.1.5: - version "2.1.6" - resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.6.tgz#33ee3076a7f34d6a7c94e649cac67e7c8c580de8" - integrity sha512-06flj0kK5tf/RN4naRv/sn6j3sQd7rsURoRLKLpffXDzJeNiAaTNic+0I8Basojy5WDwREkTqrMLewSAjcb13w== - dependencies: - semver "^5.6.0" - -react-color@^2.17.0: - version "2.18.1" - resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.1.tgz#2cda8cc8e06a9e2c52ad391a30ddad31972472f4" - integrity sha512-X5XpyJS6ncplZs74ak0JJoqPi+33Nzpv5RYWWxn17bslih+X7OlgmfpmGC1fNvdkK7/SGWYf1JJdn7D2n5gSuQ== - dependencies: - "@icons/material" "^0.2.4" - lodash "^4.17.11" - material-colors "^1.2.1" - prop-types "^15.5.10" - reactcss "^1.2.0" - tinycolor2 "^1.4.1" - -react-copy-to-clipboard@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.3.tgz#2a0623b1115a1d8c84144e9434d3342b5af41ab4" - integrity sha512-9S3j+m+UxDZOM0Qb8mhnT/rMR0NGSrj9A/073yz2DSxPMYhmYFBMYIdI2X4o8AjOjyFsSNxDRnCX6s/gRxpriw== - dependencies: - copy-to-clipboard "^3" - prop-types "^15.5.8" - -react-dev-utils@^10.0.0, react-dev-utils@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" - integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== - dependencies: - "@babel/code-frame" "7.8.3" - address "1.1.2" - browserslist "4.10.0" - chalk "2.4.2" - cross-spawn "7.0.1" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.0.1" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "3.1.1" - global-modules "2.0.0" - globby "8.0.2" - gzip-size "5.1.1" - immer "1.10.0" - inquirer "7.0.4" - is-root "2.1.0" - loader-utils "1.2.3" - open "^7.0.2" - pkg-up "3.1.0" - react-error-overlay "^6.0.7" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-docgen-typescript-loader@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/react-docgen-typescript-loader/-/react-docgen-typescript-loader-3.7.2.tgz#45cb2305652c0602767242a8700ad1ebd66bbbbd" - integrity sha512-fNzUayyUGzSyoOl7E89VaPKJk9dpvdSgyXg81cUkwy0u+NBvkzQG3FC5WBIlXda0k/iaxS+PWi+OC+tUiGxzPA== - dependencies: - "@webpack-contrib/schema-utils" "^1.0.0-beta.0" - loader-utils "^1.2.3" - react-docgen-typescript "^1.15.0" - -react-docgen-typescript-plugin@^0.5.0, react-docgen-typescript-plugin@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.5.1.tgz#383a4e92e6da07844aebb0927af7766f827b50bc" - integrity sha512-zBxrg3+N0UgcT3NGnrUEhAjmr3DMQq8XsKZweWpRfDAW9BnvSOoVVbKUvdq0elTokkHABIpk6Q626kwzYr4J3Q== - dependencies: - debug "^4.1.1" - endent "^2.0.1" - micromatch "^4.0.2" - react-docgen-typescript "^1.16.6" - react-docgen-typescript-loader "^3.7.2" - tslib "^2.0.0" - -react-docgen-typescript@^1.15.0, react-docgen-typescript@^1.16.6: - version "1.18.0" - resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-1.18.0.tgz#7f43b186b0228364cc6583231c3be09fbd3eb5e3" - integrity sha512-nY4bXz44tLzXBVF+cyaL/gZsMxlmYVICaEIXFF4EqvD8PEN1+zL+IgaQ1mNfJ6Zq8jUFAeXDo1Ds7ylxWZtjXQ== - -react-docgen@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.3.0.tgz#9aabde5e69f1993c8ba839fd9a86696504654589" - integrity sha512-hUrv69k6nxazOuOmdGeOpC/ldiKy7Qj/UFpxaQi0eDMrUFUTIPGtY5HJu7BggSmiyAMfREaESbtBL9UzdQ+hyg== - dependencies: - "@babel/core" "^7.7.5" - "@babel/runtime" "^7.7.6" - ast-types "^0.13.2" - commander "^2.19.0" - doctrine "^3.0.0" - neo-async "^2.6.1" - node-dir "^0.1.10" - strip-indent "^3.0.0" - -react-dom@^16.13.1, react-dom@^16.8.3: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-draggable@^4.0.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.3.tgz#0727f2cae5813e36b0e4962bf11b2f9ef2b406f3" - integrity sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w== - dependencies: - classnames "^2.2.5" - prop-types "^15.6.0" - -react-error-overlay@^6.0.7: - version "6.0.7" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" - integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== - -react-fast-compare@^3.0.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - -react-helmet-async@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.0.6.tgz#11c15c74e79b3f66670c73779bef3e0e352b1d4e" - integrity sha512-t+bhAI4NgxfEv8ez4r77cLfR4O4Z55E/FH2DT+uiE4U7yfWgAk7OAOi7IxHxuYEVLI26bqjZvlVCkpC5/5AoNA== - dependencies: - "@babel/runtime" "^7.9.2" - invariant "^2.2.4" - prop-types "^15.7.2" - react-fast-compare "^3.0.1" - shallowequal "^1.1.0" - -react-highlight-words@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.16.0.tgz#4b4b9824e3d2b98789d3e3b3aedb5e961ae1b7cf" - integrity sha512-q34TwCSJOL+5pVDv6LUj3amaoyXdNDwd7zRqVAvceOrO9g1haWLAglK6WkGLMNUa3PFN8EgGedLg/k8Gpndxqg== - dependencies: - highlight-words-core "^1.2.0" - memoize-one "^4.0.0" - prop-types "^15.5.8" - -react-hotkeys@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-2.0.0.tgz#a7719c7340cbba888b0e9184f806a9ec0ac2c53f" - integrity sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q== - dependencies: - prop-types "^15.6.1" - -react-i18next@^11.7.0: - version "11.7.0" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.7.0.tgz#f27c4c237a274e007a48ac1210db83e33719908b" - integrity sha512-8tvVkpuxQlubcszZON+jmoCgiA9gCZ74OAYli9KChPhETtq8pJsANBTe9KRLRLmX3ubumgvidURWr0VvKz1tww== - dependencies: - "@babel/runtime" "^7.3.1" - html-parse-stringify2 "2.0.1" - -react-inspector@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.0.1.tgz#8a30f3d488c4f40203624bbe24800f508ae05d3a" - integrity sha512-qRIENuAIcRaytrmg/TL5nN5igYZMzyQqIKlWA8zoYRDltULsZC1bWy2Ua5wYJuwEYnC3gK4FCjcIQnb+5OyLsQ== - dependencies: - "@babel/runtime" "^7.8.7" - is-dom "^1.1.0" - prop-types "^15.6.1" - -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-markdown@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-4.3.1.tgz#39f0633b94a027445b86c9811142d05381300f2f" - integrity sha512-HQlWFTbDxTtNY6bjgp3C3uv1h2xcjCSi1zAEzfBW9OwJJvENSYiLXWNXN5hHLsoqai7RnZiiHzcnWdXk2Splzw== - dependencies: - html-to-react "^1.3.4" - mdast-add-list-metadata "1.0.1" - prop-types "^15.7.2" - react-is "^16.8.6" - remark-parse "^5.0.0" - unified "^6.1.5" - unist-util-visit "^1.3.0" - xtend "^4.0.1" - -react-popper-tooltip@^2.11.0: - version "2.11.1" - resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-2.11.1.tgz#3c4bdfd8bc10d1c2b9a162e859bab8958f5b2644" - integrity sha512-04A2f24GhyyMicKvg/koIOQ5BzlrRbKiAgP6L+Pdj1MVX3yJ1NeZ8+EidndQsbejFT55oW1b++wg2Z8KlAyhfQ== - dependencies: - "@babel/runtime" "^7.9.2" - react-popper "^1.3.7" - -react-popper@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.7.tgz#f6a3471362ef1f0d10a4963673789de1baca2324" - integrity sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww== - dependencies: - "@babel/runtime" "^7.1.2" - create-react-context "^0.3.0" - deep-equal "^1.1.1" - popper.js "^1.14.4" - prop-types "^15.6.1" - typed-styles "^0.0.7" - warning "^4.0.2" - -react-router-dom@^6.0.0-alpha.3: - version "6.0.0-alpha.5" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.0.0-alpha.5.tgz#3c3e22226ee610eb91042a351741ce3f53596323" - integrity sha512-xo3VM55aE563uyZBPoUplfCPOYKJmTP2oA8wamm0k4K07e/6T4x4DDunS5Gu2VIy+m2+5mZp8n0rT6S+tYCb6Q== - dependencies: - history "5.0.0-beta.9" - prop-types "^15.7.2" - -react-router@^6.0.0-alpha.3: - version "6.0.0-alpha.5" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.0.0-alpha.5.tgz#c98805e50dc0e64787aa8aa4fa6753b435f2496b" - integrity sha512-cDj70bTUAgcfx6b5Fx1+wVlBSDVZGo8N+GUDk/yNFDCyGLfAsFlRpS3BhQqx8c49w2cCW+OrXxFhB4cbLZxWJw== - dependencies: - history "5.0.0-beta.9" - prop-types "^15.7.2" - -react-scripts@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.1.tgz#f551298b5c71985cc491b9acf3c8e8c0ae3ada0a" - integrity sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ== - dependencies: - "@babel/core" "7.9.0" - "@svgr/webpack" "4.3.3" - "@typescript-eslint/eslint-plugin" "^2.10.0" - "@typescript-eslint/parser" "^2.10.0" - babel-eslint "10.1.0" - babel-jest "^24.9.0" - babel-loader "8.1.0" - babel-plugin-named-asset-import "^0.3.6" - babel-preset-react-app "^9.1.2" - camelcase "^5.3.1" - case-sensitive-paths-webpack-plugin "2.3.0" - css-loader "3.4.2" - dotenv "8.2.0" - dotenv-expand "5.1.0" - eslint "^6.6.0" - eslint-config-react-app "^5.2.1" - eslint-loader "3.0.3" - eslint-plugin-flowtype "4.6.0" - eslint-plugin-import "2.20.1" - eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.19.0" - eslint-plugin-react-hooks "^1.6.1" - file-loader "4.3.0" - fs-extra "^8.1.0" - html-webpack-plugin "4.0.0-beta.11" - identity-obj-proxy "3.0.0" - jest "24.9.0" - jest-environment-jsdom-fourteen "1.0.1" - jest-resolve "24.9.0" - jest-watch-typeahead "0.4.2" - mini-css-extract-plugin "0.9.0" - optimize-css-assets-webpack-plugin "5.0.3" - pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "4.1.0" - postcss-loader "3.0.0" - postcss-normalize "8.0.1" - postcss-preset-env "6.7.0" - postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.6" - react-dev-utils "^10.2.1" - resolve "1.15.0" - resolve-url-loader "3.1.1" - sass-loader "8.0.2" - semver "6.3.0" - style-loader "0.23.1" - terser-webpack-plugin "2.3.5" - ts-pnp "1.1.6" - url-loader "2.3.0" - webpack "4.42.0" - webpack-dev-server "3.10.3" - webpack-manifest-plugin "2.2.0" - workbox-webpack-plugin "4.3.1" - optionalDependencies: - fsevents "2.1.2" - -react-sizeme@^2.6.7: - version "2.6.12" - resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e" - integrity sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw== - dependencies: - element-resize-detector "^1.2.1" - invariant "^2.2.4" - shallowequal "^1.1.0" - throttle-debounce "^2.1.0" - -react-split@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/react-split/-/react-split-2.0.9.tgz#8267b198c6b186857671da94c3feed828e6b2c66" - integrity sha512-IxKtxxmcbNUmWMSd5vlNnlE0jwbgQS1HyQYxt7h8qFgPskSkUTNzMbO838xapmmNf9D+u9B/bdtFnVjt+JC2JA== - dependencies: - prop-types "^15.5.7" - split.js "^1.6.0" - -react-spring@^8.0.27: - version "8.0.27" - resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-8.0.27.tgz#97d4dee677f41e0b2adcb696f3839680a3aa356a" - integrity sha512-nDpWBe3ZVezukNRandTeLSPcwwTMjNVu1IDq9qA/AMiUqHuRN4BeSWvKr3eIxxg1vtiYiOLy4FqdfCP5IoP77g== - dependencies: - "@babel/runtime" "^7.3.1" - prop-types "^15.5.8" - -react-syntax-highlighter@^12.2.1: - version "12.2.1" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz#14d78352da1c1c3f93c6698b70ec7c706b83493e" - integrity sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA== - dependencies: - "@babel/runtime" "^7.3.1" - highlight.js "~9.15.1" - lowlight "1.12.1" - prismjs "^1.8.4" - refractor "^2.4.1" - -react-syntax-highlighter@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.0.0.tgz#7f29b0fae2aef1a4b16fdd309994ee49b94dcc42" - integrity sha512-wwZlztFmZNmE7ZsXYApUpoPhZ/QU6ngWh8fYnh8QkoKnvCxRQ6ZQiNuX+EzFN+NSVpDxpAJjW+faT25XVodX5A== - dependencies: - "@babel/runtime" "^7.3.1" - highlight.js "^10.1.1" - lowlight "^1.14.0" - prismjs "^1.20.0" - refractor "^3.0.0" - -react-textarea-autosize@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.2.0.tgz#fae38653f5ec172a855fd5fffb39e466d56aebdb" - integrity sha512-grajUlVbkx6VdtSxCgzloUIphIZF5bKr21OYMceWPKkniy7H0mRAT/AXPrRtObAe+zUePnNlBwUc4ivVjUGIjw== - dependencies: - "@babel/runtime" "^7.10.2" - use-composed-ref "^1.0.0" - use-latest "^1.0.0" - -react-universal-interface@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" - integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== - -react-use@^15.3.3: - version "15.3.3" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-15.3.3.tgz#f16de7a16286c446388e8bd99680952fc3dc9a95" - integrity sha512-nYb94JbmDCaLZg3sOXmFW8HN+lXWxnl0caspXoYfZG1CON8JfLN9jMOyxRDUpm7dUq7WZ5mIept/ByqBQKJ0wQ== - dependencies: - "@types/js-cookie" "2.2.6" - "@xobotyi/scrollbar-width" "1.9.5" - copy-to-clipboard "^3.2.0" - fast-deep-equal "^3.1.3" - fast-shallow-equal "^1.0.0" - js-cookie "^2.2.1" - nano-css "^5.2.1" - react-universal-interface "^0.6.2" - resize-observer-polyfill "^1.5.1" - screenfull "^5.0.0" - set-harmonic-interval "^1.0.1" - throttle-debounce "^2.1.0" - ts-easing "^0.2.0" - tslib "^2.0.0" - -react@^16.13.1, react@^16.8.3: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -reactcss@^1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" - integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== - dependencies: - lodash "^4.0.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -"readable-stream@2 || 3", readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -recast@^0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" - integrity sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A== - dependencies: - ast-types "0.11.3" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -refractor@^2.4.1: - version "2.10.1" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-2.10.1.tgz#166c32f114ed16fd96190ad21d5193d3afc7d34e" - integrity sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw== - dependencies: - hastscript "^5.0.0" - parse-entities "^1.1.2" - prismjs "~1.17.0" - -refractor@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.0.0.tgz#7c8072eaf49dbc1b333e7acc64fb52a1c9b17c75" - integrity sha512-eCGK/oP4VuyW/ERqjMZRZHxl2QsztbkedkYy/SxqE/+Gh1gLaAF17tWIOcVJDiyGhar1NZy/0B9dFef7J0+FDw== - dependencies: - hastscript "^5.0.0" - parse-entities "^2.0.0" - prismjs "~1.20.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.3: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== - -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== - -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== - dependencies: - "@babel/runtime" "^7.8.4" - private "^0.1.8" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regex-parser@2.2.10: - version "2.2.10" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" - integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remark-parse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" - integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== - dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" - -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.5.4, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -replace-ext@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" - integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== - -replace-homedir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" - integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= - dependencies: - homedir-polyfill "^1.0.1" - is-absolute "^1.0.0" - remove-trailing-separator "^1.1.0" - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.87.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== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-options@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= - dependencies: - value-or-function "^3.0.0" - -resolve-url-loader@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" - integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== - dependencies: - adjust-sourcemap-loader "2.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.21" - rework "1.0.1" - rework-visit "1.0.0" - source-map "0.6.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" - integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== - dependencies: - path-parse "^1.0.6" - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - -rfdc@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" - integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -rtl-css-js@^1.9.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" - integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg== - dependencies: - "@babel/runtime" "^7.1.2" - -run-async@^2.2.0, run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rw@1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" - integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= - -rxjs@^6.5.3: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== - -sass-loader@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" - integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== - dependencies: - clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.6.1" - semver "^6.3.0" - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5: - version "2.6.6" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" - integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -schema-utils@^2.6.6, schema-utils@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -screenfull@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" - integrity sha512-cCF2b+L/mnEiORLN5xSAz6H3t18i2oHh9BA8+CQlAh5DRw2+NFAGQJOSYbcGw8B2k04g/lVvFcfZ83b3ysH5UQ== - -scroll-into-view-if-needed@^2.2.25: - version "2.2.26" - resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.26.tgz#e4917da0c820135ff65ad6f7e4b7d7af568c4f13" - integrity sha512-SQ6AOKfABaSchokAmmaxVnL9IArxEnLEX9j4wAZw+x4iUTb40q7irtHG3z4GtAWz5veVZcCnubXDBRyLVQaohw== - dependencies: - compute-scroll-into-view "^1.0.16" - -secure-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/secure-keys/-/secure-keys-1.0.0.tgz#f0c82d98a3b139a8776a8808050b824431087fca" - integrity sha1-8MgtmKOxOah3aogIBQuCRDEIf8o= - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -select@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= - -selfsigned@^1.10.7: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== - dependencies: - node-forge "0.9.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver-greatest-satisfied-range@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" - integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= - dependencies: - sver-compat "^1.5.0" - -semver-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -send@0.17.1, send@latest: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-favicon@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" - integrity sha1-k10kDN/g9YBTB/3+ln2IlCosvPA= - dependencies: - etag "~1.8.1" - fresh "0.5.2" - ms "2.1.1" - parseurl "~1.3.2" - safe-buffer "5.1.1" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-harmonic-interval@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" - integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shallowequal@^1.0.2, shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shelljs@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -side-channel@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== - dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -single-spa-react@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/single-spa-react/-/single-spa-react-3.0.1.tgz#7e67eaec47bc15b5716d6af6f83f5fbf1a1c05df" - integrity sha512-/toJWeG0UgJuN2CnvP5CewDR5IsH3GYXsFuOQgqkjY3BPUNDFYy4NiEAZE3OWpW+FjTbziGlrqy/u67WtE7tCw== - -single-spa@^5.9.2: - version "5.9.2" - resolved "https://registry.npm.taobao.org/single-spa/download/single-spa-5.9.2.tgz#4bb9a6eb6c90e3198b1549d8cdeb03241401b15b" - integrity sha1-S7mm62yQ4xmLFUnYzesDJBQBsVs= - -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -size-sensor@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/size-sensor/-/size-sensor-1.0.1.tgz#f84e46206d3e259faff1d548e4b3beca93219dbb" - integrity sha512-QTy7MnuugCFXIedXRpUSk9gUnyNiaxIdxGfUjr8xxXOqIB3QvBUYP9+b51oCg2C4dnhaeNk/h57TxjbvoJrJUA== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.1: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -space-separated-tokens@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" - integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== - -sparkles@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split.js@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/split.js/-/split.js-1.6.2.tgz#b8c63aeef2b15d84a003ead09e7def6ad166bb40" - integrity sha512-72C7zcQePzlmWqPOKkB2Ro0sUmnWSx+qEWXjLJKk6Qp4jAkFRz1hJgJb+ay6ZQyz/Aw9r8N/PZiCEKbPVpFoDQ== - -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sql-formatter-plus-plus@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sql-formatter-plus-plus/-/sql-formatter-plus-plus-1.4.0.tgz#e7b329ed572a4b804fd7f8ceb9960811af0b8656" - integrity sha512-AEXMcq+jwTTS/Ol1cD83eSRMdJje6yb5vWOFtl0drF9sGl7yVjc7tmJnDWaLStAOcalv/9BIk/91KKcw++ZjOA== - dependencies: - "@babel/polyfill" "^7.7.0" - lodash "^4.17.15" - regexpu-core "^4.7.0" - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - -ssri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" - integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-generator@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36" - integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q== - dependencies: - stackframe "^1.1.1" - -stack-trace@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - -stackframe@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" - integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== - -stacktrace-gps@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a" - integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg== - dependencies: - source-map "0.5.6" - stackframe "^1.1.1" - -stacktrace-js@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" - integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== - dependencies: - error-stack-parser "^2.0.6" - stack-generator "^2.0.5" - stacktrace-gps "^3.0.4" - -state-toggle@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" - integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -std-env@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.2.1.tgz#2ffa0fdc9e2263e0004c1211966e960948a40f6b" - integrity sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ== - dependencies: - ci-info "^1.6.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -store2@^2.7.1: - version "2.11.2" - resolved "https://registry.yarnpkg.com/store2/-/store2-2.11.2.tgz#a298e5e97b21b3ce7419b732540bc7c79cb007db" - integrity sha512-TQMKs+C6n9idtzLpxluikmDCYiDJrTbbIGn9LFxMg0BVTu+8JZKSlXTWYRpOFKlfKD5HlDWLVpJJyNGZ2e9l1A== - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= - dependencies: - duplexer "~0.1.1" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-exhaust@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" - integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-convert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" - integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-template@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" - integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" - -string.prototype.padend@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" - integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -string.prototype.padstart@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz#b47c087540d0710be5a49375751a0a627bd4ff90" - integrity sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -string.prototype.trimend@^1.0.0, string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0, string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" - integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== - -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -style-loader@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" - integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.6" - -styled-components@^2.0.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.4.1.tgz#663bd0485d4b6ab46f946210dc03d2398d1ade74" - integrity sha1-ZjvQSF1LarRvlGIQ3APSOY0a3nQ= - dependencies: - buffer "^5.0.3" - css-to-react-native "^2.0.3" - fbjs "^0.8.9" - hoist-non-react-statics "^1.2.0" - is-plain-object "^2.0.1" - prop-types "^15.5.4" - stylis "^3.4.0" - supports-color "^3.2.3" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -stylis@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.0.tgz#016fa239663d77f868fef5b67cf201c4b7c701e1" - integrity sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw== - -stylis@^3.4.0: - version "3.5.4" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" - integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -sver-compat@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" - integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= - dependencies: - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -svg-parser@^2.0.0, svg-parser@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^1.0.0, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -symbol.prototype.description@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.2.tgz#f325e1e6ad534b3b29c9c3ca73c136c9ce03c5e2" - integrity sha512-2CW5SU4/Ki1cYOOHcL2cXK4rxSg5hCU1TwZ7X4euKhV9VnfqKslh7T6/UyKkubA8cq2tOmsOv7m3ZUmQslBRuw== - dependencies: - es-abstract "^1.17.0-next.1" - has-symbols "^1.0.1" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" - integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.0" - mkdirp "^1.0.3" - yallist "^4.0.0" - -telejson@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-4.0.0.tgz#91ac1747f1efbc88a58e4344fbd8fe438695f77e" - integrity sha512-xTDEZd7bVIsbnOzTBTlUed+uKPThxMQPYtjN9OhvtsJQLJ7zEEX8bl8G72SlzfvQlTpxv1RTDq7Qfk1hMOw2zA== - dependencies: - "@types/is-function" "^1.0.0" - global "^4.4.0" - is-function "^1.0.2" - is-regex "^1.0.5" - is-symbol "^1.0.3" - isobject "^4.0.0" - lodash "^4.17.15" - memoizerific "^1.11.3" - -term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== - -terser-webpack-plugin@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" - integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.2.0" - jest-worker "^25.1.0" - p-limit "^2.2.2" - schema-utils "^2.6.4" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.4.3" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser-webpack-plugin@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.6.tgz#db0a108bbdd3680d72c9b491fbabad09ba207b99" - integrity sha512-z3HLOOPUHkCNGkeEHqqiMAIy1pjpHwS1o+i6Zn0Ws3EAvHJj46737efNNEvJ0Vx9BdDQM83d56qySDJOSORA0A== - dependencies: - cacache "^15.0.4" - find-cache-dir "^3.3.1" - jest-worker "^26.0.0" - p-limit "^3.0.1" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.8.0" - webpack-sources "^1.4.3" - -terser@^4.1.2, terser@^4.4.3, terser@^4.6.3: - version "4.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" - integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - -throttle-debounce@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.1.0.tgz#257e648f0a56bd9e54fe0f132c4ab8611df4e1d5" - integrity sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg== - -through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - -through@2, through@^2.3.6, through@~2.3, through@~2.3.1: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-emitter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" - integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== - -tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== - -tmp@0.0.x, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -to-through@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= - dependencies: - through2 "^2.0.3" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" - integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== - -trim@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= - -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-dedent@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.1.1.tgz#68fad040d7dbd53a90f545b450702340e17d18f3" - integrity sha512-UGTRZu1evMw4uTPyYF66/KFd22XiU+jMaIuHrkIHQ2GivAXVlLV0v/vHrpOuTRf9BmpNHi/SO7Vd0rLu0y57jg== - -ts-easing@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" - integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== - -ts-essentials@^2.0.3: - version "2.0.12" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" - integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== - -ts-pnp@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" - integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== - -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1617647074515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= - -tslib@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" - integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== - -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== - -typed-styles@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" - integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.9.7: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== - -ua-parser-js@^0.7.18: - version "0.7.28" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" - integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - -undertaker-registry@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" - integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= - -undertaker@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" - integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== - dependencies: - arr-flatten "^1.0.1" - arr-map "^2.0.0" - bach "^1.0.0" - collection-map "^1.0.0" - es6-weak-map "^2.0.1" - last-run "^1.1.0" - object.defaults "^1.0.0" - object.reduce "^1.0.0" - undertaker-registry "^1.0.0" - -unfetch@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.1.0.tgz#6ec2dd0de887e58a4dee83a050ded80ffc4137db" - integrity sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg== - -unherit@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" - integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== - dependencies: - inherits "^2.0.0" - xtend "^4.0.0" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -unified@^6.1.5: - version "6.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" - integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-plain-obj "^1.1.0" - trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-stream@^2.0.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - -unist-util-is@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" - integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== - -unist-util-remove-position@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== - dependencies: - unist-util-visit "^1.1.0" - -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" - integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== - -unist-util-visit-parents@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06" - integrity sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q== - -unist-util-visit-parents@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" - integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== - dependencies: - unist-util-is "^3.0.0" - -unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" - integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== - dependencies: - unist-util-visit-parents "^2.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - -unix-crypt-td-js@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" - integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@^1.1.0, unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url-loader@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.0.tgz#c7d6b0d6b0fccd51ab3ffc58a78d32b8d89a7be2" - integrity sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.26" - schema-utils "^2.6.5" - -url-parse@^1.4.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" - integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use-composed-ref@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.0.0.tgz#bb13e8f4a0b873632cde4940abeb88b92d03023a" - integrity sha512-RVqY3NFNjZa0xrmK3bIMWNmQ01QjKPDc7DeWR3xa/N8aliVppuutOE5bZzPkQfvL+5NRWMMp0DJ99Trd974FIw== - dependencies: - ts-essentials "^2.0.3" - -use-isomorphic-layout-effect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.0.0.tgz#f56b4ed633e1c21cd9fc76fe249002a1c28989fb" - integrity sha512-JMwJ7Vd86NwAt1jH7q+OIozZSIxA4ND0fx6AsOe2q1H8ooBUp5aN6DvVCqZiIaYU6JaMRJGyR0FO7EBCIsb/Rg== - -use-latest@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.1.0.tgz#7bf9684555869c3f5f37e10d0884c8accf4d3aa6" - integrity sha512-gF04d0ZMV3AMB8Q7HtfkAWe+oq1tFXP6dZKwBHQF5nVXtGsh2oAYeeqma5ZzxtlpOcW8Ro/tLcfmEodjDeqtuw== - dependencies: - use-isomorphic-layout-effect "^1.0.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -useragent@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@^1.0.0, util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e" - integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== - -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== - -v8flags@^3.0.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" - integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== - dependencies: - homedir-polyfill "^1.0.1" - -v8flags@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" - integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== - dependencies: - homedir-polyfill "^1.0.1" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -value-or-function@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== - -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" - -vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" - integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== - dependencies: - is-buffer "^1.1.4" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - -vinyl-fs@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== - dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" - -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= - dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" - -vinyl@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -void-elements@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= - -w3c-hr-time@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -warning@^4.0.1, warning@^4.0.2, warning@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.6.0, watchpack@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" - integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.0" - watchpack-chokidar2 "^2.0.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@>=1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-bundle-analyzer@^3.7.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16" - integrity sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - bfj "^6.1.1" - chalk "^2.4.1" - commander "^2.18.0" - ejs "^2.6.1" - express "^4.16.3" - filesize "^3.6.1" - gzip-size "^5.0.0" - lodash "^4.17.15" - mkdirp "^0.5.1" - opener "^1.5.1" - ws "^6.0.0" - -webpack-dev-middleware@^3.7.0, webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.10.3: - version "3.10.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" - integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.6" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.4.0" - spdy "^4.0.1" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" - -webpack-hot-middleware@^2.25.0: - version "2.25.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" - integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== - dependencies: - ansi-html "0.0.7" - html-entities "^1.2.0" - querystring "^0.2.0" - strip-ansi "^3.0.0" - -webpack-log@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" - integrity sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA== - dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - loglevelnext "^1.0.1" - uuid "^3.1.0" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== - dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - object.entries "^1.1.0" - tapable "^1.0.0" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-virtual-modules@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" - integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== - dependencies: - debug "^3.0.0" - -webpack@4.42.0: - version "4.42.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" - integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -webpack@^4.43.0: - version "4.43.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" - integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.1" - webpack-sources "^1.4.1" - -webpackbar@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-4.0.0.tgz#ee7a87f16077505b5720551af413c8ecd5b1f780" - integrity sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - consola "^2.10.0" - figures "^3.0.0" - pretty-time "^1.1.0" - std-env "^2.2.1" - text-table "^0.2.0" - wrap-ansi "^6.0.0" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== - -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - -which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -window-size@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" - integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workbox-background-sync@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" - integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== - dependencies: - workbox-core "^4.3.1" - -workbox-broadcast-update@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" - integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== - dependencies: - workbox-core "^4.3.1" - -workbox-build@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" - integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== - dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" - common-tags "^1.8.0" - fs-extra "^4.0.2" - glob "^7.1.3" - lodash.template "^4.4.0" - pretty-bytes "^5.1.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - workbox-background-sync "^4.3.1" - workbox-broadcast-update "^4.3.1" - workbox-cacheable-response "^4.3.1" - workbox-core "^4.3.1" - workbox-expiration "^4.3.1" - workbox-google-analytics "^4.3.1" - workbox-navigation-preload "^4.3.1" - workbox-precaching "^4.3.1" - workbox-range-requests "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - workbox-streams "^4.3.1" - workbox-sw "^4.3.1" - workbox-window "^4.3.1" - -workbox-cacheable-response@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" - integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== - dependencies: - workbox-core "^4.3.1" - -workbox-core@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" - integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== - -workbox-expiration@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" - integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== - dependencies: - workbox-core "^4.3.1" - -workbox-google-analytics@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" - integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== - dependencies: - workbox-background-sync "^4.3.1" - workbox-core "^4.3.1" - workbox-routing "^4.3.1" - workbox-strategies "^4.3.1" - -workbox-navigation-preload@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" - integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== - dependencies: - workbox-core "^4.3.1" - -workbox-precaching@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" - integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== - dependencies: - workbox-core "^4.3.1" - -workbox-range-requests@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" - integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== - dependencies: - workbox-core "^4.3.1" - -workbox-routing@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" - integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== - dependencies: - workbox-core "^4.3.1" - -workbox-strategies@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" - integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== - dependencies: - workbox-core "^4.3.1" - -workbox-streams@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" - integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== - dependencies: - workbox-core "^4.3.1" - -workbox-sw@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" - integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== - -workbox-webpack-plugin@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" - integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== - dependencies: - "@babel/runtime" "^7.0.0" - json-stable-stringify "^1.0.1" - workbox-build "^4.3.1" - -workbox-window@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" - integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== - dependencies: - workbox-core "^4.3.1" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^5.2.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.0.0, ws@^6.1.2, ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xregexp@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" - integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== - dependencies: - "@babel/runtime-corejs3" "^7.8.3" - -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xxhashjs@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" - integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== - dependencies: - cuint "^0.2.2" - -y18n@^3.2.0, y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml-lint-loader@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yaml-lint-loader/-/yaml-lint-loader-1.0.0.tgz#70e3d153bc761e4b7626ef852acef98d507910ca" - integrity sha512-gSGAdO+utAbjp+DUT+HyPJVaVJoGu6iP0aZcpb2tcOO5eFwUjvBalo56RJMnP+nUna8Kh8Rj/zLoKfDLLaTabA== - dependencies: - yaml-lint "^1.2.4" - -yaml-lint@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/yaml-lint/-/yaml-lint-1.2.4.tgz#0dec2d1ef4e5ec999bba1e34d618fc60498d1bc5" - integrity sha512-qpKE0szyKsE9TrlVPi+bxKxVAjl30QjNAOyOxy7noQdf/WCCYUlT4xiCRxMG48eyeBzMBtBN6PgGfaB0MJePNw== - dependencies: - glob "^7.1.2" - js-yaml "^3.10.0" - leprechaun "0.0.2" - lodash.merge "^4.6.1" - lodash.snakecase "^4.1.1" - nconf "^0.10.0" - -yaml-loader@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.5.0.tgz#86b1982d84a8e429e6647d93de9a0169e1c15827" - integrity sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A== - dependencies: - js-yaml "^3.5.2" - -yaml@^1.7.2: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@5.0.0-security.0: - version "5.0.0-security.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" - integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== - dependencies: - camelcase "^3.0.0" - object.assign "^4.1.0" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^3.19.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" - integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= - dependencies: - camelcase "^2.0.1" - cliui "^3.0.3" - decamelize "^1.1.1" - os-locale "^1.4.0" - string-width "^1.0.1" - window-size "^0.1.4" - y18n "^3.2.0" - -yargs@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" - integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "5.0.0-security.0" - -zrender@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/zrender/-/zrender-4.3.1.tgz#baf8aa6dc8187a2f819692d7d5f9bedfa2b90fa3" - integrity sha512-CeH2TpJeCdG0TAGYoPSAcFX2ogdug1K7LIn9UO/q9HWqQ54gWhrMAlDP9AwWYMUDhrPe4VeazQ4DW3msD96nUQ== From 85e559c890414ee92a31687388b08eaa6b8c4e40 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Fri, 19 Nov 2021 18:47:24 +0800 Subject: [PATCH 036/100] handle i18n --- ui/dashboardApp/index.ts | 6 ++--- ui/dashboardApp/layout/translations/index.ts | 4 ++++ ui/diagnoseReportApp/index.tsx | 3 ++- ui/diagnoseReportApp/translations/index.ts | 4 ++++ ui/lib/apps/ClusterInfo/index.meta.ts | 3 ++- ui/lib/apps/ClusterInfo/translations/index.ts | 4 ++++ ui/lib/apps/Configuration/index.meta.ts | 3 ++- .../apps/Configuration/translations/index.ts | 4 ++++ ui/lib/apps/ContinuousProfiling/index.meta.ts | 3 ++- .../ContinuousProfiling/translations/index.ts | 4 ++++ ui/lib/apps/DebugAPI/index.meta.ts | 3 ++- ui/lib/apps/DebugAPI/translations/index.ts | 4 ++++ ui/lib/apps/Diagnose/index.meta.ts | 3 ++- ui/lib/apps/Diagnose/translations/index.ts | 4 ++++ ui/lib/apps/InstanceProfiling/index.meta.ts | 3 ++- .../InstanceProfiling/translations/index.ts | 4 ++++ ui/lib/apps/KeyViz/index.meta.ts | 3 ++- ui/lib/apps/KeyViz/translations/index.ts | 4 ++++ ui/lib/apps/Overview/index.meta.ts | 3 ++- ui/lib/apps/Overview/translations/index.ts | 4 ++++ ui/lib/apps/QueryEditor/index.meta.ts | 3 ++- ui/lib/apps/QueryEditor/translations/index.ts | 4 ++++ ui/lib/apps/SearchLogs/index.meta.ts | 3 ++- ui/lib/apps/SearchLogs/translations/index.ts | 4 ++++ ui/lib/apps/SlowQuery/index.meta.ts | 3 ++- ui/lib/apps/SlowQuery/translations/index.ts | 4 ++++ ui/lib/apps/Statement/index.meta.ts | 3 ++- ui/lib/apps/Statement/translations/index.ts | 4 ++++ ui/lib/apps/SystemReport/index.meta.ts | 3 ++- .../apps/SystemReport/translations/index.ts | 4 ++++ ui/lib/apps/UserProfile/index.meta.ts | 3 ++- ui/lib/apps/UserProfile/translations/index.ts | 4 ++++ ui/lib/client/index.tsx | 3 ++- ui/lib/client/translations/index.ts | 4 ++++ ui/lib/utils/i18n.ts | 22 ++++--------------- ui/lib/utils/registry.ts | 6 ++--- ui/src/react-app-env.d.ts | 7 ++++++ 37 files changed, 117 insertions(+), 40 deletions(-) create mode 100644 ui/dashboardApp/layout/translations/index.ts create mode 100644 ui/diagnoseReportApp/translations/index.ts create mode 100644 ui/lib/apps/ClusterInfo/translations/index.ts create mode 100644 ui/lib/apps/Configuration/translations/index.ts create mode 100644 ui/lib/apps/ContinuousProfiling/translations/index.ts create mode 100644 ui/lib/apps/DebugAPI/translations/index.ts create mode 100644 ui/lib/apps/Diagnose/translations/index.ts create mode 100644 ui/lib/apps/InstanceProfiling/translations/index.ts create mode 100644 ui/lib/apps/KeyViz/translations/index.ts create mode 100644 ui/lib/apps/Overview/translations/index.ts create mode 100644 ui/lib/apps/QueryEditor/translations/index.ts create mode 100644 ui/lib/apps/SearchLogs/translations/index.ts create mode 100644 ui/lib/apps/SlowQuery/translations/index.ts create mode 100644 ui/lib/apps/Statement/translations/index.ts create mode 100644 ui/lib/apps/SystemReport/translations/index.ts create mode 100644 ui/lib/apps/UserProfile/translations/index.ts create mode 100644 ui/lib/client/translations/index.ts diff --git a/ui/dashboardApp/index.ts b/ui/dashboardApp/index.ts index d7d282a60e..296faf1f57 100755 --- a/ui/dashboardApp/index.ts +++ b/ui/dashboardApp/index.ts @@ -39,6 +39,8 @@ import { mustLoadAppInfo, reloadWhoAmI } from '@lib/utils/store' // import __APP_NAME__ from '@lib/apps/__APP_NAME__/index.meta' // NOTE: Don't remove above comment line, it is a placeholder for code generator +import translations from './layout/translations' + function removeSpinner() { const spinner = document.getElementById('dashboard_page_spinner') if (spinner) { @@ -51,9 +53,7 @@ async function webPageStart() { if (options.lang) { i18next.changeLanguage(options.lang) } - // i18n.addTranslations( - // require.context('@dashboard/layout/translations/', false, /\.yaml$/) - // ) + i18n.addTranslations(translations) let info: InfoInfoResponse diff --git a/ui/dashboardApp/layout/translations/index.ts b/ui/dashboardApp/layout/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/dashboardApp/layout/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/diagnoseReportApp/index.tsx b/ui/diagnoseReportApp/index.tsx index b2462a96ca..6926c26444 100644 --- a/ui/diagnoseReportApp/index.tsx +++ b/ui/diagnoseReportApp/index.tsx @@ -6,6 +6,7 @@ import '@fortawesome/fontawesome-free/js/all.js' import * as i18n from '@lib/utils/i18n' import DiagnosisReport from './components/DiagnosisReport' +import translations from './translations' import './index.css' function refineDiagnosisData() { @@ -23,7 +24,7 @@ function refineDiagnosisData() { return diagnosisData } -// i18n.addTranslations(require.context('./translations/', false, /\.yaml$/)) +i18n.addTranslations(translations) ReactDOM.render( , diff --git a/ui/diagnoseReportApp/translations/index.ts b/ui/diagnoseReportApp/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/diagnoseReportApp/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/ClusterInfo/index.meta.ts b/ui/lib/apps/ClusterInfo/index.meta.ts index 2b14f97dfc..dd6741bb20 100644 --- a/ui/lib/apps/ClusterInfo/index.meta.ts +++ b/ui/lib/apps/ClusterInfo/index.meta.ts @@ -1,9 +1,10 @@ import { ClusterOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'cluster_info', routerPrefix: '/cluster_info', icon: ClusterOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_cluster_info" */ '.'), } diff --git a/ui/lib/apps/ClusterInfo/translations/index.ts b/ui/lib/apps/ClusterInfo/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/ClusterInfo/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/Configuration/index.meta.ts b/ui/lib/apps/Configuration/index.meta.ts index 651a9440a6..9ba8e63a29 100644 --- a/ui/lib/apps/Configuration/index.meta.ts +++ b/ui/lib/apps/Configuration/index.meta.ts @@ -1,9 +1,10 @@ import { ToolOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'configuration', routerPrefix: '/configuration', icon: ToolOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_configuration" */ '.'), } diff --git a/ui/lib/apps/Configuration/translations/index.ts b/ui/lib/apps/Configuration/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/Configuration/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/ContinuousProfiling/index.meta.ts b/ui/lib/apps/ContinuousProfiling/index.meta.ts index 098073b95e..61fa37962f 100644 --- a/ui/lib/apps/ContinuousProfiling/index.meta.ts +++ b/ui/lib/apps/ContinuousProfiling/index.meta.ts @@ -1,10 +1,11 @@ import { AimOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'continuous_profiling', routerPrefix: '/continuous_profiling', icon: AimOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_continuous_profiling" */ '.'), } diff --git a/ui/lib/apps/ContinuousProfiling/translations/index.ts b/ui/lib/apps/ContinuousProfiling/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/ContinuousProfiling/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/DebugAPI/index.meta.ts b/ui/lib/apps/DebugAPI/index.meta.ts index 70f31a1f72..ed8c801b12 100644 --- a/ui/lib/apps/DebugAPI/index.meta.ts +++ b/ui/lib/apps/DebugAPI/index.meta.ts @@ -1,9 +1,10 @@ import { ApiOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'debug_api', routerPrefix: '/debug_api', icon: ApiOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_debug_api" */ '.'), } diff --git a/ui/lib/apps/DebugAPI/translations/index.ts b/ui/lib/apps/DebugAPI/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/DebugAPI/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/Diagnose/index.meta.ts b/ui/lib/apps/Diagnose/index.meta.ts index 8be7ccd155..8866754260 100644 --- a/ui/lib/apps/Diagnose/index.meta.ts +++ b/ui/lib/apps/Diagnose/index.meta.ts @@ -1,9 +1,10 @@ import { SafetyCertificateOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'diagnose', routerPrefix: '/diagnose', icon: SafetyCertificateOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_diagnose" */ '.'), } diff --git a/ui/lib/apps/Diagnose/translations/index.ts b/ui/lib/apps/Diagnose/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/Diagnose/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/InstanceProfiling/index.meta.ts b/ui/lib/apps/InstanceProfiling/index.meta.ts index 6be3711195..8aa5836538 100644 --- a/ui/lib/apps/InstanceProfiling/index.meta.ts +++ b/ui/lib/apps/InstanceProfiling/index.meta.ts @@ -1,9 +1,10 @@ import { AimOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'instance_profiling', routerPrefix: '/instance_profiling', icon: AimOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_instance_profiling" */ '.'), } diff --git a/ui/lib/apps/InstanceProfiling/translations/index.ts b/ui/lib/apps/InstanceProfiling/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/InstanceProfiling/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/KeyViz/index.meta.ts b/ui/lib/apps/KeyViz/index.meta.ts index c9ada5e818..710202fca6 100644 --- a/ui/lib/apps/KeyViz/index.meta.ts +++ b/ui/lib/apps/KeyViz/index.meta.ts @@ -1,9 +1,10 @@ import { EyeOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'keyviz', routerPrefix: '/keyviz', icon: EyeOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_keyviz" */ '.'), } diff --git a/ui/lib/apps/KeyViz/translations/index.ts b/ui/lib/apps/KeyViz/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/KeyViz/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/Overview/index.meta.ts b/ui/lib/apps/Overview/index.meta.ts index 396dadfae5..64f4be3ce0 100644 --- a/ui/lib/apps/Overview/index.meta.ts +++ b/ui/lib/apps/Overview/index.meta.ts @@ -1,10 +1,11 @@ import { AppstoreOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'overview', routerPrefix: '/overview', icon: AppstoreOutlined, isDefaultRouter: true, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_overview" */ '.'), } diff --git a/ui/lib/apps/Overview/translations/index.ts b/ui/lib/apps/Overview/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/Overview/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/QueryEditor/index.meta.ts b/ui/lib/apps/QueryEditor/index.meta.ts index 05122615f5..60466871c8 100644 --- a/ui/lib/apps/QueryEditor/index.meta.ts +++ b/ui/lib/apps/QueryEditor/index.meta.ts @@ -1,9 +1,10 @@ import { ConsoleSqlOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'query_editor', routerPrefix: '/query_editor', icon: ConsoleSqlOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "query_editor" */ '.'), } diff --git a/ui/lib/apps/QueryEditor/translations/index.ts b/ui/lib/apps/QueryEditor/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/QueryEditor/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/SearchLogs/index.meta.ts b/ui/lib/apps/SearchLogs/index.meta.ts index 8761289a8c..73feca45cd 100644 --- a/ui/lib/apps/SearchLogs/index.meta.ts +++ b/ui/lib/apps/SearchLogs/index.meta.ts @@ -1,9 +1,10 @@ import { FileSearchOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'search_logs', routerPrefix: '/search_logs', icon: FileSearchOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_search_logs" */ '.'), } diff --git a/ui/lib/apps/SearchLogs/translations/index.ts b/ui/lib/apps/SearchLogs/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/SearchLogs/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/SlowQuery/index.meta.ts b/ui/lib/apps/SlowQuery/index.meta.ts index b11f3a0468..1cdc12b6a3 100644 --- a/ui/lib/apps/SlowQuery/index.meta.ts +++ b/ui/lib/apps/SlowQuery/index.meta.ts @@ -1,9 +1,10 @@ import { RocketOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'slow_query', routerPrefix: '/slow_query', icon: RocketOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_slow_query" */ '.'), } diff --git a/ui/lib/apps/SlowQuery/translations/index.ts b/ui/lib/apps/SlowQuery/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/SlowQuery/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/Statement/index.meta.ts b/ui/lib/apps/Statement/index.meta.ts index d877949321..3658e5ded5 100644 --- a/ui/lib/apps/Statement/index.meta.ts +++ b/ui/lib/apps/Statement/index.meta.ts @@ -1,9 +1,10 @@ import { ThunderboltOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'statement', routerPrefix: '/statement', icon: ThunderboltOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_statement" */ '.'), } diff --git a/ui/lib/apps/Statement/translations/index.ts b/ui/lib/apps/Statement/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/Statement/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/SystemReport/index.meta.ts b/ui/lib/apps/SystemReport/index.meta.ts index 2cd97af6a9..5a8858e9bd 100644 --- a/ui/lib/apps/SystemReport/index.meta.ts +++ b/ui/lib/apps/SystemReport/index.meta.ts @@ -1,9 +1,10 @@ import { SnippetsOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'system_report', routerPrefix: '/system_report', icon: SnippetsOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_system_report" */ '.'), } diff --git a/ui/lib/apps/SystemReport/translations/index.ts b/ui/lib/apps/SystemReport/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/SystemReport/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/apps/UserProfile/index.meta.ts b/ui/lib/apps/UserProfile/index.meta.ts index 410825716d..c4fb1abd8f 100644 --- a/ui/lib/apps/UserProfile/index.meta.ts +++ b/ui/lib/apps/UserProfile/index.meta.ts @@ -1,9 +1,10 @@ import { UserOutlined } from '@ant-design/icons' +import translations from './translations' export default { id: 'user_profile', routerPrefix: '/user_profile', icon: UserOutlined, - // translations: require.context('./translations/', false, /\.yaml$/), + translations, reactRoot: () => import(/* webpackChunkName: "app_user_profile" */ '.'), } diff --git a/ui/lib/apps/UserProfile/translations/index.ts b/ui/lib/apps/UserProfile/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/apps/UserProfile/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/client/index.tsx b/ui/lib/client/index.tsx index 82268a6482..9ec0aa7e11 100755 --- a/ui/lib/client/index.tsx +++ b/ui/lib/client/index.tsx @@ -11,6 +11,7 @@ import { reportError } from '@lib/utils/sentryHelpers' import { DefaultApi } from './api' import { getApiBasePath } from './baseUrl' +import translations from './translations' export * from './api' @@ -114,7 +115,7 @@ function applyErrorHandlerInterceptor(instance: AxiosInstance) { } function initAxios() { - // i18n.addTranslations(require.context('./translations/', false, /\.yaml$/)) + i18n.addTranslations(translations) const instance = axios.create() applyErrorHandlerInterceptor(instance) diff --git a/ui/lib/client/translations/index.ts b/ui/lib/client/translations/index.ts new file mode 100644 index 0000000000..a8c57746f6 --- /dev/null +++ b/ui/lib/client/translations/index.ts @@ -0,0 +1,4 @@ +import zh from './zh.yaml' +import en from './en.yaml' + +export default { zh, en } diff --git a/ui/lib/utils/i18n.ts b/ui/lib/utils/i18n.ts index 5d0b0a9ade..1add526313 100755 --- a/ui/lib/utils/i18n.ts +++ b/ui/lib/utils/i18n.ts @@ -11,24 +11,10 @@ i18next.on('languageChanged', function (lng) { dayjs.locale(lng.toLowerCase()) }) -export function addTranslations(requireContext) { - // if (typeof requireContext === 'object') { - // Object.keys(requireContext).forEach((key) => { - // const translations = requireContext[key] - // addTranslationResource(key, translations) - // }) - // return - // } - // const keys = requireContext.keys() - // keys.forEach((key) => { - // const m = key.match(/\/(.+)\.yaml/) - // if (!m) { - // return - // } - // const lang = m[1] - // const translations = requireContext(key) - // addTranslationResource(lang, translations) - // }) +export function addTranslations(translations) { + Object.keys(translations).forEach((key) => { + addTranslationResource(key, translations[key]) + }) } export function addTranslationResource(lang, translations) { diff --git a/ui/lib/utils/registry.ts b/ui/lib/utils/registry.ts index 8fc8332f21..e0c1b9b24e 100644 --- a/ui/lib/utils/registry.ts +++ b/ui/lib/utils/registry.ts @@ -47,9 +47,9 @@ export default class AppRegistry { * }} app */ register(app) { - // if (app.translations) { - // i18n.addTranslations(app.translations) - // } + if (app.translations) { + i18n.addTranslations(app.translations) + } singleSpa.registerApplication( app.id, diff --git a/ui/src/react-app-env.d.ts b/ui/src/react-app-env.d.ts index fd6e7f08fc..676763dd22 100644 --- a/ui/src/react-app-env.d.ts +++ b/ui/src/react-app-env.d.ts @@ -9,3 +9,10 @@ declare module '*.module.less' { const classes: { readonly [key: string]: string } export default classes } + +declare module '*.yaml' { + const content: { + [key: string]: any + } + export default content +} From 8dd25cda0afc45079974790aa15c33c7cef07367 Mon Sep 17 00:00:00 2001 From: baurine <2008.hbl@gmail.com> Date: Fri, 19 Nov 2021 19:51:44 +0800 Subject: [PATCH 037/100] handle svg --- ui/builder.js | 9 +- ui/dashboardApp/layout/main/Sider/Banner.tsx | 4 +- ui/dashboardApp/layout/signin/index.tsx | 8 +- ui/package.json | 1 + ui/src/react-app-env.d.ts | 8 + ui/yarn.lock | 285 +++++++++++++++++++ 6 files changed, 303 insertions(+), 12 deletions(-) diff --git a/ui/builder.js b/ui/builder.js index b183981e87..927f46074f 100644 --- a/ui/builder.js +++ b/ui/builder.js @@ -9,6 +9,7 @@ const { watch } = require('chokidar') const { build } = require('esbuild') const postCssPlugin = require('esbuild-plugin-postcss2') const { yamlPlugin } = require('esbuild-plugin-yaml') +const svgrPlugin = require('esbuild-plugin-svgr') require('dotenv').config() @@ -42,7 +43,6 @@ const serverParams = { const lessModifyVars = { '@primary-color': '#4394fc', - // '@primary-color': '#1DA57A', '@body-background': '#fff', '@tooltip-bg': 'rgba(0, 0, 0, 0.9)', '@tooltip-max-width': '500px', @@ -67,7 +67,7 @@ for (const k in process.env) { define[`process.env.${k}`] = JSON.stringify(process.env[k]) } } -// console.log(define) +console.log(define) /** * ESBuild Params @@ -85,20 +85,17 @@ const buildParams = { logLevel: 'error', incremental: true, splitting: true, - loader: { - '.svg': 'dataurl', - }, platform: 'browser', plugins: [ postCssPlugin.default({ lessOptions: { - // modifyVars: { '@primary-color': '#1DA57A' }, modifyVars: lessModifyVars, globalVars: lessGlobalVars, javascriptEnabled: true, }, }), yamlPlugin(), + svgrPlugin(), ], define, } diff --git a/ui/dashboardApp/layout/main/Sider/Banner.tsx b/ui/dashboardApp/layout/main/Sider/Banner.tsx index 9203023a63..d2ffc6151c 100644 --- a/ui/dashboardApp/layout/main/Sider/Banner.tsx +++ b/ui/dashboardApp/layout/main/Sider/Banner.tsx @@ -7,7 +7,7 @@ import { InfoInfoResponse } from '@lib/client' import { useTranslation } from 'react-i18next' import { TFunction } from 'i18next' -// import { ReactComponent as Logo } from './logo-icon-light.svg' +import Logo from './logo-icon-light.svg' import styles from './Banner.module.less' import { store } from '@lib/utils/store' @@ -81,7 +81,7 @@ export default function ToggleBanner({ >
    - {/* */} +
    diff --git a/ui/dashboardApp/layout/signin/index.tsx b/ui/dashboardApp/layout/signin/index.tsx index de3d3ae589..e71250db9c 100755 --- a/ui/dashboardApp/layout/signin/index.tsx +++ b/ui/dashboardApp/layout/signin/index.tsx @@ -32,7 +32,7 @@ import * as auth from '@lib/utils/auth' import { Root, AppearAnimate, LanguageDropdown } from '@lib/components' import styles from './index.module.less' -// import { ReactComponent as Logo } from './logo.svg' +import Logo from './logo.svg' import { useIsFeatureSupport } from '@lib/utils/store' enum DisplayFormType { @@ -255,7 +255,7 @@ function TiDBSignInForm({ successRoute, onClickAlternative }) { initialValues={{ username: lastLoginUsername }} form={refForm} > - {/* */} +

    {t('signin.form.tidb_auth.title')}

    @@ -339,7 +339,7 @@ function CodeSignInForm({ successRoute, onClickAlternative }) {
    - {/* */} +

    {t('signin.form.code_auth.title')}

    @@ -399,7 +399,7 @@ function SSOSignInForm({ successRoute, onClickAlternative }) {
    - {/* */} +
    + + {t('signin.form.use_alternative')} + +