This is an automated email from the ASF dual-hosted git repository.
ivandika pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 70fcbc6d87 HDDS-9790. Add tests for Overview page (#6983)
70fcbc6d87 is described below
commit 70fcbc6d879a6b34e6db90ae4e8d5aa3be377c2e
Author: Abhishek Pal <[email protected]>
AuthorDate: Wed Aug 21 11:51:31 2024 +0530
HDDS-9790. Add tests for Overview page (#6983)
---
.../webapps/recon/ozone-recon-web/package.json | 4 +
.../webapps/recon/ozone-recon-web/pnpm-lock.yaml | 981 ++++++++++++++++++++-
.../src/__tests__/Overview.test.tsx | 214 +++++
.../src/__tests__/locators/locators.ts | 48 +
.../mocks/overviewMocks/overviewResponseMocks.ts} | 39 +-
.../mocks/overviewMocks/overviewServer.ts | 79 ++
.../ozone-recon-web/src/__tests__/vitest.setup.ts | 61 ++
.../components/autoReloadPanel/autoReloadPanel.tsx | 19 +-
.../src/components/overviewCard/overviewCard.tsx | 4 +-
.../components/overviewCard/overviewSimpleCard.tsx | 3 +-
.../overviewCard/overviewStorageCard.tsx | 7 +-
.../overviewCard/overviewSummaryCard.tsx | 7 +-
.../src/v2/pages/overview/overview.tsx | 2 +-
.../src/views/datanodes/datanodes.tsx | 3 +-
.../webapps/recon/ozone-recon-web/tsconfig.json | 9 +-
.../webapps/recon/ozone-recon-web/vite-env.d.ts | 18 -
.../webapps/recon/ozone-recon-web/vite.config.ts | 51 +-
17 files changed, 1473 insertions(+), 76 deletions(-)
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/package.json
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/package.json
index 71bdf85ad1..d931a0ed79 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/package.json
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/package.json
@@ -56,6 +56,8 @@
]
},
"devDependencies": {
+ "@testing-library/jest-dom": "^6.4.8",
+ "@testing-library/react": "^12.1.5",
"@types/react": "16.8.15",
"@types/react-dom": "16.8.4",
"@types/react-router-dom": "^4.3.5",
@@ -66,7 +68,9 @@
"eslint": "^7.28.0",
"eslint-config-prettier": "^8.10.0",
"eslint-plugin-prettier": "^3.4.1",
+ "jsdom": "^24.1.1",
"json-server": "^0.15.1",
+ "msw": "1.3.3",
"npm-run-all": "^4.1.5",
"prettier": "^2.8.4",
"vite": "4.5.3",
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/pnpm-lock.yaml
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/pnpm-lock.yaml
index ccfdcc0186..d1b8844ac6 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/pnpm-lock.yaml
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/pnpm-lock.yaml
@@ -61,6 +61,12 @@ dependencies:
version: 4.9.5
devDependencies:
+ '@testing-library/jest-dom':
+ specifier: ^6.4.8
+ version: 6.4.8
+ '@testing-library/react':
+ specifier: ^12.1.5
+ version: 12.1.5([email protected])([email protected])
'@types/react':
specifier: 16.8.15
version: 16.8.15
@@ -91,9 +97,15 @@ devDependencies:
eslint-plugin-prettier:
specifier: ^3.4.1
version:
3.4.1([email protected])([email protected])([email protected])
+ jsdom:
+ specifier: ^24.1.1
+ version: 24.1.1
json-server:
specifier: ^0.15.1
version: 0.15.1
+ msw:
+ specifier: 1.3.3
+ version: 1.3.3([email protected])
npm-run-all:
specifier: ^4.1.5
version: 4.1.5
@@ -111,10 +123,14 @@ devDependencies:
version: 3.6.0([email protected])
vitest:
specifier: ^1.6.0
- version: 1.6.0([email protected])
+ version: 1.6.0([email protected])([email protected])
packages:
+ /@adobe/[email protected]:
+ resolution: {integrity:
sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==}
+ dev: true
+
/@ampproject/[email protected]:
resolution: {integrity:
sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
@@ -975,6 +991,30 @@ packages:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.4.15
+ /@mswjs/[email protected]:
+ resolution: {integrity:
sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@types/set-cookie-parser': 2.4.10
+ set-cookie-parser: 2.6.0
+ dev: true
+
+ /@mswjs/[email protected]:
+ resolution: {integrity:
sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@open-draft/until': 1.0.3
+ '@types/debug': 4.1.12
+ '@xmldom/xmldom': 0.8.10
+ debug: 4.3.5
+ headers-polyfill: 3.2.5
+ outvariant: 1.4.3
+ strict-event-emitter: 0.2.8
+ web-encoding: 1.1.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@nodelib/[email protected]:
resolution: {integrity:
sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -996,6 +1036,10 @@ packages:
fastq: 1.17.1
dev: true
+ /@open-draft/[email protected]:
+ resolution: {integrity:
sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==}
+ dev: true
+
/@pkgjs/[email protected]:
resolution: {integrity:
sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -1287,6 +1331,52 @@ packages:
defer-to-connect: 1.1.3
dev: true
+ /@testing-library/[email protected]:
+ resolution: {integrity:
sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/runtime': 7.24.7
+ '@types/aria-query': 5.0.4
+ aria-query: 5.1.3
+ chalk: 4.1.2
+ dom-accessibility-api: 0.5.16
+ lz-string: 1.5.0
+ pretty-format: 27.5.1
+ dev: true
+
+ /@testing-library/[email protected]:
+ resolution: {integrity:
sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==}
+ engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+ dependencies:
+ '@adobe/css-tools': 4.4.0
+ '@babel/runtime': 7.24.7
+ aria-query: 5.3.0
+ chalk: 3.0.0
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.6.3
+ lodash: 4.17.21
+ redent: 3.0.0
+ dev: true
+
+ /@testing-library/[email protected]([email protected])([email protected]):
+ resolution: {integrity:
sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ react: <18.0.0
+ react-dom: <18.0.0
+ dependencies:
+ '@babel/runtime': 7.24.7
+ '@testing-library/dom': 8.20.1
+ '@types/react-dom': 16.8.4
+ react: 16.14.0
+ react-dom: 16.14.0([email protected])
+ dev: true
+
+ /@types/[email protected]:
+ resolution: {integrity:
sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
+ dev: true
+
/@types/[email protected]:
resolution: {integrity:
sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
dependencies:
@@ -1316,6 +1406,16 @@ packages:
'@babel/types': 7.24.7
dev: true
+ /@types/[email protected]:
+ resolution: {integrity:
sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
+ dev: true
+
+ /@types/[email protected]:
+ resolution: {integrity:
sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ dependencies:
+ '@types/ms': 0.7.34
+ dev: true
+
/@types/[email protected]:
resolution: {integrity:
sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
@@ -1331,6 +1431,10 @@ packages:
history: 5.3.0
dev: true
+ /@types/[email protected]:
+ resolution: {integrity:
sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==}
+ dev: true
+
/@types/[email protected]:
resolution: {integrity:
sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
@@ -1341,6 +1445,10 @@ packages:
'@types/node': 20.14.8
dev: true
+ /@types/[email protected]:
+ resolution: {integrity:
sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ dev: true
+
/@types/[email protected]:
resolution: {integrity:
sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==}
dependencies:
@@ -1407,6 +1515,12 @@ packages:
resolution: {integrity:
sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
dev: true
+ /@types/[email protected]:
+ resolution: {integrity:
sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==}
+ dependencies:
+ '@types/node': 20.14.8
+ dev: true
+
/@typescript-eslint/[email protected](@typescript-eslint/[email protected])([email protected])([email protected]):
resolution: {integrity:
sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1592,6 +1706,17 @@ packages:
pretty-format: 29.7.0
dev: true
+ /@xmldom/[email protected]:
+ resolution: {integrity:
sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
+ engines: {node: '>=10.0.0'}
+ dev: true
+
+ /@zxing/[email protected]:
+ resolution: {integrity:
sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==}
+ requiresBuild: true
+ dev: true
+ optional: true
+
/[email protected]:
resolution: {integrity:
sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
@@ -1644,6 +1769,15 @@ packages:
react-dom: 16.14.0([email protected])
dev: false
+ /[email protected]:
+ resolution: {integrity:
sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
+ engines: {node: '>= 14'}
+ dependencies:
+ debug: 4.3.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
@@ -1673,6 +1807,13 @@ packages:
engines: {node: '>=6'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==}
engines: {node: '>=4'}
@@ -1771,6 +1912,14 @@ packages:
resolution: {integrity:
sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
dependencies:
@@ -1781,6 +1930,18 @@ packages:
resolution: {integrity:
sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
+ dependencies:
+ deep-equal: 2.2.3
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ dependencies:
+ dequal: 2.0.3
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
engines: {node: '>= 0.4'}
@@ -1901,6 +2062,10 @@ packages:
resolution: {integrity:
sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
engines: {node: '>= 0.8'}
@@ -1914,6 +2079,19 @@ packages:
tweetnacl: 0.14.5
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -1979,6 +2157,13 @@ packages:
update-browserslist-db: 1.0.16([email protected])
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'}
@@ -2061,6 +2246,14 @@ packages:
escape-string-regexp: 1.0.5
supports-color: 5.5.0
+ /[email protected]:
+ resolution: {integrity:
sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -2069,12 +2262,31 @@ packages:
supports-color: 7.2.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
dependencies:
get-func-name: 2.0.2
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
dev: true
@@ -2088,6 +2300,23 @@ packages:
engines: {node: '>=6'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+ dependencies:
+ restore-cursor: 3.1.0
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
+ engines: {node: '>= 10'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==}
dependencies:
@@ -2096,12 +2325,26 @@ packages:
wrap-ansi: 5.1.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
dependencies:
mimic-response: 1.0.1
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
@@ -2206,6 +2449,11 @@ packages:
resolution: {integrity:
sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
@@ -2294,6 +2542,17 @@ packages:
engines: {node: '>=4'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
+ engines: {node: '>=18'}
+ dependencies:
+ rrweb-cssom: 0.6.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
@@ -2308,6 +2567,14 @@ packages:
assert-plus: 1.0.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
+ engines: {node: '>=18'}
+ dependencies:
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.0.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
engines: {node: '>= 0.4'}
@@ -2384,6 +2651,10 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==}
engines: {node: '>=4'}
@@ -2398,6 +2669,30 @@ packages:
type-detect: 4.0.8
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ es-get-iterator: 1.1.3
+ get-intrinsic: 1.2.4
+ is-arguments: 1.1.1
+ is-array-buffer: 3.0.4
+ is-date-object: 1.0.5
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.3
+ isarray: 2.0.5
+ object-is: 1.1.6
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.2
+ side-channel: 1.0.6
+ which-boxed-primitive: 1.0.2
+ which-collection: 1.0.2
+ which-typed-array: 1.1.15
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
@@ -2407,6 +2702,12 @@ packages:
resolution: {integrity:
sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+ dependencies:
+ clone: 1.0.4
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==}
dev: true
@@ -2438,6 +2739,11 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -2462,6 +2768,14 @@ packages:
esutils: 2.0.3
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==}
dev: false
@@ -2638,6 +2952,20 @@ packages:
engines: {node: '>= 0.4'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ is-arguments: 1.1.1
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-string: 1.0.7
+ isarray: 2.0.5
+ stop-iteration-iterator: 1.0.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
engines: {node: '>= 0.4'}
@@ -2906,6 +3234,11 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
engines: {node: '>=4'}
@@ -2986,6 +3319,15 @@ packages:
resolution: {integrity:
sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
+ engines: {node: '>=4'}
+ dependencies:
+ chardet: 0.7.0
+ iconv-lite: 0.4.24
+ tmp: 0.0.33
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
engines: {'0': node >=0.6.0}
@@ -3024,6 +3366,13 @@ packages:
reusify: 1.0.4
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
+ engines: {node: '>=8'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -3126,7 +3475,6 @@ packages:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
- dev: false
/[email protected]:
resolution: {integrity:
sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
@@ -3345,6 +3693,11 @@ packages:
resolution: {integrity:
sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==}
engines: {node: '>=4'}
@@ -3406,6 +3759,10 @@ packages:
dependencies:
function-bind: 1.1.2
+ /[email protected]:
+ resolution: {integrity:
sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==}
dependencies:
@@ -3433,6 +3790,13 @@ packages:
resolution: {integrity:
sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
+ engines: {node: '>=18'}
+ dependencies:
+ whatwg-encoding: 3.1.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
dev: true
@@ -3448,6 +3812,16 @@ packages:
toidentifier: 1.0.1
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==}
engines: {node: '>=0.8', npm: '>=1.3.7'}
@@ -3457,6 +3831,16 @@ packages:
sshpk: 1.18.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
@@ -3469,6 +3853,17 @@ packages:
safer-buffer: 2.1.2
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==}
engines: {node: '>= 4'}
@@ -3503,6 +3898,11 @@ packages:
engines: {node: '>=0.8.19'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it.
Check out lru-cache if you want a good and tested way to coalesce async
requests by a key value, which is much more comprehensive and powerful.
@@ -3519,6 +3919,27 @@ packages:
resolution: {integrity:
sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-width: 3.0.0
+ external-editor: 3.1.0
+ figures: 3.2.0
+ lodash: 4.17.21
+ mute-stream: 0.0.8
+ ora: 5.4.1
+ run-async: 2.4.1
+ rxjs: 7.8.1
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ through: 2.3.8
+ wrap-ansi: 6.2.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
@@ -3533,6 +3954,14 @@ packages:
engines: {node: '>= 0.10'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
engines: {node: '>= 0.4'}
@@ -3550,6 +3979,13 @@ packages:
has-bigints: 1.0.2
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.3.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
@@ -3605,6 +4041,13 @@ packages:
engines: {node: '>=8'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
@@ -3620,11 +4063,25 @@ packages:
is-path-inside: 1.0.1
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==}
engines: {node: '>=8'}
@@ -3654,6 +4111,10 @@ packages:
path-is-inside: 1.0.2
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
dev: true
@@ -3666,6 +4127,11 @@ packages:
has-tostringtag: 1.0.2
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
engines: {node: '>= 0.4'}
@@ -3708,12 +4174,30 @@ packages:
resolution: {integrity:
sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
dev: true
- /[email protected]:
- resolution: {integrity:
sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+ /[email protected]:
+ resolution: {integrity:
sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
dependencies:
call-bind: 1.0.7
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
@@ -3749,6 +4233,11 @@ packages:
resolution: {integrity:
sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -3775,6 +4264,42 @@ packages:
resolution: {integrity:
sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ canvas: ^2.11.2
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ cssstyle: 4.0.1
+ data-urls: 5.0.0
+ decimal.js: 10.4.3
+ form-data: 4.0.0
+ html-encoding-sniffer: 4.0.0
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.5
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.12
+ parse5: 7.1.2
+ rrweb-cssom: 0.7.1
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.4
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 3.1.1
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.0.0
+ ws: 8.18.0
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
@@ -3962,12 +4487,19 @@ packages:
/[email protected]:
resolution: {integrity:
sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ /[email protected]:
+ resolution: {integrity:
sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
dependencies:
js-tokens: 4.0.0
- dev: false
/[email protected]:
resolution: {integrity:
sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
@@ -4020,6 +4552,11 @@ packages:
yallist: 3.1.1
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
+ hasBin: true
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
dependencies:
@@ -4109,6 +4646,11 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ /[email protected]:
+ resolution: {integrity:
sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
@@ -4119,6 +4661,11 @@ packages:
engines: {node: '>=4'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+ dev: true
+
/[email protected]([email protected])([email protected]):
resolution: {integrity:
sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ==}
peerDependencies:
@@ -4190,6 +4737,46 @@ packages:
resolution: {integrity:
sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: true
+ /[email protected]([email protected]):
+ resolution: {integrity:
sha512-CiPyRFiYJCXYyH/vwxT7m+sa4VZHuUH6cGwRBj0kaTjBGpsk4EnL47YzhoA859htVCF2vzqZuOsomIUlFqg9GQ==}
+ engines: {node: '>=14'}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ typescript: '>= 4.4.x'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@mswjs/cookies': 0.2.2
+ '@mswjs/interceptors': 0.17.10
+ '@open-draft/until': 1.0.3
+ '@types/cookie': 0.4.1
+ '@types/js-levenshtein': 1.1.3
+ chalk: 4.1.2
+ chokidar: 3.6.0
+ cookie: 0.4.2
+ graphql: 16.9.0
+ headers-polyfill: 3.2.5
+ inquirer: 8.2.6
+ is-node-process: 1.2.0
+ js-levenshtein: 1.1.6
+ node-fetch: 2.7.0
+ outvariant: 1.4.3
+ path-to-regexp: 6.2.2
+ strict-event-emitter: 0.4.6
+ type-fest: 2.19.0
+ typescript: 4.9.5
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
@@ -4237,6 +4824,18 @@ packages:
tslib: 2.6.3
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
dev: true
@@ -4250,6 +4849,11 @@ packages:
validate-npm-package-license: 3.0.4
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==}
engines: {node: '>=8'}
@@ -4285,6 +4889,10 @@ packages:
path-key: 4.0.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
dev: true
@@ -4298,6 +4906,14 @@ packages:
engines: {node: '>= 0.4'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
@@ -4338,6 +4954,13 @@ packages:
wrappy: 1.0.2
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
@@ -4357,6 +4980,30 @@ packages:
word-wrap: 1.2.5
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==}
engines: {node: '>=6'}
@@ -4435,6 +5082,12 @@ packages:
engines: {node: '>=6'}
dev: false
+ /[email protected]:
+ resolution: {integrity:
sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+ dependencies:
+ entities: 4.5.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
@@ -4489,6 +5142,10 @@ packages:
dependencies:
isarray: 0.0.1
+ /[email protected]:
+ resolution: {integrity:
sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
engines: {node: '>=4'}
@@ -4598,6 +5255,15 @@ packages:
hasBin: true
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ ansi-regex: 5.0.1
+ ansi-styles: 5.2.0
+ react-is: 17.0.2
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -4625,7 +5291,6 @@ packages:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
- dev: false
/[email protected]:
resolution: {integrity:
sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
@@ -4676,6 +5341,10 @@ packages:
engines: {node: '>=0.6'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
@@ -5208,7 +5877,6 @@ packages:
prop-types: 15.8.1
react: 16.14.0
scheduler: 0.19.1
- dev: false
/[email protected]([email protected]):
resolution: {integrity:
sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==}
@@ -5221,7 +5889,10 @@ packages:
/[email protected]:
resolution: {integrity:
sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
- dev: false
+
+ /[email protected]:
+ resolution: {integrity:
sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+ dev: true
/[email protected]:
resolution: {integrity:
sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
@@ -5304,7 +5975,6 @@ packages:
loose-envify: 1.4.0
object-assign: 4.1.1
prop-types: 15.8.1
- dev: false
/[email protected]:
resolution: {integrity:
sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
@@ -5315,6 +5985,22 @@ packages:
path-type: 3.0.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ==}
dependencies:
@@ -5325,6 +6011,14 @@ packages:
tslib: 1.14.1
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
@@ -5398,6 +6092,10 @@ packages:
resolution: {integrity:
sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
dev: false
@@ -5424,6 +6122,14 @@ packages:
lowercase-keys: 1.0.1
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -5471,12 +6177,31 @@ packages:
fsevents: 2.3.3
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
queue-microtask: 1.2.3
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
+ dependencies:
+ tslib: 2.6.3
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
engines: {node: '>=0.4'}
@@ -5508,12 +6233,18 @@ packages:
resolution: {integrity:
sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+ dependencies:
+ xmlchars: 2.2.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==}
dependencies:
loose-envify: 1.4.0
object-assign: 4.1.1
- dev: false
/[email protected]:
resolution: {integrity:
sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==}
@@ -5588,6 +6319,10 @@ packages:
resolution: {integrity:
sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -5767,6 +6502,23 @@ packages:
graceful-fs: 4.2.11
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ internal-slot: 1.0.7
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==}
+ dependencies:
+ events: 3.3.0
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==}
dev: false
@@ -5843,6 +6595,12 @@ packages:
es-object-atoms: 1.0.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
engines: {node: '>=4'}
@@ -5886,6 +6644,13 @@ packages:
engines: {node: '>=12'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
engines: {node: '>=0.10.0'}
@@ -5937,6 +6702,10 @@ packages:
resolution: {integrity:
sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==}
engines: {node: '>=10.0.0'}
@@ -5972,6 +6741,10 @@ packages:
any-promise: 1.3.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
dev: false
@@ -5994,6 +6767,13 @@ packages:
engines: {node: '>=14.0.0'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
+ engines: {node: '>=0.6.0'}
+ dependencies:
+ os-tmpdir: 1.0.2
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
@@ -6027,6 +6807,27 @@ packages:
punycode: 2.3.1
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
+ engines: {node: '>=6'}
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.3.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
+ engines: {node: '>=18'}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: true
@@ -6088,11 +6889,21 @@ packages:
engines: {node: '>=10'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==}
engines: {node: '>=6'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
+ engines: {node: '>=12.20'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
@@ -6174,6 +6985,11 @@ packages:
crypto-random-string: 1.0.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
@@ -6221,6 +7037,27 @@ packages:
prepend-http: 2.0.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
+ dependencies:
+ inherits: 2.0.4
+ is-arguments: 1.1.1
+ is-generator-function: 1.0.10
+ is-typed-array: 1.1.13
+ which-typed-array: 1.1.15
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
@@ -6383,7 +7220,7 @@ packages:
fsevents: 2.3.3
dev: true
- /[email protected]([email protected]):
+ /[email protected]([email protected])([email protected]):
resolution: {integrity:
sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -6417,6 +7254,7 @@ packages:
chai: 4.4.1
debug: 4.3.5
execa: 8.0.1
+ jsdom: 24.1.1
local-pkg: 0.5.0
magic-string: 0.30.10
pathe: 1.1.2
@@ -6438,12 +7276,69 @@ packages:
- terser
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
+ engines: {node: '>=18'}
+ dependencies:
+ xml-name-validator: 5.0.0
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
dependencies:
loose-envify: 1.4.0
dev: false
+ /[email protected]:
+ resolution: {integrity:
sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ dependencies:
+ defaults: 1.0.4
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==}
+ dependencies:
+ util: 0.12.5
+ optionalDependencies:
+ '@zxing/text-encoding': 0.9.0
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
+ engines: {node: '>=18'}
+ dependencies:
+ iconv-lite: 0.6.3
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
+ engines: {node: '>=18'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==}
+ engines: {node: '>=18'}
+ dependencies:
+ tr46: 5.0.0
+ webidl-conversions: 7.0.0
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
dependencies:
@@ -6454,6 +7349,16 @@ packages:
is-symbol: 1.0.4
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.3
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
dev: true
@@ -6514,6 +7419,15 @@ packages:
strip-ansi: 5.2.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -6544,15 +7458,42 @@ packages:
signal-exit: 3.0.7
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==}
engines: {node: '>=4'}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
+ engines: {node: '>=18'}
+ dev: true
+
+ /[email protected]:
+ resolution: {integrity:
sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
dev: true
@@ -6573,6 +7514,11 @@ packages:
decamelize: 1.2.0
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==}
dependencies:
@@ -6589,6 +7535,19 @@ packages:
yargs-parser: 15.0.3
dev: true
+ /[email protected]:
+ resolution: {integrity:
sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.2
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+ dev: true
+
/[email protected]:
resolution: {integrity:
sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
engines: {node: '>=12.20'}
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/Overview.test.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/Overview.test.tsx
new file mode 100644
index 0000000000..8af860e324
--- /dev/null
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/Overview.test.tsx
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React from 'react';
+import { BrowserRouter } from 'react-router-dom';
+
+/**
+ * The dont-cleanup-after-each is imported to prevent autoCleanup of rendered
+ * component after each test.
+ * Since we are needing to set a timeout everytime the component is rendered
+ * and we would be verifying whether the UI is correct, we can skip the cleanup
+ * and leave it for after all the tests run - saving test time
+ */
+import '@testing-library/react/dont-cleanup-after-each';
+import { cleanup, render, screen } from '@testing-library/react';
+
+import { overviewLocators } from '@tests/locators/locators';
+import { faultyOverviewServer, overviewServer } from
'@tests/mocks/overviewMocks/overviewServer';
+import Overview from '@/v2/pages/overview/overview';
+
+const WrappedOverviewComponent = () => {
+ return (
+ <BrowserRouter>
+ <Overview />
+ </BrowserRouter>
+ )
+}
+
+/**
+ * We need to mock the EChart component as in the virtual DOM
+ * it cannot access the DOM height and width and will throw errors
+ * Hence we intercept and mock the import to return an empty
+ * React fragment
+ */
+vi.mock('@/v2/components/eChart/eChart', () => ({
+ default: () => (<></>)
+}))
+
+describe.each([
+ true,
+ false
+])('Overview Tests - Data is present = %s', (scenario) => {
+ beforeAll(async () => {
+ (scenario) ? overviewServer.listen() : faultyOverviewServer.listen();
+ render(
+ <WrappedOverviewComponent />
+ );
+ //Setting a timeout of 100ms to allow requests to be resolved and states
to be set
+ await new Promise((r) => { setTimeout(r, 100) })
+ });
+
+ afterAll(() => {
+ (scenario) ? overviewServer.close() : faultyOverviewServer.close();
+ vi.clearAllMocks();
+ /**
+ * Need to cleanup the DOM after one suite has completely run
+ * Otherwise we will get duplicate elements
+ */
+ cleanup();
+ })
+
+ // Tests begin here
+ // All the data is being mocked by MSW, so we have a fixed data that we can
verify
+ // the content against
+ it('Datanode row has the correct count of Datanodes', () => {
+ const datanodeRow = screen.getByTestId(overviewLocators.datanodeRow);
+ expect(datanodeRow).toBeVisible();
+ expect(datanodeRow).toHaveTextContent((scenario) ? '3/5' : 'N/A');
+ });
+
+ it('Containers row has the correct count of containers', () => {
+ const containerRow = screen.getByTestId(overviewLocators.containersRow);
+ expect(containerRow).toBeVisible();
+ expect(containerRow).toHaveTextContent((scenario) ? '20' : 'N/A');
+ });
+
+ it('Capacity card has the correct capacity data', () => {
+ const capacityOzoneUsed =
screen.getByTestId(overviewLocators.capacityOzoneUsed);
+ const capacityNonOzoneUsed =
screen.getByTestId(overviewLocators.capacityNonOzoneUsed);
+ const capacityRemaining =
screen.getByTestId(overviewLocators.capacityRemaining);
+ const capacityPreAllocated =
screen.getByTestId(overviewLocators.capacityPreAllocated);
+
+ expect(capacityOzoneUsed).toBeVisible();
+ expect(capacityNonOzoneUsed).toBeVisible();
+ expect(capacityRemaining).toBeVisible();
+ expect(capacityPreAllocated).toBeVisible();
+
+ expect(capacityOzoneUsed).toHaveTextContent(
+ (scenario)
+ ? /Ozone Used\s*784.7 MB/
+ : /Ozone Used\s*0 B/
+ );
+ expect(capacityNonOzoneUsed).toHaveTextContent(
+ (scenario)
+ ? /Non Ozone Used\s*263.1 GB/
+ : /Non Ozone Used\s*0 B/
+ );
+ expect(capacityRemaining).toHaveTextContent(
+ (scenario)
+ ? /Remaining\s*995.4 GB/
+ : /Remaining\s*0 B/
+ );
+ expect(capacityPreAllocated).toHaveTextContent(
+ (scenario)
+ ? /Container Pre-allocated\s*11.2 GB/
+ : /Container Pre-allocated\s*0 B/
+ );
+ });
+
+ it('Volumes card has the correct number of volumes', () => {
+ const volumeCard = screen.getByTestId(overviewLocators.volumesCard);
+ expect(volumeCard).toBeVisible();
+ expect(volumeCard).toHaveTextContent((scenario) ? '2' : 'N/A');
+ });
+
+ it('Buckets card has the correct number of buckets', () => {
+ const bucketsCard = screen.getByTestId(overviewLocators.bucketsCard);
+ expect(bucketsCard).toBeVisible();
+ expect(bucketsCard).toHaveTextContent((scenario) ? '24' : 'N/A');
+ });
+
+ it('Keys card has the correct number of keys', () => {
+ const keysCard = screen.getByTestId(overviewLocators.keysCard);
+ expect(keysCard).toBeVisible();
+ expect(keysCard).toHaveTextContent((scenario) ? '1424' : 'N/A');
+ });
+
+ it('Pipelines card has the correct count of Pipelines', () => {
+ const pipelinesCard = screen.getByTestId(overviewLocators.pipelinesCard);
+ expect(pipelinesCard).toBeVisible();
+ expect(pipelinesCard).toHaveTextContent((scenario) ? '7' : 'N/A');
+ });
+
+ it('Deleted Containers card has the correct count of deleted containers', ()
=> {
+ const deletedContainersCard =
screen.getByTestId(overviewLocators.deletedContainersCard);
+ expect(deletedContainersCard).toBeVisible();
+ expect(deletedContainersCard).toHaveTextContent((scenario) ? '10' : 'N/A')
+ })
+
+ it('Delete Pending Summary has the correct data', () => {
+ const deletePendingReplicatedData = screen.getByTestId(
+ overviewLocators.deletePendingTotalReplicatedData
+ );
+ const deletePendingUnreplicatedData = screen.getByTestId(
+ overviewLocators.deletePendingTotalUnreplicatedData
+ );
+ const deletePendingKeys =
screen.getByTestId(overviewLocators.deletePendingKeys);
+
+ expect(deletePendingReplicatedData).toBeVisible();
+ expect(deletePendingUnreplicatedData).toBeVisible();
+ expect(deletePendingKeys).toBeVisible();
+
+ expect(deletePendingReplicatedData).toHaveTextContent(
+ (scenario)
+ ? /Total Replicated Data\s*1 KB/
+ : /Total Replicated Data\s*N\/A/
+ );
+ expect(deletePendingUnreplicatedData).toHaveTextContent(
+ (scenario)
+ ? /Total Unreplicated Data\s*4 KB/
+ : /Total Unreplicated Data\s*N\/A/
+ );
+ expect(deletePendingKeys).toHaveTextContent(
+ (scenario)
+ ? /Delete Pending Keys\s*3/
+ : /Delete Pending Keys\s*N\/A/
+ );
+ });
+
+ it('Open Keys summary has the correct data', () => {
+ const openKeysReplicatedData = screen.getByTestId(
+ overviewLocators.openTotalReplicatedData
+ );
+ const openKeysUnreplicatedData = screen.getByTestId(
+ overviewLocators.openTotalUnreplicatedData
+ );
+ const openKeys = screen.getByTestId(overviewLocators.openKeys);
+
+ expect(openKeysReplicatedData).toBeVisible();
+ expect(openKeysUnreplicatedData).toBeVisible();
+ expect(openKeys).toBeVisible();
+
+ expect(openKeysReplicatedData).toHaveTextContent(
+ (scenario)
+ ? /Total Replicated Data\s*1 KB/
+ : /Total Replicated Data\s*N\/A/
+ );
+ expect(openKeysUnreplicatedData).toHaveTextContent(
+ (scenario)
+ ? /Total Unreplicated Data\s*4 KB/
+ : /Total Unreplicated Data\s*N\/A/
+ );
+ expect(openKeys).toHaveTextContent(
+ (scenario)
+ ? /Open Keys\s*10/
+ : /Open Keys\s*N\/A/
+ );
+ });
+})
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/locators/locators.ts
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/locators/locators.ts
new file mode 100644
index 0000000000..23fbc76870
--- /dev/null
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/locators/locators.ts
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export const overviewLocators = {
+ 'datanodeRow': 'overview-Health-Datanodes',
+ 'containersRow': 'overview-Health-Containers',
+ 'capacityOzoneUsed': 'capacity-ozone-used',
+ 'capacityNonOzoneUsed': 'capacity-non-ozone-used',
+ 'capacityRemaining': 'capacity-remaining',
+ 'capacityPreAllocated': 'capacity-pre-allocated',
+ 'volumesCard': 'overview-Volumes',
+ 'bucketsCard': 'overview-Buckets',
+ 'keysCard': 'overview-Keys',
+ 'pipelinesCard': 'overview-Pipelines',
+ 'deletedContainersCard': 'overview-Deleted Containers',
+ 'openTotalReplicatedData': 'overview-Open Keys Summary-Total Replicated
Data',
+ 'openTotalUnreplicatedData': 'overview-Open Keys Summary-Total Unreplicated
Data',
+ 'openKeys': 'overview-Open Keys Summary-Open Keys',
+ 'deletePendingTotalReplicatedData': 'overview-Delete Pending Keys
Summary-Total Replicated Data',
+ 'deletePendingTotalUnreplicatedData': 'overview-Delete Pending Keys
Summary-Total Unreplicated Data',
+ 'deletePendingKeys': 'overview-Delete Pending Keys Summary-Delete Pending
Keys'
+}
+
+export const datanodeLocators = {
+ 'datanodeContainer': 'datanodes-container',
+ 'datanodeMultiSelect': 'datanodes-multiselect'
+}
+
+export const autoReloadPanelLocators = {
+ 'autoreloadPanel': 'autoreload-panel',
+ 'refreshButton': 'autoreload-panel-refresh',
+ 'toggleSwitch': 'autoreload-panel-switch'
+}
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/app.test.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/mocks/overviewMocks/overviewResponseMocks.ts
similarity index 53%
rename from
hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/app.test.tsx
rename to
hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/mocks/overviewMocks/overviewResponseMocks.ts
index ad78746210..2a0bbb687f 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/app.test.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/mocks/overviewMocks/overviewResponseMocks.ts
@@ -16,12 +16,35 @@
* limitations under the License.
*/
-import React from 'react';
-import ReactDOM from 'react-dom';
-import App from './app';
+export const ClusterState = {
+ "deletedDirs": 0,
+ "pipelines": 7,
+ "totalDatanodes": 5,
+ "healthyDatanodes": 3,
+ "storageReport": {
+ "capacity": 1352149585920,
+ "used": 822805801,
+ "remaining": 1068824879104,
+ "committed": 12000222315
+ },
+ "containers": 20,
+ "missingContainers": 2,
+ "openContainers": 8,
+ "deletedContainers": 10,
+ "volumes": 2,
+ "buckets": 24,
+ "keys": 1424,
+ "keysPendingDeletion": 2
+}
-it('renders without crashing', () => {
- const div = document.createElement('div');
- ReactDOM.render(<App/>, div);
- ReactDOM.unmountComponentAtNode(div);
-});
+export const OpenKeys = {
+ "totalUnreplicatedDataSize": 4096,
+ "totalReplicatedDataSize": 1024,
+ "totalOpenKeys": 10
+}
+
+export const DeletePendingSummary = {
+ "totalUnreplicatedDataSize": 4096,
+ "totalReplicatedDataSize": 1024,
+ "totalDeletedKeys": 3
+}
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/mocks/overviewMocks/overviewServer.ts
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/mocks/overviewMocks/overviewServer.ts
new file mode 100644
index 0000000000..748f8e4ed5
--- /dev/null
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/mocks/overviewMocks/overviewServer.ts
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { setupServer } from "msw/node";
+import { rest } from "msw";
+
+import * as mockResponses from "./overviewResponseMocks";
+
+const handlers = [
+ rest.get("api/v1/clusterState", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(mockResponses.ClusterState)
+ );
+ }),
+ rest.get("api/v1/task/status", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(mockResponses.TaskStatus)
+ );
+ }),
+ rest.get("api/v1/keys/open/summary", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(mockResponses.OpenKeys)
+ );
+ }),
+ rest.get("api/v1/keys/deletePending/summary", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(mockResponses.DeletePendingSummary)
+ );
+ })
+]
+
+const faultyHandlers = [
+ rest.get("api/v1/clusterState", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(null)
+ );
+ }),
+ rest.get("api/v1/task/status", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(null)
+ );
+ }),
+ rest.get("api/v1/keys/open/summary", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(null)
+ );
+ }),
+ rest.get("api/v1/keys/deletePending/summary", (req, res, ctx) => {
+ return res(
+ ctx.status(200),
+ ctx.json(null)
+ );
+ })
+]
+//This will configure a request mocking server using MSW
+export const overviewServer = setupServer(...handlers);
+export const faultyOverviewServer = setupServer(...faultyHandlers);
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/vitest.setup.ts
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/vitest.setup.ts
new file mode 100644
index 0000000000..54dc2d5e52
--- /dev/null
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/__tests__/vitest.setup.ts
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import '@testing-library/jest-dom/vitest';
+
+
+/** jsdom currently doesn't implement a local storage
+ * Hence we need to implement a minimal storage functionality
+ * for the virtualDOM, to be able to use localstorage in virtual components
+*/
+const localStorageMock = (function () {
+ let store: { [key: string]: any } = {}
+
+ return {
+ getItem: function (key: string): any | null {
+ return store[key] || null;
+ },
+ setItem: function (key: string, value: any): void {
+ store[key] = value.toString();
+ },
+ removeItem: function (key: string): void {
+ delete store[key]
+ },
+ clear: function (): void {
+ store = {}
+ }
+ }
+});
+
+Object.defineProperty(window, 'localStorage', {
+ value: localStorageMock
+});
+
+Object.defineProperty(window, 'matchMedia', {
+ writable: true,
+ value: vi.fn().mockImplementation(query => ({
+ matches: false,
+ media: query,
+ onchange: null,
+ addListener: vi.fn(), // deprecated
+ removeListener: vi.fn(), // deprecated
+ addEventListener: vi.fn(),
+ removeEventListener: vi.fn(),
+ dispatchEvent: vi.fn(),
+ })),
+})
\ No newline at end of file
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/autoReloadPanel/autoReloadPanel.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/autoReloadPanel/autoReloadPanel.tsx
index 6510b3b3b6..0230d4dd61 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/autoReloadPanel/autoReloadPanel.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/autoReloadPanel/autoReloadPanel.tsx
@@ -84,11 +84,24 @@ class AutoReloadPanel extends
React.Component<IAutoReloadPanelProps> {
);
return (
- <div className='auto-reload-panel'>
+ <div className='auto-reload-panel' data-testid='autoreload-panel'>
Auto Refresh
- <Switch defaultChecked={autoReloadEnabled} size='small'
className='toggle-switch' onChange={this.autoReloadToggleHandler} />
+
+ <Switch
+ defaultChecked={autoReloadEnabled}
+ size='small'
+ className='toggle-switch'
+ onChange={this.autoReloadToggleHandler}
+ data-testid='autoreload-panel-switch' />
| Refreshed at {lastRefreshedText}
- <Button shape='circle' icon={<ReloadOutlined />} size='small'
loading={isLoading} onClick={onReload} />
+
+ <Button
+ shape='circle'
+ icon={<ReloadOutlined />}
+ size='small'
+ loading={isLoading}
+ onClick={onReload}
+ data-testid='autoreload-panel-refresh' />
{lastUpdatedDeltaFullText}
</div>
);
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/overviewCard/overviewCard.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/overviewCard/overviewCard.tsx
index c8e19db14c..977eddb981 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/overviewCard/overviewCard.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/components/overviewCard/overviewCard.tsx
@@ -142,10 +142,10 @@ class OverviewCard extends
React.Component<IOverviewCardProps> {
render() {
let { icon, data, title, loading, hoverable, storageReport, linkToUrl,
error } = this.props;
- let meta = <Meta title={data} description={title} />;
+ let meta = <Meta title={data} description={title}
data-testid={`overview-${title}`} />;
let errorClass = error ? 'card-error' : '';
- if (typeof data === 'string' && data === 'N/A'){
+ if (typeof data === 'string' && data === 'N/A') {
errorClass = 'card-error';
}
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSimpleCard.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSimpleCard.tsx
index 183ae73bc4..a685e3a2bc 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSimpleCard.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSimpleCard.tsx
@@ -130,7 +130,8 @@ const OverviewSimpleCard: React.FC<OverviewCardProps> = ({
hoverable={hoverable}
title={(linkToUrl) ? titleElement : title}
headStyle={cardHeadStyle}
- bodyStyle={cardBodyStyle}>
+ bodyStyle={cardBodyStyle}
+ data-testid={`overview-${title}`}>
<Row
align='middle'>
<Col>
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewStorageCard.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewStorageCard.tsx
index d41f5dbcfb..d6e29a2f96 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewStorageCard.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewStorageCard.tsx
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import React, { useMemo } from 'react';
+import React, { HTMLAttributes, useMemo } from 'react';
import filesize from 'filesize';
import { Card, Row, Col, Table, Tag } from 'antd';
@@ -224,7 +224,10 @@ const OverviewStorageCard:
React.FC<OverviewStorageCardProps> = ({
usage: <Tag key='pre-allocated' color='red'>Container
Pre-allocated</Tag>,
size: size(storageReport.committed)
}
- ]} />
+ ]}
+ onRow={(record) => ({
+ 'data-testid': `capacity-${record.key}`
+ }) as HTMLAttributes<HTMLElement>} />
</Col>
</Row>
</Card>
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSummaryCard.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSummaryCard.tsx
index 42c28676dd..e383512f20 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSummaryCard.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/overviewCard/overviewSummaryCard.tsx
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import React from 'react';
+import React, { HTMLAttributes } from 'react';
import { Card, Row, Table } from 'antd';
import { ColumnType } from 'antd/es/table';
@@ -100,7 +100,10 @@ const OverviewSummaryCard:
React.FC<OverviewTableCardProps> = ({
size="small"
pagination={false}
dataSource={tableData}
- columns={columns} />
+ columns={columns}
+ onRow={(record: TableData) => ({
+ 'data-testid': `overview-${title}-${record.name}`
+ } as HTMLAttributes<HTMLElement>)}/>
</Card>
)
}
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/overview/overview.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/overview/overview.tsx
index f511cb3a16..dc511b62ca 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/overview/overview.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/overview/overview.tsx
@@ -99,7 +99,7 @@ const getSummaryTableValue = (
colType: 'value' | undefined = undefined
): string => {
if (!value) return 'N/A';
- if (colType === 'value') String(value as string)
+ if (colType === 'value') return String(value as string)
return size(value as number)
}
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
index 47fe41dd7b..d7fdf2b9eb 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
@@ -560,7 +560,7 @@ export class Datanodes extends
React.Component<Record<string, object>, IDatanode
onShowSizeChange: this.onShowSizeChange
};
return (
- <div className='datanodes-container'>
+ <div className='datanodes-container' data-testid='datanodes-container'>
<div className='page-header'>
Datanodes ({totalCount})
<div className='filter-block'>
@@ -575,6 +575,7 @@ export class Datanodes extends
React.Component<Record<string, object>, IDatanode
value={selectedColumns}
allOption={allColumnsOption}
onChange={this._handleColumnChange}
+ data-testid='datanodes-multiselect'
/> Columns
</div>
<AutoReloadPanel
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/tsconfig.json
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/tsconfig.json
index 1d94b955da..610a55148a 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/tsconfig.json
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/tsconfig.json
@@ -21,9 +21,14 @@
"rootDir": "src",
"baseUrl": "src",
"paths": {
- "@/*": ["*"]
+ "@/*": ["*"],
+ "@tests/*": ["__tests__/*"]
},
- "types": ["vite/client", "vite-plugin-svgr/client"]
+ "types": [
+ "vite/client",
+ "vite-plugin-svgr/client",
+ "vitest/globals"
+ ]
},
"include": [
"src"
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/vite-env.d.ts
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/vite-env.d.ts
deleted file mode 100644
index 46167caa7e..0000000000
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/vite-env.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-
-* http://www.apache.org/licenses/LICENSE-2.0
-
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-/// <reference types="vite/client" />
\ No newline at end of file
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/vite.config.ts
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/vite.config.ts
index 068f27bb2d..ddb2832f39 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/vite.config.ts
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/vite.config.ts
@@ -1,19 +1,23 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
-* http://www.apache.org/licenses/LICENSE-2.0
-
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+/// <reference types="vitest" />
+/// <reference types="vite/client" />
import { defineConfig, splitVendorChunkPlugin } from 'vite';
import { resolve } from 'path';
@@ -54,7 +58,8 @@ export default defineConfig({
},
resolve: {
alias: {
- "@": pathResolve('src')
+ "@": pathResolve('src'),
+ "@tests": pathResolve('src/__tests__')
}
},
css: {
@@ -71,13 +76,9 @@ export default defineConfig({
},
test: {
globals: true,
- setupFiles: './src/setupTests.ts',
- css: true,
- reporters: ['verbose'],
- coverage: {
- reporter: ['text', 'json', 'html'],
- include: ['src/**/*'],
- exclude: []
- }
+ environment: 'jsdom',
+ setupFiles: 'src/__tests__/vitest.setup.ts',
+ include: ["src/__tests__/**/*.test.tsx"],
+ reporters: ['verbose']
}
-})
\ No newline at end of file
+});
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]