Merge pull request #28 from edx/kshitij/fixes

feat: implement new filter bar and UX changes [BD-38] [TNL-9168] [TNL-8787]
This commit is contained in:
Kshitij Sobti
2021-10-28 11:22:48 +00:00
committed by GitHub
32 changed files with 2143 additions and 1939 deletions

2783
package-lock.json generated
View File

@@ -21,27 +21,6 @@
"source-map": "^0.5.0"
},
"dependencies": {
"chokidar": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true,
"optional": true,
"requires": {
"anymatch": "^2.0.0",
"async-each": "^1.0.1",
"braces": "^2.3.2",
"fsevents": "^1.2.7",
"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"
}
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -141,15 +120,15 @@
},
"dependencies": {
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -169,15 +148,15 @@
},
"dependencies": {
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -221,21 +200,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -300,9 +279,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -317,9 +296,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -351,9 +330,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -442,15 +421,15 @@
},
"dependencies": {
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -489,15 +468,15 @@
},
"dependencies": {
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -567,15 +546,15 @@
},
"dependencies": {
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -615,15 +594,15 @@
},
"dependencies": {
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -666,21 +645,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -715,9 +694,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -732,9 +711,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -766,9 +745,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -846,9 +825,9 @@
}
},
"@babel/plugin-proposal-async-generator-functions": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz",
"integrity": "sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz",
"integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.14.5",
@@ -1343,15 +1322,15 @@
"dev": true
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -1410,21 +1389,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -1495,9 +1474,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -1512,9 +1491,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -1546,9 +1525,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -1693,9 +1672,9 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
@@ -1728,9 +1707,9 @@
"dev": true
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -1745,9 +1724,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -1762,9 +1741,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -1819,21 +1798,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -1877,19 +1856,19 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
"integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
"integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.15.4",
"@babel/helper-replace-supers": "^7.15.4",
"@babel/helper-simple-access": "^7.15.4",
"@babel/helper-split-export-declaration": "^7.15.4",
"@babel/helper-validator-identifier": "^7.14.9",
"@babel/helper-validator-identifier": "^7.15.7",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4"
"@babel/types": "^7.15.6"
}
},
"@babel/helper-optimise-call-expression": {
@@ -1938,9 +1917,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -1955,9 +1934,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -1989,9 +1968,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -2034,21 +2013,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -2092,19 +2071,19 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
"integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
"integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.15.4",
"@babel/helper-replace-supers": "^7.15.4",
"@babel/helper-simple-access": "^7.15.4",
"@babel/helper-split-export-declaration": "^7.15.4",
"@babel/helper-validator-identifier": "^7.14.9",
"@babel/helper-validator-identifier": "^7.15.7",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4"
"@babel/types": "^7.15.6"
}
},
"@babel/helper-optimise-call-expression": {
@@ -2153,9 +2132,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -2170,9 +2149,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -2204,9 +2183,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -2250,21 +2229,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -2308,19 +2287,19 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
"integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
"integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.15.4",
"@babel/helper-replace-supers": "^7.15.4",
"@babel/helper-simple-access": "^7.15.4",
"@babel/helper-split-export-declaration": "^7.15.4",
"@babel/helper-validator-identifier": "^7.14.9",
"@babel/helper-validator-identifier": "^7.15.7",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4"
"@babel/types": "^7.15.6"
}
},
"@babel/helper-optimise-call-expression": {
@@ -2369,9 +2348,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -2386,9 +2365,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -2420,9 +2399,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -2463,21 +2442,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -2521,19 +2500,19 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
"integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
"integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.15.4",
"@babel/helper-replace-supers": "^7.15.4",
"@babel/helper-simple-access": "^7.15.4",
"@babel/helper-split-export-declaration": "^7.15.4",
"@babel/helper-validator-identifier": "^7.14.9",
"@babel/helper-validator-identifier": "^7.15.7",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4"
"@babel/types": "^7.15.6"
}
},
"@babel/helper-optimise-call-expression": {
@@ -2582,9 +2561,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -2599,9 +2578,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -2633,9 +2612,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -2702,21 +2681,21 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -2787,9 +2766,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/highlight": {
@@ -2804,9 +2783,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -2838,9 +2817,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -2967,15 +2946,15 @@
"dev": true
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -3089,13 +3068,13 @@
}
},
"@babel/plugin-transform-spread": {
"version": "7.14.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz",
"integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz",
"integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.14.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.14.5"
"@babel/helper-skip-transparent-expression-wrappers": "^7.15.4"
},
"dependencies": {
"@babel/helper-plugin-utils": {
@@ -3265,9 +3244,9 @@
}
},
"@babel/preset-modules": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
"integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
"integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -3386,9 +3365,9 @@
"integrity": "sha512-hywY9u9apWGeLxQuRcXw7IW0XkMdXum/hr3TpmHY2fAbXMTFlhhkPCdsQeHzjxMQwTnMgXaZ4j4WOCwKtlDRCQ=="
},
"@discoveryjs/json-ext": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
"integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz",
"integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==",
"dev": true
},
"@edx/brand": {
@@ -3403,9 +3382,9 @@
"dev": true
},
"@edx/frontend-build": {
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-8.0.4.tgz",
"integrity": "sha512-j1GXQEONHyWgCBRDKuZIIQYh0Uda4sTmDI9kShPgEa93wwLryvUexsoJhrr7gHz+cHF2EdyyR8/3fnZYhZLjdw==",
"version": "8.0.6",
"resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-8.0.6.tgz",
"integrity": "sha512-hcjk/+ZmSUHmS11H2rVqw06d/vcBXkMd3TvSgAqrbjq/auFkPoEpbEooJrMr3vmeovQp5ah07HGAxsJjYc5CPQ==",
"dev": true,
"requires": {
"@babel/cli": "7.10.5",
@@ -3416,7 +3395,7 @@
"@babel/preset-env": "7.10.4",
"@babel/preset-react": "7.10.4",
"@edx/eslint-config": "1.2.0",
"@edx/new-relic-source-map-webpack-plugin": "1.0.0",
"@edx/new-relic-source-map-webpack-plugin": "1.0.1",
"@pmmmwh/react-refresh-webpack-plugin": "0.5.0-rc.2",
"@svgr/webpack": "5.5.0",
"autoprefixer": "10.2.6",
@@ -3457,7 +3436,7 @@
"url-loader": "4.1.1",
"webpack": "5.50.0",
"webpack-bundle-analyzer": "3.9.0",
"webpack-cli": "4.8.0",
"webpack-cli": "4.9.1",
"webpack-dev-server": "4.0.0-rc.1",
"webpack-merge": "5.2.0"
},
@@ -3618,15 +3597,14 @@
}
},
"@edx/frontend-platform": {
"version": "1.12.6",
"resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-1.12.6.tgz",
"integrity": "sha512-bhifApR/XmQij8HcxDoCSrjf7WZvwpOIqFRJDmdNBGVCkpCsG3jOXVDUUgpi5nH0WeASb+XN+V/f8jFcInWNgw==",
"version": "1.12.7",
"resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-1.12.7.tgz",
"integrity": "sha512-q4QmqVfYjuFCoG0oJthxhSx6rDljaSFZ0rjbQYccBogfwAKi+QedcGgYiPVsiRQN+b+hRleS/r+D0hJ+7zjtfQ==",
"requires": {
"@cospired/i18n-iso-languages": "2.2.0",
"axios": "0.21.4",
"axios-cache-adapter": "2.7.3",
"form-urlencoded": "4.1.4",
"glob": "7.1.7",
"history": "4.10.1",
"i18n-iso-countries": "4.3.1",
"jwt-decode": "3.1.2",
@@ -3642,18 +3620,18 @@
}
},
"@edx/new-relic-source-map-webpack-plugin": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@edx/new-relic-source-map-webpack-plugin/-/new-relic-source-map-webpack-plugin-1.0.0.tgz",
"integrity": "sha512-6z7EQxQGl/SvX2ivHxhTEgn56fU3c99kEDPbJdp8s80IWoiMN+Yq46hfCW/J0fiN1qsJsNNNAdwWlgChg/4aLQ==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@edx/new-relic-source-map-webpack-plugin/-/new-relic-source-map-webpack-plugin-1.0.1.tgz",
"integrity": "sha512-SAwugqBvDUg7ANdu1uBCkpPp0MnBlfyYAvKwO6Jh6Q4tMIPN6U35IF7MAymn1EZmi28UV6sLpSQPLggQjVQknA==",
"dev": true,
"requires": {
"@newrelic/publish-sourcemap": "^5.0.1"
}
},
"@edx/paragon": {
"version": "16.13.2",
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-16.13.2.tgz",
"integrity": "sha512-vj9zgc9WddMYBLnfZWrXRpXutz9oClQ2CNsLERBhjCNNUKBUj0jApdRfuJ9aRYWgEJSs8kPVBd0PiFd5SNCdeQ==",
"version": "16.15.0",
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-16.15.0.tgz",
"integrity": "sha512-l9sj+d3AWrAQxcWvL6djZ4QC2For7sBItfxOfmm1br5X19Po9WZQKNR0hmRCwD5CO6sMdjtNpKjvNqvvszl0oA==",
"requires": {
"@fortawesome/fontawesome-svg-core": "^1.2.30",
"@fortawesome/free-solid-svg-icons": "^5.14.0",
@@ -4321,9 +4299,9 @@
}
},
"@newrelic/publish-sourcemap": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@newrelic/publish-sourcemap/-/publish-sourcemap-5.0.1.tgz",
"integrity": "sha512-eXkc7+RAPJPVBhgYrJWq2nLUDDj1yrgM1yyaT6kDbczZe+NtecOwc3m3yx2WCkVRiAaSANQrKdUsbKkoqt5msg==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@newrelic/publish-sourcemap/-/publish-sourcemap-5.1.0.tgz",
"integrity": "sha512-pOpW0InKZp/DXUmD3h6vaCGdtMDY5LyzzKvq3S3MBwTKm5Qc5ka3yZC73sLAMOXnjKZmdyG3d8A5LC+LawOEpA==",
"dev": true,
"requires": {
"superagent": "^3.4.1",
@@ -4380,9 +4358,9 @@
}
},
"@popperjs/core": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.1.tgz",
"integrity": "sha512-HnUhk1Sy9IuKrxEMdIRCxpIqPw6BFsbYSEUO9p/hNw5sMld/+3OLMWQP80F8/db9qsv3qUjs7ZR5bS/R+iinXw=="
"version": "2.10.2",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz",
"integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ=="
},
"@reduxjs/toolkit": {
"version": "1.6.1",
@@ -4537,29 +4515,29 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/core": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz",
"integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz",
"integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.14.5",
"@babel/generator": "^7.15.4",
"@babel/code-frame": "^7.15.8",
"@babel/generator": "^7.15.8",
"@babel/helper-compilation-targets": "^7.15.4",
"@babel/helper-module-transforms": "^7.15.4",
"@babel/helper-module-transforms": "^7.15.8",
"@babel/helpers": "^7.15.4",
"@babel/parser": "^7.15.5",
"@babel/parser": "^7.15.8",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -4569,12 +4547,12 @@
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -4618,19 +4596,19 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
"integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
"integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.15.4",
"@babel/helper-replace-supers": "^7.15.4",
"@babel/helper-simple-access": "^7.15.4",
"@babel/helper-split-export-declaration": "^7.15.4",
"@babel/helper-validator-identifier": "^7.14.9",
"@babel/helper-validator-identifier": "^7.15.7",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4"
"@babel/types": "^7.15.6"
}
},
"@babel/helper-optimise-call-expression": {
@@ -4673,9 +4651,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/helpers": {
@@ -4701,9 +4679,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/template": {
@@ -4735,9 +4713,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -4801,29 +4779,29 @@
},
"dependencies": {
"@babel/code-frame": {
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
"integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.14.5"
}
},
"@babel/core": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz",
"integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz",
"integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.14.5",
"@babel/generator": "^7.15.4",
"@babel/code-frame": "^7.15.8",
"@babel/generator": "^7.15.8",
"@babel/helper-compilation-targets": "^7.15.4",
"@babel/helper-module-transforms": "^7.15.4",
"@babel/helper-module-transforms": "^7.15.8",
"@babel/helpers": "^7.15.4",
"@babel/parser": "^7.15.5",
"@babel/parser": "^7.15.8",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -4833,12 +4811,12 @@
}
},
"@babel/generator": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz",
"integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
"dev": true,
"requires": {
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
}
@@ -4882,19 +4860,19 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz",
"integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz",
"integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.15.4",
"@babel/helper-replace-supers": "^7.15.4",
"@babel/helper-simple-access": "^7.15.4",
"@babel/helper-split-export-declaration": "^7.15.4",
"@babel/helper-validator-identifier": "^7.14.9",
"@babel/helper-validator-identifier": "^7.15.7",
"@babel/template": "^7.15.4",
"@babel/traverse": "^7.15.4",
"@babel/types": "^7.15.4"
"@babel/types": "^7.15.6"
}
},
"@babel/helper-optimise-call-expression": {
@@ -4943,9 +4921,9 @@
}
},
"@babel/helper-validator-identifier": {
"version": "7.14.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
"dev": true
},
"@babel/helpers": {
@@ -4971,9 +4949,9 @@
}
},
"@babel/parser": {
"version": "7.15.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz",
"integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
"dev": true
},
"@babel/plugin-proposal-class-properties": {
@@ -4987,16 +4965,16 @@
}
},
"@babel/plugin-proposal-object-rest-spread": {
"version": "7.14.7",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz",
"integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz",
"integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==",
"dev": true,
"requires": {
"@babel/compat-data": "^7.14.7",
"@babel/helper-compilation-targets": "^7.14.5",
"@babel/compat-data": "^7.15.0",
"@babel/helper-compilation-targets": "^7.15.4",
"@babel/helper-plugin-utils": "^7.14.5",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-transform-parameters": "^7.14.5"
"@babel/plugin-transform-parameters": "^7.15.4"
}
},
"@babel/plugin-syntax-top-level-await": {
@@ -5009,9 +4987,9 @@
}
},
"@babel/preset-env": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.4.tgz",
"integrity": "sha512-4f2nLw+q6ht8gl3sHCmNhmA5W6b1ItLzbH3UrKuJxACHr2eCpk96jwjrAfCAaXaaVwTQGnyUYHY2EWXJGt7TUQ==",
"version": "7.15.8",
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz",
"integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==",
"dev": true,
"requires": {
"@babel/compat-data": "^7.15.0",
@@ -5019,7 +4997,7 @@
"@babel/helper-plugin-utils": "^7.14.5",
"@babel/helper-validator-option": "^7.14.5",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4",
"@babel/plugin-proposal-async-generator-functions": "^7.15.4",
"@babel/plugin-proposal-async-generator-functions": "^7.15.8",
"@babel/plugin-proposal-class-properties": "^7.14.5",
"@babel/plugin-proposal-class-static-block": "^7.15.4",
"@babel/plugin-proposal-dynamic-import": "^7.14.5",
@@ -5028,7 +5006,7 @@
"@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
"@babel/plugin-proposal-numeric-separator": "^7.14.5",
"@babel/plugin-proposal-object-rest-spread": "^7.14.7",
"@babel/plugin-proposal-object-rest-spread": "^7.15.6",
"@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
"@babel/plugin-proposal-private-methods": "^7.14.5",
@@ -5074,16 +5052,16 @@
"@babel/plugin-transform-regenerator": "^7.14.5",
"@babel/plugin-transform-reserved-words": "^7.14.5",
"@babel/plugin-transform-shorthand-properties": "^7.14.5",
"@babel/plugin-transform-spread": "^7.14.6",
"@babel/plugin-transform-spread": "^7.15.8",
"@babel/plugin-transform-sticky-regex": "^7.14.5",
"@babel/plugin-transform-template-literals": "^7.14.5",
"@babel/plugin-transform-typeof-symbol": "^7.14.5",
"@babel/plugin-transform-unicode-escapes": "^7.14.5",
"@babel/plugin-transform-unicode-regex": "^7.14.5",
"@babel/preset-modules": "^0.1.4",
"@babel/types": "^7.15.4",
"@babel/types": "^7.15.6",
"babel-plugin-polyfill-corejs2": "^0.2.2",
"babel-plugin-polyfill-corejs3": "^0.2.2",
"babel-plugin-polyfill-corejs3": "^0.2.5",
"babel-plugin-polyfill-regenerator": "^0.2.2",
"core-js-compat": "^3.16.0",
"semver": "^6.3.0"
@@ -5132,9 +5110,9 @@
}
},
"@babel/types": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz",
"integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
"version": "7.15.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.14.9",
@@ -5171,17 +5149,17 @@
}
},
"@testing-library/dom": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.5.0.tgz",
"integrity": "sha512-O0fmHFaPlqaYCpa/cBL0cvroMridb9vZsMLacgIqrlxj+fd+bGF8UfAgwsLCHRF84KLBafWlm9CuOvxeNTlodw==",
"version": "8.10.1",
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.10.1.tgz",
"integrity": "sha512-rab7vpf1uGig5efWwsCOn9j4/doy+W3VBoUyzX7C4y77u0wAckwc7R8nyH6e2rw0rRzKJR+gWPiAg8zhiFbxWQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/runtime": "^7.12.5",
"@types/aria-query": "^4.2.0",
"aria-query": "^4.2.2",
"aria-query": "^5.0.0",
"chalk": "^4.1.0",
"dom-accessibility-api": "^0.5.6",
"dom-accessibility-api": "^0.5.9",
"lz-string": "^1.4.4",
"pretty-format": "^27.0.2"
},
@@ -5196,9 +5174,9 @@
}
},
"@jest/types": {
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.1.tgz",
"integrity": "sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==",
"version": "27.2.5",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
"integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -5217,6 +5195,12 @@
"@types/yargs-parser": "*"
}
},
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -5227,14 +5211,10 @@
}
},
"aria-query": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
"integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
"dev": true,
"requires": {
"@babel/runtime": "^7.10.2",
"@babel/runtime-corejs3": "^7.10.2"
}
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz",
"integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==",
"dev": true
},
"chalk": {
"version": "4.1.2",
@@ -5261,14 +5241,20 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"dom-accessibility-api": {
"version": "0.5.9",
"resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.9.tgz",
"integrity": "sha512-+KPF4o71fl6NrdnqIrJc6m44NA+Rhf1h7In2MRznejSQasWkjqmHOBUlk+pXJ77cVOSYyZeNHFwn/sjotB6+Sw==",
"dev": true
},
"pretty-format": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.0.tgz",
"integrity": "sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
"integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"ansi-regex": "^5.0.0",
"@jest/types": "^27.2.5",
"ansi-regex": "^5.0.1",
"ansi-styles": "^5.0.0",
"react-is": "^17.0.1"
},
@@ -5387,9 +5373,9 @@
}
},
"@testing-library/react": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.0.tgz",
"integrity": "sha512-Ge3Ht3qXE82Yv9lyPpQ7ZWgzo/HgOcHu569Y4ZGWcZME38iOFiOg87qnu6hTEa8jTJVL7zYovnvD3GE2nsNIoQ==",
"version": "12.1.2",
"resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.2.tgz",
"integrity": "sha512-ihQiEOklNyHIpo2Y8FREkyD1QAea054U0MVbwH1m8N9TxeFz+KoJ9LkqoKqJlzx2JDm56DVwaJ1r36JYxZM05g==",
"dev": true,
"requires": {
"@babel/runtime": "^7.12.5",
@@ -5408,9 +5394,9 @@
}
},
"@tinymce/tinymce-react": {
"version": "3.12.6",
"resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-3.12.6.tgz",
"integrity": "sha512-a7/Ns7uVsSr2N0fCxn+OhDx8f9JqfywTlHbXsgcwlWB6vIBMIjjRBJ6PGo/5H0y2vfzO6fBzd4gc6h05Cm5R7A==",
"version": "3.13.0",
"resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-3.13.0.tgz",
"integrity": "sha512-8+OHYIUP9W5D5z7gknausaG48ovQtEvjcK4c+zpha7QppRVVX0ltaINpo10V6Vb4qj9Jf7ZFfZpMRxxcFL2YvQ==",
"requires": {
"prop-types": "^15.6.2",
"tinymce": "^5.5.1"
@@ -5423,9 +5409,9 @@
"dev": true
},
"@trysound/sax": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz",
"integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==",
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
"dev": true
},
"@types/aria-query": {
@@ -5481,9 +5467,9 @@
"integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
},
"@types/eslint": {
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz",
"integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==",
"version": "7.28.2",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz",
"integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==",
"dev": true,
"requires": {
"@types/estree": "*",
@@ -5507,18 +5493,18 @@
"dev": true
},
"@types/fs-extra": {
"version": "9.0.12",
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz",
"integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==",
"version": "9.0.13",
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
"integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/glob": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz",
"integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
"dev": true,
"requires": {
"@types/minimatch": "*",
@@ -5780,9 +5766,9 @@
}
},
"@types/react-transition-group": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.2.tgz",
"integrity": "sha512-KibDWL6nshuOJ0fu8ll7QnV/LVTo3PzQ9aCPnRUYPfX7eZohHwLIdNHj7pftanREzHNP4/nJa8oeM73uSiavMQ==",
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz",
"integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==",
"requires": {
"@types/react": "*"
}
@@ -5849,9 +5835,9 @@
"integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI="
},
"@types/webpack": {
"version": "4.41.30",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.30.tgz",
"integrity": "sha512-GUHyY+pfuQ6haAfzu4S14F+R5iGRwN6b2FRNJY7U0NilmFAqbsOfK6j1HwuLBAqwRIT+pVdNDJGJ6e8rpp0KHA==",
"version": "4.41.31",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz",
"integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==",
"dev": true,
"requires": {
"@types/node": "*",
@@ -6055,24 +6041,24 @@
}
},
"@webpack-cli/configtest": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz",
"integrity": "sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz",
"integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==",
"dev": true
},
"@webpack-cli/info": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.3.0.tgz",
"integrity": "sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz",
"integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==",
"dev": true,
"requires": {
"envinfo": "^7.7.3"
}
},
"@webpack-cli/serve": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.2.tgz",
"integrity": "sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==",
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz",
"integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==",
"dev": true
},
"@xtuc/ieee754": {
@@ -6120,9 +6106,9 @@
}
},
"acorn-import-assertions": {
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz",
"integrity": "sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==",
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
"integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
"dev": true
},
"acorn-jsx": {
@@ -6418,69 +6404,26 @@
"dev": true
},
"array-includes": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
"integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
"integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.18.0-next.2",
"es-abstract": "^1.19.1",
"get-intrinsic": "^1.1.1",
"is-string": "^1.0.5"
"is-string": "^1.0.7"
},
"dependencies": {
"es-abstract": {
"version": "1.18.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
"integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"get-intrinsic": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.2",
"internal-slot": "^1.0.3",
"is-callable": "^1.2.3",
"is-negative-zero": "^2.0.1",
"is-regex": "^1.1.3",
"is-string": "^1.0.6",
"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"
},
"dependencies": {
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
}
}
},
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
}
},
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
}
}
},
@@ -6506,42 +6449,34 @@
"dev": true
},
"array.prototype.find": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz",
"integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.2.tgz",
"integrity": "sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==",
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.17.4"
}
},
"array.prototype.flat": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
"integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
"dev": true,
"requires": {
"call-bind": "^1.0.0",
"define-properties": "^1.1.3",
"es-abstract": "^1.18.0-next.1"
"es-abstract": "^1.19.0"
},
"dependencies": {
"es-abstract": {
"version": "1.18.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
"integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
"dev": true,
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
"integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
"requires": {
"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.3",
"is-callable": "^1.2.4",
"is-negative-zero": "^2.0.1",
"is-regex": "^1.1.3",
"is-string": "^1.0.6",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.1",
"is-string": "^1.0.7",
"is-weakref": "^1.0.1",
"object-inspect": "^1.11.0",
"object-keys": "^1.1.1",
"object.assign": "^4.1.2",
@@ -6550,11 +6485,15 @@
"unbox-primitive": "^1.0.1"
}
},
"is-callable": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
"integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
},
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -6564,7 +6503,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
@@ -6572,11 +6510,21 @@
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg=="
}
}
},
"array.prototype.flat": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
"integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.19.0"
}
},
"assert-ok": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz",
@@ -6613,8 +6561,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
"integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
"dev": true,
"optional": true
"dev": true
},
"async-limiter": {
"version": "1.0.1",
@@ -6868,13 +6815,13 @@
}
},
"babel-plugin-polyfill-corejs3": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz",
"integrity": "sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ==",
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz",
"integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==",
"dev": true,
"requires": {
"@babel/helper-define-polyfill-provider": "^0.2.2",
"core-js-compat": "^3.14.0"
"core-js-compat": "^3.16.2"
}
},
"babel-plugin-polyfill-regenerator": {
@@ -7003,7 +6950,8 @@
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"base": {
"version": "0.11.2",
@@ -7412,8 +7360,7 @@
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
"dev": true,
"optional": true
"dev": true
},
"bindings": {
"version": "1.5.0",
@@ -7505,6 +7452,7 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -7546,24 +7494,16 @@
"dev": true
},
"browserslist": {
"version": "4.17.0",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz",
"integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==",
"version": "4.17.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz",
"integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==",
"dev": true,
"requires": {
"caniuse-lite": "^1.0.30001254",
"colorette": "^1.3.0",
"electron-to-chromium": "^1.3.830",
"caniuse-lite": "^1.0.30001265",
"electron-to-chromium": "^1.3.867",
"escalade": "^3.1.1",
"node-releases": "^1.1.75"
},
"dependencies": {
"colorette": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz",
"integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==",
"dev": true
}
"node-releases": "^2.0.0",
"picocolors": "^1.0.0"
}
},
"bser": {
@@ -7803,9 +7743,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001255",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz",
"integrity": "sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==",
"version": "1.0.30001271",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz",
"integrity": "sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA==",
"dev": true
},
"caporal": {
@@ -7901,104 +7841,23 @@
"dev": true
},
"chokidar": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true,
"requires": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"fsevents": "~2.3.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"
},
"dependencies": {
"anymatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
"requires": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
}
},
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true
},
"braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"requires": {
"fill-range": "^7.0.1"
}
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
"requires": {
"to-regex-range": "^5.0.1"
}
},
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"optional": true
},
"glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"requires": {
"is-glob": "^4.0.1"
}
},
"is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"requires": {
"binary-extensions": "^2.0.0"
}
},
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
"readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"requires": {
"picomatch": "^2.2.1"
}
},
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"requires": {
"is-number": "^7.0.0"
}
}
"anymatch": "^2.0.0",
"async-each": "^1.0.1",
"braces": "^2.3.2",
"fsevents": "^1.2.7",
"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"
}
},
"chrome-trace-event": {
@@ -8048,9 +7907,9 @@
"integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
},
"clean-css": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
"integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
"integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
"dev": true,
"requires": {
"source-map": "~0.6.0"
@@ -8238,9 +8097,9 @@
"dev": true
},
"colord": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.7.0.tgz",
"integrity": "sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q==",
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz",
"integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==",
"dev": true
},
"colorette": {
@@ -8311,7 +8170,8 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"concat-stream": {
"version": "1.6.2",
@@ -8397,9 +8257,9 @@
"dev": true
},
"cookiejar": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
"integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz",
"integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==",
"dev": true
},
"copy-descriptor": {
@@ -8414,12 +8274,12 @@
"integrity": "sha512-lyvajs+wd8N1hXfzob1LdOCCHFU4bGMbqqmLn1Q4QlCpDqWPpGf+p0nj+LNrvDDG33j0hZXw2nsvvVpHysxyNw=="
},
"core-js-compat": {
"version": "3.17.2",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.17.2.tgz",
"integrity": "sha512-lHnt7A1Oqplebl5i0MrQyFv/yyEzr9p29OjlkcsFRDDgHwwQyVckfRGJ790qzXhkwM8ba4SFHHa2sO+T5f1zGg==",
"version": "3.18.3",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.3.tgz",
"integrity": "sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw==",
"dev": true,
"requires": {
"browserslist": "^4.16.8",
"browserslist": "^4.17.3",
"semver": "7.0.0"
},
"dependencies": {
@@ -8504,9 +8364,9 @@
"dev": true
},
"css-declaration-sorter": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.1.tgz",
"integrity": "sha512-BZ1aOuif2Sb7tQYY1GeCjG7F++8ggnwUkH5Ictw0mrdpqpEd+zWmcPdstnH2TItlb74FqR0DrVEieon221T/1Q==",
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz",
"integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==",
"dev": true,
"requires": {
"timsort": "^0.3.0"
@@ -9458,9 +9318,9 @@
"dev": true
},
"electron-to-chromium": {
"version": "1.3.830",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz",
"integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==",
"version": "1.3.877",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.877.tgz",
"integrity": "sha512-fT5mW5Giw5iyVukeHb2XvB4joBKvzHtl8Vs3QzE7APATpFMt/T7RWyUcIKSZzYkKQgpMbu+vDBTCHfQZvh8klA==",
"dev": true
},
"email-prop-type": {
@@ -9510,9 +9370,9 @@
}
},
"enhanced-resolve": {
"version": "5.8.2",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
"integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz",
"integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==",
"dev": true,
"requires": {
"graceful-fs": "^4.2.4",
@@ -9550,21 +9410,64 @@
}
},
"es-abstract": {
"version": "1.17.7",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
"integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
"integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
"dev": true,
"requires": {
"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.1",
"is-callable": "^1.2.2",
"is-regex": "^1.1.1",
"object-inspect": "^1.8.0",
"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-shared-array-buffer": "^1.0.1",
"is-string": "^1.0.7",
"is-weakref": "^1.0.1",
"object-inspect": "^1.11.0",
"object-keys": "^1.1.1",
"object.assign": "^4.1.1",
"string.prototype.trimend": "^1.0.1",
"string.prototype.trimstart": "^1.0.1"
"object.assign": "^4.1.2",
"string.prototype.trimend": "^1.0.4",
"string.prototype.trimstart": "^1.0.4",
"unbox-primitive": "^1.0.1"
},
"dependencies": {
"is-callable": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
"integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
"dev": true
},
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
}
},
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
},
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
}
}
},
"es-check": {
@@ -9792,12 +9695,13 @@
}
},
"eslint-module-utils": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz",
"integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==",
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz",
"integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==",
"dev": true,
"requires": {
"debug": "^3.2.7",
"find-up": "^2.1.0",
"pkg-dir": "^2.0.0"
},
"dependencies": {
@@ -10583,11 +10487,14 @@
}
},
"fast-xml-parser": {
"version": "3.19.0",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz",
"integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==",
"version": "3.20.3",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.20.3.tgz",
"integrity": "sha512-FfHJ/QCpo4K2gquBX7dIAcmShSBG4dMtYJ3ghSiR4w7YqlUujuamrM57C+mKLNWS3mvZzmm2B2Qx8Q6Gfw+lDQ==",
"dev": true,
"optional": true
"optional": true,
"requires": {
"strnum": "^1.0.4"
}
},
"fastest-levenshtein": {
"version": "1.0.12",
@@ -10596,9 +10503,9 @@
"dev": true
},
"fastq": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz",
"integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
"dev": true,
"requires": {
"reusify": "^1.0.4"
@@ -10969,7 +10876,8 @@
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"fsevents": {
"version": "1.2.13",
@@ -10988,20 +10896,20 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"function.prototype.name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.4.tgz",
"integrity": "sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ==",
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
"integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.18.0-next.2",
"es-abstract": "^1.19.0",
"functions-have-names": "^1.2.2"
},
"dependencies": {
"es-abstract": {
"version": "1.18.6",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz",
"integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==",
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
"integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
"requires": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
@@ -11014,7 +10922,9 @@
"is-callable": "^1.2.4",
"is-negative-zero": "^2.0.1",
"is-regex": "^1.1.4",
"is-shared-array-buffer": "^1.0.1",
"is-string": "^1.0.7",
"is-weakref": "^1.0.1",
"object-inspect": "^1.11.0",
"object-keys": "^1.1.1",
"object.assign": "^4.1.2",
@@ -11151,16 +11061,15 @@
"dev": true
},
"gifsicle": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.2.0.tgz",
"integrity": "sha512-vOIS3j0XoTCxq9pkGj43gEix82RkI5FveNgaFZutjbaui/HH+4fR8Y56dwXDuxYo8hR4xOo6/j2h1WHoQW6XLw==",
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-5.2.1.tgz",
"integrity": "sha512-9ewIQQCAnSmkU2DhuWafd1DdsgzAkKqIWnY+023xBLSiK9Az2TDUozWQW+SyRQgFMclbe6RQldUk/49TRO3Aqw==",
"dev": true,
"optional": true,
"requires": {
"bin-build": "^3.0.0",
"bin-wrapper": "^4.0.0",
"execa": "^5.0.0",
"logalot": "^2.0.0"
"execa": "^5.0.0"
},
"dependencies": {
"cross-spawn": {
@@ -11254,9 +11163,10 @@
}
},
"glob": {
"version": "7.1.7",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -11271,7 +11181,6 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"optional": true,
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
@@ -11282,7 +11191,6 @@
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"optional": true,
"requires": {
"is-extglob": "^2.1.0"
}
@@ -11838,9 +11746,9 @@
"dev": true
},
"husky": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz",
"integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==",
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz",
"integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==",
"dev": true
},
"hyphenate-style-name": {
@@ -12341,6 +12249,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
@@ -12349,7 +12258,8 @@
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"ini": {
"version": "1.3.8",
@@ -12588,7 +12498,6 @@
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
"optional": true,
"requires": {
"binary-extensions": "^1.0.0"
}
@@ -12755,9 +12664,9 @@
}
},
"is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
@@ -12929,6 +12838,11 @@
"integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
"dev": true
},
"is-shared-array-buffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
"integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA=="
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -12980,6 +12894,14 @@
"is-invalid-path": "^0.1.0"
}
},
"is-weakref": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
"integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
"requires": {
"call-bind": "^1.0.0"
}
},
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -13137,115 +13059,115 @@
}
},
"jest": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest/-/jest-27.2.0.tgz",
"integrity": "sha512-oUqVXyvh5YwEWl263KWdPUAqEzBFzGHdFLQ05hUnITr1tH+9SscEI9A/GH9eBClA+Nw1ct+KNuuOV6wlnmBPcg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz",
"integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==",
"dev": true,
"requires": {
"@jest/core": "^27.2.0",
"@jest/core": "^27.3.1",
"import-local": "^3.0.2",
"jest-cli": "^27.2.0"
"jest-cli": "^27.3.1"
},
"dependencies": {
"@jest/console": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.0.tgz",
"integrity": "sha512-35z+RqsK2CCgNxn+lWyK8X4KkaDtfL4BggT7oeZ0JffIiAiEYFYPo5B67V50ZubqDS1ehBrdCR2jduFnIrZOYw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz",
"integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"jest-message-util": "^27.2.0",
"jest-util": "^27.2.0",
"jest-message-util": "^27.3.1",
"jest-util": "^27.3.1",
"slash": "^3.0.0"
}
},
"@jest/core": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.0.tgz",
"integrity": "sha512-E/2NHhq+VMo18DpKkoty8Sjey8Kps5Cqa88A8NP757s6JjYqPdioMuyUBhDiIOGCdQByEp0ou3jskkTszMS0nw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz",
"integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==",
"dev": true,
"requires": {
"@jest/console": "^27.2.0",
"@jest/reporters": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/console": "^27.3.1",
"@jest/reporters": "^27.3.1",
"@jest/test-result": "^27.3.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"emittery": "^0.8.1",
"exit": "^0.1.2",
"graceful-fs": "^4.2.4",
"jest-changed-files": "^27.1.1",
"jest-config": "^27.2.0",
"jest-haste-map": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-changed-files": "^27.3.0",
"jest-config": "^27.3.1",
"jest-haste-map": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.2.0",
"jest-resolve-dependencies": "^27.2.0",
"jest-runner": "^27.2.0",
"jest-runtime": "^27.2.0",
"jest-snapshot": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"jest-watcher": "^27.2.0",
"jest-resolve": "^27.3.1",
"jest-resolve-dependencies": "^27.3.1",
"jest-runner": "^27.3.1",
"jest-runtime": "^27.3.1",
"jest-snapshot": "^27.3.1",
"jest-util": "^27.3.1",
"jest-validate": "^27.3.1",
"jest-watcher": "^27.3.1",
"micromatch": "^4.0.4",
"p-each-series": "^2.1.0",
"rimraf": "^3.0.0",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
}
},
"@jest/environment": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.0.tgz",
"integrity": "sha512-iPWmQI0wRIYSZX3wKu4FXHK4eIqkfq6n1DCDJS+v3uby7SOXrHvX4eiTBuEdSvtDRMTIH2kjrSkjHf/F9JIYyQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz",
"integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==",
"dev": true,
"requires": {
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/fake-timers": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"jest-mock": "^27.1.1"
"jest-mock": "^27.3.0"
}
},
"@jest/fake-timers": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.0.tgz",
"integrity": "sha512-gSu3YHvQOoVaTWYGgHFB7IYFtcF2HBzX4l7s47VcjvkUgL4/FBnE20x7TNLa3W6ABERtGd5gStSwsA8bcn+c4w==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz",
"integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@sinonjs/fake-timers": "^7.0.2",
"@jest/types": "^27.2.5",
"@sinonjs/fake-timers": "^8.0.1",
"@types/node": "*",
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0"
"jest-message-util": "^27.3.1",
"jest-mock": "^27.3.0",
"jest-util": "^27.3.1"
}
},
"@jest/globals": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.0.tgz",
"integrity": "sha512-raqk9Gf9WC3hlBa57rmRmJfRl9hom2b+qEE/ifheMtwn5USH5VZxzrHHOZg0Zsd/qC2WJ8UtyTwHKQAnNlDMdg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz",
"integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==",
"dev": true,
"requires": {
"@jest/environment": "^27.2.0",
"@jest/types": "^27.1.1",
"expect": "^27.2.0"
"@jest/environment": "^27.3.1",
"@jest/types": "^27.2.5",
"expect": "^27.3.1"
}
},
"@jest/reporters": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.0.tgz",
"integrity": "sha512-7wfkE3iRTLaT0F51h1mnxH3nQVwDCdbfgXiLuCcNkF1FnxXLH9utHqkSLIiwOTV1AtmiE0YagHbOvx4rnMP/GA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz",
"integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==",
"dev": true,
"requires": {
"@bcoe/v8-coverage": "^0.2.3",
"@jest/console": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/console": "^27.3.1",
"@jest/test-result": "^27.3.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"collect-v8-coverage": "^1.0.0",
"exit": "^0.1.2",
@@ -13256,15 +13178,15 @@
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.0.2",
"jest-haste-map": "^27.2.0",
"jest-resolve": "^27.2.0",
"jest-util": "^27.2.0",
"jest-worker": "^27.2.0",
"jest-haste-map": "^27.3.1",
"jest-resolve": "^27.3.1",
"jest-util": "^27.3.1",
"jest-worker": "^27.3.1",
"slash": "^3.0.0",
"source-map": "^0.6.0",
"string-length": "^4.0.1",
"terminal-link": "^2.0.0",
"v8-to-istanbul": "^8.0.0"
"v8-to-istanbul": "^8.1.0"
}
},
"@jest/source-map": {
@@ -13279,45 +13201,45 @@
}
},
"@jest/test-result": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.0.tgz",
"integrity": "sha512-JPPqn8h0RGr4HyeY1Km+FivDIjTFzDROU46iAvzVjD42ooGwYoqYO/MQTilhfajdz6jpVnnphFrKZI5OYrBONA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz",
"integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==",
"dev": true,
"requires": {
"@jest/console": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/console": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
}
},
"@jest/test-sequencer": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.0.tgz",
"integrity": "sha512-PrqarcpzOU1KSAK7aPwfL8nnpaqTMwPe7JBPnaOYRDSe/C6AoJiL5Kbnonqf1+DregxZIRAoDg69R9/DXMGqXA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz",
"integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==",
"dev": true,
"requires": {
"@jest/test-result": "^27.2.0",
"@jest/test-result": "^27.3.1",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.2.0",
"jest-runtime": "^27.2.0"
"jest-haste-map": "^27.3.1",
"jest-runtime": "^27.3.1"
}
},
"@jest/transform": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.0.tgz",
"integrity": "sha512-Q8Q/8xXIZYllk1AF7Ou5sV3egOZsdY/Wlv09CSbcexBRcC1Qt6lVZ7jRFAZtbHsEEzvOCyFEC4PcrwKwyjXtCg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz",
"integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"babel-plugin-istanbul": "^6.0.0",
"chalk": "^4.0.0",
"convert-source-map": "^1.4.0",
"fast-json-stable-stringify": "^2.0.0",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.2.0",
"jest-haste-map": "^27.3.1",
"jest-regex-util": "^27.0.6",
"jest-util": "^27.2.0",
"jest-util": "^27.3.1",
"micromatch": "^4.0.4",
"pirates": "^4.0.1",
"slash": "^3.0.0",
@@ -13326,9 +13248,9 @@
}
},
"@jest/types": {
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.1.tgz",
"integrity": "sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==",
"version": "27.2.5",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
"integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -13339,9 +13261,9 @@
}
},
"@sinonjs/fake-timers": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz",
"integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==",
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz",
"integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1.7.0"
@@ -13356,6 +13278,12 @@
"@types/yargs-parser": "*"
}
},
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -13376,13 +13304,13 @@
}
},
"babel-jest": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.0.tgz",
"integrity": "sha512-bS2p+KGGVVmWXBa8+i6SO/xzpiz2Q/2LnqLbQknPKefWXVZ67YIjA4iXup/jMOEZplga9PpWn+wrdb3UdDwRaA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz",
"integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==",
"dev": true,
"requires": {
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.0.0",
"babel-preset-jest": "^27.2.0",
@@ -13500,16 +13428,16 @@
}
},
"expect": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.2.0.tgz",
"integrity": "sha512-oOTbawMQv7AK1FZURbPTgGSzmhxkjFzoARSvDjOMnOpeWuYQx1tP6rXu9MIX5mrACmyCAM7fSNP8IJO2f1p0CQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz",
"integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"ansi-styles": "^5.0.0",
"jest-get-type": "^27.0.6",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-get-type": "^27.3.1",
"jest-matcher-utils": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-regex-util": "^27.0.6"
},
"dependencies": {
@@ -13549,15 +13477,6 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"is-ci": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz",
"integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==",
"dev": true,
"requires": {
"ci-info": "^3.1.1"
}
},
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -13571,75 +13490,75 @@
"dev": true
},
"jest-changed-files": {
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.1.tgz",
"integrity": "sha512-5TV9+fYlC2A6hu3qtoyGHprBwCAn0AuGA77bZdUgYvVlRMjHXo063VcWTEAyx6XAZ85DYHqp0+aHKbPlfRDRvA==",
"version": "27.3.0",
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz",
"integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"execa": "^5.0.0",
"throat": "^6.0.1"
}
},
"jest-cli": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.0.tgz",
"integrity": "sha512-bq1X/B/b1kT9y1zIFMEW3GFRX1HEhFybiqKdbxM+j11XMMYSbU9WezfyWIhrSOmPT+iODLATVjfsCnbQs7cfIA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz",
"integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==",
"dev": true,
"requires": {
"@jest/core": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/core": "^27.3.1",
"@jest/test-result": "^27.3.1",
"@jest/types": "^27.2.5",
"chalk": "^4.0.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.4",
"import-local": "^3.0.2",
"jest-config": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"jest-config": "^27.3.1",
"jest-util": "^27.3.1",
"jest-validate": "^27.3.1",
"prompts": "^2.0.1",
"yargs": "^16.0.3"
"yargs": "^16.2.0"
}
},
"jest-config": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.0.tgz",
"integrity": "sha512-Z1romHpxeNwLxQtouQ4xt07bY6HSFGKTo0xJcvOK3u6uJHveA4LB2P+ty9ArBLpTh3AqqPxsyw9l9GMnWBYS9A==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz",
"integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
"@jest/test-sequencer": "^27.2.0",
"@jest/types": "^27.1.1",
"babel-jest": "^27.2.0",
"@jest/test-sequencer": "^27.3.1",
"@jest/types": "^27.2.5",
"babel-jest": "^27.3.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"deepmerge": "^4.2.2",
"glob": "^7.1.1",
"graceful-fs": "^4.2.4",
"is-ci": "^3.0.0",
"jest-circus": "^27.2.0",
"jest-environment-jsdom": "^27.2.0",
"jest-environment-node": "^27.2.0",
"jest-get-type": "^27.0.6",
"jest-jasmine2": "^27.2.0",
"jest-circus": "^27.3.1",
"jest-environment-jsdom": "^27.3.1",
"jest-environment-node": "^27.3.1",
"jest-get-type": "^27.3.1",
"jest-jasmine2": "^27.3.1",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.2.0",
"jest-runner": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"jest-resolve": "^27.3.1",
"jest-runner": "^27.3.1",
"jest-util": "^27.3.1",
"jest-validate": "^27.3.1",
"micromatch": "^4.0.4",
"pretty-format": "^27.2.0"
"pretty-format": "^27.3.1"
}
},
"jest-diff": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.0.tgz",
"integrity": "sha512-QSO9WC6btFYWtRJ3Hac0sRrkspf7B01mGrrQEiCW6TobtViJ9RWL0EmOs/WnBsZDsI/Y2IoSHZA2x6offu0sYw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
"integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"diff-sequences": "^27.0.6",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.2.0"
"jest-get-type": "^27.3.1",
"pretty-format": "^27.3.1"
}
},
"jest-docblock": {
@@ -13652,60 +13571,60 @@
}
},
"jest-each": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.0.tgz",
"integrity": "sha512-biDmmUQjg+HZOB7MfY2RHSFL3j418nMoC3TK3pGAj880fQQSxvQe1y2Wy23JJJNUlk6YXiGU0yWy86Le1HBPmA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz",
"integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"jest-util": "^27.2.0",
"pretty-format": "^27.2.0"
"jest-get-type": "^27.3.1",
"jest-util": "^27.3.1",
"pretty-format": "^27.3.1"
}
},
"jest-environment-jsdom": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.0.tgz",
"integrity": "sha512-wNQJi6Rd/AkUWqTc4gWhuTIFPo7tlMK0RPZXeM6AqRHZA3D3vwvTa9ktAktyVyWYmUoXdYstOfyYMG3w4jt7eA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz",
"integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==",
"dev": true,
"requires": {
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/environment": "^27.3.1",
"@jest/fake-timers": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0",
"jest-mock": "^27.3.0",
"jest-util": "^27.3.1",
"jsdom": "^16.6.0"
}
},
"jest-environment-node": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.0.tgz",
"integrity": "sha512-WbW+vdM4u88iy6Q3ftUEQOSgMPtSgjm3qixYYK2AKEuqmFO2zmACTw1vFUB0qI/QN88X6hA6ZkVKIdIWWzz+yg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz",
"integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==",
"dev": true,
"requires": {
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/environment": "^27.3.1",
"@jest/fake-timers": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0"
"jest-mock": "^27.3.0",
"jest-util": "^27.3.1"
}
},
"jest-get-type": {
"version": "27.0.6",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz",
"integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
"integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
"dev": true
},
"jest-haste-map": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.0.tgz",
"integrity": "sha512-laFet7QkNlWjwZtMGHCucLvF8o9PAh2cgePRck1+uadSM4E4XH9J4gnx4do+a6do8ZV5XHNEAXEkIoNg5XUH2Q==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz",
"integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/graceful-fs": "^4.1.2",
"@types/node": "*",
"anymatch": "^3.0.3",
@@ -13714,84 +13633,84 @@
"graceful-fs": "^4.2.4",
"jest-regex-util": "^27.0.6",
"jest-serializer": "^27.0.6",
"jest-util": "^27.2.0",
"jest-worker": "^27.2.0",
"jest-util": "^27.3.1",
"jest-worker": "^27.3.1",
"micromatch": "^4.0.4",
"walker": "^1.0.7"
}
},
"jest-jasmine2": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.0.tgz",
"integrity": "sha512-NcPzZBk6IkDW3Z2V8orGueheGJJYfT5P0zI/vTO/Jp+R9KluUdgFrgwfvZ0A34Kw6HKgiWFILZmh3oQ/eS+UxA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz",
"integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==",
"dev": true,
"requires": {
"@babel/traverse": "^7.1.0",
"@jest/environment": "^27.2.0",
"@jest/environment": "^27.3.1",
"@jest/source-map": "^27.0.6",
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/test-result": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"expect": "^27.2.0",
"expect": "^27.3.1",
"is-generator-fn": "^2.0.0",
"jest-each": "^27.2.0",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-runtime": "^27.2.0",
"jest-snapshot": "^27.2.0",
"jest-util": "^27.2.0",
"pretty-format": "^27.2.0",
"jest-each": "^27.3.1",
"jest-matcher-utils": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-runtime": "^27.3.1",
"jest-snapshot": "^27.3.1",
"jest-util": "^27.3.1",
"pretty-format": "^27.3.1",
"throat": "^6.0.1"
}
},
"jest-leak-detector": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.0.tgz",
"integrity": "sha512-e91BIEmbZw5+MHkB4Hnrq7S86coTxUMCkz4n7DLmQYvl9pEKmRx9H/JFH87bBqbIU5B2Ju1soKxRWX6/eGFGpA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz",
"integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==",
"dev": true,
"requires": {
"jest-get-type": "^27.0.6",
"pretty-format": "^27.2.0"
"jest-get-type": "^27.3.1",
"pretty-format": "^27.3.1"
}
},
"jest-matcher-utils": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.0.tgz",
"integrity": "sha512-F+LG3iTwJ0gPjxBX6HCyrARFXq6jjiqhwBQeskkJQgSLeF1j6ui1RTV08SR7O51XTUhtc8zqpDj8iCG4RGmdKw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz",
"integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.2.0"
"jest-diff": "^27.3.1",
"jest-get-type": "^27.3.1",
"pretty-format": "^27.3.1"
}
},
"jest-message-util": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.0.tgz",
"integrity": "sha512-y+sfT/94CiP8rKXgwCOzO1mUazIEdEhrLjuiu+RKmCP+8O/TJTSne9dqQRbFIHBtlR2+q7cddJlWGir8UATu5w==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz",
"integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
"micromatch": "^4.0.4",
"pretty-format": "^27.2.0",
"pretty-format": "^27.3.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
}
},
"jest-mock": {
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.1.tgz",
"integrity": "sha512-SClsFKuYBf+6SSi8jtAYOuPw8DDMsTElUWEae3zq7vDhH01ayVSIHUSIa8UgbDOUalCFp6gNsaikN0rbxN4dbw==",
"version": "27.3.0",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz",
"integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/node": "*"
}
},
@@ -13802,78 +13721,77 @@
"dev": true
},
"jest-resolve": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.0.tgz",
"integrity": "sha512-v09p9Ib/VtpHM6Cz+i9lEAv1Z/M5NVxsyghRHRMEUOqwPQs3zwTdwp1xS3O/k5LocjKiGS0OTaJoBSpjbM2Jlw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz",
"integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"chalk": "^4.0.0",
"escalade": "^3.1.1",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.2.0",
"jest-haste-map": "^27.3.1",
"jest-pnp-resolver": "^1.2.2",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"jest-util": "^27.3.1",
"jest-validate": "^27.3.1",
"resolve": "^1.20.0",
"resolve.exports": "^1.1.0",
"slash": "^3.0.0"
}
},
"jest-resolve-dependencies": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.0.tgz",
"integrity": "sha512-EY5jc/Y0oxn+oVEEldTidmmdVoZaknKPyDORA012JUdqPyqPL+lNdRyI3pGti0RCydds6coaw6xt4JQY54dKsg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz",
"integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"jest-regex-util": "^27.0.6",
"jest-snapshot": "^27.2.0"
"jest-snapshot": "^27.3.1"
}
},
"jest-runner": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.0.tgz",
"integrity": "sha512-Cl+BHpduIc0cIVTjwoyx0pQk4Br8gn+wkr35PmKCmzEdOUnQ2wN7QVXA8vXnMQXSlFkN/+KWnk20TAVBmhgrww==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz",
"integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==",
"dev": true,
"requires": {
"@jest/console": "^27.2.0",
"@jest/environment": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/console": "^27.3.1",
"@jest/environment": "^27.3.1",
"@jest/test-result": "^27.3.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"emittery": "^0.8.1",
"exit": "^0.1.2",
"graceful-fs": "^4.2.4",
"jest-docblock": "^27.0.6",
"jest-environment-jsdom": "^27.2.0",
"jest-environment-node": "^27.2.0",
"jest-haste-map": "^27.2.0",
"jest-leak-detector": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-resolve": "^27.2.0",
"jest-runtime": "^27.2.0",
"jest-util": "^27.2.0",
"jest-worker": "^27.2.0",
"jest-environment-jsdom": "^27.3.1",
"jest-environment-node": "^27.3.1",
"jest-haste-map": "^27.3.1",
"jest-leak-detector": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-resolve": "^27.3.1",
"jest-runtime": "^27.3.1",
"jest-util": "^27.3.1",
"jest-worker": "^27.3.1",
"source-map-support": "^0.5.6",
"throat": "^6.0.1"
}
},
"jest-runtime": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.0.tgz",
"integrity": "sha512-6gRE9AVVX49hgBbWQ9PcNDeM4upMUXzTpBs0kmbrjyotyUyIJixLPsYjpeTFwAA07PVLDei1iAm2chmWycdGdQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz",
"integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==",
"dev": true,
"requires": {
"@jest/console": "^27.2.0",
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/globals": "^27.2.0",
"@jest/console": "^27.3.1",
"@jest/environment": "^27.3.1",
"@jest/globals": "^27.3.1",
"@jest/source-map": "^27.0.6",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/test-result": "^27.3.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/yargs": "^16.0.0",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
@@ -13882,17 +13800,17 @@
"exit": "^0.1.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-haste-map": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-mock": "^27.3.0",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.2.0",
"jest-snapshot": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"jest-resolve": "^27.3.1",
"jest-snapshot": "^27.3.1",
"jest-util": "^27.3.1",
"jest-validate": "^27.3.1",
"slash": "^3.0.0",
"strip-bom": "^4.0.0",
"yargs": "^16.0.3"
"yargs": "^16.2.0"
}
},
"jest-serializer": {
@@ -13906,9 +13824,9 @@
}
},
"jest-snapshot": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.0.tgz",
"integrity": "sha512-MukJvy3KEqemCT2FoT3Gum37CQqso/62PKTfIzWmZVTsLsuyxQmJd2PI5KPcBYFqLlA8LgZLHM8ZlazkVt8LsQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz",
"integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==",
"dev": true,
"requires": {
"@babel/core": "^7.7.2",
@@ -13917,73 +13835,73 @@
"@babel/plugin-syntax-typescript": "^7.7.2",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.0.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/babel__traverse": "^7.0.4",
"@types/prettier": "^2.1.5",
"babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
"expect": "^27.2.0",
"expect": "^27.3.1",
"graceful-fs": "^4.2.4",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"jest-haste-map": "^27.2.0",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-resolve": "^27.2.0",
"jest-util": "^27.2.0",
"jest-diff": "^27.3.1",
"jest-get-type": "^27.3.1",
"jest-haste-map": "^27.3.1",
"jest-matcher-utils": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-resolve": "^27.3.1",
"jest-util": "^27.3.1",
"natural-compare": "^1.4.0",
"pretty-format": "^27.2.0",
"pretty-format": "^27.3.1",
"semver": "^7.3.2"
}
},
"jest-util": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.0.tgz",
"integrity": "sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz",
"integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"graceful-fs": "^4.2.4",
"is-ci": "^3.0.0",
"picomatch": "^2.2.3"
}
},
"jest-validate": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.0.tgz",
"integrity": "sha512-uIEZGkFKk3+4liA81Xu0maG5aGDyPLdp+4ed244c+Ql0k3aLWQYcMbaMLXOIFcb83LPHzYzqQ8hwNnIxTqfAGQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz",
"integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"jest-get-type": "^27.3.1",
"leven": "^3.1.0",
"pretty-format": "^27.2.0"
"pretty-format": "^27.3.1"
}
},
"jest-watcher": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.0.tgz",
"integrity": "sha512-SjRWhnr+qO8aBsrcnYIyF+qRxNZk6MZH8TIDgvi+VlsyrvOyqg0d+Rm/v9KHiTtC9mGGeFi9BFqgavyWib6xLg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz",
"integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==",
"dev": true,
"requires": {
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/test-result": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"jest-util": "^27.2.0",
"jest-util": "^27.3.1",
"string-length": "^4.0.1"
}
},
"jest-worker": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.0.tgz",
"integrity": "sha512-laB0ZVIBz+voh/QQy9dmUuuDsadixeerrKqyVpgPz+CCWiOYjOBabUXHIXZhsdvkWbLqSHbgkAHWl5cg24Q6RA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz",
"integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==",
"dev": true,
"requires": {
"@types/node": "*",
@@ -14028,13 +13946,13 @@
"dev": true
},
"pretty-format": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.0.tgz",
"integrity": "sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
"integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"ansi-regex": "^5.0.0",
"@jest/types": "^27.2.5",
"ansi-regex": "^5.0.1",
"ansi-styles": "^5.0.0",
"react-is": "^17.0.1"
},
@@ -14114,9 +14032,9 @@
}
},
"v8-to-istanbul": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz",
"integrity": "sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz",
"integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.1",
@@ -14245,81 +14163,81 @@
}
},
"jest-circus": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.0.tgz",
"integrity": "sha512-WwENhaZwOARB1nmcboYPSv/PwHBUGRpA4MEgszjr9DLCl97MYw0qZprBwLb7rNzvMwfIvNGG7pefQ5rxyBlzIA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz",
"integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==",
"dev": true,
"requires": {
"@jest/environment": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/environment": "^27.3.1",
"@jest/test-result": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"dedent": "^0.7.0",
"expect": "^27.2.0",
"expect": "^27.3.1",
"is-generator-fn": "^2.0.0",
"jest-each": "^27.2.0",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-runtime": "^27.2.0",
"jest-snapshot": "^27.2.0",
"jest-util": "^27.2.0",
"pretty-format": "^27.2.0",
"jest-each": "^27.3.1",
"jest-matcher-utils": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-runtime": "^27.3.1",
"jest-snapshot": "^27.3.1",
"jest-util": "^27.3.1",
"pretty-format": "^27.3.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3",
"throat": "^6.0.1"
},
"dependencies": {
"@jest/console": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.0.tgz",
"integrity": "sha512-35z+RqsK2CCgNxn+lWyK8X4KkaDtfL4BggT7oeZ0JffIiAiEYFYPo5B67V50ZubqDS1ehBrdCR2jduFnIrZOYw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz",
"integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"jest-message-util": "^27.2.0",
"jest-util": "^27.2.0",
"jest-message-util": "^27.3.1",
"jest-util": "^27.3.1",
"slash": "^3.0.0"
}
},
"@jest/environment": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.0.tgz",
"integrity": "sha512-iPWmQI0wRIYSZX3wKu4FXHK4eIqkfq6n1DCDJS+v3uby7SOXrHvX4eiTBuEdSvtDRMTIH2kjrSkjHf/F9JIYyQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz",
"integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==",
"dev": true,
"requires": {
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/fake-timers": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"jest-mock": "^27.1.1"
"jest-mock": "^27.3.0"
}
},
"@jest/fake-timers": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.0.tgz",
"integrity": "sha512-gSu3YHvQOoVaTWYGgHFB7IYFtcF2HBzX4l7s47VcjvkUgL4/FBnE20x7TNLa3W6ABERtGd5gStSwsA8bcn+c4w==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz",
"integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@sinonjs/fake-timers": "^7.0.2",
"@jest/types": "^27.2.5",
"@sinonjs/fake-timers": "^8.0.1",
"@types/node": "*",
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0"
"jest-message-util": "^27.3.1",
"jest-mock": "^27.3.0",
"jest-util": "^27.3.1"
}
},
"@jest/globals": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.0.tgz",
"integrity": "sha512-raqk9Gf9WC3hlBa57rmRmJfRl9hom2b+qEE/ifheMtwn5USH5VZxzrHHOZg0Zsd/qC2WJ8UtyTwHKQAnNlDMdg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz",
"integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==",
"dev": true,
"requires": {
"@jest/environment": "^27.2.0",
"@jest/types": "^27.1.1",
"expect": "^27.2.0"
"@jest/environment": "^27.3.1",
"@jest/types": "^27.2.5",
"expect": "^27.3.1"
}
},
"@jest/source-map": {
@@ -14334,33 +14252,33 @@
}
},
"@jest/test-result": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.0.tgz",
"integrity": "sha512-JPPqn8h0RGr4HyeY1Km+FivDIjTFzDROU46iAvzVjD42ooGwYoqYO/MQTilhfajdz6jpVnnphFrKZI5OYrBONA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz",
"integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==",
"dev": true,
"requires": {
"@jest/console": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/console": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
}
},
"@jest/transform": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.0.tgz",
"integrity": "sha512-Q8Q/8xXIZYllk1AF7Ou5sV3egOZsdY/Wlv09CSbcexBRcC1Qt6lVZ7jRFAZtbHsEEzvOCyFEC4PcrwKwyjXtCg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz",
"integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"babel-plugin-istanbul": "^6.0.0",
"chalk": "^4.0.0",
"convert-source-map": "^1.4.0",
"fast-json-stable-stringify": "^2.0.0",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.2.0",
"jest-haste-map": "^27.3.1",
"jest-regex-util": "^27.0.6",
"jest-util": "^27.2.0",
"jest-util": "^27.3.1",
"micromatch": "^4.0.4",
"pirates": "^4.0.1",
"slash": "^3.0.0",
@@ -14369,9 +14287,9 @@
}
},
"@jest/types": {
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.1.tgz",
"integrity": "sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==",
"version": "27.2.5",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
"integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -14382,9 +14300,9 @@
}
},
"@sinonjs/fake-timers": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz",
"integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==",
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz",
"integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1.7.0"
@@ -14399,6 +14317,12 @@
"@types/yargs-parser": "*"
}
},
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -14499,16 +14423,16 @@
}
},
"expect": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.2.0.tgz",
"integrity": "sha512-oOTbawMQv7AK1FZURbPTgGSzmhxkjFzoARSvDjOMnOpeWuYQx1tP6rXu9MIX5mrACmyCAM7fSNP8IJO2f1p0CQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz",
"integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"ansi-styles": "^5.0.0",
"jest-get-type": "^27.0.6",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-get-type": "^27.3.1",
"jest-matcher-utils": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-regex-util": "^27.0.6"
},
"dependencies": {
@@ -14548,15 +14472,6 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"is-ci": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz",
"integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==",
"dev": true,
"requires": {
"ci-info": "^3.1.1"
}
},
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -14570,43 +14485,43 @@
"dev": true
},
"jest-diff": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.0.tgz",
"integrity": "sha512-QSO9WC6btFYWtRJ3Hac0sRrkspf7B01mGrrQEiCW6TobtViJ9RWL0EmOs/WnBsZDsI/Y2IoSHZA2x6offu0sYw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
"integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"diff-sequences": "^27.0.6",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.2.0"
"jest-get-type": "^27.3.1",
"pretty-format": "^27.3.1"
}
},
"jest-each": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.0.tgz",
"integrity": "sha512-biDmmUQjg+HZOB7MfY2RHSFL3j418nMoC3TK3pGAj880fQQSxvQe1y2Wy23JJJNUlk6YXiGU0yWy86Le1HBPmA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz",
"integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"jest-util": "^27.2.0",
"pretty-format": "^27.2.0"
"jest-get-type": "^27.3.1",
"jest-util": "^27.3.1",
"pretty-format": "^27.3.1"
}
},
"jest-get-type": {
"version": "27.0.6",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz",
"integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
"integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
"dev": true
},
"jest-haste-map": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.0.tgz",
"integrity": "sha512-laFet7QkNlWjwZtMGHCucLvF8o9PAh2cgePRck1+uadSM4E4XH9J4gnx4do+a6do8ZV5XHNEAXEkIoNg5XUH2Q==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz",
"integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/graceful-fs": "^4.1.2",
"@types/node": "*",
"anymatch": "^3.0.3",
@@ -14615,48 +14530,48 @@
"graceful-fs": "^4.2.4",
"jest-regex-util": "^27.0.6",
"jest-serializer": "^27.0.6",
"jest-util": "^27.2.0",
"jest-worker": "^27.2.0",
"jest-util": "^27.3.1",
"jest-worker": "^27.3.1",
"micromatch": "^4.0.4",
"walker": "^1.0.7"
}
},
"jest-matcher-utils": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.0.tgz",
"integrity": "sha512-F+LG3iTwJ0gPjxBX6HCyrARFXq6jjiqhwBQeskkJQgSLeF1j6ui1RTV08SR7O51XTUhtc8zqpDj8iCG4RGmdKw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz",
"integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.2.0"
"jest-diff": "^27.3.1",
"jest-get-type": "^27.3.1",
"pretty-format": "^27.3.1"
}
},
"jest-message-util": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.0.tgz",
"integrity": "sha512-y+sfT/94CiP8rKXgwCOzO1mUazIEdEhrLjuiu+RKmCP+8O/TJTSne9dqQRbFIHBtlR2+q7cddJlWGir8UATu5w==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz",
"integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
"micromatch": "^4.0.4",
"pretty-format": "^27.2.0",
"pretty-format": "^27.3.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
}
},
"jest-mock": {
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.1.tgz",
"integrity": "sha512-SClsFKuYBf+6SSi8jtAYOuPw8DDMsTElUWEae3zq7vDhH01ayVSIHUSIa8UgbDOUalCFp6gNsaikN0rbxN4dbw==",
"version": "27.3.0",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz",
"integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/node": "*"
}
},
@@ -14667,37 +14582,36 @@
"dev": true
},
"jest-resolve": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.0.tgz",
"integrity": "sha512-v09p9Ib/VtpHM6Cz+i9lEAv1Z/M5NVxsyghRHRMEUOqwPQs3zwTdwp1xS3O/k5LocjKiGS0OTaJoBSpjbM2Jlw==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz",
"integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"chalk": "^4.0.0",
"escalade": "^3.1.1",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.2.0",
"jest-haste-map": "^27.3.1",
"jest-pnp-resolver": "^1.2.2",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"jest-util": "^27.3.1",
"jest-validate": "^27.3.1",
"resolve": "^1.20.0",
"resolve.exports": "^1.1.0",
"slash": "^3.0.0"
}
},
"jest-runtime": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.0.tgz",
"integrity": "sha512-6gRE9AVVX49hgBbWQ9PcNDeM4upMUXzTpBs0kmbrjyotyUyIJixLPsYjpeTFwAA07PVLDei1iAm2chmWycdGdQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz",
"integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==",
"dev": true,
"requires": {
"@jest/console": "^27.2.0",
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/globals": "^27.2.0",
"@jest/console": "^27.3.1",
"@jest/environment": "^27.3.1",
"@jest/globals": "^27.3.1",
"@jest/source-map": "^27.0.6",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/test-result": "^27.3.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/yargs": "^16.0.0",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
@@ -14706,17 +14620,17 @@
"exit": "^0.1.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-haste-map": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-mock": "^27.3.0",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.2.0",
"jest-snapshot": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"jest-resolve": "^27.3.1",
"jest-snapshot": "^27.3.1",
"jest-util": "^27.3.1",
"jest-validate": "^27.3.1",
"slash": "^3.0.0",
"strip-bom": "^4.0.0",
"yargs": "^16.0.3"
"yargs": "^16.2.0"
}
},
"jest-serializer": {
@@ -14730,9 +14644,9 @@
}
},
"jest-snapshot": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.0.tgz",
"integrity": "sha512-MukJvy3KEqemCT2FoT3Gum37CQqso/62PKTfIzWmZVTsLsuyxQmJd2PI5KPcBYFqLlA8LgZLHM8ZlazkVt8LsQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz",
"integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==",
"dev": true,
"requires": {
"@babel/core": "^7.7.2",
@@ -14741,58 +14655,58 @@
"@babel/plugin-syntax-typescript": "^7.7.2",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.0.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@jest/transform": "^27.3.1",
"@jest/types": "^27.2.5",
"@types/babel__traverse": "^7.0.4",
"@types/prettier": "^2.1.5",
"babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
"expect": "^27.2.0",
"expect": "^27.3.1",
"graceful-fs": "^4.2.4",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"jest-haste-map": "^27.2.0",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-resolve": "^27.2.0",
"jest-util": "^27.2.0",
"jest-diff": "^27.3.1",
"jest-get-type": "^27.3.1",
"jest-haste-map": "^27.3.1",
"jest-matcher-utils": "^27.3.1",
"jest-message-util": "^27.3.1",
"jest-resolve": "^27.3.1",
"jest-util": "^27.3.1",
"natural-compare": "^1.4.0",
"pretty-format": "^27.2.0",
"pretty-format": "^27.3.1",
"semver": "^7.3.2"
}
},
"jest-util": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.0.tgz",
"integrity": "sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz",
"integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"graceful-fs": "^4.2.4",
"is-ci": "^3.0.0",
"picomatch": "^2.2.3"
}
},
"jest-validate": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.0.tgz",
"integrity": "sha512-uIEZGkFKk3+4liA81Xu0maG5aGDyPLdp+4ed244c+Ql0k3aLWQYcMbaMLXOIFcb83LPHzYzqQ8hwNnIxTqfAGQ==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz",
"integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"@jest/types": "^27.2.5",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"jest-get-type": "^27.3.1",
"leven": "^3.1.0",
"pretty-format": "^27.2.0"
"pretty-format": "^27.3.1"
}
},
"jest-worker": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.0.tgz",
"integrity": "sha512-laB0ZVIBz+voh/QQy9dmUuuDsadixeerrKqyVpgPz+CCWiOYjOBabUXHIXZhsdvkWbLqSHbgkAHWl5cg24Q6RA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz",
"integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==",
"dev": true,
"requires": {
"@types/node": "*",
@@ -14837,13 +14751,13 @@
"dev": true
},
"pretty-format": {
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.0.tgz",
"integrity": "sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
"integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.1",
"ansi-regex": "^5.0.0",
"@jest/types": "^27.2.5",
"ansi-regex": "^5.0.1",
"ansi-styles": "^5.0.0",
"react-is": "^17.0.1"
},
@@ -16590,15 +16504,6 @@
"tmpl": "1.0.x"
}
},
"map-age-cleaner": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
"integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
"dev": true,
"requires": {
"p-defer": "^1.0.0"
}
},
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -16651,28 +16556,10 @@
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"dev": true
},
"mem": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz",
"integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.3",
"mimic-fn": "^3.1.0"
},
"dependencies": {
"mimic-fn": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
"integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
"dev": true
}
}
},
"memfs": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.4.tgz",
"integrity": "sha512-2mDCPhuduRPOxlfgsXF9V+uqC6Jgz8zt/bNe4d4W7d5f6pCzHrWkxLNr17jKGXd4+j2kQNsAG2HARPnt74sqVQ==",
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz",
"integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==",
"dev": true,
"requires": {
"fs-monkey": "1.0.3"
@@ -16936,6 +16823,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -16977,15 +16865,14 @@
}
},
"mozjpeg": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.1.0.tgz",
"integrity": "sha512-A6nVpI33DVi04HxatRx3PZTeVAOP1AC/T/5kXEvP0U8F+J11mmFFDv46BM2j5/cEyzDDtK8ptHeBSphNMrQLqA==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.1.1.tgz",
"integrity": "sha512-iIDxWvzhWvLC9mcRJ1uSkiKaj4drF58oCqK2bITm5c2Jt6cJ8qQjSSru2PCaysG+hLIinryj8mgz5ZJzOYTv1A==",
"dev": true,
"optional": true,
"requires": {
"bin-build": "^3.0.0",
"bin-wrapper": "^4.0.0",
"logalot": "^2.1.0"
"bin-wrapper": "^4.0.0"
}
},
"ms": {
@@ -17023,10 +16910,16 @@
"dev": true,
"optional": true
},
"nanocolors": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz",
"integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==",
"dev": true
},
"nanoid": {
"version": "3.1.25",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
"integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
"version": "3.1.30",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
"integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
"dev": true
},
"nanomatch": {
@@ -17159,9 +17052,9 @@
}
},
"node-releases": {
"version": "1.1.75",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz",
"integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
"integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
"dev": true
},
"normalize-package-data": {
@@ -17385,130 +17278,25 @@
}
},
"object.fromentries": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz",
"integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==",
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
"integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.18.0-next.2",
"has": "^1.0.3"
},
"dependencies": {
"es-abstract": {
"version": "1.18.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
"integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"get-intrinsic": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.2",
"internal-slot": "^1.0.3",
"is-callable": "^1.2.3",
"is-negative-zero": "^2.0.1",
"is-regex": "^1.1.3",
"is-string": "^1.0.6",
"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"
}
},
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
}
},
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
},
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
}
"es-abstract": "^1.19.1"
}
},
"object.getownpropertydescriptors": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz",
"integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz",
"integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.18.0-next.2"
},
"dependencies": {
"es-abstract": {
"version": "1.18.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
"integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"get-intrinsic": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.2",
"internal-slot": "^1.0.3",
"is-callable": "^1.2.3",
"is-negative-zero": "^2.0.1",
"is-regex": "^1.1.3",
"is-string": "^1.0.6",
"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"
}
},
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
}
},
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
},
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
}
"es-abstract": "^1.19.1"
}
},
"object.pick": {
@@ -17521,66 +17309,14 @@
}
},
"object.values": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz",
"integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==",
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
"integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.18.2"
},
"dependencies": {
"es-abstract": {
"version": "1.18.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
"integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"get-intrinsic": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.2",
"internal-slot": "^1.0.3",
"is-callable": "^1.2.3",
"is-negative-zero": "^2.0.1",
"is-regex": "^1.1.3",
"is-string": "^1.0.6",
"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"
}
},
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
}
},
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
},
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
}
"es-abstract": "^1.19.1"
}
},
"obuf": {
@@ -17608,6 +17344,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
@@ -17652,15 +17389,14 @@
}
},
"optipng-bin": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-7.0.0.tgz",
"integrity": "sha512-mesUAwfedu5p9gRQwlYgD6Svw5IH3VUIWDJj/9cNpP3yFNbbEVqkTMWYhrIEn/cxmbGA3LpZrdoV2Yl8OfmnIA==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-7.0.1.tgz",
"integrity": "sha512-W99mpdW7Nt2PpFiaO+74pkht7KEqkXkeRomdWXfEz3SALZ6hns81y/pm1dsGZ6ItUIfchiNIP6ORDr1zETU1jA==",
"dev": true,
"optional": true,
"requires": {
"bin-build": "^3.0.0",
"bin-wrapper": "^4.0.0",
"logalot": "^2.0.0"
"bin-wrapper": "^4.0.0"
}
},
"os-filter-obj": {
@@ -17711,12 +17447,6 @@
"dev": true,
"optional": true
},
"p-defer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
"dev": true
},
"p-each-series": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz",
@@ -17898,8 +17628,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true,
"optional": true
"dev": true
},
"path-exists": {
"version": "4.0.0",
@@ -17910,7 +17639,8 @@
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-is-inside": {
"version": "1.0.2",
@@ -17949,6 +17679,12 @@
"dev": true,
"optional": true
},
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
"dev": true
},
"picomatch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
@@ -18076,16 +17812,15 @@
}
},
"pngquant-bin": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.0.tgz",
"integrity": "sha512-oXWAS9MQ9iiDAJRdAZ9KO1mC5UwhzKkJsmetiu0iqIjJuW7JsuLhmc4JdRm7uJkIWRzIAou/Vq2VcjfJwz30Ow==",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.1.tgz",
"integrity": "sha512-Q3PUyolfktf+hYio6wsg3SanQzEU/v8aICg/WpzxXcuCMRb7H2Q81okfpcEztbMvw25ILjd3a87doj2N9kvbpQ==",
"dev": true,
"optional": true,
"requires": {
"bin-build": "^3.0.0",
"bin-wrapper": "^4.0.1",
"execa": "^4.0.0",
"logalot": "^2.0.0"
"execa": "^4.0.0"
},
"dependencies": {
"cross-spawn": {
@@ -18555,12 +18290,6 @@
"svgo": "^2.3.0"
},
"dependencies": {
"colorette": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz",
"integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==",
"dev": true
},
"commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
@@ -18591,9 +18320,9 @@
}
},
"css-what": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
"integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
"integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
"dev": true
},
"dom-serializer": {
@@ -18631,26 +18360,26 @@
"dev": true
},
"nth-check": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
"integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
"integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
"dev": true,
"requires": {
"boolbase": "^1.0.0"
}
},
"svgo": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.5.0.tgz",
"integrity": "sha512-FSdBOOo271VyF/qZnOn1PgwCdt1v4Dx0Sey+U1jgqm1vqRYjPGdip0RGrFW6ItwtkBB8rHgHk26dlVr0uCs82Q==",
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz",
"integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==",
"dev": true,
"requires": {
"@trysound/sax": "0.1.1",
"colorette": "^1.3.0",
"@trysound/sax": "0.2.0",
"commander": "^7.2.0",
"css-select": "^4.1.3",
"css-tree": "^1.1.3",
"csso": "^4.2.0",
"nanocolors": "^0.1.12",
"stable": "^0.1.8"
}
}
@@ -18938,9 +18667,9 @@
}
},
"react-bootstrap": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.3.tgz",
"integrity": "sha512-zsd4l0g68pusOmJ/R5LhTfofT+9RniCwcZsMMNFGJo97d1vT1H2nGlbhLWp/j/pfeXXj9zzR8ugUtKkadcoWnA==",
"version": "1.6.4",
"resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.4.tgz",
"integrity": "sha512-z3BhBD4bEZuLP8VrYqAD7OT7axdcSkkyvWBWnS2U/4MhyabUihrUyucPWkan7aMI1XIHbmH4LCpEtzWGfx/yfA==",
"requires": {
"@babel/runtime": "^7.14.0",
"@restart/context": "^2.1.4",
@@ -19085,6 +18814,12 @@
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
"dev": true
},
"node-releases": {
"version": "1.1.77",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz",
"integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==",
"dev": true
},
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -19516,7 +19251,6 @@
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
@@ -19587,12 +19321,12 @@
"dev": true
},
"regenerate-unicode-properties": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
"integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz",
"integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==",
"dev": true,
"requires": {
"regenerate": "^1.4.0"
"regenerate": "^1.4.2"
}
},
"regenerator-runtime": {
@@ -19653,17 +19387,17 @@
"dev": true
},
"regexpu-core": {
"version": "4.7.1",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
"integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==",
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz",
"integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==",
"dev": true,
"requires": {
"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"
"regenerate": "^1.4.2",
"regenerate-unicode-properties": "^9.0.0",
"regjsgen": "^0.5.2",
"regjsparser": "^0.7.0",
"unicode-match-property-ecmascript": "^2.0.0",
"unicode-match-property-value-ecmascript": "^2.0.0"
}
},
"regjsgen": {
@@ -19673,9 +19407,9 @@
"dev": true
},
"regjsparser": {
"version": "0.6.9",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz",
"integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==",
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz",
"integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==",
"dev": true,
"requires": {
"jsesc": "~0.5.0"
@@ -19734,9 +19468,9 @@
}
},
"css-what": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
"integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
"integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
"dev": true
},
"dom-serializer": {
@@ -19768,9 +19502,9 @@
}
},
"nth-check": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
"integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
"integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
"dev": true,
"requires": {
"boolbase": "^1.0.0"
@@ -19895,6 +19629,12 @@
"source-map": "0.6.1"
}
},
"resolve.exports": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
"integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
"dev": true
},
"responselike": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -19955,9 +19695,9 @@
"dev": true
},
"rtlcss": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.3.0.tgz",
"integrity": "sha512-XZ2KEatH2nU5yPlts1Wu8SGIuZ3ndN025HQX5MqtUCUiOn5WkCDbcpJ2VJWjpuFmM2cUTQ1xtH21fhMCSseI5A==",
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.4.0.tgz",
"integrity": "sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA==",
"dev": true,
"requires": {
"chalk": "^4.1.0",
@@ -20985,71 +20725,19 @@
}
},
"string.prototype.matchall": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz",
"integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==",
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz",
"integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.18.2",
"es-abstract": "^1.19.1",
"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"
},
"dependencies": {
"es-abstract": {
"version": "1.18.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
"integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"get-intrinsic": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.2",
"internal-slot": "^1.0.3",
"is-callable": "^1.2.3",
"is-negative-zero": "^2.0.1",
"is-regex": "^1.1.3",
"is-string": "^1.0.6",
"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"
}
},
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
}
},
"is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
},
"object-inspect": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
"dev": true
}
}
},
"string.prototype.trimend": {
@@ -21142,6 +20830,13 @@
"escape-string-regexp": "^1.0.2"
}
},
"strnum": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.4.tgz",
"integrity": "sha512-lMzNMfDpaQOLt4B2mEbfzYS0+T7dvCXeojnlGf6f1AygvWDMcWyXYaLbyICfjVu29sErR8fnRagQfBW/N/hGgw==",
"dev": true,
"optional": true
},
"stubs": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
@@ -21522,9 +21217,9 @@
}
},
"tapable": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
"integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true
},
"tar-stream": {
@@ -21612,9 +21307,9 @@
}
},
"terser-webpack-plugin": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.3.tgz",
"integrity": "sha512-eDbuaDlXhVaaoKuLD3DTNTozKqln6xOG6Us0SzlKG5tNlazG+/cdl8pm9qiF1Di89iWScTI0HcO+CDcf2dkXiw==",
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz",
"integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==",
"dev": true,
"requires": {
"jest-worker": "^27.0.6",
@@ -21638,9 +21333,9 @@
"dev": true
},
"jest-worker": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz",
"integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==",
"version": "27.3.1",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz",
"integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==",
"dev": true,
"requires": {
"@types/node": "*",
@@ -21657,6 +21352,16 @@
"yocto-queue": "^0.1.0"
}
},
"source-map-support": {
"version": "0.5.20",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
"integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -21667,14 +21372,14 @@
}
},
"terser": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz",
"integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==",
"version": "5.9.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
"integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
"dev": true,
"requires": {
"commander": "^2.20.0",
"source-map": "~0.7.2",
"source-map-support": "~0.5.19"
"source-map-support": "~0.5.20"
},
"dependencies": {
"source-map": {
@@ -21751,9 +21456,9 @@
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
},
"tinymce": {
"version": "5.9.1",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.9.1.tgz",
"integrity": "sha512-GaG15OhQB1zR2L63fywhEAViTxkAlhX5JbA+48+O0zCo1FwDuQ8iUVi/FzaOX9Uo7ULp+Y2gu4r3P4ZNueDVPQ=="
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.0.tgz",
"integrity": "sha512-SaqBK8GtTKYSsTfhKdN0+NrZRgmVWO+j3fvgzLjt0t/g0osNzRH5os8icm2Rv5HvaeTd4TpxetUuLE+R9yg/yg=="
},
"tmp": {
"version": "0.0.33",
@@ -21972,9 +21677,9 @@
}
},
"typescript": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz",
"integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==",
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
"integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
"dev": true
},
"unbox-primitive": {
@@ -22011,31 +21716,31 @@
}
},
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
"integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
"integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
"dev": true
},
"unicode-match-property-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
"integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
"integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
"dev": true,
"requires": {
"unicode-canonical-property-names-ecmascript": "^1.0.4",
"unicode-property-aliases-ecmascript": "^1.0.4"
"unicode-canonical-property-names-ecmascript": "^2.0.0",
"unicode-property-aliases-ecmascript": "^2.0.0"
}
},
"unicode-match-property-value-ecmascript": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
"integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
"integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
"dev": true
},
"unicode-property-aliases-ecmascript": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
"integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
"dev": true
},
"union-value": {
@@ -22133,8 +21838,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
"dev": true,
"optional": true
"dev": true
},
"uri-js": {
"version": "4.4.1",
@@ -22413,9 +22117,9 @@
"dev": true
},
"webpack-sources": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.0.tgz",
"integrity": "sha512-fahN08Et7P9trej8xz/Z7eRu8ltyiygEo/hnRi9KqBUs80KeDcnf96ZJo++ewWd84fEf3xSX9bp4ZS9hbw0OBw==",
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz",
"integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==",
"dev": true
}
}
@@ -22465,26 +22169,31 @@
}
},
"webpack-cli": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.8.0.tgz",
"integrity": "sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==",
"version": "4.9.1",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz",
"integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==",
"dev": true,
"requires": {
"@discoveryjs/json-ext": "^0.5.0",
"@webpack-cli/configtest": "^1.0.4",
"@webpack-cli/info": "^1.3.0",
"@webpack-cli/serve": "^1.5.2",
"colorette": "^1.2.1",
"@webpack-cli/configtest": "^1.1.0",
"@webpack-cli/info": "^1.4.0",
"@webpack-cli/serve": "^1.6.0",
"colorette": "^2.0.14",
"commander": "^7.0.0",
"execa": "^5.0.0",
"fastest-levenshtein": "^1.0.12",
"import-local": "^3.0.2",
"interpret": "^2.2.0",
"rechoir": "^0.7.0",
"v8-compile-cache": "^2.2.0",
"webpack-merge": "^5.7.3"
},
"dependencies": {
"colorette": {
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
"commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
@@ -22583,32 +22292,37 @@
}
},
"webpack-dev-middleware": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz",
"integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==",
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz",
"integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==",
"dev": true,
"requires": {
"colorette": "^1.2.2",
"mem": "^8.1.1",
"colorette": "^2.0.10",
"memfs": "^3.2.2",
"mime-types": "^2.1.31",
"range-parser": "^1.2.1",
"schema-utils": "^3.0.0"
"schema-utils": "^3.1.0"
},
"dependencies": {
"colorette": {
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
"integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
"mime-db": {
"version": "1.49.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
"integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
"version": "1.50.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
"integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
"dev": true
},
"mime-types": {
"version": "2.1.32",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
"integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
"version": "2.1.33",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
"integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
"dev": true,
"requires": {
"mime-db": "1.49.0"
"mime-db": "1.50.0"
}
}
}
@@ -22647,9 +22361,9 @@
},
"dependencies": {
"ansi-regex": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.0.tgz",
"integrity": "sha512-tAaOSrWCHF+1Ear1Z4wnJCXA9GGox4K6Ic85a5qalES2aeEwQGr7UC93mwef49536PkCYjzkp0zIxfFvexJ6zQ==",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true
},
"anymatch": {
@@ -22788,9 +22502,9 @@
"dev": true
},
"open": {
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz",
"integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/open/-/open-8.3.0.tgz",
"integrity": "sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w==",
"dev": true,
"requires": {
"define-lazy-prop": "^2.0.0",
@@ -22832,12 +22546,12 @@
"dev": true
},
"strip-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.0.tgz",
"integrity": "sha512-UhDTSnGF1dc0DRbUqr1aXwNoY3RgVkSWG8BrpnuFIxhP57IqbS7IRta2Gfiavds4yCxc5+fEAVVOgBZWnYkvzg==",
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
"integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"dev": true,
"requires": {
"ansi-regex": "^6.0.0"
"ansi-regex": "^6.0.1"
}
},
"to-regex-range": {
@@ -22850,9 +22564,9 @@
}
},
"ws": {
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.2.1.tgz",
"integrity": "sha512-XkgWpJU3sHU7gX8f13NqTn6KQ85bd1WU7noBHTT8fSohx7OS1TPY8k+cyRPCzFkia7C4mM229yeHr1qK9sM4JQ==",
"version": "8.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
"integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
"dev": true
}
}
@@ -23036,7 +22750,8 @@
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"write": {
"version": "1.0.3",

View File

@@ -38,10 +38,10 @@
"@edx/brand": "npm:@edx/brand-openedx@1.1.0",
"@edx/frontend-component-footer": "10.1.6",
"@edx/frontend-component-header": "2.3.0",
"@edx/frontend-platform": "1.12.6",
"@edx/paragon": "16.13.2",
"@edx/frontend-platform": "1.12.7",
"@edx/paragon": "16.15.0",
"@reduxjs/toolkit": "1.6.1",
"@tinymce/tinymce-react": "3.12.6",
"@tinymce/tinymce-react": "3.13.0",
"babel-polyfill": "6.26.0",
"core-js": "3.17.3",
"formik": "2.2.6",
@@ -55,20 +55,20 @@
"redux": "4.1.1",
"regenerator-runtime": "0.13.9",
"timeago.js": "4.0.2",
"tinymce": "5.9.1",
"tinymce": "5.10.0",
"yup": "0.31.1"
},
"devDependencies": {
"@edx/frontend-build": "8.0.4",
"@edx/frontend-build": "8.0.6",
"@testing-library/jest-dom": "5.14.1",
"@testing-library/react": "12.1.0",
"@testing-library/react": "12.1.2",
"axios-mock-adapter": "1.20.0",
"codecov": "3.8.3",
"es-check": "5.2.3",
"eslint-plugin-simple-import-sort": "7.0.0",
"glob": "7.1.7",
"husky": "7.0.2",
"jest": "27.2.0",
"glob": "7.2.0",
"husky": "7.0.4",
"jest": "27.3.1",
"reactifex": "1.1.1",
"rosie": "2.1.0"
}

