Remove Object.assign

Use arrays for pages instead of a map
This commit is contained in:
Kshitij Sobti
2021-09-14 16:34:18 +05:30
parent 582a5fd3ae
commit 586cf3e581
11 changed files with 534 additions and 701 deletions

View File

@@ -4,6 +4,7 @@ module.exports = createConfig('eslint',
{
"plugins": ["simple-import-sort"],
"rules": {
'import/no-extraneous-dependencies': 'off',
'simple-import-sort/imports': [
'error', {
groups: [

1108
package-lock.json generated
View File

@@ -3618,12 +3618,12 @@
}
},
"@edx/frontend-platform": {
"version": "1.12.5",
"resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-1.12.5.tgz",
"integrity": "sha512-cqeyc+2rWvuaCxsKaqET5DEO7p++5MsXfsDhMBiHrH4CqhmwkMt4YVrnmHP5vrW+ZGbF53LMMwAnV1oyU+dCzw==",
"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==",
"requires": {
"@cospired/i18n-iso-languages": "2.2.0",
"axios": "0.21.3",
"axios": "0.21.4",
"axios-cache-adapter": "2.7.3",
"form-urlencoded": "4.1.4",
"glob": "7.1.7",
@@ -3651,9 +3651,9 @@
}
},
"@edx/paragon": {
"version": "16.12.0",
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-16.12.0.tgz",
"integrity": "sha512-LW0fkLIhc/Ls7QAkLjgfu+GvCzrbATe8WH5Lrxo63MUvOU+f4wpjuMi1P4I9bJhAd7dA5Z2stXWhhKyyeCcigg==",
"version": "16.13.2",
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-16.13.2.tgz",
"integrity": "sha512-vj9zgc9WddMYBLnfZWrXRpXutz9oClQ2CNsLERBhjCNNUKBUj0jApdRfuJ9aRYWgEJSs8kPVBd0PiFd5SNCdeQ==",
"requires": {
"@fortawesome/fontawesome-svg-core": "^1.2.30",
"@fortawesome/free-solid-svg-icons": "^5.14.0",
@@ -6285,18 +6285,11 @@
}
},
"axios": {
"version": "0.21.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.3.tgz",
"integrity": "sha512-JtoZ3Ndke/+Iwt5n+BgSli/3idTvpt5OjKyoCmz4LX5+lPiY5l7C1colYezhlxThjNa/NhngCUWZSZFypIFuaA==",
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"requires": {
"follow-redirects": "^1.14.0"
},
"dependencies": {
"follow-redirects": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz",
"integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw=="
}
}
},
"axios-cache-adapter": {
@@ -6308,6 +6301,25 @@
"md5": "^2.2.1"
}
},
"axios-mock-adapter": {
"version": "1.20.0",
"resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.20.0.tgz",
"integrity": "sha512-shZRhTjLP0WWdcvHKf3rH3iW9deb3UdKbdnKUoHmmsnBhVXN3sjPJM6ZvQ2r/ywgvBVQrMnjrSyQab60G1sr2w==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.3",
"is-blob": "^2.1.0",
"is-buffer": "^2.0.5"
},
"dependencies": {
"is-buffer": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
"integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
"dev": true
}
}
},
"axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -8027,9 +8039,9 @@
"dev": true
},
"core-js": {
"version": "3.17.2",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.17.2.tgz",
"integrity": "sha512-XkbXqhcXeMHPRk2ItS+zQYliAMilea2euoMsnpRRdDad6b2VY6CQQcwz1K8AnWesfw4p165RzY0bTnr3UrbYiA=="
"version": "3.17.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.17.3.tgz",
"integrity": "sha512-lyvajs+wd8N1hXfzob1LdOCCHFU4bGMbqqmLn1Q4QlCpDqWPpGf+p0nj+LNrvDDG33j0hZXw2nsvvVpHysxyNw=="
},
"core-js-compat": {
"version": "3.17.2",
@@ -10396,8 +10408,7 @@
"follow-redirects": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz",
"integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==",
"dev": true
"integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw=="
},
"font-awesome": {
"version": "4.7.0",
@@ -10583,21 +10594,22 @@
},
"dependencies": {
"es-abstract": {
"version": "1.18.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz",
"integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
"version": "1.18.6",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz",
"integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==",
"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-string": "^1.0.7",
"object-inspect": "^1.11.0",
"object-keys": "^1.1.1",
"object.assign": "^4.1.2",
@@ -10606,6 +10618,11 @@
"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",
@@ -10713,6 +10730,15 @@
"pump": "^3.0.0"
}
},
"get-symbol-description": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
"requires": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.1.1"
}
},
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -12162,6 +12188,12 @@
"binary-extensions": "^1.0.0"
}
},
"is-blob": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz",
"integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==",
"dev": true
},
"is-boolean-object": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz",
@@ -12700,60 +12732,60 @@
}
},
"jest": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz",
"integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest/-/jest-27.2.0.tgz",
"integrity": "sha512-oUqVXyvh5YwEWl263KWdPUAqEzBFzGHdFLQ05hUnITr1tH+9SscEI9A/GH9eBClA+Nw1ct+KNuuOV6wlnmBPcg==",
"dev": true,
"requires": {
"@jest/core": "^27.1.0",
"@jest/core": "^27.2.0",
"import-local": "^3.0.2",
"jest-cli": "^27.1.0"
"jest-cli": "^27.2.0"
},
"dependencies": {
"@jest/console": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.1.0.tgz",
"integrity": "sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.0.tgz",
"integrity": "sha512-35z+RqsK2CCgNxn+lWyK8X4KkaDtfL4BggT7oeZ0JffIiAiEYFYPo5B67V50ZubqDS1ehBrdCR2jduFnIrZOYw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"chalk": "^4.0.0",
"jest-message-util": "^27.1.0",
"jest-util": "^27.1.0",
"jest-message-util": "^27.2.0",
"jest-util": "^27.2.0",
"slash": "^3.0.0"
}
},
"@jest/core": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/core/-/core-27.1.0.tgz",
"integrity": "sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.0.tgz",
"integrity": "sha512-E/2NHhq+VMo18DpKkoty8Sjey8Kps5Cqa88A8NP757s6JjYqPdioMuyUBhDiIOGCdQByEp0ou3jskkTszMS0nw==",
"dev": true,
"requires": {
"@jest/console": "^27.1.0",
"@jest/reporters": "^27.1.0",
"@jest/test-result": "^27.1.0",
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@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",
"@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.0",
"jest-config": "^27.1.0",
"jest-haste-map": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-changed-files": "^27.1.1",
"jest-config": "^27.2.0",
"jest-haste-map": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.1.0",
"jest-resolve-dependencies": "^27.1.0",
"jest-runner": "^27.1.0",
"jest-runtime": "^27.1.0",
"jest-snapshot": "^27.1.0",
"jest-util": "^27.1.0",
"jest-validate": "^27.1.0",
"jest-watcher": "^27.1.0",
"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",
"micromatch": "^4.0.4",
"p-each-series": "^2.1.0",
"rimraf": "^3.0.0",
@@ -12762,53 +12794,53 @@
}
},
"@jest/environment": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.1.0.tgz",
"integrity": "sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.0.tgz",
"integrity": "sha512-iPWmQI0wRIYSZX3wKu4FXHK4eIqkfq6n1DCDJS+v3uby7SOXrHvX4eiTBuEdSvtDRMTIH2kjrSkjHf/F9JIYyQ==",
"dev": true,
"requires": {
"@jest/fake-timers": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"jest-mock": "^27.1.0"
"jest-mock": "^27.1.1"
}
},
"@jest/fake-timers": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.1.0.tgz",
"integrity": "sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.0.tgz",
"integrity": "sha512-gSu3YHvQOoVaTWYGgHFB7IYFtcF2HBzX4l7s47VcjvkUgL4/FBnE20x7TNLa3W6ABERtGd5gStSwsA8bcn+c4w==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@sinonjs/fake-timers": "^7.0.2",
"@types/node": "*",
"jest-message-util": "^27.1.0",
"jest-mock": "^27.1.0",
"jest-util": "^27.1.0"
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0"
}
},
"@jest/globals": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.1.0.tgz",
"integrity": "sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.0.tgz",
"integrity": "sha512-raqk9Gf9WC3hlBa57rmRmJfRl9hom2b+qEE/ifheMtwn5USH5VZxzrHHOZg0Zsd/qC2WJ8UtyTwHKQAnNlDMdg==",
"dev": true,
"requires": {
"@jest/environment": "^27.1.0",
"@jest/types": "^27.1.0",
"expect": "^27.1.0"
"@jest/environment": "^27.2.0",
"@jest/types": "^27.1.1",
"expect": "^27.2.0"
}
},
"@jest/reporters": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.1.0.tgz",
"integrity": "sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.0.tgz",
"integrity": "sha512-7wfkE3iRTLaT0F51h1mnxH3nQVwDCdbfgXiLuCcNkF1FnxXLH9utHqkSLIiwOTV1AtmiE0YagHbOvx4rnMP/GA==",
"dev": true,
"requires": {
"@bcoe/v8-coverage": "^0.2.3",
"@jest/console": "^27.1.0",
"@jest/test-result": "^27.1.0",
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/console": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"chalk": "^4.0.0",
"collect-v8-coverage": "^1.0.0",
"exit": "^0.1.2",
@@ -12819,10 +12851,10 @@
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.0.2",
"jest-haste-map": "^27.1.0",
"jest-resolve": "^27.1.0",
"jest-util": "^27.1.0",
"jest-worker": "^27.1.0",
"jest-haste-map": "^27.2.0",
"jest-resolve": "^27.2.0",
"jest-util": "^27.2.0",
"jest-worker": "^27.2.0",
"slash": "^3.0.0",
"source-map": "^0.6.0",
"string-length": "^4.0.1",
@@ -12842,45 +12874,45 @@
}
},
"@jest/test-result": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.1.0.tgz",
"integrity": "sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.0.tgz",
"integrity": "sha512-JPPqn8h0RGr4HyeY1Km+FivDIjTFzDROU46iAvzVjD42ooGwYoqYO/MQTilhfajdz6jpVnnphFrKZI5OYrBONA==",
"dev": true,
"requires": {
"@jest/console": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/console": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
}
},
"@jest/test-sequencer": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz",
"integrity": "sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.0.tgz",
"integrity": "sha512-PrqarcpzOU1KSAK7aPwfL8nnpaqTMwPe7JBPnaOYRDSe/C6AoJiL5Kbnonqf1+DregxZIRAoDg69R9/DXMGqXA==",
"dev": true,
"requires": {
"@jest/test-result": "^27.1.0",
"@jest/test-result": "^27.2.0",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.1.0",
"jest-runtime": "^27.1.0"
"jest-haste-map": "^27.2.0",
"jest-runtime": "^27.2.0"
}
},
"@jest/transform": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.1.0.tgz",
"integrity": "sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.0.tgz",
"integrity": "sha512-Q8Q/8xXIZYllk1AF7Ou5sV3egOZsdY/Wlv09CSbcexBRcC1Qt6lVZ7jRFAZtbHsEEzvOCyFEC4PcrwKwyjXtCg==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"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.1.0",
"jest-haste-map": "^27.2.0",
"jest-regex-util": "^27.0.6",
"jest-util": "^27.1.0",
"jest-util": "^27.2.0",
"micromatch": "^4.0.4",
"pirates": "^4.0.1",
"slash": "^3.0.0",
@@ -12889,9 +12921,9 @@
}
},
"@jest/types": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz",
"integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==",
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.1.tgz",
"integrity": "sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -12939,25 +12971,25 @@
}
},
"babel-jest": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.1.0.tgz",
"integrity": "sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==",
"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==",
"dev": true,
"requires": {
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.0.0",
"babel-preset-jest": "^27.0.6",
"babel-preset-jest": "^27.2.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
"slash": "^3.0.0"
}
},
"babel-plugin-jest-hoist": {
"version": "27.0.6",
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz",
"integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz",
"integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==",
"dev": true,
"requires": {
"@babel/template": "^7.3.3",
@@ -12967,12 +12999,12 @@
}
},
"babel-preset-jest": {
"version": "27.0.6",
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz",
"integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz",
"integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==",
"dev": true,
"requires": {
"babel-plugin-jest-hoist": "^27.0.6",
"babel-plugin-jest-hoist": "^27.2.0",
"babel-preset-current-node-syntax": "^1.0.0"
}
},
@@ -13007,17 +13039,6 @@
"integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
"dev": true
},
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -13074,16 +13095,16 @@
}
},
"expect": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.1.0.tgz",
"integrity": "sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.2.0.tgz",
"integrity": "sha512-oOTbawMQv7AK1FZURbPTgGSzmhxkjFzoARSvDjOMnOpeWuYQx1tP6rXu9MIX5mrACmyCAM7fSNP8IJO2f1p0CQ==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"ansi-styles": "^5.0.0",
"jest-get-type": "^27.0.6",
"jest-matcher-utils": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-regex-util": "^27.0.6"
},
"dependencies": {
@@ -13123,12 +13144,6 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true
},
"is-ci": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz",
@@ -13151,75 +13166,75 @@
"dev": true
},
"jest-changed-files": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.0.tgz",
"integrity": "sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==",
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.1.tgz",
"integrity": "sha512-5TV9+fYlC2A6hu3qtoyGHprBwCAn0AuGA77bZdUgYvVlRMjHXo063VcWTEAyx6XAZ85DYHqp0+aHKbPlfRDRvA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"execa": "^5.0.0",
"throat": "^6.0.1"
}
},
"jest-cli": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.1.0.tgz",
"integrity": "sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.0.tgz",
"integrity": "sha512-bq1X/B/b1kT9y1zIFMEW3GFRX1HEhFybiqKdbxM+j11XMMYSbU9WezfyWIhrSOmPT+iODLATVjfsCnbQs7cfIA==",
"dev": true,
"requires": {
"@jest/core": "^27.1.0",
"@jest/test-result": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/core": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"chalk": "^4.0.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.4",
"import-local": "^3.0.2",
"jest-config": "^27.1.0",
"jest-util": "^27.1.0",
"jest-validate": "^27.1.0",
"jest-config": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"prompts": "^2.0.1",
"yargs": "^16.0.3"
}
},
"jest-config": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.1.0.tgz",
"integrity": "sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.0.tgz",
"integrity": "sha512-Z1romHpxeNwLxQtouQ4xt07bY6HSFGKTo0xJcvOK3u6uJHveA4LB2P+ty9ArBLpTh3AqqPxsyw9l9GMnWBYS9A==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
"@jest/test-sequencer": "^27.1.0",
"@jest/types": "^27.1.0",
"babel-jest": "^27.1.0",
"@jest/test-sequencer": "^27.2.0",
"@jest/types": "^27.1.1",
"babel-jest": "^27.2.0",
"chalk": "^4.0.0",
"deepmerge": "^4.2.2",
"glob": "^7.1.1",
"graceful-fs": "^4.2.4",
"is-ci": "^3.0.0",
"jest-circus": "^27.1.0",
"jest-environment-jsdom": "^27.1.0",
"jest-environment-node": "^27.1.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.1.0",
"jest-jasmine2": "^27.2.0",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.1.0",
"jest-runner": "^27.1.0",
"jest-util": "^27.1.0",
"jest-validate": "^27.1.0",
"jest-resolve": "^27.2.0",
"jest-runner": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"micromatch": "^4.0.4",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"jest-diff": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.1.0.tgz",
"integrity": "sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.0.tgz",
"integrity": "sha512-QSO9WC6btFYWtRJ3Hac0sRrkspf7B01mGrrQEiCW6TobtViJ9RWL0EmOs/WnBsZDsI/Y2IoSHZA2x6offu0sYw==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"diff-sequences": "^27.0.6",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"jest-docblock": {
@@ -13232,45 +13247,45 @@
}
},
"jest-each": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.1.0.tgz",
"integrity": "sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.0.tgz",
"integrity": "sha512-biDmmUQjg+HZOB7MfY2RHSFL3j418nMoC3TK3pGAj880fQQSxvQe1y2Wy23JJJNUlk6YXiGU0yWy86Le1HBPmA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"jest-util": "^27.1.0",
"pretty-format": "^27.1.0"
"jest-util": "^27.2.0",
"pretty-format": "^27.2.0"
}
},
"jest-environment-jsdom": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz",
"integrity": "sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.0.tgz",
"integrity": "sha512-wNQJi6Rd/AkUWqTc4gWhuTIFPo7tlMK0RPZXeM6AqRHZA3D3vwvTa9ktAktyVyWYmUoXdYstOfyYMG3w4jt7eA==",
"dev": true,
"requires": {
"@jest/environment": "^27.1.0",
"@jest/fake-timers": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"jest-mock": "^27.1.0",
"jest-util": "^27.1.0",
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0",
"jsdom": "^16.6.0"
}
},
"jest-environment-node": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.1.0.tgz",
"integrity": "sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==",
"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==",
"dev": true,
"requires": {
"@jest/environment": "^27.1.0",
"@jest/fake-timers": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"jest-mock": "^27.1.0",
"jest-util": "^27.1.0"
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0"
}
},
"jest-get-type": {
@@ -13280,12 +13295,12 @@
"dev": true
},
"jest-haste-map": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.1.0.tgz",
"integrity": "sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.0.tgz",
"integrity": "sha512-laFet7QkNlWjwZtMGHCucLvF8o9PAh2cgePRck1+uadSM4E4XH9J4gnx4do+a6do8ZV5XHNEAXEkIoNg5XUH2Q==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/graceful-fs": "^4.1.2",
"@types/node": "*",
"anymatch": "^3.0.3",
@@ -13294,84 +13309,84 @@
"graceful-fs": "^4.2.4",
"jest-regex-util": "^27.0.6",
"jest-serializer": "^27.0.6",
"jest-util": "^27.1.0",
"jest-worker": "^27.1.0",
"jest-util": "^27.2.0",
"jest-worker": "^27.2.0",
"micromatch": "^4.0.4",
"walker": "^1.0.7"
}
},
"jest-jasmine2": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz",
"integrity": "sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==",
"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==",
"dev": true,
"requires": {
"@babel/traverse": "^7.1.0",
"@jest/environment": "^27.1.0",
"@jest/environment": "^27.2.0",
"@jest/source-map": "^27.0.6",
"@jest/test-result": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"expect": "^27.1.0",
"expect": "^27.2.0",
"is-generator-fn": "^2.0.0",
"jest-each": "^27.1.0",
"jest-matcher-utils": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-runtime": "^27.1.0",
"jest-snapshot": "^27.1.0",
"jest-util": "^27.1.0",
"pretty-format": "^27.1.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",
"throat": "^6.0.1"
}
},
"jest-leak-detector": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz",
"integrity": "sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==",
"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==",
"dev": true,
"requires": {
"jest-get-type": "^27.0.6",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"jest-matcher-utils": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz",
"integrity": "sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.0.tgz",
"integrity": "sha512-F+LG3iTwJ0gPjxBX6HCyrARFXq6jjiqhwBQeskkJQgSLeF1j6ui1RTV08SR7O51XTUhtc8zqpDj8iCG4RGmdKw==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"jest-diff": "^27.1.0",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"jest-message-util": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.1.0.tgz",
"integrity": "sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==",
"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==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
"micromatch": "^4.0.4",
"pretty-format": "^27.1.0",
"pretty-format": "^27.2.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
}
},
"jest-mock": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz",
"integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==",
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.1.tgz",
"integrity": "sha512-SClsFKuYBf+6SSi8jtAYOuPw8DDMsTElUWEae3zq7vDhH01ayVSIHUSIa8UgbDOUalCFp6gNsaikN0rbxN4dbw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/node": "*"
}
},
@@ -13382,78 +13397,78 @@
"dev": true
},
"jest-resolve": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.1.0.tgz",
"integrity": "sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.0.tgz",
"integrity": "sha512-v09p9Ib/VtpHM6Cz+i9lEAv1Z/M5NVxsyghRHRMEUOqwPQs3zwTdwp1xS3O/k5LocjKiGS0OTaJoBSpjbM2Jlw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"chalk": "^4.0.0",
"escalade": "^3.1.1",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.1.0",
"jest-haste-map": "^27.2.0",
"jest-pnp-resolver": "^1.2.2",
"jest-util": "^27.1.0",
"jest-validate": "^27.1.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"resolve": "^1.20.0",
"slash": "^3.0.0"
}
},
"jest-resolve-dependencies": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz",
"integrity": "sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==",
"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==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"jest-regex-util": "^27.0.6",
"jest-snapshot": "^27.1.0"
"jest-snapshot": "^27.2.0"
}
},
"jest-runner": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.1.0.tgz",
"integrity": "sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.0.tgz",
"integrity": "sha512-Cl+BHpduIc0cIVTjwoyx0pQk4Br8gn+wkr35PmKCmzEdOUnQ2wN7QVXA8vXnMQXSlFkN/+KWnk20TAVBmhgrww==",
"dev": true,
"requires": {
"@jest/console": "^27.1.0",
"@jest/environment": "^27.1.0",
"@jest/test-result": "^27.1.0",
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@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",
"@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.1.0",
"jest-environment-node": "^27.1.0",
"jest-haste-map": "^27.1.0",
"jest-leak-detector": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-resolve": "^27.1.0",
"jest-runtime": "^27.1.0",
"jest-util": "^27.1.0",
"jest-worker": "^27.1.0",
"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",
"source-map-support": "^0.5.6",
"throat": "^6.0.1"
}
},
"jest-runtime": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.1.0.tgz",
"integrity": "sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.0.tgz",
"integrity": "sha512-6gRE9AVVX49hgBbWQ9PcNDeM4upMUXzTpBs0kmbrjyotyUyIJixLPsYjpeTFwAA07PVLDei1iAm2chmWycdGdQ==",
"dev": true,
"requires": {
"@jest/console": "^27.1.0",
"@jest/environment": "^27.1.0",
"@jest/fake-timers": "^27.1.0",
"@jest/globals": "^27.1.0",
"@jest/console": "^27.2.0",
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/globals": "^27.2.0",
"@jest/source-map": "^27.0.6",
"@jest/test-result": "^27.1.0",
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/yargs": "^16.0.0",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
@@ -13462,14 +13477,14 @@
"exit": "^0.1.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-mock": "^27.1.0",
"jest-haste-map": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.1.0",
"jest-snapshot": "^27.1.0",
"jest-util": "^27.1.0",
"jest-validate": "^27.1.0",
"jest-resolve": "^27.2.0",
"jest-snapshot": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"slash": "^3.0.0",
"strip-bom": "^4.0.0",
"yargs": "^16.0.3"
@@ -13486,9 +13501,9 @@
}
},
"jest-snapshot": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.1.0.tgz",
"integrity": "sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.0.tgz",
"integrity": "sha512-MukJvy3KEqemCT2FoT3Gum37CQqso/62PKTfIzWmZVTsLsuyxQmJd2PI5KPcBYFqLlA8LgZLHM8ZlazkVt8LsQ==",
"dev": true,
"requires": {
"@babel/core": "^7.7.2",
@@ -13497,33 +13512,33 @@
"@babel/plugin-syntax-typescript": "^7.7.2",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.0.0",
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@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.1.0",
"expect": "^27.2.0",
"graceful-fs": "^4.2.4",
"jest-diff": "^27.1.0",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"jest-haste-map": "^27.1.0",
"jest-matcher-utils": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-resolve": "^27.1.0",
"jest-util": "^27.1.0",
"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",
"natural-compare": "^1.4.0",
"pretty-format": "^27.1.0",
"pretty-format": "^27.2.0",
"semver": "^7.3.2"
}
},
"jest-util": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.1.0.tgz",
"integrity": "sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.0.tgz",
"integrity": "sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
@@ -13532,38 +13547,38 @@
}
},
"jest-validate": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.1.0.tgz",
"integrity": "sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.0.tgz",
"integrity": "sha512-uIEZGkFKk3+4liA81Xu0maG5aGDyPLdp+4ed244c+Ql0k3aLWQYcMbaMLXOIFcb83LPHzYzqQ8hwNnIxTqfAGQ==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"leven": "^3.1.0",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"jest-watcher": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.1.0.tgz",
"integrity": "sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==",
"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==",
"dev": true,
"requires": {
"@jest/test-result": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"jest-util": "^27.1.0",
"jest-util": "^27.2.0",
"string-length": "^4.0.1"
}
},
"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.2.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.0.tgz",
"integrity": "sha512-laB0ZVIBz+voh/QQy9dmUuuDsadixeerrKqyVpgPz+CCWiOYjOBabUXHIXZhsdvkWbLqSHbgkAHWl5cg24Q6RA==",
"dev": true,
"requires": {
"@types/node": "*",
@@ -13582,15 +13597,6 @@
}
}
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
},
"micromatch": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
@@ -13617,12 +13623,12 @@
"dev": true
},
"pretty-format": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.1.0.tgz",
"integrity": "sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.0.tgz",
"integrity": "sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"ansi-regex": "^5.0.0",
"ansi-styles": "^5.0.0",
"react-is": "^17.0.1"
@@ -13681,30 +13687,12 @@
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.0"
}
},
"strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"throat": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
@@ -13747,50 +13735,6 @@
"requires": {
"isexe": "^2.0.0"
}
},
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
}
},
"yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true
}
}
},
@@ -13896,81 +13840,81 @@
}
},
"jest-circus": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.1.0.tgz",
"integrity": "sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.0.tgz",
"integrity": "sha512-WwENhaZwOARB1nmcboYPSv/PwHBUGRpA4MEgszjr9DLCl97MYw0qZprBwLb7rNzvMwfIvNGG7pefQ5rxyBlzIA==",
"dev": true,
"requires": {
"@jest/environment": "^27.1.0",
"@jest/test-result": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/environment": "^27.2.0",
"@jest/test-result": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"dedent": "^0.7.0",
"expect": "^27.1.0",
"expect": "^27.2.0",
"is-generator-fn": "^2.0.0",
"jest-each": "^27.1.0",
"jest-matcher-utils": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-runtime": "^27.1.0",
"jest-snapshot": "^27.1.0",
"jest-util": "^27.1.0",
"pretty-format": "^27.1.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",
"slash": "^3.0.0",
"stack-utils": "^2.0.3",
"throat": "^6.0.1"
},
"dependencies": {
"@jest/console": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.1.0.tgz",
"integrity": "sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.0.tgz",
"integrity": "sha512-35z+RqsK2CCgNxn+lWyK8X4KkaDtfL4BggT7oeZ0JffIiAiEYFYPo5B67V50ZubqDS1ehBrdCR2jduFnIrZOYw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"chalk": "^4.0.0",
"jest-message-util": "^27.1.0",
"jest-util": "^27.1.0",
"jest-message-util": "^27.2.0",
"jest-util": "^27.2.0",
"slash": "^3.0.0"
}
},
"@jest/environment": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.1.0.tgz",
"integrity": "sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.0.tgz",
"integrity": "sha512-iPWmQI0wRIYSZX3wKu4FXHK4eIqkfq6n1DCDJS+v3uby7SOXrHvX4eiTBuEdSvtDRMTIH2kjrSkjHf/F9JIYyQ==",
"dev": true,
"requires": {
"@jest/fake-timers": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/fake-timers": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"jest-mock": "^27.1.0"
"jest-mock": "^27.1.1"
}
},
"@jest/fake-timers": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.1.0.tgz",
"integrity": "sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.0.tgz",
"integrity": "sha512-gSu3YHvQOoVaTWYGgHFB7IYFtcF2HBzX4l7s47VcjvkUgL4/FBnE20x7TNLa3W6ABERtGd5gStSwsA8bcn+c4w==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@sinonjs/fake-timers": "^7.0.2",
"@types/node": "*",
"jest-message-util": "^27.1.0",
"jest-mock": "^27.1.0",
"jest-util": "^27.1.0"
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-util": "^27.2.0"
}
},
"@jest/globals": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.1.0.tgz",
"integrity": "sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.0.tgz",
"integrity": "sha512-raqk9Gf9WC3hlBa57rmRmJfRl9hom2b+qEE/ifheMtwn5USH5VZxzrHHOZg0Zsd/qC2WJ8UtyTwHKQAnNlDMdg==",
"dev": true,
"requires": {
"@jest/environment": "^27.1.0",
"@jest/types": "^27.1.0",
"expect": "^27.1.0"
"@jest/environment": "^27.2.0",
"@jest/types": "^27.1.1",
"expect": "^27.2.0"
}
},
"@jest/source-map": {
@@ -13985,33 +13929,33 @@
}
},
"@jest/test-result": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.1.0.tgz",
"integrity": "sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.0.tgz",
"integrity": "sha512-JPPqn8h0RGr4HyeY1Km+FivDIjTFzDROU46iAvzVjD42ooGwYoqYO/MQTilhfajdz6jpVnnphFrKZI5OYrBONA==",
"dev": true,
"requires": {
"@jest/console": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/console": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
}
},
"@jest/transform": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.1.0.tgz",
"integrity": "sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.0.tgz",
"integrity": "sha512-Q8Q/8xXIZYllk1AF7Ou5sV3egOZsdY/Wlv09CSbcexBRcC1Qt6lVZ7jRFAZtbHsEEzvOCyFEC4PcrwKwyjXtCg==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"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.1.0",
"jest-haste-map": "^27.2.0",
"jest-regex-util": "^27.0.6",
"jest-util": "^27.1.0",
"jest-util": "^27.2.0",
"micromatch": "^4.0.4",
"pirates": "^4.0.1",
"slash": "^3.0.0",
@@ -14020,9 +13964,9 @@
}
},
"@jest/types": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz",
"integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==",
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.1.tgz",
"integrity": "sha512-yqJPDDseb0mXgKqmNqypCsb85C22K1aY5+LUxh7syIM9n/b0AsaltxNy+o6tt29VcfGDpYEve175bm3uOhcehA==",
"dev": true,
"requires": {
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -14100,17 +14044,6 @@
"integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
"dev": true
},
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -14161,16 +14094,16 @@
}
},
"expect": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.1.0.tgz",
"integrity": "sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/expect/-/expect-27.2.0.tgz",
"integrity": "sha512-oOTbawMQv7AK1FZURbPTgGSzmhxkjFzoARSvDjOMnOpeWuYQx1tP6rXu9MIX5mrACmyCAM7fSNP8IJO2f1p0CQ==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"ansi-styles": "^5.0.0",
"jest-get-type": "^27.0.6",
"jest-matcher-utils": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-matcher-utils": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-regex-util": "^27.0.6"
},
"dependencies": {
@@ -14210,12 +14143,6 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true
},
"is-ci": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz",
@@ -14238,28 +14165,28 @@
"dev": true
},
"jest-diff": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.1.0.tgz",
"integrity": "sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.0.tgz",
"integrity": "sha512-QSO9WC6btFYWtRJ3Hac0sRrkspf7B01mGrrQEiCW6TobtViJ9RWL0EmOs/WnBsZDsI/Y2IoSHZA2x6offu0sYw==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"diff-sequences": "^27.0.6",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"jest-each": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.1.0.tgz",
"integrity": "sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.0.tgz",
"integrity": "sha512-biDmmUQjg+HZOB7MfY2RHSFL3j418nMoC3TK3pGAj880fQQSxvQe1y2Wy23JJJNUlk6YXiGU0yWy86Le1HBPmA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"jest-util": "^27.1.0",
"pretty-format": "^27.1.0"
"jest-util": "^27.2.0",
"pretty-format": "^27.2.0"
}
},
"jest-get-type": {
@@ -14269,12 +14196,12 @@
"dev": true
},
"jest-haste-map": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.1.0.tgz",
"integrity": "sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.0.tgz",
"integrity": "sha512-laFet7QkNlWjwZtMGHCucLvF8o9PAh2cgePRck1+uadSM4E4XH9J4gnx4do+a6do8ZV5XHNEAXEkIoNg5XUH2Q==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/graceful-fs": "^4.1.2",
"@types/node": "*",
"anymatch": "^3.0.3",
@@ -14283,48 +14210,48 @@
"graceful-fs": "^4.2.4",
"jest-regex-util": "^27.0.6",
"jest-serializer": "^27.0.6",
"jest-util": "^27.1.0",
"jest-worker": "^27.1.0",
"jest-util": "^27.2.0",
"jest-worker": "^27.2.0",
"micromatch": "^4.0.4",
"walker": "^1.0.7"
}
},
"jest-matcher-utils": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz",
"integrity": "sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.0.tgz",
"integrity": "sha512-F+LG3iTwJ0gPjxBX6HCyrARFXq6jjiqhwBQeskkJQgSLeF1j6ui1RTV08SR7O51XTUhtc8zqpDj8iCG4RGmdKw==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"jest-diff": "^27.1.0",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"jest-message-util": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.1.0.tgz",
"integrity": "sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==",
"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==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
"micromatch": "^4.0.4",
"pretty-format": "^27.1.0",
"pretty-format": "^27.2.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
}
},
"jest-mock": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz",
"integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==",
"version": "27.1.1",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.1.tgz",
"integrity": "sha512-SClsFKuYBf+6SSi8jtAYOuPw8DDMsTElUWEae3zq7vDhH01ayVSIHUSIa8UgbDOUalCFp6gNsaikN0rbxN4dbw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/node": "*"
}
},
@@ -14335,37 +14262,37 @@
"dev": true
},
"jest-resolve": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.1.0.tgz",
"integrity": "sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.0.tgz",
"integrity": "sha512-v09p9Ib/VtpHM6Cz+i9lEAv1Z/M5NVxsyghRHRMEUOqwPQs3zwTdwp1xS3O/k5LocjKiGS0OTaJoBSpjbM2Jlw==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"chalk": "^4.0.0",
"escalade": "^3.1.1",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.1.0",
"jest-haste-map": "^27.2.0",
"jest-pnp-resolver": "^1.2.2",
"jest-util": "^27.1.0",
"jest-validate": "^27.1.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"resolve": "^1.20.0",
"slash": "^3.0.0"
}
},
"jest-runtime": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.1.0.tgz",
"integrity": "sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.0.tgz",
"integrity": "sha512-6gRE9AVVX49hgBbWQ9PcNDeM4upMUXzTpBs0kmbrjyotyUyIJixLPsYjpeTFwAA07PVLDei1iAm2chmWycdGdQ==",
"dev": true,
"requires": {
"@jest/console": "^27.1.0",
"@jest/environment": "^27.1.0",
"@jest/fake-timers": "^27.1.0",
"@jest/globals": "^27.1.0",
"@jest/console": "^27.2.0",
"@jest/environment": "^27.2.0",
"@jest/fake-timers": "^27.2.0",
"@jest/globals": "^27.2.0",
"@jest/source-map": "^27.0.6",
"@jest/test-result": "^27.1.0",
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/test-result": "^27.2.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@types/yargs": "^16.0.0",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
@@ -14374,14 +14301,14 @@
"exit": "^0.1.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.4",
"jest-haste-map": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-mock": "^27.1.0",
"jest-haste-map": "^27.2.0",
"jest-message-util": "^27.2.0",
"jest-mock": "^27.1.1",
"jest-regex-util": "^27.0.6",
"jest-resolve": "^27.1.0",
"jest-snapshot": "^27.1.0",
"jest-util": "^27.1.0",
"jest-validate": "^27.1.0",
"jest-resolve": "^27.2.0",
"jest-snapshot": "^27.2.0",
"jest-util": "^27.2.0",
"jest-validate": "^27.2.0",
"slash": "^3.0.0",
"strip-bom": "^4.0.0",
"yargs": "^16.0.3"
@@ -14398,9 +14325,9 @@
}
},
"jest-snapshot": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.1.0.tgz",
"integrity": "sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.0.tgz",
"integrity": "sha512-MukJvy3KEqemCT2FoT3Gum37CQqso/62PKTfIzWmZVTsLsuyxQmJd2PI5KPcBYFqLlA8LgZLHM8ZlazkVt8LsQ==",
"dev": true,
"requires": {
"@babel/core": "^7.7.2",
@@ -14409,33 +14336,33 @@
"@babel/plugin-syntax-typescript": "^7.7.2",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.0.0",
"@jest/transform": "^27.1.0",
"@jest/types": "^27.1.0",
"@jest/transform": "^27.2.0",
"@jest/types": "^27.1.1",
"@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.1.0",
"expect": "^27.2.0",
"graceful-fs": "^4.2.4",
"jest-diff": "^27.1.0",
"jest-diff": "^27.2.0",
"jest-get-type": "^27.0.6",
"jest-haste-map": "^27.1.0",
"jest-matcher-utils": "^27.1.0",
"jest-message-util": "^27.1.0",
"jest-resolve": "^27.1.0",
"jest-util": "^27.1.0",
"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",
"natural-compare": "^1.4.0",
"pretty-format": "^27.1.0",
"pretty-format": "^27.2.0",
"semver": "^7.3.2"
}
},
"jest-util": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.1.0.tgz",
"integrity": "sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.0.tgz",
"integrity": "sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"@types/node": "*",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
@@ -14444,23 +14371,23 @@
}
},
"jest-validate": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.1.0.tgz",
"integrity": "sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.0.tgz",
"integrity": "sha512-uIEZGkFKk3+4liA81Xu0maG5aGDyPLdp+4ed244c+Ql0k3aLWQYcMbaMLXOIFcb83LPHzYzqQ8hwNnIxTqfAGQ==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
"jest-get-type": "^27.0.6",
"leven": "^3.1.0",
"pretty-format": "^27.1.0"
"pretty-format": "^27.2.0"
}
},
"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.2.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.0.tgz",
"integrity": "sha512-laB0ZVIBz+voh/QQy9dmUuuDsadixeerrKqyVpgPz+CCWiOYjOBabUXHIXZhsdvkWbLqSHbgkAHWl5cg24Q6RA==",
"dev": true,
"requires": {
"@types/node": "*",
@@ -14479,15 +14406,6 @@
}
}
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
},
"micromatch": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
@@ -14514,12 +14432,12 @@
"dev": true
},
"pretty-format": {
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.1.0.tgz",
"integrity": "sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==",
"version": "27.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.0.tgz",
"integrity": "sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA==",
"dev": true,
"requires": {
"@jest/types": "^27.1.0",
"@jest/types": "^27.1.1",
"ansi-regex": "^5.0.0",
"ansi-styles": "^5.0.0",
"react-is": "^17.0.1"
@@ -14569,30 +14487,12 @@
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.0"
}
},
"strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"throat": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz",
@@ -14616,50 +14516,6 @@
"requires": {
"isexe": "^2.0.0"
}
},
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
}
},
"yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true
}
}
},
@@ -18665,9 +18521,9 @@
}
},
"react-bootstrap": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.1.tgz",
"integrity": "sha512-ojEPQ6OtyIMdLg0Smofk+85PKN6MLKQX3bU0Vwmok/4yNa8DQ2vCGhO2IgHJvT+ERQZ4X+gAQcdn6msAHSwLBg==",
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.3.tgz",
"integrity": "sha512-zsd4l0g68pusOmJ/R5LhTfofT+9RniCwcZsMMNFGJo97d1vT1H2nGlbhLWp/j/pfeXXj9zzR8ugUtKkadcoWnA==",
"requires": {
"@babel/runtime": "^7.14.0",
"@restart/context": "^2.1.4",
@@ -18682,7 +18538,7 @@
"invariant": "^2.2.4",
"prop-types": "^15.7.2",
"prop-types-extra": "^1.1.0",
"react-overlays": "^5.0.1",
"react-overlays": "^5.1.1",
"react-transition-group": "^4.4.1",
"uncontrollable": "^7.2.1",
"warning": "^4.0.3"
@@ -19669,6 +19525,12 @@
"glob": "^7.1.3"
}
},
"rosie": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/rosie/-/rosie-2.1.0.tgz",
"integrity": "sha512-Dbzdc+prLXZuB/suRptDnBUY29SdGvND3bLg6cll8n7PNqzuyCxSlRfrkn8PqjS9n4QVsiM7RCvxCkKAkTQRjA==",
"dev": true
},
"rsvp": {
"version": "4.8.5",
"resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",

View File

@@ -38,12 +38,12 @@
"@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.5",
"@edx/paragon": "16.12.0",
"@edx/frontend-platform": "1.12.6",
"@edx/paragon": "16.13.2",
"@reduxjs/toolkit": "1.6.1",
"@tinymce/tinymce-react": "3.12.6",
"babel-polyfill": "6.26.0",
"core-js": "3.17.2",
"core-js": "3.17.3",
"formik": "2.2.6",
"lodash.snakecase": "4.1.1",
"prop-types": "15.7.2",
@@ -66,7 +66,7 @@
"eslint-plugin-simple-import-sort": "7.0.0",
"glob": "7.1.7",
"husky": "7.0.2",
"jest": "27.1.0",
"jest": "27.2.0",
"reactifex": "1.1.1",
"rosie": "2.1.0"
}

View File

@@ -46,7 +46,7 @@ describe('Comments/Responses data layer tests', () => {
expect(store.getState().comments.commentsInThreads)
.toEqual({ 'test-thread': ['comment-1', 'comment-2', 'comment-3'] });
expect(store.getState().comments.pages)
.toEqual({ 1: ['comment-1', 'comment-2', 'comment-3'] });
.toEqual([['comment-1', 'comment-2', 'comment-3']]);
expect(Object.keys(store.getState().comments.commentsById))
.toEqual(['comment-1', 'comment-2', 'comment-3']);
expect(store.getState().comments.commentsById['comment-1'])
@@ -137,7 +137,7 @@ describe('Comments/Responses data layer tests', () => {
expect(store.getState().comments.commentsById)
.toHaveProperty(commentId);
expect(store.getState().comments.pages[1])
expect(store.getState().comments.pages[0])
.toContain(commentId);
axiosMock.onDelete(`${commentsApiUrl}${commentId}/`)
@@ -148,7 +148,7 @@ describe('Comments/Responses data layer tests', () => {
expect(store.getState().comments.commentsById)
.not
.toHaveProperty(commentId);
expect(store.getState().comments.pages[1])
expect(store.getState().comments.pages[0])
.not
.toContain(commentId);
expect(store.getState().comments.commentsInThreads[threadId])

View File

@@ -16,7 +16,7 @@ const commentsSlice = createSlice({
commentsById: {
// Map comment ids to comments.
},
pages: {},
pages: [],
// Stores the comment being posted in case it needs to be reposted due to network failure.
// TODO: save in localstorage so user can continue editing?
commentDraft: null,
@@ -30,10 +30,10 @@ const commentsSlice = createSlice({
},
fetchCommentsSuccess: (state, { payload }) => {
state.status = RequestStatus.SUCCESSFUL;
state.pages[payload.page] = payload.ids;
Object.assign(state.commentsInThreads, payload.commentsInThreads);
Object.assign(state.commentsInComments, payload.commentsInComments);
Object.assign(state.commentsById, payload.commentsById);
state.pages[payload.page - 1] = payload.ids;
state.commentsInThreads = { ...state.commentsInThreads, ...payload.commentsInThreads };
state.commentsInComments = { ...state.commentsInComments, ...payload.commentsInComments };
state.commentsById = { ...state.commentsById, ...payload.commentsById };
state.totalPages = payload.pagination.numPages;
state.totalThreads = payload.pagination.count;
},
@@ -54,8 +54,8 @@ const commentsSlice = createSlice({
},
fetchCommentResponsesSuccess: (state, { payload }) => {
state.status = RequestStatus.SUCCESSFUL;
Object.assign(state.commentsInComments, payload.commentsInComments);
Object.assign(state.commentsById, payload.commentsById);
state.commentsInComments = { ...state.commentsInComments, ...payload.commentsInComments };
state.commentsById = { ...state.commentsById, ...payload.commentsById };
},
postCommentRequest: (state, { payload }) => {
state.postStatus = RequestStatus.IN_PROGRESS;
@@ -108,9 +108,7 @@ const commentsSlice = createSlice({
if (parentId) {
state.commentsInComments[parentId] = state.commentsInComments[parentId].filter(item => item !== commentId);
}
Object.keys(state.pages).forEach(page => {
state.pages[page] = state.pages[page].filter(item => item !== commentId);
});
state.pages = state.pages.map(page => page?.filter(item => item !== commentId));
delete state.commentsById[commentId];
},
},

View File

@@ -72,14 +72,14 @@ function normaliseComments(data) {
};
}
export function fetchThreadComments(threadId, { page } = {}) {
export function fetchThreadComments(threadId, { page = 1 } = {}) {
return async (dispatch) => {
try {
dispatch(fetchCommentsRequest({ threadId }));
const data = await getThreadComments(threadId, { page });
dispatch(fetchCommentsSuccess({
...normaliseComments(camelCaseObject(data)),
page: page || 1,
page,
}));
} catch (error) {
if (getHttpErrorStatus(error) === 403) {

View File

@@ -38,7 +38,7 @@ function PostsView({ showOwnPosts }) {
} else if (showOwnPosts) {
posts = useSelector(selectUserThreads(authenticatedUser.username));
} else {
posts = useSelector(selectAllThreads());
posts = useSelector(selectAllThreads);
}
useEffect(() => {
// The courseId from the URL is the course we WANT to load.

View File

@@ -47,7 +47,7 @@ describe('Threads/Posts data layer tests', () => {
expect(store.getState().threads.threadsInTopic)
.toEqual({ 'test-topic': ['thread-1', 'thread-2', 'thread-3'] });
expect(store.getState().threads.pages)
.toEqual({ 1: ['thread-1', 'thread-2', 'thread-3'] });
.toEqual([['thread-1', 'thread-2', 'thread-3']]);
expect(Object.keys(store.getState().threads.threadsById))
.toEqual(['thread-1', 'thread-2', 'thread-3']);
expect(store.getState().threads.threadsById['thread-1'])
@@ -133,7 +133,7 @@ describe('Threads/Posts data layer tests', () => {
expect(store.getState().threads.threadsById)
.not
.toHaveProperty(threadId);
expect(store.getState().threads.pages[1])
expect(store.getState().threads.pages[0])
.not
.toContain(threadId);
expect(store.getState().threads.threadsInTopic['test-topic'])

View File

@@ -27,22 +27,20 @@ export const selectAllThreadsOnPage = (page) => createSelector(
mapIdsToThreads,
);
export const selectAllThreads = () => state => {
let threads = [];
let page = 1;
while (state.threads.pages[page]?.length) {
threads = threads.concat(selectAllThreadsOnPage(page)(state));
page += 1;
}
return threads;
};
export const selectAllThreads = createSelector(
[
state => state.threads.pages,
selectThreads,
],
(pages, threads) => pages.flatMap(ids => mapIdsToThreads(ids, threads)),
);
export const threadsLoadingStatus = () => state => state.threads.status;
// TODO: eventually this should be server-side filtering
export const selectUserThreads = author => createSelector(
[selectThreads],
(threads) => Object.values(threads)
.filter(thread => thread.author === author),
[selectAllThreads],
threads => threads.filter(thread => thread.author === author),
);
export const selectThreadSorting = () => state => state.threads.sortedBy;

View File

@@ -9,31 +9,6 @@ import {
ThreadOrdering,
} from '../../../data/constants';
function normaliseProfileImage(currentThread, newThread) {
newThread.authorAvatars = newThread.users
? newThread.users?.[newThread.author].profile.image
: currentThread?.authorAvatars;
return newThread;
}
function normaliseThreads(state, rawThreadsData) {
const {
topicThreadMap: topics,
threads,
} = state;
rawThreadsData.forEach(
thread => {
if (!topics[thread.topicId]) {
topics[thread.topicId] = [];
}
if (!topics[thread.topicId].includes(thread.id)) {
topics[thread.topicId].push(thread.id);
}
threads[thread.id] = normaliseProfileImage(threads[thread.id], thread);
},
);
}
const threadsSlice = createSlice({
name: 'thread',
initialState: {
@@ -47,7 +22,7 @@ const threadsSlice = createSlice({
threadsById: {
// Mapping of threads ids to threads in them
},
pages: {},
pages: [],
threadDraft: null,
totalPages: null,
totalThreads: null,
@@ -68,10 +43,10 @@ const threadsSlice = createSlice({
},
fetchThreadsSuccess: (state, { payload }) => {
state.status = RequestStatus.SUCCESSFUL;
state.pages[payload.page] = payload.ids;
Object.assign(state.threadsById, payload.threadsById);
Object.assign(state.threadsInTopic, payload.threadsInTopic);
Object.assign(state.avatars, payload.avatars);
state.pages[payload.page - 1] = payload.ids;
state.threadsById = { ...state.threadsById, ...payload.threadsById };
state.threadsInTopic = { ...state.threadsInTopic, ...payload.threadsInTopic };
state.avatars = { ...state.avatars, ...payload.avatars };
state.totalPages = payload.pagination.numPages;
state.totalThreads = payload.pagination.count;
},
@@ -86,8 +61,8 @@ const threadsSlice = createSlice({
},
fetchThreadSuccess: (state, { payload }) => {
state.status = RequestStatus.SUCCESSFUL;
Object.assign(state.threadsById, payload.threadsById);
Object.assign(state.avatars, payload.avatars);
state.threadsById = { ...state.threadsById, ...payload.threadsById };
state.avatars = { ...state.avatars, ...payload.avatars };
},
fetchThreadFailed: (state) => {
state.status = RequestStatus.FAILED;
@@ -104,8 +79,8 @@ const threadsSlice = createSlice({
state.threadsById[payload.id] = payload;
state.threadsInTopic[payload.topicId].push(payload.id);
// Temporarily add it to the top of the list so it's visible
state.pages[1] = [payload.id] + (state.pages[1] || []);
Object.assign(state.avatars, payload.users);
state.pages[0] = [payload.id].concat(state.pages[0] || []);
state.avatars = { ...state.avatars, ...payload.avatars };
state.redirectToThread = { topicId: payload.topicId, threadId: payload.id };
state.threadDraft = null;
},
@@ -121,8 +96,8 @@ const threadsSlice = createSlice({
},
updateThreadSuccess: (state, { payload }) => {
state.postStatus = RequestStatus.SUCCESSFUL;
Object.assign(state.threadsById[payload.id], payload);
Object.assign(state.avatars, payload.avatars);
state.threadsById[payload.id] = { ...state.threadsById[payload.id], ...payload };
state.avatars = { ...state.avatars, ...payload.avatars };
state.threadDraft = null;
},
updateThreadFailed: (state) => {
@@ -139,10 +114,7 @@ const threadsSlice = createSlice({
const { topicId } = state.threadsById[threadId];
state.postStatus = RequestStatus.SUCCESSFUL;
state.threadsInTopic[topicId] = state.threadsInTopic[topicId].filter(item => item !== threadId);
Object.keys(state.pages)
.forEach(page => {
state.pages[page] = state.pages[page].filter(item => item !== threadId);
});
state.pages = state.pages.map(page => page?.filter(item => item !== threadId));
delete state.threadsById[threadId];
},
deleteThreadFailed: (state) => {

View File

@@ -54,7 +54,7 @@ function normaliseThreads(data) {
}
const threadsInTopic = {};
const threadsById = {};
const avatars = {};
let avatars = {};
const ids = [];
threads.forEach(
thread => {
@@ -67,7 +67,7 @@ function normaliseThreads(data) {
threadsInTopic[topicId].push(id);
}
threadsById[id] = thread;
Object.assign(avatars, thread.users);
avatars = { ...avatars, ...thread.users };
},
);
return {
@@ -81,17 +81,19 @@ function normaliseThreads(data) {
* @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.
* @param {number} page Page to fetch
* @returns {(function(*): Promise<void>)|*}
*/
export function fetchThreads(courseId, {
topicIds,
orderBy,
filters = {},
page,
page = 1,
} = {}) {
const options = {
orderBy,
topicIds,
page,
};
if (filters.status === PostsStatusFilter.FOLLOWING) {
options.following = true;
@@ -107,7 +109,7 @@ export function fetchThreads(courseId, {
dispatch(fetchThreadsRequest({ courseId }));
const data = await getThreads(courseId, options);
const normalisedData = normaliseThreads(camelCaseObject(data));
dispatch(fetchThreadsSuccess({ ...normalisedData, page: page || 1 }));
dispatch(fetchThreadsSuccess({ ...normalisedData, page }));
} catch (error) {
if (getHttpErrorStatus(error) === 403) {
dispatch(fetchThreadsDenied());