View File

@@ -41,7 +41,7 @@ export const EndorsementValue = {
*/
export const ContentActions = {
EDIT_CONTENT: 'raw_body',
PIN: 'pin',
PIN: 'pinned',
ENDORSE: 'endorsed',
CLOSE: 'closed',
REPORT: 'abuse_flagged',
@@ -105,10 +105,11 @@ export const MyPostsFilter = {
* @enum {string}
*/
export const PostsStatusFilter = {
ALL: 'filterAll',
UNREAD: 'filterUnread',
FOLLOWING: 'filterFollowing',
FLAGGED: 'filterFlagged',
ALL: 'statusAll',
UNREAD: 'statusUnread',
FOLLOWING: 'statusFollowing',
REPORTED: 'statusReported',
UNANSWERED: 'statusUnanswered',
};
/**
@@ -184,7 +185,8 @@ export const Routes = {
},
};
export const ALL_ROUTES = [Routes.DISCUSSIONS.PATH]
export const ALL_ROUTES = []
.concat(Routes.COMMENTS.PATH)
.concat(Routes.TOPICS.PATH)
.concat([Routes.POSTS.ALL_POSTS, Routes.POSTS.MY_POSTS]);
.concat([Routes.POSTS.ALL_POSTS, Routes.POSTS.MY_POSTS])
.concat([Routes.DISCUSSIONS.PATH]);

View File

@@ -73,6 +73,11 @@ function DiscussionCommentsView({
} = usePostComments(postId, endorsed);
return (
<div className="m-3">
<div className="my-3">
{endorsed === EndorsementStatus.ENDORSED
? intl.formatMessage(messages.endorsedResponseCount, { num: comments.length })
: intl.formatMessage(messages.responseCount, { num: comments.length })}
</div>
{comments.map(comment => (
<Comment comment={comment} key={comment.id} postType={postType} />
))}

View File

@@ -1,52 +1,43 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Button, Icon } from '@edx/paragon';
import { StarFilled, StarOutline } from '@edx/paragon/icons';
import { useDispatch } from 'react-redux';
import * as timeago from 'timeago.js';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import LikeButton from '../../posts/post/LikeButton';
import { editComment } from '../data/thunks';
function CommentIcons({
count,
following,
onLike,
voted,
comment,
intl,
}) {
const dispatch = useDispatch();
const handleLike = () => dispatch(editComment(comment.id, { voted: !comment.voted }));
return (
<div className="d-flex flex-column icons">
<div className="d-flex flex-row align-items-center">
<LikeButton
count={count}
onClick={() => onLike && onLike()}
voted={voted}
count={comment.voteCount}
onClick={handleLike}
voted={comment.voted}
/>
{/* Only show the star if the comment has a following attribute, indicating it can be followed */}
{following !== undefined && (
following
? (
<Button variant="link" className="p-0" size="xs">
<Icon src={StarFilled} />
</Button>
) : (
<Button variant="link" className="p-0" size="xs">
<Icon src={StarOutline} />
</Button>
)
)}
<div className="d-flex flex-fill text-gray-500 justify-content-end mt-2" title={comment.createdAt}>
{timeago.format(comment.createdAt, intl.locale)}
</div>
</div>
);
}
CommentIcons.propTypes = {
count: PropTypes.number.isRequired,
following: PropTypes.bool,
onLike: PropTypes.func,
voted: PropTypes.bool,
comment: PropTypes.shape({
id: PropTypes.string,
voteCount: PropTypes.number,
following: PropTypes.bool,
voted: PropTypes.bool,
createdAt: PropTypes.string,
}).isRequired,
intl: intlShape.isRequired,
};
CommentIcons.defaultProps = {
following: undefined,
onLike: undefined,
voted: false,
};
export default CommentIcons;
export default injectIntl(CommentIcons);

View File

@@ -2,61 +2,20 @@ import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { useDispatch, useSelector } from 'react-redux';
import * as timeago from 'timeago.js';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { Alert, Button, Hyperlink } from '@edx/paragon';
import { CheckCircle, Verified } from '@edx/paragon/icons';
import { Button } from '@edx/paragon';
import { ContentActions, ThreadType } from '../../../data/constants';
import { ContentActions } from '../../../data/constants';
import { AlertBanner } from '../../common';
import CommentIcons from '../comment-icons/CommentIcons';
import {
selectCommentCurrentPage,
selectCommentHasMorePages,
selectCommentResponses,
} from '../data/selectors';
import { selectCommentCurrentPage, selectCommentHasMorePages, selectCommentResponses } from '../data/selectors';
import { editComment, fetchCommentResponses, removeComment } from '../data/thunks';
import messages from '../messages';
import CommentEditor from './CommentEditor';
import CommentHeader from './CommentHeader';
import { commentShape } from './proptypes';
function CommentBanner({
intl,
comment,
postType,
}) {
const isQuestion = postType === ThreadType.QUESTION;
const classes = isQuestion ? 'bg-success-500 text-white' : 'bg-dark-500 text-white';
const iconClass = isQuestion ? CheckCircle : Verified;
return comment.endorsed ? (
<Alert variant="plain" className={`p-3 m-0 rounded-0 shadow-none ${classes}`} icon={iconClass}>
<div className="d-flex justify-content-between">
<strong>{intl.formatMessage(
isQuestion
? messages.answer
: messages.endorsed,
)}
</strong>
<span>
{intl.formatMessage(
isQuestion
? messages.answeredLabel
: messages.endorsedLabel,
)}&nbsp;
<Hyperlink>{comment.endorsedBy}</Hyperlink>&nbsp;
{timeago.format(comment.endorsedAt, intl.locale)}
</span>
</div>
</Alert>
) : null;
}
CommentBanner.propTypes = {
intl: intlShape.isRequired,
comment: commentShape.isRequired,
postType: PropTypes.string.isRequired,
};
import Reply from './Reply';
function Comment({
postType,
@@ -84,68 +43,68 @@ function Comment({
[ContentActions.DELETE]: () => dispatch(removeComment(comment.id)),
[ContentActions.REPORT]: () => dispatch(editComment(comment.id, { flagged: !comment.abuseFlagged })),
};
const handleLoadMoreResponses = () => (
const handleLoadMoreComments = () => (
dispatch(fetchCommentResponses(comment.id, { page: currentPage + 1 }))
);
return (
<div className="discussion-comment d-flex flex-column card my-3">
<CommentBanner postType={postType} comment={comment} intl={intl} />
<div className="p-4">
<CommentHeader comment={comment} actionHandlers={actionHandlers} />
<AlertBanner postType={postType} content={comment} intl={intl} />
<div className="d-flex flex-column p-4">
<CommentHeader comment={comment} actionHandlers={actionHandlers} postType={postType} />
{isEditing
? (
<CommentEditor comment={comment} onCloseEditor={() => setEditing(false)} />
)
// eslint-disable-next-line react/no-danger
: <div className="comment-body px-2" dangerouslySetInnerHTML={{ __html: comment.renderedBody }} />}
<CommentIcons
abuseFlagged={comment.abuseFlagged}
count={comment.voteCount}
comment={comment}
following={comment.following}
onLike={() => dispatch(editComment(comment.id, { voted: !comment.voted }))}
voted={comment.voted}
createdAt={comment.createdAt}
/>
</div>
<div className="ml-4">
{/* Pass along intl since component used here is the one before it's injected with `injectIntl` */}
{inlineReplies.map(inlineReply => (
<Comment
postType={postType}
comment={inlineReply}
key={inlineReply.id}
intl={intl}
/>
))}
</div>
{hasMorePages && (
<Button
onClick={handleLoadMoreResponses}
variant="link"
block="true"
className="m-4 w-auto"
data-testid="load-more-comments-responses"
>
{intl.formatMessage(messages.loadMoreResponses)}
</Button>
)}
{!isNested
&& (
isReplying
? (
<CommentEditor
comment={{
threadId: comment.threadId,
parentId: comment.id,
}}
onCloseEditor={() => setReplying(false)}
<div className="d-flex my-2 flex-column">
{/* Pass along intl since component used here is the one before it's injected with `injectIntl` */}
{inlineReplies.map(inlineReply => (
<Reply
reply={inlineReply}
postType={postType}
key={inlineReply.id}
intl={intl}
/>
)
: (
<Button className="d-flex m-4 flex-fill" variant="outline-secondary" onClick={() => setReplying(true)}>
{intl.formatMessage(messages.addComment)}
</Button>
)
)}
))}
</div>
{hasMorePages && (
<Button
onClick={handleLoadMoreComments}
variant="link"
block="true"
className="my-4"
data-testid="load-more-comments-responses"
>
{intl.formatMessage(messages.loadMoreResponses)}
</Button>
)}
{!isNested
&& (
isReplying
? (
<CommentEditor
comment={{
threadId: comment.threadId,
parentId: comment.id,
}}
onCloseEditor={() => setReplying(false)}
/>
)
: (
<Button className="d-flex flex-grow " variant="outline-secondary" onClick={() => setReplying(true)}>
{intl.formatMessage(messages.addComment)}
</Button>
)
)}
</div>
</div>
);
}

View File

@@ -2,38 +2,35 @@ import React from 'react';
import PropTypes from 'prop-types';
import { useSelector } from 'react-redux';
import * as timeago from 'timeago.js';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { injectIntl } from '@edx/frontend-platform/i18n';
import { Avatar } from '@edx/paragon';
import { ThreadType } from '../../../data/constants';
import { AuthorLabel } from '../../common';
import ActionsDropdown from '../../common/ActionsDropdown';
import { selectAuthorAvatars } from '../../posts/data/selectors';
import messages from '../messages';
import { commentShape } from './proptypes';
function CommentHeader({
comment,
postType,
actionHandlers,
intl,
}) {
const authorAvatars = useSelector(selectAuthorAvatars(comment.author));
return (
<div className="d-flex flex-row justify-content-between">
<div className="align-items-center d-flex flex-row">
<Avatar className="m-2" alt={comment.author} src={authorAvatars?.imageUrlSmall} />
<div className="status small">
<a href="#nowhere" className="font-weight-normal text-info-300 mr-1 small">
{comment.author} {comment.authorLabel ? `(${comment.authorLabel})` : ''}
</a>
<div className="font-weight-normal small text-gray-500" title={comment.createdAt}>
{intl.formatMessage(messages.commentTime, {
relativeTime: timeago.format(comment.createdAt, intl.locale),
})}
</div>
</div>
<AuthorLabel author={comment.author} authorLabel={comment.authorLabel} />
</div>
<ActionsDropdown commentOrPost={comment} actionHandlers={actionHandlers} />
<ActionsDropdown
commentOrPost={{
...comment,
postType,
}}
actionHandlers={actionHandlers}
/>
</div>
);
}
@@ -41,7 +38,7 @@ function CommentHeader({
CommentHeader.propTypes = {
comment: commentShape.isRequired,
actionHandlers: PropTypes.objectOf(PropTypes.func).isRequired,
intl: intlShape.isRequired,
postType: PropTypes.oneOf([ThreadType.QUESTION, ThreadType.DISCUSSION]).isRequired,
};
export default injectIntl(CommentHeader);

View File

@@ -0,0 +1,73 @@
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { useDispatch, useSelector } from 'react-redux';
import * as timeago from 'timeago.js';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { Avatar } from '@edx/paragon';
import { ContentActions } from '../../../data/constants';
import ActionsDropdown from '../../common/ActionsDropdown';
import AlertBanner from '../../common/AlertBanner';
import AuthorLabel from '../../common/AuthorLabel';
import { selectAuthorAvatars } from '../../posts/data/selectors';
import { editComment, removeComment } from '../data/thunks';
import CommentEditor from './CommentEditor';
import { commentShape } from './proptypes';
function Reply({
reply,
postType,
intl,
}) {
const dispatch = useDispatch();
const [isEditing, setEditing] = useState(false);
const actionHandlers = {
[ContentActions.EDIT_CONTENT]: () => setEditing(true),
[ContentActions.ENDORSE]: () => dispatch(editComment(reply.id, { endorsed: !reply.endorsed })),
// TODO: Add flow to confirm before deleting
[ContentActions.DELETE]: () => dispatch(removeComment(reply.id)),
[ContentActions.REPORT]: () => dispatch(editComment(reply.id, { flagged: !reply.abuseFlagged })),
};
const authorAvatars = useSelector(selectAuthorAvatars(reply.author));
return (
<div className="d-flex my-2 flex-column">
<div className="d-flex flex-fill ml-6">
<AlertBanner postType={null} content={reply} intl={intl} />
</div>
<div className="d-flex">
<div className="d-flex m-3">
<Avatar alt={reply.author} src={authorAvatars?.imageUrlSmall} />
</div>
<div className="rounded bg-light-300 px-4 py-2 flex-fill">
<div className="d-flex flex-row justify-content-between align-items-center">
<AuthorLabel author={reply.author} authorLabel={reply.authorLabel} />
<ActionsDropdown
commentOrPost={{
...reply,
postType,
}}
actionHandlers={actionHandlers}
/>
</div>
{isEditing
? <CommentEditor comment={reply} onCloseEditor={() => setEditing(false)} />
// eslint-disable-next-line react/no-danger
: <div dangerouslySetInnerHTML={{ __html: reply.renderedBody }} />}
</div>
</div>
<div className="text-gray-500 align-self-end mt-2" title={reply.createdAt}>
{timeago.format(reply.createdAt, intl.locale)}
</div>
</div>
);
}
Reply.propTypes = {
postType: PropTypes.oneOf(['discussion', 'question']).isRequired,
reply: commentShape.isRequired,
intl: intlShape.isRequired,
};
export default injectIntl(Reply);

View File

@@ -11,6 +11,32 @@ const messages = defineMessages({
defaultMessage: 'Add a comment',
description: 'Button to add a comment to a response',
},
abuseFlaggedMessage: {
id: 'discussions.comments.comment.abuseFlaggedMessage',
defaultMessage: 'Content reported for staff to review',
description: 'Alert banner over comment that has been reported for abuse',
},
responseCount: {
id: 'discussions.comments.comment.responseCount',
defaultMessage: `{num, plural,
=0 {No responses}
one {Showing # response}
other {Showing # responses}
}`,
},
endorsedResponseCount: {
id: 'discussions.comments.comment.endorsedResponseCount',
defaultMessage: `{num, plural,
=0 {No endorsed responses}
one {Showing # endorsed response}
other {Showing # endorsed responses}
}`,
},
loadMoreComments: {
id: 'discussions.comments.comment.loadMoreComments',
defaultMessage: 'Load more comments',
description: 'Button to load more comments on responses',
},
loadMoreResponses: {
id: 'discussions.comments.comment.loadMoreResponses',
defaultMessage: 'Load more responses',

View File

@@ -0,0 +1,60 @@
import React from 'react';
import PropTypes from 'prop-types';
import * as timeago from 'timeago.js';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { Alert, Hyperlink } from '@edx/paragon';
import { CheckCircle, Error, Verified } from '@edx/paragon/icons';
import { ThreadType } from '../../data/constants';
import { commentShape } from '../comments/comment/proptypes';
import messages from '../comments/messages';
import { postShape } from '../posts/post/proptypes';
function AlertBanner({
intl,
content,
postType,
}) {
const isQuestion = postType === ThreadType.QUESTION;
const classes = isQuestion ? 'bg-success-500 text-white' : 'bg-dark-500 text-white';
const iconClass = isQuestion ? CheckCircle : Verified;
return (
<>
{content.endorsed && (
<Alert variant="plain" className={`p-3 m-0 rounded-0 shadow-none ${classes}`} icon={iconClass}>
<div className="d-flex justify-content-between">
<strong>{intl.formatMessage(
isQuestion
? messages.answer
: messages.endorsed,
)}
</strong>
<span>
{intl.formatMessage(
isQuestion
? messages.answeredLabel
: messages.endorsedLabel,
)}&nbsp;
<Hyperlink>{content.endorsedBy}</Hyperlink>&nbsp;
{timeago.format(content.endorsedAt, intl.locale)}
</span>
</div>
</Alert>
)}
{content.abuseFlagged && (
<Alert icon={Error} variant="danger" className="p-3 m-0 shadow-none mb-1 flex-fill">
{intl.formatMessage(messages.abuseFlaggedMessage)}
</Alert>
)}
</>
);
}
AlertBanner.propTypes = {
intl: intlShape.isRequired,
content: PropTypes.oneOfType([commentShape.isRequired, postShape.isRequired]).isRequired,
postType: PropTypes.string.isRequired,
};
export default injectIntl(AlertBanner);

View File

@@ -0,0 +1,54 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { Icon } from '@edx/paragon';
import { Institution, School } from '@edx/paragon/icons';
function AuthorLabel({
author,
authorLabel,
linkToProfile,
}) {
const labelContents = (
<>
{author}
{authorLabel === 'Staff' && (
<Icon
style={{
width: '1rem',
height: '1rem',
}}
src={Institution}
/>
)}
{authorLabel === 'Community TA' && (
<Icon
style={{
width: '1rem',
height: '1rem',
}}
src={School}
/>
)}
</>
);
const className = classNames('d-flex align-items-center', { 'text-success-700': Boolean(authorLabel) });
return linkToProfile
? React.createElement('a', { href: '#nowhere', className }, labelContents)
: React.createElement('div', { className }, labelContents);
}
AuthorLabel.propTypes = {
author: PropTypes.string.isRequired,
authorLabel: PropTypes.string,
linkToProfile: PropTypes.bool,
};
AuthorLabel.defaultProps = {
linkToProfile: false,
authorLabel: null,
};
export default AuthorLabel;

View File

@@ -0,0 +1,3 @@
export { default as ActionsDropdown } from './ActionsDropdown';
export { default as AlertBanner } from './AlertBanner';
export { default as AuthorLabel } from './AuthorLabel';

View File

@@ -61,7 +61,7 @@ export default function DiscussionsHome() {
component={BreadcrumbMenu}
/>
<div className="d-flex flex-row">
<div className="d-flex flex-column w-25">
<div className="d-flex flex-column w-25" style={{ minWidth: '30rem' }}>
<Switch>
<Route path={Routes.POSTS.MY_POSTS}>
<PostsView showOwnPosts />
@@ -71,7 +71,7 @@ export default function DiscussionsHome() {
<Redirect from={Routes.DISCUSSIONS.PATH} to={Routes.TOPICS.ALL} />
</Switch>
</div>
<div className="d-flex w-75 flex-column bg-light-300">
<div className="d-flex flex-column bg-light-300 w-75">
{
postEditorVisible ? (
<Route path={Routes.POSTS.NEW_POST}>

View File

@@ -15,7 +15,6 @@ import {
selectThreadNextPage,
selectThreadSorting,
selectTopicThreads,
selectUserThreads,
threadsLoadingStatus,
} from './data/selectors';
import { fetchThreads } from './data/thunks';
@@ -38,36 +37,51 @@ function PostsView({ showOwnPosts }) {
let posts = [];
if (topicId) {
posts = useSelector(selectTopicThreads(topicId));
} else if (showOwnPosts) {
posts = useSelector(selectUserThreads(authenticatedUser.username));
} else {
posts = useSelector(selectAllThreads);
}
useEffect(() => {
// The courseId from the URL is the course we WANT to load.
dispatch(fetchThreads(courseId, {
topicIds: topicId ? [topicId] : null,
orderBy,
filters,
author: showOwnPosts ? authenticatedUser.username : null,
}));
}, [courseId, orderBy, filters]);
}, [courseId, orderBy, filters, showOwnPosts, topicId]);
const loadMorePosts = async () => {
if (nextPage) {
dispatch(fetchThreads(courseId, {
topicIds: topicId ? [topicId] : null,
orderBy,
filters,
page: nextPage,
author: showOwnPosts ? authenticatedUser.username : null,
}));
}
};
let lastPinnedIdx = null;
return (
<div className="discussion-posts d-flex flex-column">
<PostFilterBar filterSelfPosts={showOwnPosts} />
<div className="list-group list-group-flush">
{posts && posts.map(post => (
<PostLink post={post} key={post.id} />
))}
{posts && posts.map((post, idx) => {
if (post.pinned && lastPinnedIdx !== false) {
lastPinnedIdx = idx;
} else if (lastPinnedIdx != null && lastPinnedIdx !== false) {
lastPinnedIdx = false;
// Add a spacing after the group of pinned posts
return (
<>
<div className="p-1 bg-light-300" />
<PostLink post={post} key={post.id} />
</>
);
}
return (<PostLink post={post} key={post.id} />);
})}
{loadingStatus === RequestStatus.IN_PROGRESS ? (
<div className="d-flex justify-content-center p-4">
<Spinner animation="border" variant="primary" size="lg" />

View File

@@ -15,12 +15,14 @@ export const threadsApiUrl = `${apiBaseUrl}/api/discussion/v1/threads/`;
/**
* Fetches all the threads in the given course and topic.
* @param {string} courseId
* @param {string} author
* @param {[string]} topicIds List of topics to limit threads to
* @param {number} page
* @param {number} pageSize
* @param {string} textSearch A search string to match.
* @param {ThreadOrdering} orderBy The results wil be sorted on this basis.
* @param {boolean} following If true, only threads followed by the current user will be returned.
* @param {boolean} flagged If true, only threads that have been reported will be returned.
* @param {ThreadViewStatus} view Set to "unread" on "unanswered" to filter to only those statuses.
* @returns {Promise<{}>}
*/
@@ -33,6 +35,8 @@ export async function getThreads(
orderBy,
following,
view,
author,
flagged,
} = {},
) {
const params = snakeCaseObject({
@@ -45,6 +49,8 @@ export async function getThreads(
following,
view,
requestedFields: 'profile_image',
author,
flagged,
});
const { data } = await getAuthenticatedHttpClient().get(threadsApiUrl, { params });

View File

@@ -37,12 +37,6 @@ export const selectAllThreads = createSelector(
export const threadsLoadingStatus = () => state => state.threads.status;
// TODO: eventually this should be server-side filtering
export const selectUserThreads = author => createSelector(
[selectAllThreads],
threads => threads.filter(thread => thread.author === author),
);
export const selectThreadSorting = () => state => state.threads.sortedBy;
export const selectThreadFilters = () => state => state.threads.filters;

View File

@@ -22,6 +22,7 @@ const threadsSlice = createSlice({
threadsById: {
// Mapping of threads ids to threads in them
},
author: null,
pages: [],
threadDraft: null,
nextPage: null,
@@ -43,6 +44,10 @@ const threadsSlice = createSlice({
state.status = RequestStatus.IN_PROGRESS;
},
fetchThreadsSuccess: (state, { payload }) => {
if (state.author !== payload.author) {
state.pages = [];
state.author = payload.author;
}
state.status = RequestStatus.SUCCESSFUL;
state.pages[payload.page - 1] = payload.ids;
state.threadsById = { ...state.threadsById, ...payload.threadsById };
@@ -143,6 +148,10 @@ const threadsSlice = createSlice({
},
setSearchQuery: (state, { payload }) => {
state.filters.search = payload;
// Search doesn't work with following
state.filters.status = state.filters.status === PostsStatusFilter.FOLLOWING
? PostsStatusFilter.ALL
: state.filters.status;
state.pages = [];
},
showPostEditor: (state) => {

View File

@@ -78,6 +78,7 @@ function normaliseThreads(data) {
/**
* Fetches the threads for the course specified va the threadIds.
* @param {string} courseId The course ID for the course to fetch data for.
* @param {?string} author The author whose posts need to be viewed.
* @param {[string]} topicIds List of topics to limit threads to
* @param {ThreadOrdering} orderBy The results will be sorted on this basis.
* @param {ThreadFilter} filters The set of filters to apply to the thread.
@@ -87,6 +88,7 @@ function normaliseThreads(data) {
export function fetchThreads(courseId, {
topicIds,
orderBy,
author = null,
filters = {},
page = 1,
} = {}) {
@@ -94,6 +96,7 @@ export function fetchThreads(courseId, {
orderBy,
topicIds,
page,
author,
};
if (filters.status === PostsStatusFilter.FOLLOWING) {
options.following = true;
@@ -101,6 +104,12 @@ export function fetchThreads(courseId, {
if (filters.status === PostsStatusFilter.UNREAD) {
options.view = 'unread';
}
if (filters.status === PostsStatusFilter.UNANSWERED) {
options.view = 'unanswered';
}
if (filters.status === PostsStatusFilter.REPORTED) {
options.flagged = true;
}
if (filters.search) {
options.textSearch = filters.search;
}
@@ -109,7 +118,7 @@ export function fetchThreads(courseId, {
dispatch(fetchThreadsRequest({ courseId }));
const data = await getThreads(courseId, options);
const normalisedData = normaliseThreads(camelCaseObject(data));
dispatch(fetchThreadsSuccess({ ...normalisedData, page }));
dispatch(fetchThreadsSuccess({ ...normalisedData, page, author }));
} catch (error) {
if (getHttpErrorStatus(error) === 403) {
dispatch(fetchThreadsDenied());

View File

@@ -71,7 +71,7 @@ function PostEditor({
const post = useSelector(selectThread(postId));
const initialValues = {
postType: post?.type || 'discussion',
topic: post?.topicId || topicId,
topic: post?.topicId || topicId || nonCoursewareTopics?.[0]?.id,
title: post?.title || '',
comment: post?.rawBody || '',
follow: post?.following ?? true,
@@ -229,7 +229,7 @@ function PostEditor({
{!editExisting
&& (
<>
<div className="d-flex flex-row mt-3">
<Form.Checkbox
name="follow"
value={values.follow}
@@ -247,7 +247,7 @@ function PostEditor({
>
{intl.formatMessage(messages.anonymousPost)}
</Form.Checkbox>
</>
</div>
)}
<div className="d-flex justify-content-end">

View File

@@ -58,7 +58,7 @@ const messages = defineMessages({
defaultMessage: 'Post title cannot be empty.',
},
commentError: {
id: 'discussions.post.editor.comment.error',
id: 'discussions.post.editor.content.error',
defaultMessage: 'Post content cannot be empty.',
},
questionText: {

View File

@@ -1,88 +1,191 @@
import React from 'react';
import React, { useContext, useState } from 'react';
import PropTypes from 'prop-types';
import * as classNames from 'classnames';
import { useDispatch, useSelector } from 'react-redux';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { Icon } from '@edx/paragon';
import { ArrowDropUpDown } from '@edx/paragon/icons';
import { AppContext } from '@edx/frontend-platform/react';
import { Collapsible, Form, Icon } from '@edx/paragon';
import { Check, Sort } from '@edx/paragon/icons';
import { SelectableDropdown } from '../../../components';
import {
AllPostsFilter, MyPostsFilter, PostsStatusFilter, ThreadOrdering,
} from '../../../data/constants';
import { buildIntlSelectionList } from '../../utils';
import {
setAllPostsTypeFilter, setMyPostsTypeFilter, setSortedBy, setStatusFilter,
} from '../data';
import { AllPostsFilter, PostsStatusFilter, ThreadOrdering } from '../../../data/constants';
import { setAllPostsTypeFilter, setSortedBy, setStatusFilter } from '../data';
import { selectThreadFilters, selectThreadSorting } from '../data/selectors';
import messages from './messages';
const ActionItem = ({
id,
label,
value,
selected,
}) => (
<label htmlFor={id} className="focus border-bottom-0 d-flex p-1 m-2 align-items-center">
<Icon src={Check} className={classNames('text-success mr-2', { invisible: value !== selected })} />
<Form.Radio id={id} className="sr-only sr-only-focusable" value={value} tabIndex={0}>
{label}
</Form.Radio>
{label}
</label>
);
ActionItem.propTypes = {
id: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
value: PropTypes.string.isRequired,
selected: PropTypes.string.isRequired,
};
function PostFilterBar({
filterSelfPosts,
intl,
}) {
const { authenticatedUser } = useContext(AppContext);
const dispatch = useDispatch();
const currentSorting = useSelector(selectThreadSorting());
const currentFilters = useSelector(selectThreadFilters());
const allPostsFilterOptions = buildIntlSelectionList(AllPostsFilter, intl, messages);
const myPostsFilterOptions = buildIntlSelectionList(MyPostsFilter, intl, messages);
const postsStatusFilterOptions = buildIntlSelectionList(PostsStatusFilter, intl, messages);
const postOrderingOptions = buildIntlSelectionList(ThreadOrdering, intl, messages);
const [isOpen, setOpen] = useState(false);
const handleSortFilterChange = (event) => {
const currentType = currentFilters.allPosts;
const currentStatus = currentFilters.status;
const {
name,
value,
} = event.currentTarget;
if (name === 'type') {
dispatch(setAllPostsTypeFilter(value));
if (
(value === AllPostsFilter.ALL_DISCUSSIONS && currentStatus === PostsStatusFilter.UNANSWERED)
|| (value === AllPostsFilter.ALL_QUESTIONS && currentStatus === PostsStatusFilter.UNREAD)
) {
// You can't filter discussions by unanswered or questions by unread
dispatch(setStatusFilter(PostsStatusFilter.ALL));
}
}
if (name === 'status') {
dispatch(setStatusFilter(value));
if (value === PostsStatusFilter.UNANSWERED && currentType !== AllPostsFilter.ALL_QUESTIONS) {
// You can't filter discussions by unanswered so switch type to questions
dispatch(setAllPostsTypeFilter(AllPostsFilter.ALL_QUESTIONS));
}
if (value === PostsStatusFilter.UNREAD && currentType !== AllPostsFilter.ALL_DISCUSSIONS) {
// You can't filter questions by unread so switch type to discussion
dispatch(setAllPostsTypeFilter(AllPostsFilter.ALL_DISCUSSIONS));
}
}
if (name === 'sort') {
dispatch(setSortedBy(value));
}
setOpen(false);
};
return (
<>
<div className="d-flex flex-row p-1">
<div className="m-1">
{filterSelfPosts
? (
<SelectableDropdown
selected={currentFilters.myPosts}
options={myPostsFilterOptions}
onChange={(typeFilter) => dispatch(setMyPostsTypeFilter(typeFilter.value))}
label={
intl.formatMessage(messages[currentFilters.myPosts])
}
/>
) : (
<SelectableDropdown
selected={currentFilters.allPosts}
options={allPostsFilterOptions}
onChange={(typeFilter) => dispatch(setAllPostsTypeFilter(typeFilter.value))}
label={intl.formatMessage(messages[currentFilters.allPosts])}
/>
)}
</div>
<div className="flex-fill m-1">
<SelectableDropdown
<Collapsible
styling="card-lg"
iconWhenOpen={<Icon src={Sort} />}
iconWhenClosed={<Icon src={Sort} />}
title={intl.formatMessage(messages.sortFilterStatus, {
own: filterSelfPosts,
type: currentFilters.allPosts,
sort: currentSorting,
status: currentFilters.status,
})}
open={isOpen}
onToggle={setOpen}
>
<Form className="d-flex flex-row p-1 justify-content-between">
<Form.RadioSet
name="type"
className="d-flex flex-column list-group list-group-flush"
value={currentFilters.allPosts}
onChange={handleSortFilterChange}
>
<ActionItem
id="type-all"
label={intl.formatMessage(messages.allPosts)}
value={AllPostsFilter.ALL_POSTS}
selected={currentFilters.allPosts}
/>
<ActionItem
id="type-discussions"
label={intl.formatMessage(messages.filterDiscussions)}
value={AllPostsFilter.ALL_DISCUSSIONS}
selected={currentFilters.allPosts}
/>
<ActionItem
id="type-questions"
label={intl.formatMessage(messages.filterQuestions)}
value={AllPostsFilter.ALL_QUESTIONS}
selected={currentFilters.allPosts}
/>
</Form.RadioSet>
<Form.RadioSet
name="status"
className="d-flex flex-column list-group list-group-flush"
value={currentFilters.status}
onChange={handleSortFilterChange}
>
<ActionItem
id="status-any"
label={intl.formatMessage(messages.filterAnyStatus)}
value={PostsStatusFilter.ALL}
selected={currentFilters.status}
options={postsStatusFilterOptions}
onChange={(statusFilter) => dispatch(setStatusFilter(statusFilter.value))}
label={
intl.formatMessage(
messages.filterBy,
{ filterBy: intl.formatMessage(messages[currentFilters.status]) },
)
}
/>
</div>
<div className="justify-content-end m-1">
<SelectableDropdown
<ActionItem
id="status-unread"
label={intl.formatMessage(messages.filterUnread)}
value={PostsStatusFilter.UNREAD}
selected={currentFilters.status}
/>
<ActionItem
id="status-following"
label={intl.formatMessage(messages.filterFollowing)}
value={PostsStatusFilter.FOLLOWING}
selected={currentFilters.status}
/>
{authenticatedUser.administrator
&& (
<ActionItem
id="status-reported"
label={intl.formatMessage(messages.filterReported)}
value={PostsStatusFilter.REPORTED}
selected={currentFilters.status}
/>
)}
<ActionItem
id="status-unanswered"
label={intl.formatMessage(messages.filterUnanswered)}
value={PostsStatusFilter.UNANSWERED}
selected={currentFilters.status}
/>
</Form.RadioSet>
<Form.RadioSet
name="sort"
className="d-flex flex-column list-group list-group-flush"
value={currentSorting}
onChange={handleSortFilterChange}
>
<ActionItem
id="sort-activity"
label={intl.formatMessage(messages.lastActivityAt)}
value={ThreadOrdering.BY_LAST_ACTIVITY}
selected={currentSorting}
options={postOrderingOptions}
onChange={(sortBy) => dispatch(setSortedBy(sortBy.value))}
label={
<Icon src={ArrowDropUpDown} aria-label="Sort" title="Sort" />
}
/>
</div>
</div>
<div className="d-flex flex-row card-header py-1 px-3 small">
{intl.formatMessage(
messages.sortedBy,
{ sortBy: intl.formatMessage(messages[currentSorting]) },
)}
</div>
</>
<ActionItem
id="sort-comments"
label={intl.formatMessage(messages.commentCount)}
value={ThreadOrdering.BY_COMMENT_COUNT}
selected={currentSorting}
/>
<ActionItem
id="sort-votes"
label={intl.formatMessage(messages.voteCount)}
value={ThreadOrdering.BY_VOTE_COUNT}
selected={currentSorting}
/>
</Form.RadioSet>
</Form>
</Collapsible>
);
}

View File

@@ -2,18 +2,18 @@ import { defineMessages } from '@edx/frontend-platform/i18n';
const messages = defineMessages({
allPosts: {
id: 'discussions.posts.filter.allPosts',
defaultMessage: 'All posts',
id: 'discussions.posts.filter.showALl',
defaultMessage: 'Show all',
description: 'Option in dropdown to filter to all posts',
},
allDiscussions: {
id: 'discussions.posts.filter.allDscussions',
defaultMessage: 'All discussions',
filterDiscussions: {
id: 'discussions.posts.filter.discussions',
defaultMessage: 'Discussions',
description: 'Option in dropdown to filter to all discussions',
},
allQuestions: {
id: 'discussions.posts.filter.allQuestions',
defaultMessage: 'All questions',
filterQuestions: {
id: 'discussions.posts.filter.questions',
defaultMessage: 'Questions',
description: 'Option in dropdown to filter to all questions',
},
filterBy: {
@@ -21,9 +21,9 @@ const messages = defineMessages({
defaultMessage: 'Status: {filterBy}',
description: 'Display text used to indicate what post status is being filtered',
},
filterAll: {
id: 'discussions.posts.status.filter.all',
defaultMessage: 'All',
filterAnyStatus: {
id: 'discussions.posts.status.filter.anyStatus',
defaultMessage: 'Any status',
description: 'Option in dropdown to filter to all post statuses',
},
filterUnread: {
@@ -36,10 +36,15 @@ const messages = defineMessages({
defaultMessage: 'Following',
description: 'Option in dropdown to filter to followed posts',
},
filterFlagged: {
id: 'discussions.posts.status.filter.flagged',
defaultMessage: 'Flagged',
description: 'Option in dropdown to filter to flagged posts',
filterReported: {
id: 'discussions.posts.status.filter.reported',
defaultMessage: 'Reported',
description: 'Option in dropdown to filter to reported posts',
},
filterUnanswered: {
id: 'discussions.posts.status.filter.unanswered',
defaultMessage: 'Unanswered',
description: 'Option in dropdown to filter to unanswered posts',
},
myPosts: {
id: 'discussions.posts.filter.myPosts',
@@ -76,6 +81,28 @@ const messages = defineMessages({
defaultMessage: 'Most votes',
description: 'Option in dropdown to sort posts by most votes',
},
sortFilterStatus: {
id: 'discussions.posts.sort-filter.sortFilterStatus',
defaultMessage: `{own, select,
false {All}
true {Own}
} {status, select,
statusAll {}
statusUnread {unread}
statusFollowing {followed}
statusReported {reported}
statusUnanswered {unanswered}
} {type, select,
allPosts {posts}
allDiscussions {discussions}
allQuestions {questions}
} by {sort, select,
lastActivityAt {recent activity}
commentCount {most activity}
voteCount {most votes}
}`,
description: 'Status message showing current sorting and filtering status',
},
});
export default messages;

View File

@@ -3,25 +3,17 @@ import PropTypes from 'prop-types';
import { useDispatch } from 'react-redux';
import { useHistory, useLocation } from 'react-router-dom';
import * as timeago from 'timeago.js';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import {
Icon, IconButton, OverlayTrigger, Tooltip,
} from '@edx/paragon';
import { QuestionAnswer, StarFilled, StarOutline } from '@edx/paragon/icons';
import { ContentActions } from '../../../data/constants';
import { AlertBanner } from '../../common';
import { removeThread, updateExistingThread } from '../data/thunks';
import LikeButton from './LikeButton';
import messages from './messages';
import PostFooter from './PostFooter';
import PostHeader from './PostHeader';
import { postShape } from './proptypes';
function Post({
post,
preview,
intl,
}) {
const location = useLocation();
const history = useHistory();
@@ -36,60 +28,21 @@ function Post({
};
return (
<div className="d-flex flex-column p-2.5 w-100">
<PostHeader post={post} preview={preview} actionHandlers={actionHandlers} />
<div
className="d-block mt-2 mb-0 p-0 overflow-hidden text-break"
dangerouslySetInnerHTML={{ __html: post.renderedBody }}
style={{
maxHeight: preview ? '2rem' : null,
maxWidth: preview ? '80%' : null,
}}
/>
<div className="d-flex align-items-center mt-2">
<LikeButton
count={post.voteCount}
onClick={() => dispatch(updateExistingThread(post.id, { voted: !post.voted }))}
voted={post.voted}
/>
<OverlayTrigger
overlay={(
<Tooltip>
{intl.formatMessage(post.following ? messages.unfollow : messages.follow)}
</Tooltip>
)}
>
<IconButton
onClick={() => {
dispatch(updateExistingThread(post.id, { following: !post.following }));
return true;
}}
alt="Follow"
iconAs={Icon}
size="inline"
className="mx-2.5 my-0"
src={post.following ? StarFilled : StarOutline}
/>
</OverlayTrigger>
{preview
&& (
<>
<Icon src={QuestionAnswer} className="mx-2" />
<span style={{ minWidth: '2rem' }}>
{post.commentCount}
</span>
</>
)}
<span title={post.createdAt} className="d-flex text-gray-500 x-small flex-fill justify-content-end">
{timeago.format(post.createdAt, intl.locale)}
</span>
<div className="d-flex flex-column p-2.5 w-100 mw-100">
<div className="mb-4">
<AlertBanner postType={post.type} content={post} />
</div>
<PostHeader post={post} actionHandlers={actionHandlers} />
<div className="d-flex my-2">
{/* eslint-disable-next-line react/no-danger */}
<div dangerouslySetInnerHTML={{ __html: post.renderedBody }} />
</div>
<PostFooter post={post} preview={preview} />
</div>
);
}
Post.propTypes = {
intl: intlShape.isRequired,
post: postShape.isRequired,
preview: PropTypes.bool,
};
@@ -98,4 +51,4 @@ Post.defaultProps = {
preview: false,
};
export default injectIntl(Post);
export default Post;

View File

@@ -0,0 +1,103 @@
import React from 'react';
import PropTypes from 'prop-types';
import { useDispatch } from 'react-redux';
import * as timeago from 'timeago.js';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import {
Icon, IconButton, OverlayTrigger, Tooltip,
} from '@edx/paragon';
import {
Locked, QuestionAnswer, StarFilled, StarOutline,
} from '@edx/paragon/icons';
import { updateExistingThread } from '../data/thunks';
import LikeButton from './LikeButton';
import messages from './messages';
import { postShape } from './proptypes';
function PostFooter({
post,
intl,
preview,
}) {
const dispatch = useDispatch();
return (
<div className="d-flex align-items-center">
<LikeButton
count={post.voteCount}
onClick={() => dispatch(updateExistingThread(post.id, { voted: !post.voted }))}
voted={post.voted}
/>
<OverlayTrigger
overlay={(
<Tooltip>
{intl.formatMessage(post.following ? messages.unfollow : messages.follow)}
</Tooltip>
)}
>
{preview
? <Icon src={post.following ? StarFilled : StarOutline} />
: (
<IconButton
onClick={() => {
dispatch(updateExistingThread(post.id, { following: !post.following }));
return true;
}}
alt="Follow"
iconAs={Icon}
size="inline"
className="mx-2.5 my-0"
src={post.following ? StarFilled : StarOutline}
/>
)}
</OverlayTrigger>
{preview
&& (
<>
<Icon src={QuestionAnswer} className="mx-2" />
<span style={{ minWidth: '2rem' }}>
{post.commentCount}
</span>
</>
)}
<div className="d-flex flex-fill justify-content-end align-items-center">
<span title={post.createdAt} className="text-gray-500">
{timeago.format(post.createdAt, intl.locale)}
</span>
{!preview && post.closed
&& (
<OverlayTrigger
overlay={(
<Tooltip>
{intl.formatMessage(messages.postClosed)}
</Tooltip>
)}
>
<Icon
src={Locked}
style={{
width: '1em',
height: '1em',
}}
className="ml-3"
/>
</OverlayTrigger>
)}
</div>
</div>
);
}
PostFooter.propTypes = {
intl: intlShape.isRequired,
post: postShape.isRequired,
preview: PropTypes.bool,
};
PostFooter.defaultProps = {
preview: false,
};
export default injectIntl(PostFooter);

View File

@@ -8,55 +8,72 @@ import { Avatar, Badge, Icon } from '@edx/paragon';
import { Help } from '@edx/paragon/icons';
import { ThreadType } from '../../../data/constants';
import ActionsDropdown from '../../common/ActionsDropdown';
import { ActionsDropdown, AuthorLabel } from '../../common';
import { selectAuthorAvatars } from '../data/selectors';
import messages from './messages';
import { postShape } from './proptypes';
export function PostAvatar({ post }) {
const authorAvatars = useSelector(selectAuthorAvatars(post.author));
return (
<div className="mr-2">
{post.type === ThreadType.QUESTION && (
<Icon
src={Help}
className="position-absolute bg-white rounded-circle"
style={{
width: '1.75rem',
height: '1.75rem',
}}
/>
)}
<Avatar
size={post.type === ThreadType.QUESTION ? 'sm' : 'md'}
className={post.type === ThreadType.QUESTION ? 'mt-2.5 ml-2.5' : ''}
alt={post.author}
src={authorAvatars?.imageUrlSmall}
/>
</div>
);
}
PostAvatar.propTypes = {
post: postShape.isRequired,
};
function PostHeader({
intl,
post,
preview,
actionHandlers,
}) {
const authorAvatars = useSelector(selectAuthorAvatars(post.author));
const showAnsweredBadge = preview && post.hasEndorsed && post.type === ThreadType.QUESTION;
return (
<div className="d-flex flex-fill">
<div className="mr-2">
{post.type === ThreadType.QUESTION && (
<Icon
src={Help}
className="position-absolute bg-white rounded-circle"
style={{
width: '1.75rem',
height: '1.75rem',
}}
/>
)}
<Avatar
size={post.type === ThreadType.QUESTION ? 'sm' : 'md'}
className={post.type === ThreadType.QUESTION ? 'mt-2.5 ml-2.5' : ''}
alt={post.author}
src={authorAvatars?.imageUrlSmall}
/>
</div>
<div className="align-items-center d-flex flex-row flex-fill">
<div className="d-flex flex-column flex-fill justify-content-start">
<div className="d-flex flex-fill mw-100">
<PostAvatar post={post} />
<div className="align-items-center d-flex flex-row" style={{ width: 'calc(100% - 8rem)' }}>
<div className="d-flex flex-column justify-content-start mw-100">
{preview
? (
<div className="h4 d-flex align-items-center">
<span className="flex-fill">
<div className="h4 d-flex align-items-center pb-0 mb-0 flex-fill">
<div className="flex-fill text-truncate">
{post.title}
</span>
{preview && post.hasEndorsed && post.type === ThreadType.QUESTION
&& <Badge variant="success">{intl.formatMessage(messages.answered)}</Badge>}
</div>
{showAnsweredBadge
&& <Badge variant="success">{intl.formatMessage(messages.answered)}</Badge>}
</div>
)
: <h3>{post.title}</h3>}
: <h3 className="mb-0">{post.title}</h3>}
<AuthorLabel author={post.author} authorLabel={post.authorLabel} />
</div>
</div>
{!preview && <ActionsDropdown commentOrPost={post} actionHandlers={actionHandlers} />}
{!preview
&& (
<div className="ml-auto">
<ActionsDropdown commentOrPost={post} actionHandlers={actionHandlers} />
</div>
)}
</div>
);
}
@@ -64,8 +81,12 @@ function PostHeader({
PostHeader.propTypes = {
intl: intlShape.isRequired,
post: postShape.isRequired,
preview: PropTypes.bool.isRequired,
preview: PropTypes.bool,
actionHandlers: PropTypes.objectOf(PropTypes.func).isRequired,
};
PostHeader.defaultProps = {
preview: false,
};
export default injectIntl(PostHeader);

View File

@@ -5,13 +5,15 @@ import { generatePath } from 'react-router';
import { Link } from 'react-router-dom';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { Icon } from '@edx/paragon';
import { Flag, Unread } from '@edx/paragon/icons';
import { Badge, Icon } from '@edx/paragon';
import { Flag, Pin, Unread } from '@edx/paragon/icons';
import { Routes } from '../../../data/constants';
import { Routes, ThreadType } from '../../../data/constants';
import AuthorLabel from '../../common/AuthorLabel';
import { DiscussionContext } from '../../common/context';
import messages from './messages';
import Post from './Post';
import PostFooter from './PostFooter';
import { PostAvatar } from './PostHeader';
import { postShape } from './proptypes';
function PostLink({
@@ -27,21 +29,48 @@ function PostLink({
topicId: post.topicId,
postId: post.id,
});
const showAnsweredBadge = post.hasEndorsed && post.type === ThreadType.QUESTION;
return (
<Link
className="discussion-post list-group-item list-group-item-action p-0 text-decoration-none text-gray-900"
className="discussion-post list-group-item list-group-item-action p-0 text-decoration-none text-gray-900 mw-100"
to={linkUrl}
>
{post.pinned && (
<div className="d-flex flex-fill justify-content-end mr-4 text-light-500">
<Icon src={Pin} className="position-absolute" />
</div>
)}
{post.abuseFlagged && (
<div className="align-items-center bg-danger-100 d-flex flex-fill p-1">
<Icon className="text-danger-700" src={Flag} />
<span className="text-gray-700 x-small">{intl.formatMessage(messages.contentReported)}</span>
</div>
)}
<div className={classNames('d-flex flex-row flex-fill mw-100', { 'bg-light-200': post.read })}>
<div
className={classNames('d-flex flex-row flex-fill mw-100 p-3.5 border-primary-500', { 'bg-light-200': post.read })}
style={post.id === postId ? { borderRightWidth: '4px', borderRightStyle: 'solid' } : null}
>
<Icon className={classNames('p-0 mr-n3 text-brand-500', { invisible: post.read })} src={Unread} />
<Post post={post} preview />
<div className={classNames('d-flex pl-1.5 bg-info-500', { invisible: post.id !== postId })} />
<PostAvatar post={post} />
<div className="d-flex flex-column" style={{ width: 'calc(100% - 4rem)' }}>
<div className="align-items-center d-flex flex-row flex-fill">
<div className="d-flex flex-column justify-content-start mw-100 flex-fill">
<div className="h4 d-flex align-items-center pb-0 mb-0 flex-fill">
<div className="flex-fill text-truncate">
{post.title}
</div>
{showAnsweredBadge
&& (
<div className="ml-auto"><Badge variant="success">{intl.formatMessage(messages.answered)}</Badge>
</div>
)}
</div>
<AuthorLabel author={post.author} authorLabel={post.authorLabel} />
</div>
</div>
<div>{post.previewBody}</div>
<PostFooter post={post} preview intl={intl} />
</div>
</div>
</Link>
);

View File

@@ -42,6 +42,12 @@ const messages = defineMessages({
defaultMessage: 'Remove like',
description: 'Tooltip/alttext for button to remove the like applied to a discussion post',
},
postClosed: {
id: 'discussions.post.closed',
defaultMessage: 'Post closed for responses and comments',
description: 'Tooltip/alttext for icon displayed when post is closed',
},
});
export default messages;

View File

@@ -10,6 +10,8 @@ export const postShape = PropTypes.shape({
id: PropTypes.string,
pinned: PropTypes.bool,
rawBody: PropTypes.string,
hasEndorsed: PropTypes.bool,
previewBody: PropTypes.string,
read: PropTypes.bool,
title: PropTypes.string,
topicId: PropTypes.string,

View File

@@ -39,7 +39,7 @@ function TopicsView() {
);
if (nonCoursewareTopics && category === undefined) {
topicElements.unshift(<TopicGroup subtopics={nonCoursewareTopics} filter={filter} />);
topicElements.unshift(<TopicGroup subtopics={nonCoursewareTopics} filter={filter} key="non-courseware" />);
}
return (

View File

@@ -28,8 +28,8 @@ function TopicGroup({
id={topic.id}
name={topic.name}
subtopics={topic.subtopics}
questions={topic.questions}
discussions={topic.discussions}
questions={topic?.threadCounts?.question}
discussions={topic?.threadCounts?.discussion}
flags={topic.flags}
key={topic.id}
filter={filter}
@@ -45,7 +45,7 @@ function TopicGroup({
<div className="discussion-topic-group d-flex flex-column" data-topic-id={id}>
{name && (
<Link
className="topic-name list-group-item px-3 py-2 text-gray-300 text-decoration-none text-uppercase small"
className="topic-name list-group-item p-4 text-primary-500"
to={generatePath(Routes.TOPICS.CATEGORY, { courseId, category: name })}
>
{name}

View File

@@ -6,7 +6,7 @@ import { generatePath, useParams } from 'react-router';
import { Link } from 'react-router-dom';
import { Icon } from '@edx/paragon';
import { Flag, Help, QuestionAnswer } from '@edx/paragon/icons';
import { Error as ErrorIcon, Help, Post as PostIcon } from '@edx/paragon/icons';
import { Routes } from '../../../../data/constants';
@@ -22,27 +22,46 @@ function Topic({
courseId,
topicId: id,
});
const icons = [
{
key: 'discussions',
icon: PostIcon,
count: discussions,
},
{
key: 'questions',
icon: Help,
count: questions,
},
];
return (
<Link
className="discussion-topic d-flex flex-column list-group-item px-3 py-2 text-gray-900 text-decoration-none"
className="discussion-topic d-flex flex-column list-group-item px-4 py-3 text-primary-500"
data-topic-id={id}
to={topicUrl}
>
<div className="topic-name font-weight-bold small">
<div className="topic-name">
{name}
</div>
<div className="d-flex text-gray-300 h4 mt-1 mb-0">
<div className="badge mr-4">
<Icon className="mr-2" src={Help} />
{questions}
</div>
<div className="badge mr-4">
<Icon className="mr-2" src={QuestionAnswer} />
{discussions}
</div>
{flags !== null && (
<div className="badge">
<Icon className="mr-2" src={Flag} />
<div className="d-flex mt-3">
{
icons.map(({
key,
icon,
count,
}) => (
<div className="mr-4 d-flex align-items-center" key={key}>
<Icon className="mr-2" src={icon} />
{/* Reserve some space for larger counts */}
<span style={{ width: '2rem' }}>
{count}
</span>
</div>
))
}
{flags && (
<div className="d-flex align-items-center">
<Icon className="mr-2" src={ErrorIcon} />
{flags}
</div>
)}

View File

@@ -1,15 +1,12 @@
/* eslint-disable import/prefer-default-export */
import { useContext } from 'react';
import { getIn } from 'formik';
import { useRouteMatch } from 'react-router';
import { AppContext } from '@edx/frontend-platform/react';
import {
Delete, Edit, Flag, Pin, QuestionAnswer, VerifiedBadge,
} from '@edx/paragon/icons';
import { ContentActions, Routes } from '../data/constants';
import { ContentActions, Routes, ThreadType } from '../data/constants';
import messages from './messages';
export function buildIntlSelectionList(options, intl, messagesData) {
@@ -56,19 +53,16 @@ export function useCommentsPagePath() {
/**
* Check if the provided comment or post supports the provided option.
* @param {{}} commentOrPost
* @param {{editableFields:[string]}} content
* @param {ContentActions} action
* @param {UserData} user
* @returns {boolean}
*/
export function permissionCheck(commentOrPost, action, user) {
if (commentOrPost.editableFields.includes(action)) {
export function checkPermissions(content, action) {
if (content.editableFields.includes(action)) {
return true;
}
if (action === ContentActions.DELETE && (user.administrator || commentOrPost.author === user.username)) {
return true;
}
if ((action === ContentActions.CLOSE || action === ContentActions.PIN) && user.administrator) {
// For delete action we check `content.canDelete`
if (action === ContentActions.DELETE) {
return true;
}
return false;
@@ -82,9 +76,9 @@ export function permissionCheck(commentOrPost, action, user) {
* have multiple mutually-exclusive entries (such as close/open)..
* * `icon` is the icon component to show for the action.
* * `label` is the translatable label message that can be passed to intl.
* * `condition` is the array where the first one is a property of the post
* or comment and the second is the value.
* e.g. for ['pinned', false] the action will show up if the comment/post has post.pinned=false
* * `conditions` is the an object where the key and value represent the key and value that should match
* in the content/post.
* e.g. for {pinned:false} the action will show up if the content/post has post.pinned==false
*/
const ACTIONS_LIST = [
{
@@ -98,75 +92,105 @@ const ACTIONS_LIST = [
action: ContentActions.PIN,
icon: Pin,
label: messages.pinAction,
condition: ['pinned', false],
conditions: { pinned: false },
},
{
id: 'unpin',
action: ContentActions.PIN,
icon: Pin,
label: messages.unpinAction,
condition: ['pinned', true],
conditions: { pinned: true },
},
{
id: 'endorse',
action: ContentActions.ENDORSE,
icon: VerifiedBadge,
label: messages.endorseAction,
condition: ['endorsed', false],
conditions: {
endorsed: false,
postType: ThreadType.DISCUSSION,
},
},
{
id: 'unendorse',
action: ContentActions.ENDORSE,
icon: VerifiedBadge,
label: messages.unendorseAction,
condition: ['endorsed', true],
conditions: {
endorsed: true,
postType: ThreadType.DISCUSSION,
},
},
{
id: 'answer',
action: ContentActions.ENDORSE,
icon: VerifiedBadge,
label: messages.markAnsweredAction,
conditions: {
endorsed: false,
postType: ThreadType.QUESTION,
},
},
{
id: 'unanswer',
action: ContentActions.ENDORSE,
icon: VerifiedBadge,
label: messages.unmarkAnsweredAction,
conditions: {
endorsed: true,
postType: ThreadType.QUESTION,
},
},
{
id: 'close',
action: ContentActions.CLOSE,
icon: QuestionAnswer,
label: messages.closeAction,
condition: ['closed', false],
conditions: { closed: false },
},
{
id: 'reopen',
action: ContentActions.CLOSE,
icon: QuestionAnswer,
label: messages.reopenAction,
condition: ['closed', true],
conditions: { closed: true },
},
{
id: 'report',
action: ContentActions.REPORT,
icon: Flag,
label: messages.reportAction,
condition: ['abuseFlagged', false],
conditions: { abuseFlagged: false },
},
{
id: 'unreport',
action: ContentActions.REPORT,
icon: Flag,
label: messages.unreportAction,
condition: ['abuseFlagged', true],
conditions: { abuseFlagged: true },
},
{
id: 'delete',
action: ContentActions.DELETE,
icon: Delete,
label: messages.deleteAction,
conditions: { canDelete: true },
},
];
export function useActions(commentOrPost) {
const { authenticatedUser } = useContext(AppContext);
export function useActions(content) {
const checkConditions = (item, conditions) => (
conditions
? Object.keys(conditions)
.map(key => item[key] === conditions[key])
.every(condition => condition === true)
: true
);
return ACTIONS_LIST.filter(
({
action,
condition = null,
}) => (
permissionCheck(commentOrPost, action, authenticatedUser)
&& (condition ? commentOrPost[condition[0]] === condition[1] : true)
),
conditions = null,
}) => checkPermissions(content, action) && checkConditions(content, conditions),
);
}